@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
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/activity/activity-composer.tsx","../src/components/activity/index.ts","../src/components/command-palette/palette-filter.ts","../src/components/command-palette/palette-list.tsx","../src/components/overlays/search-modal-content.tsx","../src/components/command-palette/palette.tsx","../src/components/command-palette/palette-shortcut.tsx","../src/components/layout/horizontal-menu-stack.tsx","../src/components/layout/item-section.tsx","../src/components/layout/panel-header.constants.ts","../src/components/notification-center/notification-center.tsx","../src/components/overlays/attached-menu.tsx","../src/components/overlays/attached-panel.tsx","../src/components/overlays/bubble-button.tsx","../src/components/overlays/bubble-panel.tsx","../src/components/overlays/delete-confirmation-modal.tsx","../src/components/overlays/repo-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/error-boundary.tsx","../src/components/primitives/tag-swatch.tsx","../src/components/primitives/icon-color-picker.tsx","../src/components/primitives/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/theme/recipes/segmented-control.ts","../src/components/primitives/segmented-control.tsx","../src/components/primitives/toaster.tsx","../src/components/sidenav/sidenav.store.ts","../src/components/sidenav/sidenav-footer.tsx","../src/components/sidenav/sidenav-header.tsx","../src/components/sidenav/sidenav.tsx","../src/components/tab-strip/tab-visibility.store.ts","../src/components/tree-list/tree-list-visibility-filter.ts","../src/components/tab-strip/tab-visibility-filter.ts","../src/components/tab-strip/window-tabs.tsx","../src/components/tab-strip/window-title-bar.tsx","../src/components/tag-editor/tag-editor-heading.tsx","../src/components/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.tsx","../src/components/tag-editor/tag-editor-save-bar.tsx","../src/components/tag-editor/tag-settings-panel.tsx","../src/components/tree-list/tree-list-order.store.ts","../src/components/tree-list/tree-list-order-filter.ts","../src/components/tree-list/tree-list-visibility.store.ts","../src/utils/apply-file-icon-theme-preference.ts","../src/utils/file-icon-theme-preference.tsx","../src/utils/resolve-file-icon-element.tsx"],"sourcesContent":["import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, chakra, HStack, Icon, IconButton, Spacer, Textarea } from \"@chakra-ui/react\";\nimport { ArrowUp, Paperclip } from \"lucide-react\";\nimport type { FormEvent, ReactNode } from \"react\";\nimport { useState } from \"react\";\n\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityComposerProps extends Omit<HTMLChakraProps<\"form\">, \"onChange\" | \"onSubmit\"> {\n actor?: ActivityActor;\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n variant?: \"standalone\" | \"inline\";\n minRows?: number;\n attachLabel?: string;\n submitLabel?: string;\n actions?: ReactNode;\n onAttach?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (value: string) => void;\n}\n\nexport const ActivityComposer = (props: ActivityComposerProps) => {\n const {\n actor,\n value,\n defaultValue = \"\",\n placeholder = \"Leave a comment...\",\n variant = \"standalone\",\n minRows = variant === \"standalone\" ? 3 : 1,\n attachLabel = \"Attach file\",\n submitLabel = \"Submit comment\",\n actions,\n onAttach,\n onChange,\n onSubmit,\n ...rootProps\n } = props;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = value ?? internalValue;\n const isInline = variant === \"inline\";\n const canSubmit = currentValue.trim().length > 0;\n\n const handleChange = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n };\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (!canSubmit) return;\n\n onSubmit?.(currentValue.trim());\n\n if (value === undefined) {\n setInternalValue(\"\");\n }\n };\n\n return (\n <chakra.form\n width=\"full\"\n background=\"bg\"\n borderWidth={isInline ? \"0\" : \"1px\"}\n borderColor=\"border\"\n borderRadius={isInline ? \"0\" : \"sm\"}\n transition=\"border-color 0.12s ease\"\n _hover={isInline ? undefined : { borderColor: \"border\" }}\n _focusWithin={isInline ? undefined : { borderColor: \"border.accent\" }}\n onSubmit={handleSubmit}\n {...rootProps}\n >\n <HStack alignItems=\"flex-start\" gap=\"xs\" padding={isInline ? \"sm\" : \"md\"}>\n {actor ? <ActivityAvatar actor={actor} /> : null}\n <Box flex=\"1\" minW=\"0\">\n <Textarea\n value={currentValue}\n rows={minRows}\n resize=\"none\"\n border=\"0\"\n padding=\"0\"\n minH={isInline ? \"1.5rem\" : \"4rem\"}\n background=\"transparent\"\n color=\"fg\"\n textStyle=\"label/S/regular\"\n placeholder={placeholder}\n _placeholder={{ color: \"fg.subtle\" }}\n onChange={(event) => handleChange(event.currentTarget.value)}\n />\n <HStack gap=\"2xs\" marginTop={isInline ? \"0\" : \"sm\"}>\n {actions}\n <Spacer />\n <Tooltip content={attachLabel}>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={attachLabel} type=\"button\" onClick={onAttach}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content={submitLabel}>\n <IconButton size=\"2xs\" variant=\"subtle\" aria-label={submitLabel} type=\"submit\" disabled={!canSubmit}>\n <Icon as={ArrowUp} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </HStack>\n </Box>\n </HStack>\n </chakra.form>\n );\n};\n","import { ActivityAvatar } from \"./activity-avatar\";\nimport { ActivityComment, ActivityReply } from \"./activity-comment\";\nimport { ActivityComposer } from \"./activity-composer\";\nimport { ActivityEvent } from \"./activity-event\";\nimport { ActivityFeed, ActivityHeader, ActivityRoot } from \"./activity-root\";\nimport { ActivityTimeline } from \"./activity-timeline\";\n\nexport type { ActivityActor } from \"./activity.types\";\nexport type { ActivityAvatarProps } from \"./activity-avatar\";\nexport type { ActivityCommentProps, ActivityReplyProps } from \"./activity-comment\";\nexport type { ActivityComposerProps } from \"./activity-composer\";\nexport type { ActivityEventProps } from \"./activity-event\";\nexport type { ActivityFeedProps, ActivityHeaderProps, ActivityRootProps } from \"./activity-root\";\nexport type { ActivityTimelineProps } from \"./activity-timeline\";\nexport {\n ActivityAvatar,\n ActivityComment,\n ActivityComposer,\n ActivityEvent,\n ActivityFeed,\n ActivityHeader,\n ActivityReply,\n ActivityRoot,\n ActivityTimeline,\n};\n\nexport const Activity = {\n Root: ActivityRoot,\n Header: ActivityHeader,\n Feed: ActivityFeed,\n Timeline: ActivityTimeline,\n Event: ActivityEvent,\n Comment: ActivityComment,\n Reply: ActivityReply,\n Composer: ActivityComposer,\n Avatar: ActivityAvatar,\n};\n","import type { ReactNode } from \"react\";\n\nexport const DEFAULT_PALETTE_ASSET_LIMIT = 48;\n\nexport interface PaletteSearchEntry {\n id: string;\n mode?: string;\n label: ReactNode;\n searchText?: string;\n secondaryLabel?: ReactNode;\n assetType?: string;\n}\n\nexport interface PaletteMode {\n id: string;\n inputPrefix?: string;\n}\n\nexport interface FilterPaletteEntriesOptions {\n query: string;\n mode?: string;\n getEffectiveQuery?: (query: string) => string;\n defaultAssetLimit?: number;\n}\n\nconst getSearchableText = (entry: PaletteSearchEntry) => {\n const label = typeof entry.label === \"string\" ? entry.label : \"\";\n const secondaryLabel = typeof entry.secondaryLabel === \"string\" ? entry.secondaryLabel : \"\";\n\n return `${label} ${entry.searchText ?? \"\"} ${secondaryLabel}`;\n};\n\nconst hasInputPrefix = (query: string, inputPrefix: string) => query.trimStart().startsWith(inputPrefix);\n\nexport const resolvePaletteMode = (query: string, modes: readonly PaletteMode[] = [], fallbackMode?: string) => {\n const prefixedMode = modes.find((mode) => mode.inputPrefix && hasInputPrefix(query, mode.inputPrefix));\n\n return prefixedMode?.id ?? fallbackMode ?? modes.find((mode) => !mode.inputPrefix)?.id ?? modes[0]?.id;\n};\n\nexport const getPaletteEffectiveQuery = (query: string, modes: readonly PaletteMode[] = [], modeId?: string) => {\n const mode = modes.find(\n (candidate) => candidate.id === modeId && candidate.inputPrefix && hasInputPrefix(query, candidate.inputPrefix),\n );\n\n if (!mode?.inputPrefix) return query.trim();\n\n return query.trimStart().slice(mode.inputPrefix.length).trim();\n};\n\nconst limitDefaultAssetEntries = <T extends PaletteSearchEntry>(entries: T[], limit: number) => {\n const counts: Record<string, number> = {};\n\n return entries.filter((entry) => {\n const assetType = entry.assetType;\n if (!assetType) return true;\n\n const count = counts[assetType] ?? 0;\n if (count >= limit) return false;\n\n counts[assetType] = count + 1;\n return true;\n });\n};\n\nexport const filterPaletteEntries = <T extends PaletteSearchEntry>(\n entries: T[],\n options: FilterPaletteEntriesOptions,\n) => {\n const effectiveQuery = (options.getEffectiveQuery?.(options.query) ?? options.query.trim()).toLowerCase();\n\n const filteredEntries = entries.filter((entry) => {\n if (options.mode && entry.mode !== options.mode) return false;\n if (!effectiveQuery) return true;\n\n return getSearchableText(entry).toLowerCase().includes(effectiveQuery);\n });\n\n if (effectiveQuery || options.defaultAssetLimit === undefined) {\n return filteredEntries;\n }\n\n return limitDefaultAssetEntries(filteredEntries, options.defaultAssetLimit);\n};\n","import { Box, HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Check } from \"lucide-react\";\nimport { type RefObject, useEffect } from \"react\";\nimport type { PaletteEntry } from \"@/components/command-palette/palette\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport type { ListRowItem } from \"@/components/list-row/list-row.types\";\n\ntype PaletteRow<T extends PaletteEntry> =\n | { type: \"group\"; id: string; label: string }\n | { type: \"entry\"; id: string; entry: T; entryIndex: number };\n\nconst GROUP_ROW_HEIGHT = 24;\nconst ENTRY_ROW_HEIGHT = 40;\nconst INITIAL_VIEWPORT_HEIGHT = 384;\n\nconst buildEntryItem = (entry: PaletteEntry): ListRowItem => ({\n id: entry.id,\n label: entry.label,\n description: entry.description ?? entry.secondaryLabel,\n icon: entry.icon,\n endContent:\n entry.endContent ??\n (entry.shortcut || entry.isSelected ? (\n <HStack gap=\"2\">\n {entry.shortcut}\n {entry.isSelected ? <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n </HStack>\n ) : undefined),\n onActivate: entry.onActivate,\n});\n\nconst buildRows = <T extends PaletteEntry>(entries: T[]) => {\n const rows: PaletteRow<T>[] = [];\n\n entries.forEach((entry, index) => {\n const previousEntry = entries[index - 1];\n if (entry.group && entry.group !== previousEntry?.group) {\n rows.push({ type: \"group\", id: `group:${entry.group}:${entry.id}`, label: entry.group });\n }\n\n rows.push({ type: \"entry\", id: entry.id, entry, entryIndex: index });\n });\n\n return rows;\n};\n\nconst getActiveRowIndex = <T extends PaletteEntry>(rows: PaletteRow<T>[], activeIndex: number) =>\n rows.findIndex((row) => row.type === \"entry\" && row.entryIndex === activeIndex);\n\ninterface PaletteListProps<T extends PaletteEntry> {\n entries: T[];\n activeIndex: number;\n emptyLabel: string;\n onHover: (index: number) => void;\n scrollRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const PaletteList = <T extends PaletteEntry>(props: PaletteListProps<T>) => {\n const { entries, activeIndex, emptyLabel, onHover, scrollRef } = props;\n const rows = buildRows(entries);\n const activeRowIndex = getActiveRowIndex(rows, activeIndex);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => (rows[index]?.type === \"group\" ? GROUP_ROW_HEIGHT : ENTRY_ROW_HEIGHT),\n getItemKey: (index) => rows[index]?.id ?? index,\n initialRect: { width: 0, height: INITIAL_VIEWPORT_HEIGHT },\n overscan: 6,\n });\n\n useEffect(() => {\n if (activeRowIndex < 0) return;\n\n virtualizer.scrollToIndex(activeRowIndex, { align: \"auto\", behavior: \"auto\" });\n }, [activeRowIndex, virtualizer]);\n\n if (entries.length === 0) {\n return (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n );\n }\n\n return (\n <Box role=\"listbox\" position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n if (!row) return null;\n\n return (\n <Box\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n style={{ top: virtualRow.start }}\n >\n {row.type === \"group\" ? (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\" pb=\"2xs\">\n {row.label}\n </Text>\n ) : (\n <ListRow\n variant=\"full-width\"\n {...buildEntryItem(row.entry)}\n isSelected={row.entryIndex === activeIndex}\n tabIndex={-1}\n onPointerMove={() => onHover(row.entryIndex)}\n />\n )}\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { Box, CloseButton, Dialog, Input, InputGroup } from \"@chakra-ui/react\";\nimport type { KeyboardEventHandler, ReactNode, Ref } from \"react\";\nimport { ScrollArea, type ScrollAreaProps } from \"@/components/primitives/scroll-area\";\n\nexport interface SearchModalContentProps {\n children: ReactNode;\n searchValue: string;\n searchPlaceholder: string;\n searchAriaLabel?: string;\n searchIcon?: ReactNode;\n searchInputRef?: Ref<HTMLInputElement>;\n searchAutoFocus?: boolean;\n showCloseButton?: boolean;\n closeButtonLabel?: string;\n bodyBefore?: ReactNode;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n scrollAreaProps?: Omit<ScrollAreaProps, \"children\">;\n onSearchChange: (value: string) => void;\n onSearchKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n}\n\nconst hasContent = (value: ReactNode) => value !== undefined && value !== null;\n\nconst footerJustifyContent = (hasFooterStart: boolean, hasFooterEnd: boolean) => {\n if (hasFooterStart && hasFooterEnd) return \"space-between\";\n if (hasFooterEnd) return \"flex-end\";\n return \"flex-start\";\n};\n\nexport const SearchModalContent = (props: SearchModalContentProps) => {\n const {\n children,\n searchValue,\n searchPlaceholder,\n searchAriaLabel = searchPlaceholder,\n searchIcon,\n searchInputRef,\n searchAutoFocus,\n showCloseButton = false,\n closeButtonLabel = \"Close\",\n bodyBefore,\n footerStart,\n footerEnd,\n scrollAreaProps,\n onSearchChange,\n onSearchKeyDown,\n } = props;\n const hasFooterStart = hasContent(footerStart);\n const hasFooterEnd = hasContent(footerEnd);\n const { maxH = \"24rem\", showHorizontalScrollbar = false, ...restScrollAreaProps } = scrollAreaProps ?? {};\n\n return (\n <>\n <Dialog.Header px=\"0\" py=\"0\" borderBottomWidth=\"1px\" borderBottomColor=\"border.subtle\">\n <InputGroup startElement={searchIcon} width=\"full\">\n <Input\n ref={searchInputRef}\n value={searchValue}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n autoComplete=\"off\"\n autoFocus={searchAutoFocus}\n mx=\"xs\"\n h=\"3rem\"\n variant=\"borderless\"\n onChange={(event) => onSearchChange(event.target.value)}\n onKeyDown={onSearchKeyDown}\n />\n </InputGroup>\n {showCloseButton ? (\n <Dialog.CloseTrigger asChild>\n <CloseButton aria-label={closeButtonLabel} size=\"sm\" mr=\"2\" />\n </Dialog.CloseTrigger>\n ) : null}\n </Dialog.Header>\n <Dialog.Body p=\"0\">\n {bodyBefore}\n <ScrollArea maxH={maxH} showHorizontalScrollbar={showHorizontalScrollbar} {...restScrollAreaProps}>\n {children}\n </ScrollArea>\n </Dialog.Body>\n {hasFooterStart || hasFooterEnd ? (\n <Dialog.Footer\n justifyContent={footerJustifyContent(hasFooterStart, hasFooterEnd)}\n px=\"sm\"\n py=\"xs\"\n borderTopWidth=\"1px\"\n borderTopColor=\"border.subtle\"\n >\n {hasFooterStart ? <Box minW=\"0\">{footerStart}</Box> : null}\n {hasFooterEnd ? <Box flexShrink={0}>{footerEnd}</Box> : null}\n </Dialog.Footer>\n ) : null}\n </>\n );\n};\n","import { Dialog } from \"@chakra-ui/react\";\nimport type { KeyboardEvent, ReactNode, SetStateAction } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n DEFAULT_PALETTE_ASSET_LIMIT,\n type FilterPaletteEntriesOptions,\n filterPaletteEntries,\n getPaletteEffectiveQuery,\n type PaletteMode,\n type PaletteSearchEntry,\n resolvePaletteMode,\n} from \"@/components/command-palette/palette-filter\";\nimport { PaletteList } from \"@/components/command-palette/palette-list\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\n\nexport type { FilterPaletteEntriesOptions, PaletteMode, PaletteSearchEntry };\nexport { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries };\n\nexport interface PaletteEntry extends PaletteSearchEntry {\n description?: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n endContent?: ReactNode;\n group?: string;\n isSelected?: boolean;\n onActivate: () => void;\n}\n\nexport interface PaletteState<T extends PaletteEntry> {\n query: string;\n mode?: string;\n activeIndex: number;\n entries: T[];\n}\n\nexport interface PaletteEscapeContext<T extends PaletteEntry> extends PaletteState<T> {\n activeEntry: T | null;\n entryCount: number;\n setQuery: (query: string) => void;\n setActiveIndex: (index: SetStateAction<number>) => void;\n runActiveEntry: () => void;\n closePalette: () => void;\n}\n\nexport type PaletteStateValue<T extends PaletteEntry, TValue> = TValue | ((state: PaletteState<T>) => TValue);\n\nexport interface PaletteProps<T extends PaletteEntry = PaletteEntry> {\n open: boolean;\n entries: T[];\n initialQuery?: string;\n initialActiveIndex?: number;\n mode?: string;\n modes?: PaletteMode[];\n resetKey?: string;\n inputIcon?: PaletteStateValue<T, ReactNode>;\n placeholder?: PaletteStateValue<T, string>;\n emptyLabel?: string;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n filterEntries?: (entries: T[], query: string, mode?: string) => T[];\n onActiveEntryChange?: (entry: T | null, index: number) => void;\n onQueryChange?: (query: string) => void;\n onClose: () => void;\n onEscape?: (ctx: PaletteEscapeContext<T>) => boolean | undefined;\n}\n\nconst resolveStateValue = <T extends PaletteEntry, TValue>(\n value: PaletteStateValue<T, TValue> | undefined,\n state: PaletteState<T>,\n fallback: TValue,\n) => {\n if (typeof value === \"function\") {\n return (value as (state: PaletteState<T>) => TValue)(state);\n }\n\n return value ?? fallback;\n};\n\nexport const Palette = <T extends PaletteEntry>(props: PaletteProps<T>) => {\n const {\n open,\n entries,\n initialQuery = \"\",\n initialActiveIndex = 0,\n mode,\n modes,\n resetKey = \"default\",\n inputIcon,\n placeholder,\n emptyLabel = \"No results.\",\n footerStart,\n footerEnd,\n filterEntries,\n onActiveEntryChange,\n onQueryChange,\n onClose,\n onEscape,\n } = props;\n const [query, setQueryState] = useState(initialQuery);\n const [activeIndex, setActiveIndex] = useState(initialActiveIndex);\n const inputRef = useRef<HTMLInputElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef({ open: false, resetKey });\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = filterEntries\n ? filterEntries(entries, query, activeMode)\n : filterPaletteEntries(entries, {\n query,\n mode: activeMode,\n getEffectiveQuery: (value) => getPaletteEffectiveQuery(value, modes, activeMode),\n });\n const activeEntry = filteredEntries[activeIndex] ?? null;\n const state: PaletteState<T> = { query, mode: activeMode, activeIndex, entries: filteredEntries };\n const resolvedInputIcon = resolveStateValue(inputIcon, state, null);\n const resolvedPlaceholder = resolveStateValue(placeholder, state, \"Search\");\n\n const setQuery = (nextQuery: string) => {\n setQueryState(nextQuery);\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n const previousSetup = setupRef.current;\n setupRef.current = { open, resetKey };\n if (!open) return;\n\n const shouldInitialize = !previousSetup.open || previousSetup.resetKey !== resetKey;\n if (!shouldInitialize) return;\n\n setQueryState(initialQuery);\n setActiveIndex(initialActiveIndex);\n\n const timeout = setTimeout(() => {\n const input = inputRef.current;\n if (!input) return;\n input.focus();\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }, 0);\n return () => clearTimeout(timeout);\n }, [initialActiveIndex, initialQuery, open, resetKey]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(filteredEntries.length - 1, 0)));\n }, [filteredEntries.length]);\n\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntry, activeIndex, onActiveEntryChange]);\n\n const handleEscape = () => {\n const handled = onEscape?.({\n ...state,\n activeEntry,\n entryCount: filteredEntries.length,\n setQuery,\n setActiveIndex,\n runActiveEntry,\n closePalette,\n });\n if (handled) return;\n\n if (query.length > 0) {\n setQuery(\"\");\n setActiveIndex(0);\n return;\n }\n\n closePalette();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(filteredEntries.length - 1, 0)));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n runActiveEntry();\n return;\n }\n\n if (event.key !== \"Escape\") return;\n\n event.preventDefault();\n event.stopPropagation();\n handleEscape();\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={(details) => !details.open && closePalette()}>\n <Dialog.Backdrop />\n <Dialog.Positioner alignItems=\"center\" justifyContent=\"center\" p=\"md\">\n <Dialog.Content maxW=\"44rem\" w=\"full\" p=\"0\" overflow=\"hidden\" borderWidth=\"1px\" borderColor=\"border.subtle\">\n <SearchModalContent\n searchValue={query}\n searchPlaceholder={resolvedPlaceholder}\n searchIcon={resolvedInputIcon}\n searchInputRef={inputRef}\n showCloseButton\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{\n maxH: \"24rem\",\n showHorizontalScrollbar: false,\n viewportRef: scrollRef,\n viewportProps: { style: { overflowAnchor: \"none\" } },\n }}\n onSearchChange={(nextQuery) => {\n setQuery(nextQuery);\n setActiveIndex(0);\n }}\n onSearchKeyDown={handleKeyDown}\n >\n <PaletteList\n entries={filteredEntries}\n activeIndex={activeIndex}\n emptyLabel={emptyLabel}\n onHover={setActiveIndex}\n scrollRef={scrollRef}\n />\n </SearchModalContent>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nexport type PaletteShortcutBinding = string | string[];\ntype ShortcutPlatform = \"linux\" | \"mac\" | \"win\";\n\ninterface ShortcutDisplayPart {\n label: string;\n Icon?: LucideIcon;\n}\n\nconst nonMacModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Alt\" },\n control: { label: \"Ctrl\" },\n ctrl: { label: \"Ctrl\" },\n mod: { label: \"Ctrl\" },\n shift: { label: \"Shift\" },\n};\n\nconst macModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Option\", Icon: Option },\n cmd: { label: \"Command\", Icon: Command },\n command: { label: \"Command\", Icon: Command },\n meta: { label: \"Command\", Icon: Command },\n mod: { label: \"Command\", Icon: Command },\n option: { label: \"Option\", Icon: Option },\n shift: { label: \"Shift\" },\n};\n\nconst keyLabels: Record<string, ShortcutDisplayPart> = {\n arrowleft: { label: \"Arrow Left\", Icon: ArrowLeft },\n arrowright: { label: \"Arrow Right\", Icon: ArrowRight },\n};\n\nconst getShortcutPlatform = (): ShortcutPlatform => {\n if (typeof navigator === \"undefined\") return \"linux\";\n\n const platform = navigator.platform?.toLowerCase() ?? \"\";\n if (platform.includes(\"mac\")) return \"mac\";\n if (platform.includes(\"win\")) return \"win\";\n return \"linux\";\n};\n\nexport const resolveShortcutDisplayPart = (label: string, platform = getShortcutPlatform()): ShortcutDisplayPart => {\n const normalized = label.toLowerCase();\n const modifierLabels = platform === \"mac\" ? macModifierLabels : nonMacModifierLabels;\n return keyLabels[normalized] ?? modifierLabels[normalized] ?? { label };\n};\n\nconst splitShortcutStep = (step: string) => {\n return step\n .split(\"+\")\n .map((part) => part.trim())\n .filter(Boolean);\n};\n\nconst getShortcutDisplayParts = (binding: PaletteShortcutBinding) => {\n const steps = Array.isArray(binding) ? binding.map(splitShortcutStep) : [splitShortcutStep(binding)];\n\n return steps.map((step) => step.map((label) => resolveShortcutDisplayPart(label)));\n};\n\nexport const PaletteShortcut = (props: { binding: PaletteShortcutBinding }) => {\n const { binding } = props;\n const steps = getShortcutDisplayParts(binding);\n\n return (\n <>\n {steps.map((step, stepIndex) => (\n <Fragment key={`${step.map((part) => part.label).join(\"+\")}-${stepIndex}`}>\n {step.map((part, partIndex) => (\n <Fragment key={`${part.label}-${partIndex}`}>\n <Kbd\n fontSize=\"xs\"\n borderRadius=\"0\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n aria-label={part.label}\n >\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n {partIndex < step.length - 1 ? \" \" : null}\n </Fragment>\n ))}\n {stepIndex < steps.length - 1 ? \" then \" : null}\n </Fragment>\n ))}\n </>\n );\n};\n","import { HStack, type StackProps } from \"@chakra-ui/react\";\n\ninterface HorizontalMenuStackProps extends StackProps {\n children?: StackProps[\"children\"];\n}\n\nexport function HorizontalMenuStack(props: HorizontalMenuStackProps) {\n const { children, h = \"41px\", px = \"xs\", py = \"xs\", borderBottomWidth = \"1px\", ...rest } = props;\n\n return (\n <HStack\n {...rest}\n h={h}\n justify=\"space-between\"\n align=\"center\"\n borderBottomWidth={borderBottomWidth}\n borderColor={\"border.subtle\"}\n px={px}\n py={py}\n >\n {children}\n </HStack>\n );\n}\n","import { Box, Collapsible, Flex, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ItemSectionProps {\n children: ReactNode;\n title?: string;\n defaultOpen?: boolean;\n action?: ReactNode;\n}\n\n/**\n * A collapsible section wrapper with a title trigger and optional action.\n */\nexport const ItemSection = (props: ItemSectionProps) => {\n const { children, title, defaultOpen = true, action } = props;\n\n return (\n <Collapsible.Root defaultOpen={defaultOpen} width=\"full\">\n <Flex>\n <Collapsible.Trigger\n _hover={{\n background: \"bg.hover\",\n }}\n padding=\"sm\"\n height=\"2rem\"\n display=\"flex\"\n width=\"full\"\n gap=\"2\"\n alignItems=\"center\"\n cursor=\"pointer\"\n justifyContent=\"space-between\"\n >\n {title && (\n <Text fontWeight=\"600\" textStyle=\"label/S/medium\">\n {title}\n </Text>\n )}\n <Collapsible.Indicator transition=\"transform 0.2s\" _open={{ transform: \"rotate(90deg)\" }}>\n <ChevronRight size={16} />\n </Collapsible.Indicator>\n </Collapsible.Trigger>\n {action && (\n <Box marginLeft=\"auto\" onClick={(e) => e.stopPropagation()}>\n {action}\n </Box>\n )}\n </Flex>\n <Collapsible.Content>{children}</Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","export const PANEL_HEADER_HEIGHT = \"2.5rem\";\nexport const PANEL_HEADER_CONTROL_SIZE = \"2xs\" as const;\nexport const PANEL_HEADER_TAB_SIZE = \"sm\" as const;\n","import { Badge, Box, Button, HStack, Icon, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { Bell, Search, X } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowAction } from \"../list-row/list-row.types\";\nimport type {\n NotificationCenterAction,\n NotificationCenterItem,\n NotificationCenterProps,\n} from \"./notification-center.types\";\n\nconst priorityColorPalette = (priority: NotificationCenterItem[\"priority\"]) => {\n if (priority === \"urgent\") return \"red\";\n if (priority === \"high\") return \"orange\";\n if (priority === \"low\") return \"gray\";\n return \"blue\";\n};\n\nconst shouldShowPriorityBadge = (priority: NotificationCenterItem[\"priority\"]) => priority !== \"normal\";\n\nconst itemSearchText = (item: NotificationCenterItem) =>\n [\n item.title,\n item.body,\n item.kind,\n item.priority,\n item.status,\n item.sourceLabel,\n item.targetLabel,\n item.searchText,\n ...(item.actions ?? []).map((action) => action.label),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\nconst filterItems = (items: NotificationCenterItem[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n if (!normalizedQuery) return items;\n return items.filter((item) => itemSearchText(item).includes(normalizedQuery));\n};\n\nconst groupItems = (items: NotificationCenterItem[]) => {\n const needsInput = items.filter((item) => item.kind === \"blocked\");\n const urgent = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"urgent\" || item.priority === \"high\"),\n );\n const normal = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"normal\" || item.priority === \"low\"),\n );\n return [\n { id: \"needs-input\", label: \"Needs input\", items: needsInput },\n { id: \"attention\", label: \"Needs attention\", items: urgent },\n { id: \"other\", label: \"Other\", items: normal },\n ].filter((group) => group.items.length > 0);\n};\n\nconst orderItemsForDisplay = (items: NotificationCenterItem[]) => groupItems(items).flatMap((group) => group.items);\n\nconst metadataDescription = (item: NotificationCenterItem) => {\n const parts = [item.body, item.targetLabel, item.sourceLabel, item.timeLabel].filter(Boolean);\n return parts.join(\" · \");\n};\n\nconst getActionButtons = (item: NotificationCenterItem, props: Pick<NotificationCenterProps, \"onDismiss\">) => {\n const actions: ListRowAction[] = [];\n\n if (props.onDismiss) {\n actions.push({\n id: \"dismiss\",\n label: \"Dismiss\",\n icon: <X size={14} />,\n tooltip: \"Dismiss\",\n onAction: () => props.onDismiss?.(item),\n });\n }\n\n return actions;\n};\n\nconst NotificationEndContent = (props: {\n actions: NotificationCenterAction[];\n item: NotificationCenterItem;\n onRunAction?: NotificationCenterProps[\"onRunAction\"];\n}) => {\n const { actions, item, onRunAction } = props;\n return (\n <HStack gap=\"2\" minW=\"0\" flexWrap=\"wrap\" justify=\"flex-end\">\n {shouldShowPriorityBadge(item.priority) ? (\n <Badge size=\"sm\" colorPalette={priorityColorPalette(item.priority)} textTransform=\"capitalize\" flexShrink={0}>\n {item.priority}\n </Badge>\n ) : null}\n {item.status === \"open\" ? (\n <Badge size=\"sm\" colorPalette=\"blue\" variant=\"solid\" flexShrink={0}>\n New\n </Badge>\n ) : null}\n {actions.map((action) => (\n <Button\n key={action.id}\n size=\"2xs\"\n variant=\"outline\"\n colorPalette={action.destructive ? \"red\" : \"gray\"}\n maxW=\"9rem\"\n onClick={(event) => {\n event.stopPropagation();\n onRunAction?.(item, action);\n }}\n >\n <Text truncate>{action.label}</Text>\n </Button>\n ))}\n </HStack>\n );\n};\n\nconst NotificationRows = (\n props: {\n activeIndex: number;\n items: NotificationCenterItem[];\n onActiveIndexChange: (index: number) => void;\n } & Pick<NotificationCenterProps, \"onActivateItem\" | \"onDismiss\" | \"onRunAction\">,\n) => {\n const { activeIndex, items, onActivateItem, onActiveIndexChange, onRunAction } = props;\n const groups = groupItems(items);\n let rowIndex = 0;\n\n return (\n <Stack gap=\"2xs\" py=\"xs\">\n {groups.map((group) => (\n <Stack key={group.id} gap=\"2xs\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\">\n {group.label}\n </Text>\n {group.items.map((item) => {\n const currentIndex = rowIndex;\n rowIndex += 1;\n return (\n <ListRow\n key={item.id}\n id={item.id}\n label={item.title}\n description={metadataDescription(item)}\n icon={<Icon as={Bell} boxSize=\"14px\" />}\n iconColor={`${priorityColorPalette(item.priority)}.500`}\n variant=\"compact\"\n isSelected={currentIndex === activeIndex}\n endContent={\n <NotificationEndContent item={item} actions={item.actions ?? []} onRunAction={onRunAction} />\n }\n actions={getActionButtons(item, props)}\n tabIndex={-1}\n onActivate={() => onActivateItem?.(item)}\n onPointerMove={() => onActiveIndexChange(currentIndex)}\n />\n );\n })}\n </Stack>\n ))}\n </Stack>\n );\n};\n\nconst LoadingRows = () => (\n <Stack gap=\"2\" p=\"sm\">\n {[0, 1, 2, 3].map((row) => (\n <Stack key={row} gap=\"2xs\">\n <Skeleton h=\"4\" w={row % 2 === 0 ? \"68%\" : \"52%\"} borderRadius=\"xs\" />\n <Skeleton h=\"3\" w=\"88%\" borderRadius=\"xs\" />\n </Stack>\n ))}\n </Stack>\n);\n\nexport const NotificationCenter = (props: NotificationCenterProps) => {\n const {\n autoFocus = false,\n emptyLabel = \"No notifications.\",\n error,\n footerEnd,\n footerStart,\n items,\n loading = false,\n onActivateItem,\n onEscape,\n onQueryChange,\n query,\n } = props;\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const activeQuery = query ?? internalQuery;\n const filteredItems = filterItems(items, activeQuery);\n const displayItems = orderItemsForDisplay(filteredItems);\n const activeItem = displayItems[activeIndex] ?? null;\n\n useEffect(() => {\n if (!autoFocus) return;\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [autoFocus]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(displayItems.length - 1, 0)));\n }, [displayItems.length]);\n\n const updateQuery = (nextQuery: string) => {\n if (query === undefined) setInternalQuery(nextQuery);\n onQueryChange?.(nextQuery);\n setActiveIndex(0);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(displayItems.length - 1, 0)));\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeItem) onActivateItem?.(activeItem);\n return;\n }\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (activeQuery.length > 0) {\n updateQuery(\"\");\n return;\n }\n onEscape?.();\n };\n\n return (\n <SearchModalContent\n searchValue={activeQuery}\n searchPlaceholder=\"Search notifications\"\n searchIcon={<Search size={14} />}\n searchInputRef={inputRef}\n searchAutoFocus={autoFocus}\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{ maxH: \"24rem\", showHorizontalScrollbar: false }}\n onSearchChange={updateQuery}\n onSearchKeyDown={handleKeyDown}\n >\n {error ? (\n <Box p=\"sm\">\n <AlertMessage status=\"error\" colorPalette=\"red\" title=\"Notifications unavailable\" size=\"sm\">\n {error}\n </AlertMessage>\n </Box>\n ) : loading ? (\n <LoadingRows />\n ) : filteredItems.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n ) : (\n <NotificationRows\n {...props}\n items={filteredItems}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n />\n )}\n </SearchModalContent>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface AttachedMenuProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n}\n\nexport const AttachedMenu = (props: AttachedMenuProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex as=\"aside\" direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" overflow=\"hidden\" bg=\"bg\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\n\ninterface AttachedPanelProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n header?: ReactNode;\n resizable?: boolean;\n}\n\nexport const AttachedPanel = (props: AttachedPanelProps) => {\n const { children, header, width = \"28rem\", minWidth, resizable = false, ...rest } = props;\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizable ? \"full\" : width;\n\n return (\n <Flex\n direction=\"column\"\n position=\"relative\"\n flexShrink={0}\n w={resolvedWidth}\n minW={resolvedMinWidth}\n h=\"100%\"\n bg=\"bg\"\n overflow=\"hidden\"\n {...rest}\n >\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ntype BubbleButtonStyleProps = \"transition\" | \"_hover\" | \"_active\" | \"borderColor\" | \"borderWidth\";\n\nexport interface BubbleButtonProps extends Omit<IconButtonProps, BubbleButtonStyleProps> {\n containerProps?: HTMLChakraProps<\"div\">;\n isOpen?: boolean;\n tooltip?: ReactNode;\n}\n\nexport const BubbleButton = forwardRef<HTMLButtonElement, BubbleButtonProps>(function BubbleButton(props, ref) {\n const { children, containerProps, isOpen = false, tooltip, ...rest } = props;\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor={isOpen ? \"border.accent\" : \"border\"}\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n }}\n _active={{ borderColor: \"border.accent\" }}\n {...rest}\n >\n {children}\n </IconButton>\n );\n\n return (\n <chakra.div position=\"fixed\" bottom=\"6\" right=\"6\" zIndex=\"docked\" {...containerProps}>\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import { Box, chakra, Flex, HStack, type HTMLChakraProps, IconButton, Portal, Spacer } from \"@chakra-ui/react\";\nimport { Minus, SquareArrowOutUpRight } from \"lucide-react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { PANEL_HEADER_CONTROL_SIZE } from \"@/components/layout/panel-header.constants\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\nexport interface BubblePanelProps {\n isOpen?: boolean;\n title?: string;\n menu?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n onPopOut?: (() => void) | null;\n popOutLabel?: string;\n width?: string;\n height?: string;\n containerProps?: HTMLChakraProps<\"section\">;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n}\n\nexport const BubblePanel = forwardRef<HTMLDivElement, BubblePanelProps>(function BubblePanel(props, ref) {\n const {\n isOpen = false,\n title,\n menu,\n onClose,\n closeLabel,\n onPopOut,\n popOutLabel,\n width = \"28rem\",\n height = \"38rem\",\n containerProps,\n testId,\n \"aria-label\": ariaLabel,\n children,\n } = props;\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <chakra.section\n ref={ref}\n role=\"dialog\"\n data-testid={testId}\n aria-label={ariaLabel ?? title}\n position=\"fixed\"\n bottom=\"3\"\n right=\"3\"\n w={width}\n maxW=\"calc(100vw - 2rem)\"\n h={height}\n maxH=\"calc(100vh - 2rem)\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n overflow=\"hidden\"\n zIndex=\"dropdown\"\n {...containerProps}\n >\n <Flex direction=\"column\" h=\"full\">\n <Header variant=\"main\" gap=\"sm\" flexShrink={0}>\n <HStack gap=\"1\" minW=\"0\">\n {menu}\n </HStack>\n <Spacer />\n <HStack gap=\"1\">\n {onPopOut ? (\n <Tooltip content={popOutLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={popOutLabel}\n onClick={onPopOut}\n >\n <SquareArrowOutUpRight size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n {onClose ? (\n <Tooltip content={closeLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={closeLabel}\n onClick={onClose}\n >\n <Minus size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n </HStack>\n </Header>\n <Box flex=\"1\" minH={0} display=\"flex\" flexDirection=\"column\" gap=\"sm\">\n {children}\n </Box>\n </Flex>\n </chakra.section>\n </Portal>\n );\n});\n","import { Button, CloseButton, Dialog, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\n\ninterface DeleteConfirmationModalProps {\n open: boolean;\n onClose: () => void;\n onDelete: () => void | Promise<void>;\n headline?: string;\n notificationText?: string;\n buttonText?: string;\n /** Extra controls rendered below the message, e.g. an opt-in checkbox. */\n children?: ReactNode;\n}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose, children } = props;\n\n const handleDelete = async () => {\n setIsDeleting(true);\n\n try {\n await onDelete();\n onClose();\n } catch {\n // Errors surface through parent state.\n } finally {\n setIsDeleting(false);\n }\n };\n\n return (\n // Destructive confirmations dismiss only through their explicit controls —\n // outside interactions must never cancel them, and when nested inside another\n // overlay (e.g. the settings dialog) a portal keeps the layers cooperating.\n <Dialog.Root\n open={open}\n onOpenChange={(details) => {\n if (!details.open) onClose();\n }}\n closeOnInteractOutside={false}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Text textStyle=\"heading/M\">{headline}</Text>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"3\">\n {notificationText ? <Text>{notificationText}</Text> : null}\n {children}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"destructive\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Badge, Button, Dialog, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home, Search } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface RepoPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface RepoPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: RepoPickerDialogEntry[];\n selectedPath?: string | null;\n selectedPaths?: string[];\n isLoading?: boolean;\n error?: string;\n isSelectDisabled?: boolean;\n onClose: () => void;\n onSelect: () => void;\n onSelectHomeDirectory: () => void;\n onSelectParentDirectory: () => void;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n}\n\nexport type { RepoPickerDialogProps };\n\nconst getEntryIcon = (entry: RepoPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\nconst filterEntries = (entries: RepoPickerDialogEntry[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return entries;\n }\n\n return entries.filter((entry) => `${entry.name} ${entry.path}`.toLowerCase().includes(normalizedQuery));\n};\n\ntype RepoPickerListEntryProps = {\n entry: RepoPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n};\n\nconst RepoPickerListEntry = (props: RepoPickerListEntryProps) => {\n const { entry, selectedPath, selectedPathSet, onEntryClick } = props;\n const isAlreadySelected = entry.isGitRepo && selectedPathSet.has(entry.path);\n const isDisabled = !entry.isDirectory || isAlreadySelected;\n\n const handleClick = () => {\n if (isAlreadySelected) {\n return;\n }\n\n onEntryClick(entry);\n };\n\n return (\n <ListRow\n variant=\"compact\"\n isSelected={selectedPath === entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Icon as={getEntryIcon(entry)} boxSize=\"16px\" />}\n endContent={\n entry.isGitRepo ? (\n <Badge\n textStyle=\"label/XS/medium\"\n px=\"xs\"\n py=\"2px\"\n colorPalette=\"green\"\n variant=\"subtle\"\n pointerEvents=\"none\"\n >\n Git repo\n </Badge>\n ) : undefined\n }\n disabled={isDisabled}\n onActivate={handleClick}\n />\n );\n};\n\nconst focusInlinePickerOption = (event: KeyboardEvent<HTMLDivElement>) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n const options = Array.from(\n event.currentTarget.querySelectorAll<HTMLButtonElement>('button[role=\"option\"]:not(:disabled)'),\n );\n\n if (options.length === 0) {\n return;\n }\n\n const currentIndex = options.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex = (() => {\n if (event.key === \"Home\") return 0;\n if (event.key === \"End\") return options.length - 1;\n if (event.key === \"ArrowUp\") return currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n return currentIndex < 0 || currentIndex === options.length - 1 ? 0 : currentIndex + 1;\n })();\n\n event.preventDefault();\n options[nextIndex]?.focus();\n};\n\nexport const RepoPickerDialog = (props: RepoPickerDialogProps) => {\n const {\n open,\n title = \"Select folder\",\n description,\n currentPath = \"\",\n entries,\n selectedPath = null,\n selectedPaths = [],\n isLoading = false,\n error = \"\",\n isSelectDisabled = false,\n onClose,\n onSelect,\n onSelectHomeDirectory,\n onSelectParentDirectory,\n onEntryClick,\n } = props;\n\n const [query, setQuery] = useState(\"\");\n const selectedPathSet = new Set(selectedPaths);\n const filteredEntries = filterEntries(entries, query);\n const searchScope = currentPath || \"Home\";\n\n useEffect(() => {\n if (!open || !searchScope) return;\n setQuery(\"\");\n }, [open, searchScope]);\n\n return (\n <Dialog.Root\n lazyMount\n unmountOnExit\n closeOnInteractOutside={false}\n open={open}\n onOpenChange={(details) => !details.open && onClose()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/M\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n <Stack direction=\"row\" gap=\"sm\" align=\"center\">\n <Button aria-label=\"Go to home directory\" variant=\"outline\" size=\"sm\" onClick={onSelectHomeDirectory}>\n <Home size={16} />\n </Button>\n <Button\n aria-label=\"Go to parent directory\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onSelectParentDirectory}\n disabled={!currentPath || currentPath === \"/\"}\n >\n <ChevronUp size={16} />\n </Button>\n <Text\n data-testid=\"folder-picker-path\"\n textStyle=\"paragraph/S/regular\"\n color=\"fg.muted\"\n flex=\"1\"\n lineClamp={1}\n >\n {searchScope}\n </Text>\n </Stack>\n\n <Stack gap=\"0\" borderWidth=\"1px\" borderRadius=\"md\" borderColor=\"border.subtle\" overflow=\"hidden\">\n <InputGroup\n startElement={<Search size={14} />}\n width=\"full\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Input\n mx=\"xs\"\n value={query}\n placeholder=\"Search repositories\"\n aria-label=\"Search repositories\"\n autoComplete=\"off\"\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\" p=\"sm\">\n {error}\n </Text>\n ) : filteredEntries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n No entries found.\n </Text>\n ) : (\n <ScrollArea maxHeight=\"320px\" contentProps={{ padding: \"sm\" }}>\n <Stack gap=\"xs\" role=\"listbox\" aria-label=\"Repository folders\" onKeyDown={focusInlinePickerOption}>\n {filteredEntries.map((entry) => (\n <RepoPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n </ScrollArea>\n )}\n </Stack>\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"sm\">\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button onClick={onSelect} disabled={isSelectDisabled}>\n Select repository\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface BreadcrumbLinkProps {\n to: string;\n children: React.ReactNode;\n}\n\nexport interface BreadcrumbProps extends ChakraBreadcrumb.RootProps {\n separator?: React.ReactNode;\n separatorGap?: SystemStyleObject[\"gap\"];\n items: BreadcrumbItem[];\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\nconst linkProps = {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"2xs\",\n minW: \"0\",\n maxW: \"100%\",\n overflow: \"hidden\",\n outline: \"none\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n _active: { outline: \"none\" },\n _focus: { outline: \"none\" },\n _focusVisible: { outline: \"none\" },\n} as const;\n\nconst staticProps = {\n ...linkProps,\n color: \"fg\",\n cursor: \"default\",\n textDecoration: \"none\",\n _hover: { textDecoration: \"none\" },\n} as const;\n\ninterface BreadcrumbItemContentProps {\n item: BreadcrumbItem;\n isCurrent: boolean;\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\ninterface BreadcrumbSeparatorProps {\n separator?: React.ReactNode;\n}\n\nconst isInteractiveItem = (item: BreadcrumbItem) => Boolean(item.url || item.onClick);\n\nconst BreadcrumbItemLink = (props: BreadcrumbItemContentProps) => {\n const { item, isCurrent, linkComponent: LinkComponent } = props;\n\n if (isCurrent && !isInteractiveItem(item)) {\n return <ChakraBreadcrumb.CurrentLink {...staticProps}>{item.title}</ChakraBreadcrumb.CurrentLink>;\n }\n\n if (item.url && LinkComponent) {\n return (\n <ChakraBreadcrumb.Link asChild {...linkProps}>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.url) {\n return (\n <ChakraBreadcrumb.Link href={item.url} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.onClick) {\n return (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n return (\n <ChakraBreadcrumb.Link as=\"span\" {...staticProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n};\n\nconst BreadcrumbItemContent = (props: BreadcrumbItemContentProps) => {\n const { item } = props;\n const content = <BreadcrumbItemLink {...props} />;\n\n if (!item.contextMenuActions?.length) return content;\n\n return (\n <ResourceContextMenu actions={item.contextMenuActions} positioning={{ placement: \"bottom-start\" }}>\n {content}\n </ResourceContextMenu>\n );\n};\n\nconst BreadcrumbSeparator = (props: BreadcrumbSeparatorProps) => {\n const { separator } = props;\n\n if (separator === undefined) {\n return <ChakraBreadcrumb.Separator flexShrink={0} />;\n }\n\n return <ChakraBreadcrumb.Separator flexShrink={0}>{separator}</ChakraBreadcrumb.Separator>;\n};\n\nexport const Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(function BreadcrumbRoot(props, ref) {\n const { separator, separatorGap, items, linkComponent: LinkComponent, ...rest } = props;\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...rest}>\n <ChakraBreadcrumb.List gap={separatorGap} flexWrap=\"nowrap\" minW=\"0\" maxW=\"100%\" overflow=\"hidden\">\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item minW=\"0\" flexShrink={isCurrent ? 1 : 0} overflow=\"hidden\">\n <BreadcrumbItemContent item={item} isCurrent={isCurrent} linkComponent={LinkComponent} />\n </ChakraBreadcrumb.Item>\n {isCurrent ? null : <BreadcrumbSeparator separator={separator} />}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { Box, type BoxProps, Text, type TextProps } from \"@chakra-ui/react\";\n\nexport interface ContentPlaceholderProps extends BoxProps {}\n\nexport const contentPlaceholderBackgroundImage = `url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.2' fillRule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\")`;\n\nexport const ContentPlaceholder = (props: ContentPlaceholderProps) => (\n <Box\n {...props}\n css={{\n backgroundClip: \"padding-box\",\n backgroundImage: contentPlaceholderBackgroundImage,\n display: \"flex\",\n width: \"100%\",\n }}\n />\n);\n\nexport const Label = (props: TextProps) => (\n <Box p=\"2\">\n <Text color=\"fg.muted\" fontWeight=\"medium\" textStyle=\"sm\" whiteSpace=\"nowrap\" {...props} />\n </Box>\n);\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ContentPlaceholder } from \"@/components/primitives/content-placeholder\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n label?: string;\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Dashboard error boundary caught an error\", error, info);\n }\n\n handleReset = () => {\n this.setState({ error: null });\n this.props.onReset?.();\n };\n\n render() {\n const { children, fallback, label } = this.props;\n const { error } = this.state;\n\n if (error) {\n if (fallback) {\n return fallback;\n }\n\n return <ErrorFallback error={error} label={label} onReset={this.handleReset} />;\n }\n\n return children;\n }\n}\n\ninterface ErrorFallbackProps {\n error: Error;\n label?: string;\n onReset?: () => void;\n}\n\nexport const ErrorFallback = (props: ErrorFallbackProps) => {\n const { error, label, onReset } = props;\n\n return (\n <ContentPlaceholder height=\"100%\" width=\"100%\">\n <AbsoluteCenter>\n <AlertMessage\n status=\"error\"\n title={<Text textStyle=\"paragraph/M/medium\">{label ?? \"Something went wrong\"}</Text>}\n >\n <Stack gap=\"sm\">\n <Text textStyle=\"paragraph/S/regular\">\n {error.message || \"An unexpected error occurred while rendering this section.\"}\n </Text>\n {onReset ? (\n <Button size=\"sm\" variant=\"primary\" onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import { Box, Center, type CenterProps, Icon } from \"@chakra-ui/react\";\nimport { getIconComponent, type IconColorPickerIconOption } from \"./icon-options\";\n\nexport interface TagSwatchProps extends Omit<CenterProps, \"color\"> {\n color: string;\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n /** Renders the icon glyph instead of a plain colour dot when the value carries an icon. */\n showIcon?: boolean;\n}\n\n// The planner writes \"circle\" as its no-icon default, so both it and a missing\n// icon render as the design's plain colour dot instead of a lucide ring.\nconst hasGlyph = (icon?: string | null) => Boolean(icon) && icon !== \"circle\";\n\nexport const TagSwatch = (props: TagSwatchProps) => {\n const { color, icon, iconOptions, showIcon = true, ...rest } = props;\n const IconComponent = getIconComponent(icon, iconOptions);\n\n return (\n <Center boxSize=\"tag-swatch\" flexShrink={0} borderRadius=\"compact\" bg={`${color}.500/15`} {...rest}>\n {showIcon && hasGlyph(icon) ? (\n <Icon as={IconComponent} boxSize=\"icon-xs\" color={`${color}.500`} />\n ) : (\n <Box boxSize=\"tag-swatch-dot\" borderRadius=\"full\" bg={`${color}.500`} />\n )}\n </Center>\n );\n};\n","import { Box, chakra, Grid, Icon, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type IconColorPickerIconOption, optionColors, optionIcons } from \"./icon-options\";\nimport { TagSwatch } from \"./tag-swatch\";\n\nconst SwatchTrigger = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n focusVisibleRing: \"outside\",\n _disabled: { cursor: \"not-allowed\", opacity: 0.5 },\n },\n});\n\nconst ColorDot = chakra(\"button\", {\n base: {\n boxSize: \"tag-color-dot\",\n borderRadius: \"full\",\n cursor: \"pointer\",\n outlineStyle: \"solid\",\n outlineWidth: \"selection\",\n outlineOffset: \"3xs\",\n outlineColor: \"transparent\",\n _selected: { outlineColor: \"fg\" },\n },\n});\n\nconst IconCell = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSize: \"tag-icon-cell\",\n borderRadius: \"compact\",\n color: \"fg.muted\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.hover\" },\n },\n});\n\nexport interface IconColorPickerProps {\n color: string;\n colorOptions?: readonly string[];\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n onColorChange: (color: string) => void;\n onIconChange?: (icon: string | null) => void;\n disabled?: boolean;\n showIcons?: boolean;\n colorLabel?: string;\n iconLabel?: string;\n \"aria-label\"?: string;\n}\n\nexport const IconColorPicker = (props: IconColorPickerProps) => {\n const {\n color,\n colorOptions = optionColors,\n icon,\n iconOptions = optionIcons,\n onColorChange,\n onIconChange,\n disabled,\n showIcons = true,\n colorLabel = \"Color\",\n iconLabel = \"Icon\",\n \"aria-label\": ariaLabel = \"Pick color and icon\",\n } = props;\n const selectedIcon = icon === \"circle\" ? null : (icon ?? null);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\" }}>\n <Popover.Trigger asChild>\n <SwatchTrigger type=\"button\" disabled={disabled} aria-label={ariaLabel}>\n <TagSwatch color={color} icon={icon} iconOptions={iconOptions} showIcon={showIcons} />\n </SwatchTrigger>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width={showIcons ? \"tag-picker\" : \"tag-picker-color-only\"} bg=\"bg.elevated\">\n <Stack gap=\"compact\" p=\"sm\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {colorLabel}\n </Text>\n <Grid templateColumns={`repeat(${showIcons ? 10 : 5}, 1fr)`} gap=\"2xs\" justifyItems=\"center\">\n {colorOptions.map((optionColor) => (\n <ColorDot\n key={optionColor}\n type=\"button\"\n bg={`${optionColor}.500`}\n aria-label={optionColor}\n aria-pressed={optionColor === color}\n data-selected={optionColor === color ? \"\" : undefined}\n onClick={() => onColorChange(optionColor)}\n />\n ))}\n </Grid>\n {showIcons ? (\n <>\n <Box borderTop=\"subtle\" />\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {iconLabel}\n </Text>\n <Grid templateColumns=\"repeat(8, 1fr)\" gap=\"3xs\" justifyItems=\"center\">\n {iconOptions.map((entry) => {\n const selected = entry.value === selectedIcon;\n return (\n <IconCell\n key={entry.value ?? \"none\"}\n type=\"button\"\n color={selected ? `${color}.500` : undefined}\n bg={selected ? `${color}.500/15` : undefined}\n _hover={selected ? { bg: `${color}.500/15` } : undefined}\n aria-label={entry.label}\n aria-pressed={selected}\n onClick={() => onIconChange?.(entry.value)}\n >\n <Icon as={entry.icon} boxSize=\"icon-xs\" />\n </IconCell>\n );\n })}\n </Grid>\n </>\n ) : null}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\n\nexport type SimpleCardProps = BoxProps;\n\nexport const SimpleCard = (props: SimpleCardProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.subtle\" borderRadius=\"xs\" bg=\"bg\" {...rest}>\n {children}\n </Box>\n );\n};\n\nexport type SimpleCardBodyProps = BoxProps;\n\nexport const SimpleCardBody = (props: SimpleCardBodyProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box p=\"md\" {...rest}>\n {children}\n </Box>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { SimpleCard, SimpleCardBody } from \"@/components/primitives/simple-card\";\n\nexport interface IntegrationCardProps {\n icon: ReactNode;\n name: string;\n description: string;\n id: string;\n version?: string;\n category?: string;\n active?: boolean;\n actionLabel?: string;\n}\n\nexport const IntegrationCard = (props: IntegrationCardProps) => {\n const { icon, name, description, id, version, category, active = false, actionLabel } = props;\n\n return (\n <SimpleCard>\n <SimpleCardBody>\n <HStack gap=\"4\" alignItems=\"flex-start\">\n <Icon boxSize=\"1em\" fontSize=\"2xl\" flexShrink=\"0\" color=\"fg.muted\">\n {icon}\n </Icon>\n <Box flex=\"1\" minW=\"0\">\n <Stack gap=\"1\">\n <HStack gap=\"2\" flexWrap=\"wrap\">\n <Text textStyle=\"sm\" fontWeight=\"semibold\">\n {name}\n </Text>\n <Badge size=\"sm\" variant=\"outline\">\n {id}\n </Badge>\n {version && (\n <Badge size=\"sm\" variant=\"outline\">\n v{version}\n </Badge>\n )}\n {category && (\n <Badge size=\"sm\" variant=\"outline\">\n {category}\n </Badge>\n )}\n </HStack>\n <Text color=\"fg.muted\">{description}</Text>\n </Stack>\n </Box>\n <Button\n type=\"button\"\n disabled={active}\n size=\"sm\"\n variant=\"outline\"\n colorPalette=\"gray\"\n bg=\"bg\"\n flexShrink=\"0\"\n >\n {active && (\n <Icon color=\"fg.success\">\n <Check />\n </Icon>\n )}\n {actionLabel ?? (active ? \"Active\" : \"Connect\")}\n </Button>\n </HStack>\n </SimpleCardBody>\n </SimpleCard>\n );\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const segmentedControlSlotRecipe = defineSlotRecipe({\n className: \"ps-segmented-control\",\n slots: [\"root\", \"item\"],\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"3xs\",\n padding: \"3xs\",\n bg: \"bg.subtle\",\n borderRadius: \"compact\",\n borderWidth: \"1px\",\n borderColor: \"border\",\n },\n item: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n whiteSpace: \"nowrap\",\n textStyle: \"label/S/medium\",\n color: \"fg.muted\",\n bg: \"transparent\",\n borderRadius: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"background-color, color\",\n transitionDuration: \"fast\",\n focusVisibleRing: \"outside\",\n _hover: { color: \"fg\" },\n _selected: { bg: \"bg.inverted\", color: \"fg.inverted\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { color: \"fg.muted\" } },\n },\n },\n variants: {\n size: {\n sm: {\n root: { height: \"segmented-control-sm\" },\n item: { height: \"segmented-control-item-sm\", paddingInline: \"compact\" },\n },\n xs: {\n root: { height: \"segmented-control-xs\" },\n item: { height: \"segmented-control-item-xs\", paddingInline: \"xs\" },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport { segmentedControlSlotRecipe as recipe } from \"@/theme/recipes/segmented-control\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\n\ntype VariantProps = RecipeVariantProps<typeof recipe>;\n\nexport interface SegmentedControlRootProps extends HTMLChakraProps<\"div\">, VariantProps {}\nconst SegmentedControlRoot = withProvider<HTMLDivElement, SegmentedControlRootProps>(\"div\", \"root\");\n\nexport interface SegmentedControlItemProps extends HTMLChakraProps<\"button\"> {}\nconst SegmentedControlItem = withContext<HTMLButtonElement, SegmentedControlItemProps>(\"button\", \"item\");\n\nexport interface SegmentedControlOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<SegmentedControlRootProps, \"onChange\"> {\n options: SegmentedControlOption[];\n value: string;\n onValueChange: (value: string) => void;\n disabled?: boolean;\n \"aria-label\"?: string;\n}\n\nexport const SegmentedControl = (props: SegmentedControlProps) => {\n const { options, value, onValueChange, disabled, \"aria-label\": ariaLabel, ...rootProps } = props;\n\n return (\n <SegmentedControlRoot role=\"group\" aria-label={ariaLabel} {...rootProps}>\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <SegmentedControlItem\n key={option.value}\n type=\"button\"\n aria-pressed={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={disabled}\n onClick={() => onValueChange(option.value)}\n >\n {option.label}\n </SegmentedControlItem>\n );\n })}\n </SegmentedControlRoot>\n );\n};\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const toaster: ReturnType<typeof createToaster> = createToaster({\n placement: \"top\",\n pauseOnPageIdle: true,\n duration: 10000,\n});\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} alignItems=\"start\" borderRadius=\"xs\" gap=\"xs\" px=\"sm\" py=\"xs\" minH=\"auto\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"0\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title textStyle=\"label/S/medium\">{toast.title}</Toast.Title>}\n {toast.description && (\n <ScrollArea maxHeight=\"12rem\" contentProps={{ paddingEnd: \"1\" }}>\n <Toast.Description textStyle=\"paragraph/S/regular\" whiteSpace=\"pre-wrap\" wordBreak=\"break-word\">\n {toast.description}\n </Toast.Description>\n </ScrollArea>\n )}\n </Stack>\n {toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}\n <Toast.CloseTrigger />\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface SidenavSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n width: number | null;\n}\n\ninterface SidenavState extends SidenavSnapshot {\n openSidenav: () => void;\n closeSidenav: () => void;\n toggleSidenav: () => void;\n toggleSection: (sectionId: string) => void;\n toggleNode: (nodeId: string) => void;\n setSectionExpanded: (sectionId: string, expanded: boolean) => void;\n setNodeExpanded: (nodeId: string, expanded: boolean) => void;\n setWidth: (width: number) => void;\n reset: () => void;\n}\n\ninterface CreateSidenavStoreOptions {\n storageKey: string;\n initialState?: Partial<SidenavSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n width: null,\n} satisfies SidenavSnapshot;\n\nconst SIDENAV_STORE_NAMESPACE = \"pstdio/ui/sidenav\";\n\nconst toStorageName = (storageKey: string) => `${SIDENAV_STORE_NAMESPACE}/${storageKey}`;\n\nconst toggleId = (values: string[], id: string) =>\n values.includes(id) ? values.filter((value) => value !== id) : [...values, id];\n\nconst setExpanded = (values: string[], id: string, expanded: boolean) => {\n if (expanded) {\n return values.includes(id) ? values : [...values, id];\n }\n\n return values.filter((value) => value !== id);\n};\n\nconst getPersistedSnapshot = (state: SidenavState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n width: state.width,\n});\n\nexport const createSidenavStore = (options: CreateSidenavStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidenavState>()(\n persist(\n (set) => ({\n ...snapshot,\n openSidenav: () => set((state) => ({ ...state, open: true })),\n closeSidenav: () => set((state) => ({ ...state, open: false })),\n toggleSidenav: () => set((state) => ({ ...state, open: !state.open })),\n toggleSection: (sectionId) =>\n set((state) => ({\n ...state,\n expandedSections: toggleId(state.expandedSections, sectionId),\n })),\n toggleNode: (nodeId) =>\n set((state) => ({\n ...state,\n expandedNodes: toggleId(state.expandedNodes, nodeId),\n })),\n setSectionExpanded: (sectionId, expanded) =>\n set((state) => ({\n ...state,\n expandedSections: setExpanded(state.expandedSections, sectionId, expanded),\n })),\n setNodeExpanded: (nodeId, expanded) =>\n set((state) => ({\n ...state,\n expandedNodes: setExpanded(state.expandedNodes, nodeId, expanded),\n })),\n setWidth: (width) => set((state) => ({ ...state, width })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n};\n\nconst sidenavStoreRegistry = new Map<string, ReturnType<typeof createSidenavStore>>();\n\nexport const getSidenavStore = (storageKey: string, initialState?: Partial<SidenavSnapshot>) => {\n const existingStore = sidenavStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidenavStore({ storageKey, initialState });\n sidenavStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidenavStore = <T>(\n storageKey: string,\n selector: (state: SidenavState) => T,\n initialState?: Partial<SidenavSnapshot>,\n) => {\n const store = getSidenavStore(storageKey, initialState);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidenavFooterProps {\n children?: ReactNode;\n}\n\nexport const SidenavFooter = (props: SidenavFooterProps) => {\n const { children } = props;\n\n if (!children) {\n return null;\n }\n\n return (\n <Box bg=\"bg\" position=\"sticky\" bottom=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n","import { HStack } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/layout/panel-header.constants\";\n\ninterface SidenavHeaderProps {\n children?: ReactNode;\n}\n\nexport const SidenavHeader = (props: SidenavHeaderProps) => {\n const { children } = props;\n\n return (\n <HStack\n data-testid=\"sidenav-header\"\n justify=\"space-between\"\n align=\"center\"\n minH={PANEL_HEADER_HEIGHT}\n bg=\"bg\"\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n gap=\"0\"\n >\n <HStack minW=\"0\" flex=\"1\">\n {children}\n </HStack>\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport { useSidenavStore } from \"./sidenav.store\";\nimport type { SidenavProps } from \"./sidenav.types\";\nimport { SidenavFooter } from \"./sidenav-footer\";\nimport { SidenavHeader } from \"./sidenav-header\";\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_MIN_WIDTH = 200;\nconst DEFAULT_MAX_WIDTH = 480;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveInitialWidth = (width?: string | number, defaultWidth = DEFAULT_WIDTH) => {\n if (typeof width === \"number\") return width;\n if (typeof width === \"string\") {\n const parsed = parseInt(width, 10);\n if (!Number.isNaN(parsed)) return parsed;\n }\n return defaultWidth;\n};\n\nexport const Sidenav = (props: SidenavProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n contextActions = [],\n header,\n footer,\n width,\n closable = true,\n emptyLabel = \"No items available.\",\n defaultExpandedSections,\n linkComponent,\n onNavigate,\n onOpenChange,\n resizable = true,\n defaultWidth,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n virtualize = false,\n } = props;\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n\n const initialWidth = resolveInitialWidth(width, defaultWidth);\n const initialState = {\n ...(defaultExpandedSections ? { expandedSections: defaultExpandedSections } : {}),\n width: initialWidth,\n };\n\n const open = useSidenavStore(storageKey, (state) => state.open, initialState);\n const persistedWidth = useSidenavStore(storageKey, (state) => state.width, initialState);\n const expandedSections = useSidenavStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidenavStore(storageKey, (state) => state.expandedNodes, initialState);\n const toggleSection = useSidenavStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidenavStore(storageKey, (state) => state.toggleNode, initialState);\n\n useEffect(() => {\n onOpenChange?.(open);\n }, [onOpenChange, open]);\n\n const effectiveWidth = clamp(persistedWidth ?? initialWidth, minWidth, maxWidth);\n if (!open && closable) {\n return null;\n }\n\n const widthCss = resizable ? `${effectiveWidth}px` : (width ?? `${initialWidth}px`);\n\n const content = (\n <Flex\n as=\"aside\"\n data-testid=\"sidenav\"\n direction=\"column\"\n position=\"relative\"\n h=\"100%\"\n w={widthCss}\n minW={widthCss}\n maxW={widthCss}\n flexShrink={0}\n borderRightWidth=\"1px\"\n borderRightColor=\"border.subtle\"\n bg=\"bg\"\n >\n <SidenavHeader>{header}</SidenavHeader>\n\n <ScrollArea\n flex=\"1\"\n mt=\"lg\"\n viewportRef={viewportRef}\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{\n style: { minWidth: \"100%\", width: \"100%\", minHeight: \"100%\", display: \"flex\", flexDirection: \"column\" },\n }}\n >\n <Box w=\"full\" minW=\"0\" flex=\"1 0 auto\" display=\"flex\" flexDirection=\"column\">\n {sections.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"3\">\n {emptyLabel}\n </Text>\n ) : (\n <TreeList\n sections={sections}\n expandedSectionIds={expandedSections}\n expandedNodeIds={expandedNodes}\n activeNodeId={activeNodeId}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n virtualize={virtualize}\n scrollRef={viewportRef}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidenavFooter>{footer}</SidenavFooter>\n </Flex>\n );\n\n return (\n <ResourceContextMenu actions={contextActions} closeOnSelect={false}>\n {content}\n </ResourceContextMenu>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\n\ninterface TabVisibilitySnapshot {\n tabOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TabVisibilityState extends TabVisibilitySnapshot {\n setTab: (key: string, value: VisibilityOverride | undefined) => void;\n toggleTab: (key: string, hiddenByDefault: boolean) => void;\n clearTab: (key: string) => void;\n reset: () => void;\n}\n\ninterface CreateTabVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TabVisibilitySnapshot = { tabOverrides: {} };\n\nconst STORE_NAMESPACE = \"pstdio/ui/tab-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n key: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(key in overrides)) return overrides;\n const { [key]: _removed, ...rest } = overrides;\n return rest;\n }\n if (overrides[key] === value) return overrides;\n return { ...overrides, [key]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, key: string, hiddenByDefault: boolean) => {\n const current = resolveEffective(overrides[key], hiddenByDefault);\n return setOverride(overrides, key, current === \"hidden\" ? \"shown\" : \"hidden\");\n};\n\nconst getPersistedSnapshot = (state: TabVisibilityState) => ({ tabOverrides: state.tabOverrides });\n\nexport const createTabVisibilityStore = (options: CreateTabVisibilityStoreOptions) =>\n createStore<TabVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setTab: (key, value) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, value) })),\n toggleTab: (key, hiddenByDefault) =>\n set((state) => ({ ...state, tabOverrides: toggleOverride(state.tabOverrides, key, hiddenByDefault) })),\n clearTab: (key) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTabVisibilityStore>>();\n\nexport const getTabVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n const store = createTabVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTabVisibilityStore = <T>(storageKey: string, selector: (state: TabVisibilityState) => T) => {\n const store = getTabVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TabVisibilitySnapshot, TabVisibilityState };\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { TreeListNode, TreeListSection } from \"./tree-list.types\";\nimport type { VisibilityOverride } from \"./tree-list-visibility.store\";\n\nconst toStringLabel = (label: ReactNode, fallback: string) => (typeof label === \"string\" ? label : fallback);\n\nexport const resolveVisibility = (\n override: VisibilityOverride | undefined,\n hiddenByDefault: boolean | undefined,\n): VisibilityOverride => override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\n// A section or node is \"customizable\": it opts in to the hide/show menu and may be toggled.\n// Hideability is explicit — items are non-hideable unless they set canHide (or start hidden by\n// default, which would otherwise be unrecoverable). Body sub-items never opt in, so only\n// categories (sections) and header/footer rows ever appear in the customize menu.\nconst isCustomizable = (item: { canHide?: boolean; hiddenByDefault?: boolean }) =>\n item.canHide === true || item.hiddenByDefault === true;\n\nconst isNodeVisible = (node: TreeListNode, nodeOverrides: Record<string, VisibilityOverride>) =>\n resolveVisibility(nodeOverrides[node.id], node.hiddenByDefault) === \"shown\";\n\nconst filterNodes = (nodes: TreeListNode[], nodeOverrides: Record<string, VisibilityOverride>): TreeListNode[] => {\n let changed = false;\n const next: TreeListNode[] = [];\n for (const node of nodes) {\n if (!isNodeVisible(node, nodeOverrides)) {\n changed = true;\n continue;\n }\n if (node.children && node.children.length > 0) {\n const filteredChildren = filterNodes(node.children, nodeOverrides);\n if (filteredChildren !== node.children) {\n changed = true;\n next.push({ ...node, children: filteredChildren });\n continue;\n }\n }\n next.push(node);\n }\n return changed ? next : nodes;\n};\n\n// Header/footer rows are flat lists, filtered by their own node overrides (mirrors the body's\n// per-node filtering, minus section nesting).\nexport const filterVisibleNodes = (\n nodes: TreeListNode[],\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListNode[] => filterNodes(nodes, nodeOverrides);\n\nexport const filterVisibleSections = (\n sections: TreeListSection[],\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListSection[] => {\n let changed = false;\n const next: TreeListSection[] = [];\n for (const section of sections) {\n if (resolveVisibility(sectionOverrides[section.id], section.hiddenByDefault) === \"hidden\") {\n changed = true;\n continue;\n }\n const filteredNodes = filterNodes(section.nodes, nodeOverrides);\n if (filteredNodes.length === 0 && !section.emptyState) {\n changed = true;\n continue;\n }\n if (filteredNodes !== section.nodes) {\n changed = true;\n next.push({ ...section, nodes: filteredNodes });\n continue;\n }\n next.push(section);\n }\n return changed ? next : sections;\n};\n\nexport interface TreeVisibilityMenuActions {\n onToggleSection: (id: string, hiddenByDefault: boolean) => void;\n onToggleNode: (id: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildMenuOptions {\n // Trailing toggle indicator: an eye when the entry is shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n // Leading icon for the reset rows, kept separate from the toggle list above.\n resetIcon?: ReactNode;\n}\n\nconst visibilityEndContent = (effective: VisibilityOverride, options: BuildMenuOptions) =>\n effective === \"shown\" ? options.visibleIcon : options.hiddenIcon;\n\nconst buildSectionAction = (\n section: TreeListSection,\n sectionOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = section.hiddenByDefault === true;\n const effective = resolveVisibility(sectionOverrides[section.id], hiddenByDefault);\n return {\n key: `section:${section.id}`,\n label: section.label ?? section.id,\n onClick: () => actions.onToggleSection(section.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nconst buildNodeAction = (\n node: TreeListNode,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = node.hiddenByDefault === true;\n const effective = resolveVisibility(nodeOverrides[node.id], hiddenByDefault);\n return {\n key: `node:${node.id}`,\n label: toStringLabel(node.label, node.id),\n icon: node.icon,\n onClick: () => actions.onToggleNode(node.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nexport interface TreeVisibilityMenuItems {\n headerSections?: TreeListSection[];\n sections: TreeListSection[];\n footerSections?: TreeListSection[];\n}\n\n// Builds the back-of-tree hide/show menu. Every slot uses sections, so the same rules apply to\n// pinned and scrolling content. Hideability is explicit per item.\nexport const buildTreeVisibilityMenuActions = (\n items: TreeVisibilityMenuItems,\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n const appendGroup = (group: ResourceContextAction[]) => {\n if (group.length === 0) return;\n if (result.length > 0) group[0] = { ...group[0], separatorBefore: true };\n result.push(...group);\n };\n\n const actionsForSections = (sections: TreeListSection[]) => {\n const sectionActions: ResourceContextAction[] = [];\n for (const section of sections) {\n if (isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, sectionOverrides, actions, options));\n }\n // Top-level rows that opt in (e.g. a \"Tickets\" nav entry) are hideable too; their leaf\n // children are not visited, so files/sessions inside a category stay non-hideable.\n for (const node of section.nodes) {\n if (isCustomizable(node)) sectionActions.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n return sectionActions;\n };\n\n appendGroup(actionsForSections(items.headerSections ?? []));\n appendGroup(actionsForSections(items.sections));\n appendGroup(actionsForSections(items.footerSections ?? []));\n\n if (result.length === 0) return result;\n\n // A separator splits the visibility toggles above from the reset actions below.\n result.push({\n key: \"__reset-visibility\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n\n return result;\n};\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\nimport { resolveVisibility } from \"../tree-list/tree-list-visibility-filter\";\n\nexport interface TabVisibilityPlacement {\n closable?: boolean;\n hiddenByDefault?: boolean;\n pinned?: boolean;\n title?: string;\n contributionId: string;\n}\n\nexport const filterVisibleTabs = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n getKey: (placement: T) => string,\n): T[] => {\n let changed = false;\n const next: T[] = [];\n for (const placement of placements) {\n if (placement.closable === true) {\n next.push(placement);\n continue;\n }\n if (placement.pinned === true && placement.hiddenByDefault === true) {\n changed = true;\n continue;\n }\n const effective = resolveVisibility(tabOverrides[getKey(placement)], placement.hiddenByDefault);\n if (effective === \"hidden\") {\n changed = true;\n continue;\n }\n next.push(placement);\n }\n return changed ? next : placements;\n};\n\nexport interface TabVisibilityMenuActions {\n onToggleTab: (key: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildTabMenuOptions {\n // Trailing toggle indicator, mirroring the tree menu: eye when shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n resetIcon?: ReactNode;\n}\n\nexport const buildTabVisibilityMenuActions = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n actions: TabVisibilityMenuActions,\n getKey: (placement: T) => string,\n options: BuildTabMenuOptions,\n getIcon?: (placement: T) => ReactNode,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n let nonCloseableCount = 0;\n\n for (const placement of placements) {\n if (placement.pinned === true) continue;\n if (placement.closable === true) continue;\n nonCloseableCount += 1;\n const key = getKey(placement);\n const hiddenByDefault = placement.hiddenByDefault === true;\n const effective = resolveVisibility(tabOverrides[key], hiddenByDefault);\n result.push({\n key: `tab:${key}`,\n label: placement.title ?? placement.contributionId,\n icon: getIcon?.(placement),\n onClick: () => actions.onToggleTab(key, hiddenByDefault),\n endContent: effective === \"shown\" ? options.visibleIcon : options.hiddenIcon,\n });\n }\n\n if (nonCloseableCount === 0) return result;\n\n result.push({\n key: \"__reset-tabs\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n return result;\n};\n","import { createSlotRecipeContext, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport {\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { X } from \"lucide-react\";\nimport { type KeyboardEvent, type ReactNode, useEffect, useRef } from \"react\";\nimport { windowTabsRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\nconst List = withProvider<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"list\");\nconst Tab = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"tab\");\nconst Trigger = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"trigger\");\nconst Label = withContext<HTMLSpanElement, HTMLChakraProps<\"span\">>(\"span\", \"label\");\nconst Close = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"close\");\n\nexport interface WindowTab {\n id: string;\n label: string;\n icon?: ReactNode;\n}\n\nexport interface WindowTabsProps {\n tabs: WindowTab[];\n selectedId?: string;\n onSelect: (id: string) => void;\n onClose: (id: string) => void;\n onReorder?: (id: string, targetId: string) => void;\n \"aria-label\": string;\n}\n\ninterface WindowTabItemProps {\n tab: WindowTab;\n selected: boolean;\n tabIndex: number;\n reorderable: boolean;\n onSelect: () => void;\n onClose: () => void;\n onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => void;\n}\n\nconst WindowTabItem = (props: WindowTabItemProps) => {\n const { tab, selected, tabIndex, reorderable, onSelect, onClose, onKeyDown } = props;\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging, isSorting } =\n useSortable({ id: tab.id, disabled: !reorderable });\n return (\n <Tab\n ref={setNodeRef}\n role=\"presentation\"\n data-selected={selected ? \"\" : undefined}\n data-dragging={isDragging ? \"\" : undefined}\n transform={CSS.Translate.toString(transform)}\n transition={transition}\n >\n <Trigger\n {...(reorderable ? attributes : {})}\n {...listeners}\n ref={setActivatorNodeRef}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n aria-label={tab.label}\n tabIndex={tabIndex}\n title={tab.label}\n onClick={onSelect}\n onKeyDown={(event) => {\n listeners?.onKeyDown?.(event);\n if (!isSorting && !event.defaultPrevented) onKeyDown(event);\n }}\n >\n {tab.icon}\n <Label>{tab.label}</Label>\n </Trigger>\n <Close type=\"button\" aria-label={`Close ${tab.label}`} title={`Close ${tab.label}`} onClick={onClose}>\n <X aria-hidden=\"true\" />\n </Close>\n </Tab>\n );\n};\n\nexport const WindowTabs = (props: WindowTabsProps) => {\n const { tabs, selectedId, onSelect, onClose, onReorder, \"aria-label\": label } = props;\n const listRef = useRef<HTMLDivElement>(null);\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n useEffect(() => {\n if (!selectedId) return;\n listRef.current?.querySelector('[aria-selected=\"true\"]')?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }, [selectedId]);\n\n const closeTab = (index: number) => {\n const triggers = listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n const neighbor = triggers?.[index + 1] ?? triggers?.[index - 1];\n onClose(tabs[index].id);\n neighbor?.focus();\n };\n\n const handleKey = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n let next = index;\n if (event.key === \"ArrowRight\") next = (index + 1) % tabs.length;\n else if (event.key === \"ArrowLeft\") next = (index - 1 + tabs.length) % tabs.length;\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = tabs.length - 1;\n else if (event.key === \"Delete\") {\n event.preventDefault();\n closeTab(index);\n return;\n } else return;\n event.preventDefault();\n listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')[next]?.focus();\n onSelect(tabs[next].id);\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[({ transform }) => ({ ...transform, y: 0 })]}\n onDragEnd={({ active, over }) => {\n if (over && active.id !== over.id) onReorder?.(String(active.id), String(over.id));\n }}\n >\n <SortableContext items={tabs.map((tab) => tab.id)} strategy={horizontalListSortingStrategy}>\n <List ref={listRef} role=\"tablist\" aria-label={label}>\n {tabs.map((tab, index) => (\n <WindowTabItem\n key={tab.id}\n tab={tab}\n selected={tab.id === selectedId}\n tabIndex={tab.id === (selectedId ?? tabs[0]?.id) ? 0 : -1}\n reorderable={Boolean(onReorder)}\n onSelect={() => onSelect(tab.id)}\n onClose={() => closeTab(index)}\n onKeyDown={(event) => handleKey(event, index)}\n />\n ))}\n </List>\n </SortableContext>\n </DndContext>\n );\n};\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { windowTitleBarRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\ninterface RootProps extends HTMLChakraProps<\"div\">, RecipeVariantProps<typeof recipe> {}\nconst Root = withProvider<HTMLDivElement, RootProps>(\"div\", \"root\");\nconst Content = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"content\");\n\nexport interface WindowTitleBarProps {\n platform: string;\n children?: ReactNode;\n}\n\nexport const WindowTitleBar = (props: WindowTitleBarProps) => {\n const { platform, children } = props;\n return (\n <Root controls={platform === \"darwin\" ? \"mac\" : \"overlay\"} data-window-title-bar=\"\">\n <Content>{children}</Content>\n </Root>\n );\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface TagEditorHeadingProps {\n children: ReactNode;\n /** Appends the unsaved-changes marker. */\n hasChanges?: boolean;\n}\n\n/**\n * Screen heading for a tag settings panel. The asterisk stays quiet on purpose —\n * the enabled Save button in the same header is the loud signal.\n */\nexport const TagEditorHeading = (props: TagEditorHeadingProps) => {\n const { children, hasChanges } = props;\n\n return (\n <HStack gap=\"3xs\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" truncate>\n {children}\n </Text>\n {hasChanges ? (\n <Text textStyle=\"label/L/medium\" color=\"fg.muted\" aria-label=\"Unsaved changes\">\n *\n </Text>\n ) : null}\n </HStack>\n );\n};\n","import { Badge, Button, Editable, Flex, Icon, IconButton, Menu } from \"@chakra-ui/react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, ChevronDown, GripVertical, Trash2 } from \"lucide-react\";\n\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { IconColorPickerIconOption } from \"@/components/primitives/icon-options\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n actionsLabel?: string;\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: boolean;\n readOnly?: boolean;\n showDefault?: boolean;\n showIcons?: boolean;\n onActionsChange: (actions: string[]) => void;\n onColorChange: (color: string) => void;\n onDelete: () => void;\n onIconChange: (icon: string | null) => void;\n onNameChange: (name: string) => void;\n}\n\n/** Reads out the selected names rather than a count: a number says nothing about what is on. */\nconst selectionLabel = (selected: TagEditorAction[]) => {\n if (selected.length === 0) return \"None\";\n if (selected.length === 1) return selected[0].label;\n return `${selected[0].label} +${selected.length - 1}`;\n};\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n label: string;\n options: TagEditorAction[];\n optionName: string;\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, label, options, optionName, onChange } = props;\n\n const selected = options.filter((option) => actions.includes(option.value));\n\n const toggleAction = (action: string) => {\n onChange(actions.includes(action) ? actions.filter((item) => item !== action) : [...actions, action]);\n };\n\n return (\n <Menu.Root closeOnSelect={false}>\n <Menu.Trigger asChild>\n <Button\n size=\"2xs\"\n variant=\"ghost\"\n gap=\"xs\"\n color={selected.length === 0 ? \"fg.subtle\" : \"fg\"}\n disabled={disabled}\n aria-label={`${label} for ${optionName}`}\n >\n {selected[0]?.icon}\n {selectionLabel(selected)}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {options.map((option) => (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={option.icon}\n isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => toggleAction(option.value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const TagEditorRow = (props: TagEditorRowProps) => {\n const {\n actionOptions,\n actionsLabel = \"Actions\",\n colorOptions,\n iconOptions,\n value,\n isSaving,\n readOnly,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n } = props;\n const disabled = isSaving || readOnly;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: value.id,\n disabled,\n });\n\n return (\n <Flex\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"group\"\n height=\"tag-editor-row\"\n alignItems=\"center\"\n gap=\"compact\"\n px=\"xs\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n // Lifted out of the list while dragging, so the row carries the drag chrome.\n bg={isDragging ? \"bg.elevated\" : \"transparent\"}\n borderRadius={isDragging ? \"compact\" : \"none\"}\n borderWidth={isDragging ? \"1px\" : undefined}\n boxShadow={isDragging ? \"lg\" : undefined}\n _hover={{ bg: isDragging ? \"bg.elevated\" : \"bg.muted\" }}\n >\n <Flex\n cursor={readOnly ? \"default\" : \"grab\"}\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.muted\" }}\n aria-label={`Reorder ${value.name}`}\n {...attributes}\n {...listeners}\n >\n <Icon as={GripVertical} boxSize=\"icon-xs\" />\n </Flex>\n <IconColorPicker\n color={value.color}\n colorOptions={colorOptions}\n icon={value.icon}\n iconOptions={iconOptions}\n showIcons={showIcons}\n onColorChange={onColorChange}\n onIconChange={onIconChange}\n disabled={disabled}\n aria-label={`Change ${value.name} appearance`}\n />\n {/* The default marker belongs to the name, so it sits beside it rather than drifting right. */}\n <Flex flex=\"1\" minWidth=\"0\" alignItems=\"center\" gap=\"xs\">\n <Editable.Root\n // Editable owns its draft text, so a changed source name must remount it for Cancel/reset flows.\n key={value.name}\n minWidth=\"0\"\n defaultValue={value.name}\n // A freshly added option opens straight into its rename input.\n defaultEdit={value.isNew}\n selectOnFocus\n disabled={disabled}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"paragraph/S/regular\" />\n <Editable.Input textStyle=\"paragraph/S/regular\" />\n </Editable.Root>\n {showDefault && value.isDefault ? (\n <Badge size=\"sm\" variant=\"subtle\" colorPalette=\"blue\">\n Default\n </Badge>\n ) : null}\n </Flex>\n {actionOptions ? (\n <Flex width=\"tag-editor-commands\" justifyContent=\"flex-end\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={disabled}\n label={actionsLabel}\n optionName={value.name}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Flex>\n ) : null}\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.error\", bg: \"bg.error\" }}\n onClick={onDelete}\n disabled={disabled || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Icon as={Trash2} boxSize=\"icon-xs\" />\n </IconButton>\n </Flex>\n );\n};\n","import { Button, chakra, Editable, Flex, Icon, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { Check, ChevronDown, Plus } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorHeading } from \"./tag-editor-heading\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\nconst nextSortOrder = (values: TagEditorValue[]) =>\n values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) + 1 : 0;\n\ninterface TagEditorTitleProps {\n title: string;\n hasChanges?: boolean;\n isSaving?: boolean;\n onTitleChange?: (title: string) => void;\n}\n\n/** Renames the tag definition inline, matching how its options are renamed. */\nconst TagEditorTitle = (props: TagEditorTitleProps) => {\n const { title, hasChanges, isSaving, onTitleChange } = props;\n\n if (!onTitleChange) return <TagEditorHeading hasChanges={hasChanges}>{title}</TagEditorHeading>;\n\n return (\n <Editable.Root\n key={title}\n defaultValue={title}\n disabled={isSaving}\n selectOnFocus\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== title) onTitleChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"label/L/medium\" />\n <Editable.Input textStyle=\"label/L/medium\" />\n </Editable.Root>\n );\n};\n\nconst AddOptionRow = chakra(\"button\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"xs\",\n height: \"tag-editor-add-row\",\n paddingInline: \"xs\",\n color: \"fg.muted\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.muted\", color: \"fg\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { bg: \"transparent\", color: \"fg.muted\" } },\n },\n});\n\ninterface ColumnHeadersProps {\n valueLabel: string;\n actionsLabel?: string;\n}\n\n/** Names each column once, so a row reads as data instead of repeating its own labels. */\nconst ColumnHeaders = (props: ColumnHeadersProps) => {\n const { valueLabel, actionsLabel } = props;\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"compact\"\n paddingInline=\"xs\"\n height=\"tag-editor-add-row\"\n bg=\"bg.subtle\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Flex width=\"tag-editor-lead\" flexShrink=\"0\" />\n <Text flex=\"1\" minWidth=\"0\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {valueLabel}\n </Text>\n {actionsLabel ? (\n <Text width=\"tag-editor-commands\" textAlign=\"right\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {actionsLabel}\n </Text>\n ) : null}\n <Flex width=\"tag-editor-trailing\" flexShrink=\"0\" />\n </Flex>\n );\n};\n\ninterface DefaultValueSelectProps {\n label: string;\n values: TagEditorValue[];\n disabled?: boolean;\n onSelect: (value: TagEditorValue) => void;\n}\n\n/**\n * Exactly one option is the default, so it reads as one select rather than a\n * per-row toggle. A select cannot hold two values, which is the rule itself.\n */\nconst DefaultValueSelect = (props: DefaultValueSelectProps) => {\n const { label, values, disabled, onSelect } = props;\n const current = values.find((value) => value.isDefault);\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"sm\"\n paddingInline=\"xs\"\n paddingBlock=\"xs\"\n bg=\"bg.subtle\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {label}\n </Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"2xs\" variant=\"ghost\" gap=\"xs\" disabled={disabled} aria-label={label}>\n {current?.name ?? \"None\"}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {values.map((value) => (\n <Menu.Item key={value.id} value={value.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={value.id}\n label={value.name}\n isSelected={value.isDefault}\n endContent={value.isDefault ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => onSelect(value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Flex>\n );\n};\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n headerActions,\n values,\n onValuesChange,\n onDeleteValue,\n onSetDefault,\n onTitleChange,\n hasChanges,\n isSaving,\n readOnly,\n addLabel = \"Add option\",\n addName = \"New option\",\n actionOptions,\n actionsLabel,\n defaultValueLabel = \"Default value\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n showDefault,\n showIcons = true,\n framed,\n showColumnHeaders,\n valueColumnLabel = \"Name\",\n } = props;\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const updateValue = (index: number, patch: Partial<TagEditorValue>) => {\n const next = [...values];\n next[index] = { ...next[index], ...patch };\n onValuesChange(next);\n };\n\n const handleAddOption = () => {\n onValuesChange([\n ...values,\n {\n id: `new-${crypto.randomUUID()}`,\n name: addName,\n color: defaultAddColor,\n icon: defaultAddIcon,\n sortOrder: nextSortOrder(values),\n isNew: true,\n },\n ]);\n };\n\n const handleDeleteOption = () => {\n if (!valueToDelete) return;\n if (onDeleteValue) {\n onDeleteValue(valueToDelete);\n } else {\n onValuesChange(values.filter((value) => value.id !== valueToDelete.id));\n }\n setValueToDelete(null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = values.findIndex((value) => value.id === active.id);\n const newIndex = values.findIndex((value) => value.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return;\n\n onValuesChange(arrayMove(values, oldIndex, newIndex).map((value, index) => ({ ...value, sortOrder: index })));\n };\n\n return (\n <>\n <Stack gap=\"2xs\">\n {title || headerActions ? (\n <Flex minHeight=\"tag-editor-row\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Stack gap=\"3xs\" minWidth=\"0\">\n {title ? (\n <TagEditorTitle\n title={title}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onTitleChange={onTitleChange}\n />\n ) : null}\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n {headerActions}\n </Flex>\n ) : null}\n\n <Stack\n gap=\"none\"\n borderWidth={framed ? \"1px\" : undefined}\n borderColor={framed ? \"border.subtle\" : undefined}\n borderRadius={framed ? \"md\" : undefined}\n overflow={framed ? \"hidden\" : undefined}\n >\n {showColumnHeaders ? (\n <ColumnHeaders valueLabel={valueColumnLabel} actionsLabel={actionOptions ? actionsLabel : undefined} />\n ) : null}\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={readOnly ? undefined : handleDragEnd}\n >\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n readOnly={readOnly}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\n actionsLabel={actionsLabel}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onNameChange={(name) => updateValue(index, { name })}\n onColorChange={(color) => updateValue(index, { color })}\n onIconChange={(icon) => updateValue(index, { icon })}\n onActionsChange={(actions) => updateValue(index, { actions })}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n </SortableContext>\n </DndContext>\n\n {readOnly ? null : (\n <AddOptionRow type=\"button\" disabled={isSaving} onClick={handleAddOption}>\n <Icon as={Plus} boxSize=\"icon-xs\" />\n <Text textStyle=\"paragraph/S/regular\">{addLabel}</Text>\n </AddOptionRow>\n )}\n\n {showDefault && values.length > 0 ? (\n <DefaultValueSelect\n label={defaultValueLabel}\n values={values}\n disabled={isSaving || readOnly}\n onSelect={(value) => onSetDefault?.(value)}\n />\n ) : null}\n </Stack>\n </Stack>\n\n <DeleteConfirmationModal\n open={Boolean(valueToDelete)}\n onClose={() => setValueToDelete(null)}\n onDelete={handleDeleteOption}\n headline={deleteHeadline}\n notificationText={valueToDelete ? deleteNotificationText(valueToDelete) : \"\"}\n buttonText={deleteButtonText}\n />\n </>\n );\n};\n","import { Button, HStack } from \"@chakra-ui/react\";\n\nexport interface TagEditorSaveBarProps {\n onSave: () => void;\n onReset: () => void;\n hasChanges?: boolean;\n isSaving?: boolean;\n resetLabel?: string;\n saveLabel?: string;\n}\n\n/**\n * The single commit point for a tag settings screen, anchored in its header.\n * Reset only appears while edits are pending, so the resting state stays quiet.\n */\nexport const TagEditorSaveBar = (props: TagEditorSaveBarProps) => {\n const { onSave, onReset, hasChanges, isSaving, resetLabel = \"Reset\", saveLabel = \"Save\" } = props;\n\n return (\n <HStack gap=\"xs\">\n {hasChanges ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={onReset} disabled={isSaving}>\n {resetLabel}\n </Button>\n ) : null}\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n );\n};\n","import { HStack, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { TagEditor } from \"./tag-editor\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorSaveBar } from \"./tag-editor-save-bar\";\n\nexport interface SaveTagSettingsInput<TValue> {\n deletedIds: Set<string>;\n drafts: TagEditorValue[];\n values: TValue[];\n}\n\ntype EditorLabels = Pick<\n TagEditorProps,\n | \"actionOptions\"\n | \"actionsLabel\"\n | \"addLabel\"\n | \"addName\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"defaultValueLabel\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"framed\"\n | \"iconOptions\"\n | \"readOnly\"\n | \"showDefault\"\n | \"onSetDefault\"\n | \"showColumnHeaders\"\n | \"showIcons\"\n | \"title\"\n | \"valueColumnLabel\"\n>;\n\ntype SortableValue = { id: string; sortOrder: number };\n\nexport interface TagSettingsPanelProps<TValue extends SortableValue> extends EditorLabels {\n errorTitle: string;\n loadingText?: string;\n resetLabel?: string;\n saveLabel?: string;\n /** Loaded values; pass undefined while the initial load is pending. */\n values: TValue[] | undefined;\n /** Load/save error surfaced by the host's data layer. */\n loadError?: unknown;\n /**\n * Persists the pending edits. The host owns fetching and cache invalidation;\n * the panel resets its delete tracking once the returned promise resolves.\n */\n onSave: (input: SaveTagSettingsInput<TValue>) => Promise<void>;\n toEditorValue: (value: TValue) => TagEditorValue;\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean;\n}\n\nconst bySortOrder = (left: TagEditorValue, right: TagEditorValue) =>\n left.sortOrder - right.sortOrder || left.name.localeCompare(right.name);\n\nconst toEditorValues = <TValue extends SortableValue>(\n values: TValue[],\n toEditorValue: (value: TValue) => TagEditorValue,\n) => values.map(toEditorValue).sort(bySortOrder);\n\nconst findOriginalValue = <TValue extends SortableValue>(values: TValue[], draft: TagEditorValue) =>\n values.find((value) => value.id === draft.id);\n\nconst hasTagValueChanges = <TValue extends SortableValue>(\n values: TValue[],\n drafts: TagEditorValue[],\n deletedIds: Set<string>,\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean,\n) => {\n if (deletedIds.size > 0) return true;\n\n return drafts.some((draft) => {\n if (draft.isNew) return true;\n const original = findOriginalValue(values, draft);\n if (!original) return true;\n return valueNeedsUpdate(original, draft) || draft.sortOrder !== original.sortOrder;\n });\n};\n\nconst errorMessage = (error: unknown) => (error instanceof Error ? error.message : error ? String(error) : null);\n\nexport const TagSettingsPanel = <TValue extends SortableValue>(props: TagSettingsPanelProps<TValue>) => {\n const {\n errorTitle,\n loadingText = \"Loading...\",\n resetLabel,\n saveLabel,\n values: loadedValues,\n loadError,\n onSave,\n readOnly,\n toEditorValue,\n valueNeedsUpdate,\n ...editorProps\n } = props;\n const [drafts, setDrafts] = useState<TagEditorValue[]>([]);\n const [deletedIds, setDeletedIds] = useState<Set<string>>(new Set());\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState<unknown>(null);\n\n const values = loadedValues ?? [];\n\n // Edits never refetch in the background, so loaded values only change on\n // initial load and after a save invalidates the host's cache — keeping local\n // drafts in sync.\n useEffect(() => {\n if (loadedValues) setDrafts(toEditorValues(loadedValues, toEditorValue));\n }, [loadedValues, toEditorValue]);\n\n const handleSave = async () => {\n setIsSaving(true);\n setSaveError(null);\n try {\n await onSave({ deletedIds, drafts, values });\n setDeletedIds(new Set());\n } catch (error) {\n setSaveError(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const hasChanges = hasTagValueChanges(values, drafts, deletedIds, valueNeedsUpdate);\n const error = errorMessage(loadError) ?? errorMessage(saveError);\n\n const handleDeleteValue = (value: TagEditorValue) => {\n if (!value.isNew) setDeletedIds(new Set([...deletedIds, value.id]));\n setDrafts(drafts.filter((draft) => draft.id !== value.id));\n };\n\n const handleReset = () => {\n setDrafts(toEditorValues(values, toEditorValue));\n setDeletedIds(new Set());\n setSaveError(null);\n };\n\n return (\n <Stack boxSizing=\"border-box\" minH=\"100%\" p=\"lg\" gap=\"lg\" bg=\"bg\" color=\"fg\">\n {error ? (\n <AlertMessage status=\"error\" colorPalette=\"red\" title={errorTitle} size=\"sm\">\n {error}\n </AlertMessage>\n ) : null}\n {loadedValues === undefined ? (\n <HStack gap=\"sm\" color=\"fg.muted\">\n <Spinner size=\"sm\" />\n <Text textStyle=\"paragraph/S/regular\">{loadingText}</Text>\n </HStack>\n ) : (\n <TagEditor\n {...editorProps}\n readOnly={readOnly}\n values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n onSetDefault={\n editorProps.showDefault\n ? (value) => setDrafts(drafts.map((draft) => ({ ...draft, isDefault: draft.id === value.id })))\n : editorProps.onSetDefault\n }\n hasChanges={hasChanges}\n isSaving={isSaving}\n headerActions={\n readOnly ? undefined : (\n <TagEditorSaveBar\n hasChanges={hasChanges}\n isSaving={isSaving}\n resetLabel={resetLabel}\n saveLabel={saveLabel}\n onSave={() => void handleSave()}\n onReset={handleReset}\n />\n )\n }\n />\n )}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => void;\n setSectionSlot: (sectionId: string, slot: TreeListOrderSlot) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-order\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst dedupe = (ids: string[]) => {\n const seen = new Set<string>();\n const result: string[] = [];\n for (const id of ids) {\n if (seen.has(id)) continue;\n seen.add(id);\n result.push(id);\n }\n return result;\n};\n\nconst getPersistedSnapshot = (state: TreeListOrderState) => ({\n sectionOrder: state.sectionOrder,\n nodeOrderBySection: state.nodeOrderBySection,\n sectionSlotById: state.sectionSlotById,\n});\n\nexport const createTreeListOrderStore = (options: CreateTreeListOrderStoreOptions) =>\n createStore<TreeListOrderState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSectionOrder: (nextSectionIds) => set((state) => ({ ...state, sectionOrder: dedupe(nextSectionIds) })),\n setNodeOrder: (sectionId, nextNodeIds) =>\n set((state) => ({\n ...state,\n nodeOrderBySection: { ...state.nodeOrderBySection, [sectionId]: dedupe(nextNodeIds) },\n })),\n setSectionSlot: (sectionId, slot) =>\n set((state) => ({ ...state, sectionSlotById: { ...state.sectionSlotById, [sectionId]: slot } })),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListOrderStore>>();\n\nexport const getTreeListOrderStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListOrderStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\n\nconst reorderBy = <T extends { id: string }>(items: T[], order: string[]): T[] => {\n if (order.length === 0) return items;\n\n const indexById = new Map(items.map((item, index) => [item.id, index]));\n const placed = new Set<number>();\n const next: T[] = [];\n\n for (const id of order) {\n const index = indexById.get(id);\n if (index === undefined || placed.has(index)) continue;\n placed.add(index);\n next.push(items[index]);\n }\n\n let changed = next.length > 0 && next.length !== items.length;\n for (let i = 0; i < items.length; i += 1) {\n if (placed.has(i)) continue;\n if (next.length !== i && !changed) changed = true;\n next.push(items[i]);\n }\n\n if (!changed) {\n for (let i = 0; i < items.length; i += 1) {\n if (items[i] !== next[i]) {\n changed = true;\n break;\n }\n }\n }\n\n return changed ? next : items;\n};\n\nexport const applyTreeListOrder = (\n sections: TreeListSection[],\n sectionOrder: string[],\n nodeOrderBySection: Record<string, string[]>,\n): TreeListSection[] => {\n let changed = false;\n const reorderedSections = reorderBy(sections, sectionOrder);\n if (reorderedSections !== sections) changed = true;\n\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => sections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) => nodeIds.filter((nodeId) => nodesById.has(nodeId))),\n );\n\n const next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!(section.id in nodeOrderBySection)) {\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n if (remainingNodes.length === section.nodes.length) next.push(section);\n else {\n changed = true;\n next.push({ ...section, nodes: remainingNodes });\n }\n continue;\n }\n\n const orderedNodes = (nodeOrder ?? []).flatMap((nodeId) => {\n const node = nodesById.get(nodeId);\n return node ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = [...orderedNodes, ...remainingNodes];\n if (\n reorderedNodes.length !== section.nodes.length ||\n reorderedNodes.some((node, index) => node !== section.nodes[index])\n ) {\n changed = true;\n next.push({ ...section, nodes: reorderedNodes });\n } else {\n next.push(section);\n }\n }\n\n return changed ? next : sections;\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\nexport type VisibilityOverride = \"hidden\" | \"shown\";\n\ninterface TreeListVisibilitySnapshot {\n sectionOverrides: Record<string, VisibilityOverride>;\n nodeOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TreeListVisibilityState extends TreeListVisibilitySnapshot {\n setSection: (id: string, value: VisibilityOverride | undefined) => void;\n setNode: (id: string, value: VisibilityOverride | undefined) => void;\n toggleSection: (id: string, hiddenByDefault: boolean) => void;\n toggleNode: (id: string, hiddenByDefault: boolean) => void;\n clearSection: (id: string) => void;\n clearNode: (id: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListVisibilitySnapshot = {\n sectionOverrides: {},\n nodeOverrides: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst flipOverride = (current: VisibilityOverride): VisibilityOverride => (current === \"hidden\" ? \"shown\" : \"hidden\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n id: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(id in overrides)) return overrides;\n const { [id]: _removed, ...rest } = overrides;\n return rest;\n }\n\n if (overrides[id] === value) return overrides;\n return { ...overrides, [id]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, id: string, hiddenByDefault: boolean) => {\n const next = flipOverride(resolveEffective(overrides[id], hiddenByDefault));\n return setOverride(overrides, id, next);\n};\n\nconst getPersistedSnapshot = (state: TreeListVisibilityState) => ({\n sectionOverrides: state.sectionOverrides,\n nodeOverrides: state.nodeOverrides,\n});\n\nexport const createTreeListVisibilityStore = (options: CreateTreeListVisibilityStoreOptions) =>\n createStore<TreeListVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSection: (id, value) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, value) })),\n setNode: (id, value) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, value) })),\n toggleSection: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n sectionOverrides: toggleOverride(state.sectionOverrides, id, hiddenByDefault),\n })),\n toggleNode: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n nodeOverrides: toggleOverride(state.nodeOverrides, id, hiddenByDefault),\n })),\n clearSection: (id) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, undefined) })),\n clearNode: (id) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListVisibilityStore>>();\n\nexport const getTreeListVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListVisibilitySnapshot, TreeListVisibilityState };\n","export interface FileIconThemeFont {\n fontFamily: string;\n src: { url: string; format?: string }[];\n weight?: string;\n style?: string;\n}\n\nexport interface FileIconThemeDefinition {\n fontCharacter?: string;\n fontColor?: string;\n fontId?: string;\n}\n\nexport interface FileIconThemePreferenceOption {\n id: string;\n title?: string;\n definitions: Record<string, unknown>;\n fileExtensions: Record<string, string>;\n fileNames: Record<string, string>;\n defaults: { file?: string; folder?: string };\n fonts: FileIconThemeFont[];\n}\n\nexport const defaultFileIconThemePreferences: FileIconThemePreferenceOption[] = [];\n\nexport const isFileIconThemePreference = (\n value: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n): value is string => typeof value === \"string\" && themes.some((theme) => theme.id === value);\n\n// VS Code matches the longest compound extension first (\"d.ts\" before \"ts\").\nconst extensionCandidates = (filename: string) => {\n const parts = filename.toLowerCase().split(\".\");\n const candidates: string[] = [];\n for (let i = 1; i < parts.length; i += 1) candidates.push(parts.slice(i).join(\".\"));\n return candidates;\n};\n\nconst resolveDefinitionKey = (theme: FileIconThemePreferenceOption, filename: string, isDirectory: boolean) => {\n if (isDirectory) return theme.defaults.folder;\n\n const named = theme.fileNames[filename.toLowerCase()];\n if (named) return named;\n\n for (const candidate of extensionCandidates(filename)) {\n const match = theme.fileExtensions[candidate];\n if (match) return match;\n }\n\n return theme.defaults.file;\n};\n\nconst fontFamilyForDefinition = (theme: FileIconThemePreferenceOption, definition: FileIconThemeDefinition) => {\n if (definition.fontId) {\n const matched = theme.fonts.find((font) => font.fontFamily === `${theme.id}-${definition.fontId}`);\n if (matched) return matched.fontFamily;\n }\n return theme.fonts[0]?.fontFamily;\n};\n\nexport interface ResolvedFileIconGlyph {\n fontFamily: string;\n fontCharacter: string;\n fontColor?: string;\n}\n\n// VS Code icon themes store the glyph as a CSS escape (\"\\\\E023\"); decode it to the real code point.\nconst decodeFontCharacter = (value: string) => {\n const match = /^\\\\([0-9a-fA-F]+)$/.exec(value);\n return match ? String.fromCodePoint(Number.parseInt(match[1], 16)) : value;\n};\n\nexport const resolveFileIconGlyph = (\n theme: FileIconThemePreferenceOption | undefined,\n filename: string,\n isDirectory = false,\n): ResolvedFileIconGlyph | undefined => {\n if (!theme) return undefined;\n\n const key = resolveDefinitionKey(theme, filename, isDirectory);\n if (!key) return undefined;\n\n const definition = theme.definitions[key] as FileIconThemeDefinition | undefined;\n if (!definition?.fontCharacter) return undefined;\n\n const fontFamily = fontFamilyForDefinition(theme, definition);\n if (!fontFamily) return undefined;\n\n return {\n fontFamily,\n fontCharacter: decodeFontCharacter(definition.fontCharacter),\n fontColor: definition.fontColor,\n };\n};\n\nconst FONT_STYLE_ATTRIBUTE = \"data-pstdio-file-icon-fonts\";\n\nconst fontFaceRule = (font: FileIconThemeFont) => {\n const src = font.src\n .map((entry) => `url(\"${entry.url}\")${entry.format ? ` format(\"${entry.format}\")` : \"\"}`)\n .join(\", \");\n return [\n \"@font-face {\",\n ` font-family: \"${font.fontFamily}\";`,\n ` src: ${src};`,\n ` font-weight: ${font.weight ?? \"normal\"};`,\n ` font-style: ${font.style ?? \"normal\"};`,\n \"}\",\n ].join(\"\\n\");\n};\n\nexport const applyFileIconThemePreference = (\n themeId: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n) => {\n if (typeof document === \"undefined\") return;\n\n let style = document.querySelector<HTMLStyleElement>(`style[${FONT_STYLE_ATTRIBUTE}]`);\n if (!style) {\n style = document.createElement(\"style\");\n style.setAttribute(FONT_STYLE_ATTRIBUTE, \"\");\n document.head.appendChild(style);\n }\n\n const theme = themes.find((option) => option.id === themeId);\n style.textContent = (theme?.fonts ?? []).map(fontFaceRule).join(\"\\n\\n\");\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyFileIconThemePreference,\n defaultFileIconThemePreferences,\n type FileIconThemePreferenceOption,\n isFileIconThemePreference,\n} from \"./apply-file-icon-theme-preference\";\nimport { createBrowserStorage } from \"./browser-storage\";\n\nconst STORAGE_KEY = \"file-icon-theme-preference\";\n\n// The bundled Seti theme is the preferred default; fall back to whatever is registered first.\nconst getDefaultFileIconThemePreference = (themes: readonly FileIconThemePreferenceOption[]) =>\n themes.find((theme) => theme.id.endsWith(\".seti\"))?.id ?? themes[0]?.id ?? null;\n\ninterface FileIconThemePreferenceContextValue {\n fileIconThemePreference: string | null;\n fileIconThemePreferences: readonly FileIconThemePreferenceOption[];\n activeFileIconTheme: FileIconThemePreferenceOption | undefined;\n setFileIconThemePreference: (preference: string) => void;\n}\n\nconst FileIconThemePreferenceContext = createContext<FileIconThemePreferenceContextValue | null>(null);\n\ninterface FileIconThemePreferenceProviderProps {\n children: ReactNode;\n themePreferences?: readonly FileIconThemePreferenceOption[];\n}\n\nconst getInitialPreference = (themes: readonly FileIconThemePreferenceOption[]) => {\n if (typeof window === \"undefined\") return getDefaultFileIconThemePreference(themes);\n\n const stored = createBrowserStorage().getItem(STORAGE_KEY);\n if (isFileIconThemePreference(stored, themes)) return stored;\n\n return getDefaultFileIconThemePreference(themes);\n};\n\nexport const FileIconThemePreferenceProvider = (props: FileIconThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultFileIconThemePreferences } = props;\n const [fileIconThemePreference, setFileIconThemePreference] = useState<string | null>(() =>\n getInitialPreference(themePreferences),\n );\n\n useEffect(() => {\n const resolved = isFileIconThemePreference(fileIconThemePreference, themePreferences)\n ? fileIconThemePreference\n : getDefaultFileIconThemePreference(themePreferences);\n\n if (resolved !== fileIconThemePreference) {\n setFileIconThemePreference(resolved);\n return;\n }\n\n applyFileIconThemePreference(resolved, themePreferences);\n if (typeof window !== \"undefined\" && resolved) createBrowserStorage().setItem(STORAGE_KEY, resolved);\n }, [fileIconThemePreference, themePreferences]);\n\n const activeFileIconTheme = themePreferences.find((theme) => theme.id === fileIconThemePreference);\n\n return (\n <FileIconThemePreferenceContext\n value={{\n fileIconThemePreference,\n fileIconThemePreferences: themePreferences,\n activeFileIconTheme,\n setFileIconThemePreference,\n }}\n >\n {children}\n </FileIconThemePreferenceContext>\n );\n};\n\nexport const useFileIconThemePreference = () => {\n const context = useContext(FileIconThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useFileIconThemePreference must be used within a FileIconThemePreferenceProvider\");\n }\n\n return context;\n};\n","import { Folder } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\n\nimport { type FileIconThemePreferenceOption, resolveFileIconGlyph } from \"./apply-file-icon-theme-preference\";\nimport { getFileTypeIcon } from \"./get-file-type-icon\";\n\ninterface ResolveFileIconElementOptions {\n isDirectory?: boolean;\n theme?: FileIconThemePreferenceOption;\n size?: number;\n}\n\n// Renders a contributed icon-font glyph when the active theme matches; otherwise falls back to Lucide icons.\nexport const resolveFileIconElement = (filename: string, options: ResolveFileIconElementOptions = {}) => {\n const { isDirectory = false, theme, size = 16 } = options;\n\n const glyph = resolveFileIconGlyph(theme, filename, isDirectory);\n if (glyph) {\n const style: CSSProperties = {\n fontFamily: `\"${glyph.fontFamily}\"`,\n color: glyph.fontColor,\n fontSize: size,\n lineHeight: 1,\n display: \"inline-flex\",\n };\n return (\n <span aria-hidden=\"true\" style={style}>\n {glyph.fontCharacter}\n </span>\n );\n }\n\n if (isDirectory) return <Folder size={size} />;\n\n const Icon = getFileTypeIcon(filename);\n return <Icon size={size} />;\n};\n"],"names":["ActivityComposer","props","actor","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","actions","onAttach","onChange","onSubmit","rootProps","internalValue","setInternalValue","useState","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","undefined","handleSubmit","event","preventDefault","jsx","chakra","borderColor","jsxs","HStack","ActivityAvatar","Box","Textarea","color","currentTarget","Spacer","Tooltip","IconButton","Icon","Paperclip","ArrowUp","Activity","Root","ActivityRoot","Header","ActivityHeader","Feed","ActivityFeed","Timeline","ActivityTimeline","Event","ActivityEvent","Comment","ActivityComment","Reply","ActivityReply","Composer","Avatar","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","entry","label","secondaryLabel","searchText","hasInputPrefix","query","inputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","find","mode","id","getPaletteEffectiveQuery","modeId","candidate","slice","limitDefaultAssetEntries","entries","limit","counts","filter","assetType","count","filterPaletteEntries","options","effectiveQuery","getEffectiveQuery","toLowerCase","filteredEntries","includes","defaultAssetLimit","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","icon","endContent","shortcut","isSelected","Check","onActivate","buildRows","rows","forEach","index","previousEntry","group","push","type","entryIndex","getActiveRowIndex","activeIndex","findIndex","row","PaletteList","emptyLabel","onHover","scrollRef","activeRowIndex","virtualizer","useVirtualizer","getScrollElement","current","estimateSize","getItemKey","initialRect","width","height","overscan","useEffect","scrollToIndex","align","behavior","Text","getTotalSize","getVirtualItems","map","virtualRow","measureElement","top","start","ListRow","key","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","$","_c","children","searchValue","searchPlaceholder","searchAriaLabel","t0","searchIcon","searchInputRef","searchAutoFocus","showCloseButton","t1","closeButtonLabel","t2","bodyBefore","footerStart","footerEnd","scrollAreaProps","onSearchChange","onSearchKeyDown","t3","t4","restScrollAreaProps","t5","t6","maxH","showHorizontalScrollbar","t7","target","t8","Input","t9","InputGroup","t10","Dialog","CloseButton","t11","t12","ScrollArea","t13","resolveStateValue","state","fallback","Palette","open","initialQuery","initialActiveIndex","resetKey","inputIcon","filterEntries","onActiveEntryChange","onQueryChange","onClose","onEscape","setQueryState","setActiveIndex","inputRef","useRef","setupRef","activeEntry","resolvedInputIcon","activeMode","resolvedPlaceholder","nextQuery","setQuery","runActiveEntry","closePalette","previousSetup","timeout","setTimeout","input","focus","setSelectionRange","clearTimeout","Math","min","max","t14","t15","entryCount","handleEscape","t16","current_0","_temp","stopPropagation","handleKeyDown","t17","details","t18","Symbol","for","t19","viewportRef","viewportProps","style","overflowAnchor","t20","nextQuery_0","t21","t22","t23","current_1","nonMacModifierLabels","alt","control","ctrl","mod","shift","macModifierLabels","Option","cmd","Command","command","meta","option","keyLabels","arrowleft","ArrowLeft","arrowright","ArrowRight","getShortcutPlatform","navigator","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","part","Boolean","getShortcutDisplayParts","binding","Array","isArray","PaletteShortcut","steps","stepIndex","Fragment","part_0","partIndex","Kbd","join","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","title","defaultOpen","action","background","transform","ChevronRight","Collapsible","Flex","e","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","body","kind","status","sourceLabel","targetLabel","filterItems","items","normalizedQuery","groupItems","needsInput","urgent","normal","orderItemsForDisplay","flatMap","metadataDescription","timeLabel","getActionButtons","onDismiss","X","tooltip","onAction","NotificationEndContent","onRunAction","Badge","Button","destructive","NotificationRows","onActivateItem","onActiveIndexChange","groups","rowIndex","Stack","currentIndex","Bell","LoadingRows","NotificationCenter","autoFocus","error","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2","Search","AlertMessage","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","ref","containerProps","isOpen","button","BubblePanel","menu","closeLabel","onPopOut","popOutLabel","testId","ariaLabel","SquareArrowOutUpRight","Minus","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","buttonText","notificationText","onDelete","handleDelete","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FileText","name","path","RepoPickerListEntry","selectedPath","selectedPathSet","onEntryClick","has","isAlreadySelected","isDisabled","handleClick","focusInlinePickerOption","from","querySelectorAll","indexOf","document","activeElement","nextIndex","RepoPickerDialog","currentPath","selectedPaths","isLoading","isSelectDisabled","onSelect","onSelectHomeDirectory","onSelectParentDirectory","Set","searchScope","T0","t24","Home","t25","t26","t27","ChevronUp","t28","t29","t30","T1","t31","t32","t33","t34","t35","t36","t37","t38","t39","padding","t40","t41","t42","Body","t43","t44","t45","t46","Content","t47","Positioner","t48","linkProps","alignItems","display","gap","minW","maxW","overflow","outline","textOverflow","whiteSpace","_active","_focus","_focusVisible","staticProps","cursor","textDecoration","_hover","isInteractiveItem","url","onClick","BreadcrumbItemLink","isCurrent","linkComponent","LinkComponent","ChakraBreadcrumb","BreadcrumbItemContent","content","contextMenuActions","placement","ResourceContextMenu","BreadcrumbSeparator","separator","Breadcrumb","React","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","backgroundClip","backgroundImage","Label","ErrorBoundary","Component","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","ErrorFallback","message","AbsoluteCenter","hasGlyph","TagSwatch","iconOptions","showIcon","getIconComponent","IconComponent","Center","SwatchTrigger","base","borderRadius","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","justifyContent","bg","IconColorPicker","colorOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","optionColors","optionIcons","selectedIcon","Popover","optionColor","Grid","selected","SimpleCard","SimpleCardBody","IntegrationCard","version","category","active","actionLabel","segmentedControlSlotRecipe","defineSlotRecipe","className","slots","root","borderWidth","textStyle","transitionProperty","transitionDuration","variants","size","sm","paddingInline","xs","defaultVariants","withProvider","withContext","createSlotRecipeContext","recipe","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","Spinner","paddingEnd","DEFAULT_SNAPSHOT","expandedSections","expandedNodes","SIDENAV_STORE_NAMESPACE","toStorageName","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot","createSidenavStore","initialState","snapshot","createStore","persist","set","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","setNodeExpanded","setWidth","reset","storage","createJSONStorage","createBrowserStorage","partialize","sidenavStoreRegistry","Map","getSidenavStore","existingStore","get","store","useSidenavStore","selector","useStore","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","resolveInitialWidth","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","sections","activeNodeId","contextActions","footer","closable","defaultExpandedSections","onNavigate","onOpenChange","maxWidth","virtualize","initialWidth","persistedWidth","_temp3","_temp4","_temp5","_temp6","effectiveWidth","widthCss","overflowX","minHeight","flexDirection","TreeList","state_0","state_1","state_2","state_3","state_4","tabOverrides","STORE_NAMESPACE","resolveEffective","override","hiddenByDefault","setOverride","overrides","_removed","toggleOverride","createTabVisibilityStore","setTab","toggleTab","clearTab","storeRegistry","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","canHide","isNodeVisible","node","nodeOverrides","filterNodes","nodes","changed","next","filteredChildren","filterVisibleNodes","filterVisibleSections","sectionOverrides","section","filteredNodes","emptyState","visibilityEndContent","effective","visibleIcon","hiddenIcon","buildSectionAction","onToggleSection","buildNodeAction","onToggleNode","buildTreeVisibilityMenuActions","result","appendGroup","separatorBefore","actionsForSections","sectionActions","headerSections","footerSections","resetIcon","onResetAll","filterVisibleTabs","placements","getKey","pinned","buildTabVisibilityMenuActions","getIcon","nonCloseableCount","contributionId","onToggleTab","List","Tab","Trigger","Close","WindowTabItem","tab","tabIndex","reorderable","onKeyDown","attributes","listeners","setNodeRef","setActivatorNodeRef","transition","isDragging","isSorting","useSortable","CSS","Translate","toString","defaultPrevented","WindowTabs","tabs","selectedId","onReorder","listRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","querySelector","scrollIntoView","block","inline","T2","closeTab","triggers","neighbor","handleKey","index_0","DndContext","closestCenter","over","String","SortableContext","horizontalListSortingStrategy","tab_0","index_1","event_0","y","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","optionName","toggleAction","Menu","ChevronDown","option_0","TagEditorRow","actionOptions","actionsLabel","isSaving","readOnly","showDefault","onActionsChange","onNameChange","Transform","GripVertical","trimmed","Editable","isNew","isDefault","Trash2","nextSortOrder","sortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","value_0","TagEditor","headerActions","onValuesChange","onDeleteValue","onSetDefault","addLabel","addName","defaultValueLabel","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","updateValue","patch","handleAddOption","crypto","randomUUID","handleDeleteOption","handleDragEnd","oldIndex","newIndex","arrayMove","verticalListSortingStrategy","Plus","TagEditorSaveBar","onSave","resetLabel","saveLabel","bySortOrder","left","right","localeCompare","toEditorValues","toEditorValue","sort","findOriginalValue","draft","hasTagValueChanges","drafts","deletedIds","valueNeedsUpdate","some","original","errorMessage","Error","TagSettingsPanel","errorTitle","loadingText","loadedValues","loadError","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","handleDeleteValue","sectionOrder","nodeOrderBySection","sectionSlotById","dedupe","ids","seen","add","createTreeListOrderStore","setSectionOrder","nextSectionIds","setNodeOrder","nextNodeIds","setSectionSlot","slot","resetSectionOrder","resetNodeOrder","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","nodesById","assignedNodeIds","Object","nodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","flipOverride","createTreeListVisibilityStore","setSection","setNode","clearSection","clearNode","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","filename","parts","candidates","resolveDefinitionKey","defaults","folder","named","fileNames","match","fileExtensions","file","fontFamilyForDefinition","definition","fontId","matched","fonts","font","fontFamily","decodeFontCharacter","exec","fromCodePoint","resolveFileIconGlyph","definitions","fontCharacter","fontColor","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","format","weight","applyFileIconThemePreference","themeId","createElement","setAttribute","head","appendChild","textContent","STORAGE_KEY","getDefaultFileIconThemePreference","endsWith","FileIconThemePreferenceContext","createContext","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","setItem","activeFileIconTheme","fileIconThemePreferences","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","fontSize","lineHeight","getFileTypeIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["HTMLChakraProps","Box","chakra","HStack","Icon","IconButton","Spacer","Textarea","ArrowUp","Paperclip","FormEvent","ReactNode","useState","Tooltip","ActivityActor","ActivityAvatar","ActivityComposerProps","Omit","actor","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","actions","onAttach","onChange","onSubmit","ActivityComposer","props","rootProps","internalValue","setInternalValue","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","undefined","handleSubmit","event","HTMLFormElement","preventDefault","borderColor","color","currentTarget","ActivityAvatar","ActivityComment","ActivityReply","ActivityComposer","ActivityEvent","ActivityFeed","ActivityHeader","ActivityRoot","ActivityTimeline","ActivityActor","ActivityAvatarProps","ActivityCommentProps","ActivityReplyProps","ActivityComposerProps","ActivityEventProps","ActivityFeedProps","ActivityHeaderProps","ActivityRootProps","ActivityTimelineProps","Activity","Root","Header","Feed","Timeline","Event","Comment","Reply","Composer","Avatar","ReactNode","DEFAULT_PALETTE_ASSET_LIMIT","PaletteSearchEntry","id","mode","label","searchText","secondaryLabel","assetType","PaletteMode","inputPrefix","FilterPaletteEntriesOptions","query","getEffectiveQuery","defaultAssetLimit","getSearchableText","entry","hasInputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","prefixedMode","find","getPaletteEffectiveQuery","modeId","candidate","trim","slice","length","limitDefaultAssetEntries","entries","T","limit","counts","Record","filter","count","filterPaletteEntries","options","effectiveQuery","toLowerCase","filteredEntries","includes","undefined","Box","HStack","Icon","Text","useVirtualizer","Check","RefObject","useEffect","PaletteEntry","ListRow","ListRowItem","PaletteRow","type","id","label","entry","T","entryIndex","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","secondaryLabel","icon","endContent","shortcut","isSelected","undefined","onActivate","buildRows","entries","rows","forEach","index","previousEntry","group","push","getActiveRowIndex","activeIndex","findIndex","row","PaletteListProps","emptyLabel","onHover","scrollRef","HTMLDivElement","PaletteList","props","activeRowIndex","virtualizer","count","length","getScrollElement","current","estimateSize","getItemKey","initialRect","width","height","overscan","scrollToIndex","align","behavior","getTotalSize","getVirtualItems","map","virtualRow","key","measureElement","top","start","Box","CloseButton","Dialog","Input","InputGroup","KeyboardEventHandler","ReactNode","Ref","ScrollArea","ScrollAreaProps","SearchModalContentProps","children","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","HTMLInputElement","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","Omit","onSearchChange","value","onSearchKeyDown","hasContent","undefined","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","props","$","_c","t0","t1","t2","t3","t4","restScrollAreaProps","t5","t6","maxH","showHorizontalScrollbar","t7","event","target","t8","t9","t10","t11","t12","t13","_c","_Fragment","Dialog","KeyboardEvent","ReactNode","SetStateAction","useEffect","useRef","useState","DEFAULT_PALETTE_ASSET_LIMIT","FilterPaletteEntriesOptions","filterPaletteEntries","getPaletteEffectiveQuery","PaletteMode","PaletteSearchEntry","resolvePaletteMode","PaletteList","SearchModalContent","PaletteEntry","description","icon","shortcut","endContent","group","isSelected","onActivate","PaletteState","query","mode","activeIndex","entries","T","PaletteEscapeContext","activeEntry","entryCount","setQuery","setActiveIndex","index","runActiveEntry","closePalette","PaletteStateValue","TValue","state","PaletteProps","open","initialQuery","initialActiveIndex","modes","resetKey","inputIcon","placeholder","emptyLabel","footerStart","footerEnd","filterEntries","onActiveEntryChange","entry","onQueryChange","onClose","onEscape","ctx","resolveStateValue","value","fallback","Palette","props","$","_c","t0","t1","t2","t3","undefined","setQueryState","inputRef","scrollRef","t4","setupRef","filteredEntries","resolvedInputIcon","t5","activeMode","getEffectiveQuery","resolvedPlaceholder","t6","nextQuery","t7","t8","t10","t9","previousSetup","current","shouldInitialize","timeout","setTimeout","input","focus","length","setSelectionRange","clearTimeout","t11","t12","Math","min","max","t13","t14","t15","handled","handleEscape","t16","event","key","preventDefault","current_0","_temp","stopPropagation","handleKeyDown","t17","details","t18","Symbol","for","t19","maxH","showHorizontalScrollbar","viewportRef","viewportProps","style","overflowAnchor","t20","nextQuery_0","t21","t22","t23","current_1","_c","_temp","Kbd","ArrowLeft","ArrowRight","Command","LucideIcon","Option","Fragment","PaletteShortcutBinding","ShortcutPlatform","ShortcutDisplayPart","label","Icon","nonMacModifierLabels","Record","alt","control","ctrl","mod","shift","macModifierLabels","cmd","command","meta","option","keyLabels","arrowleft","arrowright","getShortcutPlatform","navigator","platform","toLowerCase","includes","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","map","part","trim","filter","Boolean","getShortcutDisplayParts","binding","steps","Array","isArray","PaletteShortcut","props","$","_c","t0","stepIndex","_temp","join","part_0","partIndex","length","t1","_c","Fragment","_temp","_Fragment","HStack","StackProps","HorizontalMenuStackProps","children","HorizontalMenuStack","props","$","_c","rest","t0","t1","t2","t3","h","px","py","borderBottomWidth","undefined","t4","_c","Box","Collapsible","Flex","Text","ChevronRight","ReactNode","ItemSectionProps","children","title","defaultOpen","action","ItemSection","props","$","_c","t0","undefined","t1","Symbol","for","background","t2","t3","transform","t4","t5","_temp","t6","t7","t8","e","stopPropagation","_c","_temp","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","const","PANEL_HEADER_TAB_SIZE","Badge","Box","Button","HStack","Icon","Skeleton","Stack","Text","Bell","Search","X","KeyboardEvent","useEffect","useRef","useState","SearchModalContent","AlertMessage","ListRow","ListRowAction","NotificationCenterAction","NotificationCenterItem","NotificationCenterProps","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","title","body","kind","status","sourceLabel","targetLabel","searchText","actions","map","action","label","filter","Boolean","join","toLowerCase","filterItems","items","query","normalizedQuery","trim","includes","groupItems","needsInput","urgent","normal","id","group","length","orderItemsForDisplay","flatMap","metadataDescription","parts","timeLabel","getActionButtons","props","Pick","onDismiss","push","icon","tooltip","onAction","NotificationEndContent","$","_c","onRunAction","t0","t1","t2","t3","destructive","event","stopPropagation","NotificationRows","activeIndex","onActiveIndexChange","index","onActivateItem","groups","rowIndex","currentIndex","LoadingRows","Symbol","for","_temp","NotificationCenter","autoFocus","emptyLabel","error","footerEnd","footerStart","loading","onEscape","onQueryChange","undefined","internalQuery","setInternalQuery","setActiveIndex","inputRef","activeQuery","filteredItems","displayItems","activeItem","t4","t5","timeout","setTimeout","current","focus","clearTimeout","t6","t7","Math","min","max","t8","nextQuery","updateQuery","t9","key","preventDefault","current_0","_temp2","handleKeyDown","t10","t11","maxH","showHorizontalScrollbar","t12","t13","row","current_1","_c","_temp","_temp2","Flex","FlexProps","ReactNode","AttachedMenuProps","Omit","children","AttachedMenu","props","$","_c","rest","t0","_c","Flex","FlexProps","ReactNode","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanelProps","Omit","children","header","resizable","AttachedPanel","props","$","_c","minWidth","rest","t0","t1","width","undefined","resolvedMinWidth","resolvedWidth","t2","t3","_c","chakra","HTMLChakraProps","IconButton","IconButtonProps","forwardRef","ReactNode","Tooltip","BubbleButtonStyleProps","BubbleButtonProps","Omit","containerProps","isOpen","tooltip","BubbleButton","HTMLButtonElement","props","ref","$","_c","children","rest","t0","undefined","t1","t2","t3","Symbol","for","borderColor","t4","button","t5","t6","_c","Box","chakra","Flex","HStack","HTMLChakraProps","IconButton","Portal","Spacer","Minus","SquareArrowOutUpRight","forwardRef","ReactNode","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","BubblePanelProps","isOpen","title","menu","onClose","closeLabel","onPopOut","popOutLabel","width","height","containerProps","testId","children","BubblePanel","HTMLDivElement","props","ref","$","_c","t0","t1","t2","ariaLabel","undefined","t3","t4","t5","Symbol","for","t6","t7","t8","t9","t10","t11","t12","_c","Button","CloseButton","Dialog","Portal","Stack","Text","ReactNode","useState","DeleteConfirmationModalProps","open","onClose","onDelete","Promise","headline","notificationText","buttonText","children","DeleteConfirmationModal","props","isDeleting","setIsDeleting","handleDelete","details","Badge","Button","Dialog","Icon","Input","InputGroup","Stack","Text","ChevronUp","FileText","Folder","FolderOpen","Home","Search","KeyboardEvent","useEffect","useState","ListRow","ScrollArea","RepoPickerDialogEntry","name","path","isDirectory","isGitRepo","RepoPickerDialogProps","open","title","description","currentPath","entries","selectedPath","selectedPaths","isLoading","error","isSelectDisabled","onClose","onSelect","onSelectHomeDirectory","onSelectParentDirectory","onEntryClick","entry","getEntryIcon","filterEntries","query","normalizedQuery","trim","toLowerCase","filter","includes","RepoPickerListEntryProps","selectedPathSet","Set","RepoPickerListEntry","props","$","_c","t0","has","isAlreadySelected","isDisabled","t1","handleClick","t2","t3","t4","t5","t6","t7","undefined","t8","focusInlinePickerOption","event","HTMLDivElement","key","options","Array","from","currentTarget","querySelectorAll","HTMLButtonElement","length","currentIndex","indexOf","document","activeElement","nextIndex","preventDefault","focus","RepoPickerDialog","setQuery","filteredEntries","searchScope","t10","t9","t11","t12","t13","t14","t15","details","t16","Symbol","for","t17","t18","t19","t20","t21","t22","T0","t23","t24","t25","t26","t27","t28","t29","t30","T1","t31","t32","t33","t34","t35","t36","t37","target","value","t38","t39","padding","map","t40","t41","t42","Body","t43","t44","t45","t46","Content","t47","Positioner","t48","Root","_c","Breadcrumb","ChakraBreadcrumb","SystemStyleObject","React","ResourceContextAction","ResourceContextMenu","BreadcrumbItem","title","ReactNode","url","onClick","contextMenuActions","BreadcrumbLinkProps","to","children","BreadcrumbProps","RootProps","separator","separatorGap","items","linkComponent","ComponentType","linkProps","alignItems","display","gap","minW","maxW","overflow","outline","textOverflow","whiteSpace","_active","_focus","_focusVisible","const","staticProps","color","cursor","textDecoration","_hover","BreadcrumbItemContentProps","item","isCurrent","BreadcrumbSeparatorProps","isInteractiveItem","Boolean","BreadcrumbItemLink","props","$","_c","LinkComponent","t0","BreadcrumbItemContent","content","length","t1","Symbol","for","placement","t2","BreadcrumbSeparator","undefined","forwardRef","HTMLDivElement","BreadcrumbRoot","ref","rest","index","map","_c","ChakraBreadcrumb","Box","BoxProps","Text","TextProps","ContentPlaceholderProps","contentPlaceholderBackgroundImage","ContentPlaceholder","props","$","_c","t0","Symbol","for","backgroundClip","backgroundImage","display","width","t1","Label","_c","AbsoluteCenter","Button","Stack","Text","Component","ErrorInfo","ReactNode","AlertMessage","ContentPlaceholder","ErrorBoundaryProps","children","fallback","label","onReset","ErrorBoundaryState","error","Error","ErrorBoundary","state","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","props","render","ErrorFallbackProps","ErrorFallback","$","_c","t0","t1","t2","message","t3","t4","t5","t6","_c","Box","Center","CenterProps","Icon","getIconComponent","IconColorPickerIconOption","TagSwatchProps","Omit","color","icon","iconOptions","showIcon","hasGlyph","Boolean","TagSwatch","props","$","_c","rest","t0","undefined","t1","IconComponent","t2","t3","t4","_c","Box","chakra","Grid","Icon","Popover","Portal","Stack","Text","IconColorPickerIconOption","optionColors","optionIcons","TagSwatch","SwatchTrigger","base","display","borderRadius","cursor","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","alignItems","justifyContent","color","_hover","bg","IconColorPickerProps","colorOptions","icon","iconOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","IconColorPicker","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","ariaLabel","selectedIcon","t6","Symbol","for","placement","t7","t8","t9","t10","t11","t12","t13","optionColor","map","t14","entry","selected","value","label","t15","t16","t17","_c","_Fragment","Box","BoxProps","SimpleCardProps","SimpleCard","props","$","_c","children","rest","t0","SimpleCardBodyProps","SimpleCardBody","_c","Badge","Box","Button","HStack","Icon","Stack","Text","Check","ReactNode","SimpleCard","SimpleCardBody","IntegrationCardProps","icon","name","description","id","version","category","active","actionLabel","IntegrationCard","props","$","_c","t0","undefined","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","_c","defineSlotRecipe","segmentedControlSlotRecipe","className","slots","base","root","display","alignItems","gap","padding","bg","borderRadius","borderWidth","borderColor","item","justifyContent","whiteSpace","textStyle","color","cursor","transitionProperty","transitionDuration","focusVisibleRing","_hover","_selected","_disabled","opacity","variants","size","sm","height","paddingInline","xs","defaultVariants","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","segmentedControlSlotRecipe","recipe","withProvider","withContext","VariantProps","SegmentedControlRootProps","SegmentedControlRoot","HTMLDivElement","SegmentedControlItemProps","SegmentedControlItem","HTMLButtonElement","SegmentedControlOption","value","label","SegmentedControlProps","Omit","options","onValueChange","disabled","SegmentedControl","props","$","_c","ariaLabel","rootProps","t0","t1","option","selected","undefined","map","withProvider","withContext","_c","Toaster","ChakraToaster","createToaster","Portal","Spinner","Stack","Toast","ScrollArea","toaster","ReturnType","placement","pauseOnPageIdle","duration","$","_c","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","paddingEnd","action","label","_c","ChakraToaster","_temp","useStore","createJSONStorage","persist","createStore","createBrowserStorage","SidenavSnapshot","open","expandedSections","expandedNodes","width","SidenavState","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","expanded","setNodeExpanded","setWidth","reset","CreateSidenavStoreOptions","storageKey","initialState","Partial","DEFAULT_SNAPSHOT","SIDENAV_STORE_NAMESPACE","toStorageName","toggleId","values","id","includes","filter","value","setExpanded","getPersistedSnapshot","state","createSidenavStore","options","snapshot","set","name","storage","partialize","sidenavStoreRegistry","Map","ReturnType","getSidenavStore","existingStore","get","store","useSidenavStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","toStorageName","getPersistedSnapshot","_c","store","Box","ReactNode","SidenavFooterProps","children","SidenavFooter","props","$","_c","t0","_c","HStack","ReactNode","PANEL_HEADER_HEIGHT","SidenavHeaderProps","children","SidenavHeader","props","$","_c","t0","_c","Box","Flex","Text","useEffect","useRef","ResourceContextMenu","ScrollArea","TreeList","useSidenavStore","SidenavProps","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","value","min","max","Math","resolveInitialWidth","width","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","props","$","_c","storageKey","sections","activeNodeId","contextActions","t0","header","footer","closable","t1","emptyLabel","t2","defaultExpandedSections","linkComponent","onNavigate","onOpenChange","resizable","t3","minWidth","t4","maxWidth","t5","virtualize","t6","t7","undefined","viewportRef","t8","initialWidth","t9","expandedSections","t10","initialState","open","_temp","persistedWidth","_temp2","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","t11","t12","t13","t14","effectiveWidth","widthCss","t15","t16","t17","Symbol","for","display","style","overflowX","minHeight","flexDirection","t18","length","t19","t20","content","t21","state","state_0","state_1","state_2","state_3","state_4","_c","_temp","_temp2","useStore","createJSONStorage","persist","createStore","createBrowserStorage","VisibilityOverride","TabVisibilitySnapshot","tabOverrides","Record","TabVisibilityState","setTab","key","value","toggleTab","hiddenByDefault","clearTab","reset","CreateTabVisibilityStoreOptions","storageKey","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","setOverride","overrides","undefined","_removed","rest","toggleOverride","current","getPersistedSnapshot","state","createTabVisibilityStore","options","set","name","storage","partialize","storeRegistry","Map","ReturnType","getTabVisibilityStore","existing","get","store","useTabVisibilityStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","setOverride","toggleOverride","getPersistedSnapshot","storeRegistry","_c","store","ReactNode","ResourceContextAction","TreeListNode","TreeListSection","VisibilityOverride","toStringLabel","label","fallback","resolveVisibility","override","hiddenByDefault","isCustomizable","item","canHide","isNodeVisible","node","nodeOverrides","Record","id","filterNodes","nodes","changed","next","children","length","filteredChildren","push","filterVisibleNodes","filterVisibleSections","sections","sectionOverrides","section","filteredNodes","emptyState","TreeVisibilityMenuActions","onToggleSection","onToggleNode","onResetAll","BuildMenuOptions","visibleIcon","hiddenIcon","resetIcon","visibilityEndContent","effective","options","buildSectionAction","actions","key","onClick","endContent","buildNodeAction","icon","TreeVisibilityMenuItems","headerSections","footerSections","buildTreeVisibilityMenuActions","items","result","appendGroup","group","separatorBefore","actionsForSections","sectionActions","ReactNode","ResourceContextAction","VisibilityOverride","resolveVisibility","TabVisibilityPlacement","closable","hiddenByDefault","pinned","title","contributionId","filterVisibleTabs","placements","T","tabOverrides","Record","getKey","placement","changed","next","push","effective","TabVisibilityMenuActions","onToggleTab","key","onResetAll","BuildTabMenuOptions","visibleIcon","hiddenIcon","resetIcon","buildTabVisibilityMenuActions","actions","options","getIcon","result","nonCloseableCount","label","icon","onClick","endContent","separatorBefore","createSlotRecipeContext","HTMLChakraProps","closestCenter","DndContext","KeyboardSensor","PointerSensor","useSensor","useSensors","horizontalListSortingStrategy","SortableContext","sortableKeyboardCoordinates","useSortable","CSS","X","KeyboardEvent","ReactNode","useEffect","useRef","windowTabsRecipe","recipe","withProvider","withContext","List","HTMLDivElement","Tab","Trigger","HTMLButtonElement","Label","HTMLSpanElement","Close","WindowTab","id","label","icon","WindowTabsProps","tabs","selectedId","onSelect","onClose","onReorder","targetId","WindowTabItemProps","tab","selected","tabIndex","reorderable","onKeyDown","event","WindowTabItem","props","$","_c","t0","t1","disabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","isSorting","t2","undefined","t3","t4","Translate","toString","t5","t6","defaultPrevented","t7","t8","t9","t10","t11","Symbol","for","t12","t13","WindowTabs","listRef","activationConstraint","distance","coordinateGetter","sensors","current","querySelector","scrollIntoView","block","inline","T0","T1","T2","closeTab","index","triggers","querySelectorAll","neighbor","focus","handleKey","index_0","next","key","length","preventDefault","_temp","t14","active","over","String","map","_temp2","tab_0","index_1","Boolean","event_0","t15","t16","y","List","withProvider","withContext","Label","_c","_temp","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","ReactNode","windowTitleBarRecipe","recipe","withProvider","withContext","RootProps","Root","HTMLDivElement","Content","WindowTitleBarProps","platform","children","WindowTitleBar","props","$","_c","t0","t1","t2","_c","HStack","Text","ReactNode","TagEditorHeadingProps","children","hasChanges","TagEditorHeading","props","$","_c","t0","t1","t2","_c","Badge","Button","Editable","Flex","Icon","IconButton","Menu","useSortable","CSS","Check","ChevronDown","GripVertical","Trash2","IconColorPicker","IconColorPickerIconOption","ListRow","TagEditorAction","TagEditorValue","TagEditorRowProps","actionOptions","actionsLabel","colorOptions","iconOptions","value","isSaving","readOnly","showDefault","showIcons","onActionsChange","actions","onColorChange","color","onDelete","onIconChange","icon","onNameChange","name","selectionLabel","selected","length","label","ActionDropdown","props","$","_c","disabled","options","optionName","onChange","T0","T1","T2","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","toggleAction","t10","option","includes","filter","t11","action","item","Root","Trigger","Symbol","for","t12","t13","t14","option_0","undefined","map","t15","TagEditorRow","id","attributes","listeners","setNodeRef","transform","transition","isDragging","Transform","toString","bg","t16","t17","details","trimmed","trim","t18","t19","t20","isNew","t21","isDefault","t22","t23","t24","t25","t26","t27","t28","t29","_c","Button","chakra","Editable","Flex","Icon","Menu","Stack","Text","closestCenter","DndContext","DragEndEvent","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","verticalListSortingStrategy","Check","ChevronDown","Plus","useState","DeleteConfirmationModal","ListRow","TagEditorProps","TagEditorValue","TagEditorHeading","TagEditorRow","nextSortOrder","values","length","Math","max","map","value","sortOrder","TagEditorTitleProps","title","hasChanges","isSaving","onTitleChange","TagEditorTitle","props","$","_c","t0","details","trimmed","trim","t1","t2","Symbol","for","t3","AddOptionRow","base","display","alignItems","gap","height","paddingInline","color","borderRadius","cursor","_hover","bg","_disabled","opacity","ColumnHeadersProps","valueLabel","actionsLabel","ColumnHeaders","t4","DefaultValueSelectProps","label","disabled","onSelect","DefaultValueSelect","find","_temp","current","name","t5","t6","value_0","id","isDefault","undefined","t7","t8","TagEditor","description","headerActions","onValuesChange","onDeleteValue","onSetDefault","readOnly","addLabel","addName","actionOptions","defaultValueLabel","colorOptions","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","iconOptions","showDefault","showIcons","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","sensors","activationConstraint","distance","updateValue","index","patch","Partial","next","handleAddOption","crypto","randomUUID","icon","isNew","handleDeleteOption","filter","handleDragEnd","event","active","over","oldIndex","findIndex","newIndex","actions","Boolean","_c","_Fragment","Button","HStack","TagEditorSaveBarProps","onSave","onReset","hasChanges","isSaving","resetLabel","saveLabel","TagEditorSaveBar","props","$","_c","t0","t1","undefined","t2","t3","t4","t5","_c","HStack","Spinner","Stack","Text","useEffect","useState","AlertMessage","TagEditor","TagEditorProps","TagEditorValue","TagEditorSaveBar","SaveTagSettingsInput","deletedIds","Set","drafts","values","TValue","EditorLabels","Pick","SortableValue","id","sortOrder","TagSettingsPanelProps","errorTitle","loadingText","resetLabel","saveLabel","loadError","onSave","input","Promise","toEditorValue","value","valueNeedsUpdate","original","draft","bySortOrder","left","right","name","localeCompare","toEditorValues","map","sort","findOriginalValue","find","hasTagValueChanges","size","some","isNew","errorMessage","error","Error","message","String","TagSettingsPanel","props","loadedValues","readOnly","editorProps","setDrafts","setDeletedIds","isSaving","setIsSaving","saveError","setSaveError","handleSave","hasChanges","handleDeleteValue","filter","handleReset","undefined","showDefault","isDefault","onSetDefault","useStore","createJSONStorage","persist","createStore","createBrowserStorage","TreeListOrderSnapshot","sectionOrder","nodeOrderBySection","Record","sectionSlotById","TreeListOrderSlot","TreeListOrderState","setSectionOrder","nextSectionIds","setNodeOrder","sectionId","nextNodeIds","setSectionSlot","slot","resetSectionOrder","resetNodeOrder","reset","CreateTreeListOrderStoreOptions","storageKey","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","dedupe","ids","seen","Set","result","id","has","add","push","getPersistedSnapshot","state","createTreeListOrderStore","options","set","_removed","rest","name","storage","partialize","storeRegistry","Map","ReturnType","getTreeListOrderStore","existing","get","store","useTreeListOrderStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","getPersistedSnapshot","storeRegistry","_c","store","TreeListSection","reorderBy","id","items","T","order","length","indexById","Map","map","item","index","placed","Set","next","get","undefined","has","add","push","changed","i","applyTreeListOrder","sections","sectionOrder","nodeOrderBySection","Record","reorderedSections","nodesById","flatMap","section","nodes","node","const","assignedNodeIds","Object","entries","filter","sectionId","some","nodeIds","nodeId","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","useStore","createJSONStorage","persist","createStore","createBrowserStorage","VisibilityOverride","TreeListVisibilitySnapshot","sectionOverrides","Record","nodeOverrides","TreeListVisibilityState","setSection","id","value","setNode","toggleSection","hiddenByDefault","toggleNode","clearSection","clearNode","reset","CreateTreeListVisibilityStoreOptions","storageKey","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","flipOverride","current","setOverride","overrides","undefined","_removed","rest","toggleOverride","next","getPersistedSnapshot","state","createTreeListVisibilityStore","options","set","name","storage","partialize","storeRegistry","Map","ReturnType","getTreeListVisibilityStore","existing","get","store","useTreeListVisibilityStore","selector","$","_c","t0","_c","store","FileIconThemeFont","fontFamily","src","url","format","weight","style","FileIconThemeDefinition","fontCharacter","fontColor","fontId","FileIconThemePreferenceOption","id","title","definitions","Record","fileExtensions","fileNames","defaults","file","folder","fonts","defaultFileIconThemePreferences","isFileIconThemePreference","value","themes","some","theme","extensionCandidates","filename","parts","toLowerCase","split","candidates","i","length","push","slice","join","resolveDefinitionKey","isDirectory","named","candidate","match","fontFamilyForDefinition","definition","matched","find","font","ResolvedFileIconGlyph","decodeFontCharacter","exec","String","fromCodePoint","Number","parseInt","resolveFileIconGlyph","undefined","key","FONT_STYLE_ATTRIBUTE","fontFaceRule","map","entry","applyFileIconThemePreference","themeId","document","querySelector","HTMLStyleElement","createElement","setAttribute","head","appendChild","option","textContent","createContext","ReactNode","useContext","useEffect","useState","applyFileIconThemePreference","defaultFileIconThemePreferences","FileIconThemePreferenceOption","isFileIconThemePreference","createBrowserStorage","STORAGE_KEY","getDefaultFileIconThemePreference","themes","find","theme","id","endsWith","FileIconThemePreferenceContextValue","fileIconThemePreference","fileIconThemePreferences","activeFileIconTheme","setFileIconThemePreference","preference","FileIconThemePreferenceContext","FileIconThemePreferenceProviderProps","children","themePreferences","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","props","$","_c","t0","undefined","t1","t2","t3","resolved","setItem","t4","t5","t6","useFileIconThemePreference","context","Error","_c","Folder","CSSProperties","FileIconThemePreferenceOption","resolveFileIconGlyph","getFileTypeIcon","ResolveFileIconElementOptions","isDirectory","theme","size","resolveFileIconElement","filename","options","glyph","style","fontFamily","color","fontColor","fontSize","lineHeight","display","fontCharacter","Icon","Checkbox","ActivityFeed","ActivityEvent","ActivityComment","ActivityHeader","ActivityAvatar","Switch","AlertMessage","ActivityReply","ResourceBadge","ActivityTimeline","installPrismGlobal","ActivityRoot","Tooltip","ScrollArea","Header","ResourceActionMenu","SearchableMenu","ResourceContextMenu","ListRow","TreeListDragProvider","ResizableSplitLayout","TreeList","createGlyphIcon","optionIcons","getIconComponent","Chip","optionColors","AttachmentChip","Slider","sessionCompletionStatuses","resolveSessionIndicatorIcon","SessionIndicator","handleDialogAcceptShortcut","resolveSessionIndicatorColor","WorkspaceBadge","EmptyState","RadioGroup","Radio","createBrowserStorage","windowTitleBarRecipe","windowTabsRecipe","createMonacoThemeFromVsCodeTheme","createThemePreferenceFromVsCodeTheme","theme_default","defaultThemePreferences","getThemePreferenceMode","applyThemePreference","isThemePreference","getInitialThemePreference","getThemePreferenceClassName","useThemePreference","getThemePreferenceClassNames","ThemePreferenceProvider","Breadcrumb$1","Toaster$1","React","Fragment$1","ActivityComposer","variant","rootProps","props","internalValue","setInternalValue","useState","defaultValue","currentValue","value","isInline","canSubmit","handleChange","nextValue","onChange","chakra","event","onSubmit","HStack","actor","Box","Textarea","minRows","event_0","actions","Spacer","attachLabel","IconButton","onAttach","Icon","Paperclip","submitLabel","ArrowUp","Activity","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","label","entry","secondaryLabel","hasInputPrefix","query","inputPrefix","resolvePaletteMode","modes","mode","fallbackMode","getPaletteEffectiveQuery","candidate","modeId","limitDefaultAssetEntries","counts","entries","assetType","count","limit","filterPaletteEntries","effectiveQuery","options","filteredEntries","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","Check","buildRows","rows","previousEntry","index","getActiveRowIndex","row","activeIndex","PaletteList","activeRowIndex","virtualizer","useVirtualizer","scrollRef","index_0","useEffect","Text","emptyLabel","virtualRow","onHover","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","$","c","t0","t1","t2","searchAriaLabel","searchPlaceholder","showCloseButton","closeButtonLabel","t3","bodyBefore","children","footerEnd","footerStart","onSearchChange","onSearchKeyDown","scrollAreaProps","searchAutoFocus","searchIcon","searchInputRef","searchValue","t4","restScrollAreaProps","t5","t6","maxH","showHorizontalScrollbar","t7","t8","Input","t9","InputGroup","t10","Dialog","CloseButton","t11","t12","t13","Fragment","resolveStateValue","state","fallback","Palette","initialQuery","initialActiveIndex","resetKey","setQueryState","setActiveIndex","inputRef","useRef","setupRef","activeEntry","resolvedInputIcon","filterEntries","inputIcon","placeholder","activeMode","resolvedPlaceholder","onQueryChange","nextQuery","setQuery","runActiveEntry","onClose","closePalette","open","previousSetup","timeout","input","length","current","t14","onActiveEntryChange","t15","onEscape","handleEscape","t16","current_0","_temp$7","handleKeyDown","t17","details","t18","t19","t20","nextQuery_0","t21","t22","t23","current_1","nonMacModifierLabels","macModifierLabels","Option","Command","keyLabels","ArrowLeft","ArrowRight","getShortcutPlatform","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","part","getShortcutDisplayParts","binding","PaletteShortcut","steps","Kbd","part_0","partIndex","stepIndex","_temp$6","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","title","Collapsible","ChevronRight","action","_temp$5","Flex","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","filterItems","normalizedQuery","items","groupItems","needsInput","urgent","normal","group","orderItemsForDisplay","metadataDescription","getActionButtons","X","NotificationEndContent","Badge","onRunAction","Button","NotificationRows","groups","rowIndex","Stack","currentIndex","Bell","onActivateItem","onActiveIndexChange","LoadingRows","_temp$4","NotificationCenter","autoFocus","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2$2","Search","error","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","width","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","containerProps","tooltip","ref","button","BubblePanel","ariaLabel","isOpen","height","menu","onPopOut","popOutLabel","SquareArrowOutUpRight","closeLabel","Minus","testId","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","notificationText","onDelete","buttonText","getEntryIcon","FolderOpen","Folder","FileText","RepoPickerListEntry","selectedPathSet","isAlreadySelected","isDisabled","onEntryClick","handleClick","selectedPath","focusInlinePickerOption","nextIndex","RepoPickerDialog","currentPath","selectedPaths","isLoading","isSelectDisabled","searchScope","description","T0","t24","Home","t25","onSelectHomeDirectory","t26","t27","ChevronUp","t28","onSelectParentDirectory","t29","t30","T1","t36","t37","t38","t39","t40","t41","t42","t43","t44","onSelect","t45","t46","t47","t48","linkProps","staticProps","isInteractiveItem","BreadcrumbItemLink","LinkComponent","isCurrent","BreadcrumbItemContent","content","BreadcrumbSeparator","separator","Breadcrumb","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","Label","ErrorBoundary","Component","info","ErrorFallback","onReset","AbsoluteCenter","hasGlyph","icon","TagSwatch","color","iconOptions","showIcon","IconComponent","Center","SwatchTrigger","ColorDot","IconCell","IconColorPicker","colorOptions","showIcons","colorLabel","iconLabel","selectedIcon","disabled","Popover","onColorChange","optionColor","Grid","onIconChange","selected","SimpleCard","SimpleCardBody","IntegrationCard","active","name","id","version","category","actionLabel","segmentedControlSlotRecipe","defineSlotRecipe","withProvider$2","withContext$2","createSlotRecipeContext","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","option","toaster","createToaster","Toaster","_temp$3","Toast","toast","Spinner","DEFAULT_SNAPSHOT$3","SIDENAV_STORE_NAMESPACE","toStorageName$3","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot$3","createSidenavStore","snapshot","initialState","createStore","persist","set","sectionId","nodeId","createJSONStorage","sidenavStoreRegistry","getSidenavStore","existingStore","store","useSidenavStore","useStore","selector","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","min","max","resolveInitialWidth","parsed","defaultWidth","Sidenav","contextActions","closable","maxWidth","virtualize","viewportRef","initialWidth","defaultExpandedSections","_temp$2","persistedWidth","_temp2$1","expandedSections","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","onOpenChange","effectiveWidth","widthCss","activeNodeId","linkComponent","onNavigate","sections","footer","state_0","state_1","state_2","state_3","state_4","DEFAULT_SNAPSHOT$2","STORE_NAMESPACE$2","toStorageName$2","resolveEffective$1","override","hiddenByDefault","setOverride$1","key","overrides","_removed","toggleOverride$1","getPersistedSnapshot$2","createTabVisibilityStore","storeRegistry$2","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","isNodeVisible","nodeOverrides","node","filterNodes","changed","next","nodes","filteredChildren","filterVisibleNodes","filterVisibleSections","section","sectionOverrides","filteredNodes","visibilityEndContent","effective","buildSectionAction","buildNodeAction","buildTreeVisibilityMenuActions","result","appendGroup","actionsForSections","sectionActions","filterVisibleTabs","placement","placements","tabOverrides","getKey","buildTabVisibilityMenuActions","nonCloseableCount","getIcon","withProvider$1","withContext$1","List$1","Tab","Trigger","Label$1","Close","WindowTabItem","reorderable","tab","useSortable","isDragging","transform","CSS","attributes","isSorting","listeners","onKeyDown","setActivatorNodeRef","tabIndex","setNodeRef","transition","WindowTabs","listRef","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","selectedId","T2","onReorder","tabs","closeTab","triggers","neighbor","handleKey","DndContext","closestCenter","_temp$1","over","SortableContext","_temp2","horizontalListSortingStrategy","tab_0","index_1","Root","withProvider","Content","withContext","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","toggleAction","optionName","Menu","ChevronDown","option_0","TagEditorRow","actionsLabel","isSaving","readOnly","GripVertical","onNameChange","trimmed","Editable","showDefault","actionOptions","onActionsChange","Trash2","nextSortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","_temp","value_0","TagEditor","valueToDelete","setValueToDelete","updateValue","patch","onValuesChange","headerActions","framed","showColumnHeaders","valueColumnLabel","oldIndex","value_1","newIndex","value_2","arrayMove","value_3","value_4","verticalListSortingStrategy","value_5","addName","defaultAddColor","defaultAddIcon","Plus","addLabel","defaultValueLabel","onSetDefault","value_6","onDeleteValue","deleteHeadline","deleteNotificationText","deleteButtonText","TagEditorSaveBar","resetLabel","saveLabel","onSave","bySortOrder","left","right","toEditorValues","toEditorValue","findOriginalValue","draft","hasTagValueChanges","deletedIds","drafts","original","valueNeedsUpdate","errorMessage","TagSettingsPanel","loadedValues","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","error_0","loadError","handleDeleteValue","handleReset","errorTitle","loadingText","draft_0","DEFAULT_SNAPSHOT$1","STORE_NAMESPACE$1","toStorageName$1","dedupe","seen","ids","getPersistedSnapshot$1","createTreeListOrderStore","nextSectionIds","nextNodeIds","slot","storeRegistry$1","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","sectionOrder","nodesById","assignedNodeIds","nodeOrderBySection","nodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","flipOverride","setOverride","toggleOverride","getPersistedSnapshot","createTreeListVisibilityStore","storeRegistry","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","parts","filename","candidates","resolveDefinitionKey","isDirectory","named","match","fontFamilyForDefinition","definition","matched","font","decodeFontCharacter","resolveFileIconGlyph","fontFamily","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","applyFileIconThemePreference","style","themeId","STORAGE_KEY","getDefaultFileIconThemePreference","FileIconThemePreferenceContext","createContext","getInitialPreference","stored","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","activeFileIconTheme","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","size","getFileTypeIcon","ChakraProvider"],"sources":["../src/components/activity/activity-composer.tsx","../src/components/activity/index.ts","../src/components/command-palette/palette-filter.ts","../src/components/command-palette/palette-list.tsx","../src/components/overlays/search-modal-content.tsx","../src/components/command-palette/palette.tsx","../src/components/command-palette/palette-shortcut.tsx","../src/components/layout/horizontal-menu-stack.tsx","../src/components/layout/item-section.tsx","../src/components/layout/panel-header.constants.ts","../src/components/notification-center/notification-center.tsx","../src/components/overlays/attached-menu.tsx","../src/components/overlays/attached-panel.tsx","../src/components/overlays/bubble-button.tsx","../src/components/overlays/bubble-panel.tsx","../src/components/overlays/delete-confirmation-modal.tsx","../src/components/overlays/repo-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/error-boundary.tsx","../src/components/primitives/tag-swatch.tsx","../src/components/primitives/icon-color-picker.tsx","../src/components/primitives/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/theme/recipes/segmented-control.ts","../src/components/primitives/segmented-control.tsx","../src/components/primitives/toaster.tsx","../src/components/sidenav/sidenav.store.ts","../src/components/sidenav/sidenav-footer.tsx","../src/components/sidenav/sidenav-header.tsx","../src/components/sidenav/sidenav.tsx","../src/components/tab-strip/tab-visibility.store.ts","../src/components/tree-list/tree-list-visibility-filter.ts","../src/components/tab-strip/tab-visibility-filter.ts","../src/components/tab-strip/window-tabs.tsx","../src/components/tab-strip/window-title-bar.tsx","../src/components/tag-editor/tag-editor-heading.tsx","../src/components/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.tsx","../src/components/tag-editor/tag-editor-save-bar.tsx","../src/components/tag-editor/tag-settings-panel.tsx","../src/components/tree-list/tree-list-order.store.ts","../src/components/tree-list/tree-list-order-filter.ts","../src/components/tree-list/tree-list-visibility.store.ts","../src/utils/apply-file-icon-theme-preference.ts","../src/utils/file-icon-theme-preference.tsx","../src/utils/resolve-file-icon-element.tsx"],"sourcesContent":["import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, chakra, HStack, Icon, IconButton, Spacer, Textarea } from \"@chakra-ui/react\";\nimport { ArrowUp, Paperclip } from \"lucide-react\";\nimport type { FormEvent, ReactNode } from \"react\";\nimport { useState } from \"react\";\n\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityComposerProps extends Omit<HTMLChakraProps<\"form\">, \"onChange\" | \"onSubmit\"> {\n actor?: ActivityActor;\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n variant?: \"standalone\" | \"inline\";\n minRows?: number;\n attachLabel?: string;\n submitLabel?: string;\n actions?: ReactNode;\n onAttach?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (value: string) => void;\n}\n\nexport const ActivityComposer = (props: ActivityComposerProps) => {\n const {\n actor,\n value,\n defaultValue = \"\",\n placeholder = \"Leave a comment...\",\n variant = \"standalone\",\n minRows = variant === \"standalone\" ? 3 : 1,\n attachLabel = \"Attach file\",\n submitLabel = \"Submit comment\",\n actions,\n onAttach,\n onChange,\n onSubmit,\n ...rootProps\n } = props;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = value ?? internalValue;\n const isInline = variant === \"inline\";\n const canSubmit = currentValue.trim().length > 0;\n\n const handleChange = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n };\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (!canSubmit) return;\n\n onSubmit?.(currentValue.trim());\n\n if (value === undefined) {\n setInternalValue(\"\");\n }\n };\n\n return (\n <chakra.form\n width=\"full\"\n background=\"bg\"\n borderWidth={isInline ? \"0\" : \"1px\"}\n borderColor=\"border\"\n borderRadius={isInline ? \"0\" : \"sm\"}\n transition=\"border-color 0.12s ease\"\n _hover={isInline ? undefined : { borderColor: \"border\" }}\n _focusWithin={isInline ? undefined : { borderColor: \"border.accent\" }}\n onSubmit={handleSubmit}\n {...rootProps}\n >\n <HStack alignItems=\"flex-start\" gap=\"xs\" padding={isInline ? \"sm\" : \"md\"}>\n {actor ? <ActivityAvatar actor={actor} /> : null}\n <Box flex=\"1\" minW=\"0\">\n <Textarea\n value={currentValue}\n rows={minRows}\n resize=\"none\"\n border=\"0\"\n padding=\"0\"\n minH={isInline ? \"1.5rem\" : \"4rem\"}\n background=\"transparent\"\n color=\"fg\"\n textStyle=\"label/S/regular\"\n placeholder={placeholder}\n _placeholder={{ color: \"fg.subtle\" }}\n onChange={(event) => handleChange(event.currentTarget.value)}\n />\n <HStack gap=\"2xs\" marginTop={isInline ? \"0\" : \"sm\"}>\n {actions}\n <Spacer />\n <Tooltip content={attachLabel}>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={attachLabel} type=\"button\" onClick={onAttach}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content={submitLabel}>\n <IconButton size=\"2xs\" variant=\"subtle\" aria-label={submitLabel} type=\"submit\" disabled={!canSubmit}>\n <Icon as={ArrowUp} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </HStack>\n </Box>\n </HStack>\n </chakra.form>\n );\n};\n","import { ActivityAvatar } from \"./activity-avatar\";\nimport { ActivityComment, ActivityReply } from \"./activity-comment\";\nimport { ActivityComposer } from \"./activity-composer\";\nimport { ActivityEvent } from \"./activity-event\";\nimport { ActivityFeed, ActivityHeader, ActivityRoot } from \"./activity-root\";\nimport { ActivityTimeline } from \"./activity-timeline\";\n\nexport type { ActivityActor } from \"./activity.types\";\nexport type { ActivityAvatarProps } from \"./activity-avatar\";\nexport type { ActivityCommentProps, ActivityReplyProps } from \"./activity-comment\";\nexport type { ActivityComposerProps } from \"./activity-composer\";\nexport type { ActivityEventProps } from \"./activity-event\";\nexport type { ActivityFeedProps, ActivityHeaderProps, ActivityRootProps } from \"./activity-root\";\nexport type { ActivityTimelineProps } from \"./activity-timeline\";\nexport {\n ActivityAvatar,\n ActivityComment,\n ActivityComposer,\n ActivityEvent,\n ActivityFeed,\n ActivityHeader,\n ActivityReply,\n ActivityRoot,\n ActivityTimeline,\n};\n\nexport const Activity = {\n Root: ActivityRoot,\n Header: ActivityHeader,\n Feed: ActivityFeed,\n Timeline: ActivityTimeline,\n Event: ActivityEvent,\n Comment: ActivityComment,\n Reply: ActivityReply,\n Composer: ActivityComposer,\n Avatar: ActivityAvatar,\n};\n","import type { ReactNode } from \"react\";\n\nexport const DEFAULT_PALETTE_ASSET_LIMIT = 48;\n\nexport interface PaletteSearchEntry {\n id: string;\n mode?: string;\n label: ReactNode;\n searchText?: string;\n secondaryLabel?: ReactNode;\n assetType?: string;\n}\n\nexport interface PaletteMode {\n id: string;\n inputPrefix?: string;\n}\n\nexport interface FilterPaletteEntriesOptions {\n query: string;\n mode?: string;\n getEffectiveQuery?: (query: string) => string;\n defaultAssetLimit?: number;\n}\n\nconst getSearchableText = (entry: PaletteSearchEntry) => {\n const label = typeof entry.label === \"string\" ? entry.label : \"\";\n const secondaryLabel = typeof entry.secondaryLabel === \"string\" ? entry.secondaryLabel : \"\";\n\n return `${label} ${entry.searchText ?? \"\"} ${secondaryLabel}`;\n};\n\nconst hasInputPrefix = (query: string, inputPrefix: string) => query.trimStart().startsWith(inputPrefix);\n\nexport const resolvePaletteMode = (query: string, modes: readonly PaletteMode[] = [], fallbackMode?: string) => {\n const prefixedMode = modes.find((mode) => mode.inputPrefix && hasInputPrefix(query, mode.inputPrefix));\n\n return prefixedMode?.id ?? fallbackMode ?? modes.find((mode) => !mode.inputPrefix)?.id ?? modes[0]?.id;\n};\n\nexport const getPaletteEffectiveQuery = (query: string, modes: readonly PaletteMode[] = [], modeId?: string) => {\n const mode = modes.find(\n (candidate) => candidate.id === modeId && candidate.inputPrefix && hasInputPrefix(query, candidate.inputPrefix),\n );\n\n if (!mode?.inputPrefix) return query.trim();\n\n return query.trimStart().slice(mode.inputPrefix.length).trim();\n};\n\nconst limitDefaultAssetEntries = <T extends PaletteSearchEntry>(entries: T[], limit: number) => {\n const counts: Record<string, number> = {};\n\n return entries.filter((entry) => {\n const assetType = entry.assetType;\n if (!assetType) return true;\n\n const count = counts[assetType] ?? 0;\n if (count >= limit) return false;\n\n counts[assetType] = count + 1;\n return true;\n });\n};\n\nexport const filterPaletteEntries = <T extends PaletteSearchEntry>(\n entries: T[],\n options: FilterPaletteEntriesOptions,\n) => {\n const effectiveQuery = (options.getEffectiveQuery?.(options.query) ?? options.query.trim()).toLowerCase();\n\n const filteredEntries = entries.filter((entry) => {\n if (options.mode && entry.mode !== options.mode) return false;\n if (!effectiveQuery) return true;\n\n return getSearchableText(entry).toLowerCase().includes(effectiveQuery);\n });\n\n if (effectiveQuery || options.defaultAssetLimit === undefined) {\n return filteredEntries;\n }\n\n return limitDefaultAssetEntries(filteredEntries, options.defaultAssetLimit);\n};\n","import { Box, HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Check } from \"lucide-react\";\nimport { type RefObject, useEffect } from \"react\";\nimport type { PaletteEntry } from \"@/components/command-palette/palette\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport type { ListRowItem } from \"@/components/list-row/list-row.types\";\n\ntype PaletteRow<T extends PaletteEntry> =\n | { type: \"group\"; id: string; label: string }\n | { type: \"entry\"; id: string; entry: T; entryIndex: number };\n\nconst GROUP_ROW_HEIGHT = 24;\nconst ENTRY_ROW_HEIGHT = 40;\nconst INITIAL_VIEWPORT_HEIGHT = 384;\n\nconst buildEntryItem = (entry: PaletteEntry): ListRowItem => ({\n id: entry.id,\n label: entry.label,\n description: entry.description ?? entry.secondaryLabel,\n icon: entry.icon,\n endContent:\n entry.endContent ??\n (entry.shortcut || entry.isSelected ? (\n <HStack gap=\"2\">\n {entry.shortcut}\n {entry.isSelected ? <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n </HStack>\n ) : undefined),\n onActivate: entry.onActivate,\n});\n\nconst buildRows = <T extends PaletteEntry>(entries: T[]) => {\n const rows: PaletteRow<T>[] = [];\n\n entries.forEach((entry, index) => {\n const previousEntry = entries[index - 1];\n if (entry.group && entry.group !== previousEntry?.group) {\n rows.push({ type: \"group\", id: `group:${entry.group}:${entry.id}`, label: entry.group });\n }\n\n rows.push({ type: \"entry\", id: entry.id, entry, entryIndex: index });\n });\n\n return rows;\n};\n\nconst getActiveRowIndex = <T extends PaletteEntry>(rows: PaletteRow<T>[], activeIndex: number) =>\n rows.findIndex((row) => row.type === \"entry\" && row.entryIndex === activeIndex);\n\ninterface PaletteListProps<T extends PaletteEntry> {\n entries: T[];\n activeIndex: number;\n emptyLabel: string;\n onHover: (index: number) => void;\n scrollRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const PaletteList = <T extends PaletteEntry>(props: PaletteListProps<T>) => {\n const { entries, activeIndex, emptyLabel, onHover, scrollRef } = props;\n const rows = buildRows(entries);\n const activeRowIndex = getActiveRowIndex(rows, activeIndex);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => (rows[index]?.type === \"group\" ? GROUP_ROW_HEIGHT : ENTRY_ROW_HEIGHT),\n getItemKey: (index) => rows[index]?.id ?? index,\n initialRect: { width: 0, height: INITIAL_VIEWPORT_HEIGHT },\n overscan: 6,\n });\n\n useEffect(() => {\n if (activeRowIndex < 0) return;\n\n virtualizer.scrollToIndex(activeRowIndex, { align: \"auto\", behavior: \"auto\" });\n }, [activeRowIndex, virtualizer]);\n\n if (entries.length === 0) {\n return (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n );\n }\n\n return (\n <Box role=\"listbox\" position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n if (!row) return null;\n\n return (\n <Box\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n style={{ top: virtualRow.start }}\n >\n {row.type === \"group\" ? (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\" pb=\"2xs\">\n {row.label}\n </Text>\n ) : (\n <ListRow\n variant=\"full-width\"\n {...buildEntryItem(row.entry)}\n isSelected={row.entryIndex === activeIndex}\n tabIndex={-1}\n onPointerMove={() => onHover(row.entryIndex)}\n />\n )}\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { Box, CloseButton, Dialog, Input, InputGroup } from \"@chakra-ui/react\";\nimport type { KeyboardEventHandler, ReactNode, Ref } from \"react\";\nimport { ScrollArea, type ScrollAreaProps } from \"@/components/primitives/scroll-area\";\n\nexport interface SearchModalContentProps {\n children: ReactNode;\n searchValue: string;\n searchPlaceholder: string;\n searchAriaLabel?: string;\n searchIcon?: ReactNode;\n searchInputRef?: Ref<HTMLInputElement>;\n searchAutoFocus?: boolean;\n showCloseButton?: boolean;\n closeButtonLabel?: string;\n bodyBefore?: ReactNode;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n scrollAreaProps?: Omit<ScrollAreaProps, \"children\">;\n onSearchChange: (value: string) => void;\n onSearchKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n}\n\nconst hasContent = (value: ReactNode) => value !== undefined && value !== null;\n\nconst footerJustifyContent = (hasFooterStart: boolean, hasFooterEnd: boolean) => {\n if (hasFooterStart && hasFooterEnd) return \"space-between\";\n if (hasFooterEnd) return \"flex-end\";\n return \"flex-start\";\n};\n\nexport const SearchModalContent = (props: SearchModalContentProps) => {\n const {\n children,\n searchValue,\n searchPlaceholder,\n searchAriaLabel = searchPlaceholder,\n searchIcon,\n searchInputRef,\n searchAutoFocus,\n showCloseButton = false,\n closeButtonLabel = \"Close\",\n bodyBefore,\n footerStart,\n footerEnd,\n scrollAreaProps,\n onSearchChange,\n onSearchKeyDown,\n } = props;\n const hasFooterStart = hasContent(footerStart);\n const hasFooterEnd = hasContent(footerEnd);\n const { maxH = \"24rem\", showHorizontalScrollbar = false, ...restScrollAreaProps } = scrollAreaProps ?? {};\n\n return (\n <>\n <Dialog.Header px=\"0\" py=\"0\" borderBottomWidth=\"1px\" borderBottomColor=\"border.subtle\">\n <InputGroup startElement={searchIcon} width=\"full\">\n <Input\n ref={searchInputRef}\n value={searchValue}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n autoComplete=\"off\"\n autoFocus={searchAutoFocus}\n mx=\"xs\"\n h=\"3rem\"\n variant=\"borderless\"\n onChange={(event) => onSearchChange(event.target.value)}\n onKeyDown={onSearchKeyDown}\n />\n </InputGroup>\n {showCloseButton ? (\n <Dialog.CloseTrigger asChild>\n <CloseButton aria-label={closeButtonLabel} size=\"sm\" mr=\"2\" />\n </Dialog.CloseTrigger>\n ) : null}\n </Dialog.Header>\n <Dialog.Body p=\"0\">\n {bodyBefore}\n <ScrollArea maxH={maxH} showHorizontalScrollbar={showHorizontalScrollbar} {...restScrollAreaProps}>\n {children}\n </ScrollArea>\n </Dialog.Body>\n {hasFooterStart || hasFooterEnd ? (\n <Dialog.Footer\n justifyContent={footerJustifyContent(hasFooterStart, hasFooterEnd)}\n px=\"sm\"\n py=\"xs\"\n borderTopWidth=\"1px\"\n borderTopColor=\"border.subtle\"\n >\n {hasFooterStart ? <Box minW=\"0\">{footerStart}</Box> : null}\n {hasFooterEnd ? <Box flexShrink={0}>{footerEnd}</Box> : null}\n </Dialog.Footer>\n ) : null}\n </>\n );\n};\n","import { Dialog } from \"@chakra-ui/react\";\nimport type { KeyboardEvent, ReactNode, SetStateAction } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n DEFAULT_PALETTE_ASSET_LIMIT,\n type FilterPaletteEntriesOptions,\n filterPaletteEntries,\n getPaletteEffectiveQuery,\n type PaletteMode,\n type PaletteSearchEntry,\n resolvePaletteMode,\n} from \"@/components/command-palette/palette-filter\";\nimport { PaletteList } from \"@/components/command-palette/palette-list\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\n\nexport type { FilterPaletteEntriesOptions, PaletteMode, PaletteSearchEntry };\nexport { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries };\n\nexport interface PaletteEntry extends PaletteSearchEntry {\n description?: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n endContent?: ReactNode;\n group?: string;\n isSelected?: boolean;\n onActivate: () => void;\n}\n\nexport interface PaletteState<T extends PaletteEntry> {\n query: string;\n mode?: string;\n activeIndex: number;\n entries: T[];\n}\n\nexport interface PaletteEscapeContext<T extends PaletteEntry> extends PaletteState<T> {\n activeEntry: T | null;\n entryCount: number;\n setQuery: (query: string) => void;\n setActiveIndex: (index: SetStateAction<number>) => void;\n runActiveEntry: () => void;\n closePalette: () => void;\n}\n\nexport type PaletteStateValue<T extends PaletteEntry, TValue> = TValue | ((state: PaletteState<T>) => TValue);\n\nexport interface PaletteProps<T extends PaletteEntry = PaletteEntry> {\n open: boolean;\n entries: T[];\n initialQuery?: string;\n initialActiveIndex?: number;\n mode?: string;\n modes?: PaletteMode[];\n resetKey?: string;\n inputIcon?: PaletteStateValue<T, ReactNode>;\n placeholder?: PaletteStateValue<T, string>;\n emptyLabel?: string;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n filterEntries?: (entries: T[], query: string, mode?: string) => T[];\n onActiveEntryChange?: (entry: T | null, index: number) => void;\n onQueryChange?: (query: string) => void;\n onClose: () => void;\n onEscape?: (ctx: PaletteEscapeContext<T>) => boolean | undefined;\n}\n\nconst resolveStateValue = <T extends PaletteEntry, TValue>(\n value: PaletteStateValue<T, TValue> | undefined,\n state: PaletteState<T>,\n fallback: TValue,\n) => {\n if (typeof value === \"function\") {\n return (value as (state: PaletteState<T>) => TValue)(state);\n }\n\n return value ?? fallback;\n};\n\nexport const Palette = <T extends PaletteEntry>(props: PaletteProps<T>) => {\n const {\n open,\n entries,\n initialQuery = \"\",\n initialActiveIndex = 0,\n mode,\n modes,\n resetKey = \"default\",\n inputIcon,\n placeholder,\n emptyLabel = \"No results.\",\n footerStart,\n footerEnd,\n filterEntries,\n onActiveEntryChange,\n onQueryChange,\n onClose,\n onEscape,\n } = props;\n const [query, setQueryState] = useState(initialQuery);\n const [activeIndex, setActiveIndex] = useState(initialActiveIndex);\n const inputRef = useRef<HTMLInputElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef({ open: false, resetKey });\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = filterEntries\n ? filterEntries(entries, query, activeMode)\n : filterPaletteEntries(entries, {\n query,\n mode: activeMode,\n getEffectiveQuery: (value) => getPaletteEffectiveQuery(value, modes, activeMode),\n });\n const activeEntry = filteredEntries[activeIndex] ?? null;\n const state: PaletteState<T> = { query, mode: activeMode, activeIndex, entries: filteredEntries };\n const resolvedInputIcon = resolveStateValue(inputIcon, state, null);\n const resolvedPlaceholder = resolveStateValue(placeholder, state, \"Search\");\n\n const setQuery = (nextQuery: string) => {\n setQueryState(nextQuery);\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n const previousSetup = setupRef.current;\n setupRef.current = { open, resetKey };\n if (!open) return;\n\n const shouldInitialize = !previousSetup.open || previousSetup.resetKey !== resetKey;\n if (!shouldInitialize) return;\n\n setQueryState(initialQuery);\n setActiveIndex(initialActiveIndex);\n\n const timeout = setTimeout(() => {\n const input = inputRef.current;\n if (!input) return;\n input.focus();\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }, 0);\n return () => clearTimeout(timeout);\n }, [initialActiveIndex, initialQuery, open, resetKey]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(filteredEntries.length - 1, 0)));\n }, [filteredEntries.length]);\n\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntry, activeIndex, onActiveEntryChange]);\n\n const handleEscape = () => {\n const handled = onEscape?.({\n ...state,\n activeEntry,\n entryCount: filteredEntries.length,\n setQuery,\n setActiveIndex,\n runActiveEntry,\n closePalette,\n });\n if (handled) return;\n\n if (query.length > 0) {\n setQuery(\"\");\n setActiveIndex(0);\n return;\n }\n\n closePalette();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(filteredEntries.length - 1, 0)));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n runActiveEntry();\n return;\n }\n\n if (event.key !== \"Escape\") return;\n\n event.preventDefault();\n event.stopPropagation();\n handleEscape();\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={(details) => !details.open && closePalette()}>\n <Dialog.Backdrop />\n <Dialog.Positioner alignItems=\"center\" justifyContent=\"center\" p=\"md\">\n <Dialog.Content maxW=\"44rem\" w=\"full\" p=\"0\" overflow=\"hidden\" borderWidth=\"1px\" borderColor=\"border.subtle\">\n <SearchModalContent\n searchValue={query}\n searchPlaceholder={resolvedPlaceholder}\n searchIcon={resolvedInputIcon}\n searchInputRef={inputRef}\n showCloseButton\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{\n maxH: \"24rem\",\n showHorizontalScrollbar: false,\n viewportRef: scrollRef,\n viewportProps: { style: { overflowAnchor: \"none\" } },\n }}\n onSearchChange={(nextQuery) => {\n setQuery(nextQuery);\n setActiveIndex(0);\n }}\n onSearchKeyDown={handleKeyDown}\n >\n <PaletteList\n entries={filteredEntries}\n activeIndex={activeIndex}\n emptyLabel={emptyLabel}\n onHover={setActiveIndex}\n scrollRef={scrollRef}\n />\n </SearchModalContent>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nexport type PaletteShortcutBinding = string | string[];\ntype ShortcutPlatform = \"linux\" | \"mac\" | \"win\";\n\ninterface ShortcutDisplayPart {\n label: string;\n Icon?: LucideIcon;\n}\n\nconst nonMacModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Alt\" },\n control: { label: \"Ctrl\" },\n ctrl: { label: \"Ctrl\" },\n mod: { label: \"Ctrl\" },\n shift: { label: \"Shift\" },\n};\n\nconst macModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Option\", Icon: Option },\n cmd: { label: \"Command\", Icon: Command },\n command: { label: \"Command\", Icon: Command },\n meta: { label: \"Command\", Icon: Command },\n mod: { label: \"Command\", Icon: Command },\n option: { label: \"Option\", Icon: Option },\n shift: { label: \"Shift\" },\n};\n\nconst keyLabels: Record<string, ShortcutDisplayPart> = {\n arrowleft: { label: \"Arrow Left\", Icon: ArrowLeft },\n arrowright: { label: \"Arrow Right\", Icon: ArrowRight },\n};\n\nconst getShortcutPlatform = (): ShortcutPlatform => {\n if (typeof navigator === \"undefined\") return \"linux\";\n\n const platform = navigator.platform?.toLowerCase() ?? \"\";\n if (platform.includes(\"mac\")) return \"mac\";\n if (platform.includes(\"win\")) return \"win\";\n return \"linux\";\n};\n\nexport const resolveShortcutDisplayPart = (label: string, platform = getShortcutPlatform()): ShortcutDisplayPart => {\n const normalized = label.toLowerCase();\n const modifierLabels = platform === \"mac\" ? macModifierLabels : nonMacModifierLabels;\n return keyLabels[normalized] ?? modifierLabels[normalized] ?? { label };\n};\n\nconst splitShortcutStep = (step: string) => {\n return step\n .split(\"+\")\n .map((part) => part.trim())\n .filter(Boolean);\n};\n\nconst getShortcutDisplayParts = (binding: PaletteShortcutBinding) => {\n const steps = Array.isArray(binding) ? binding.map(splitShortcutStep) : [splitShortcutStep(binding)];\n\n return steps.map((step) => step.map((label) => resolveShortcutDisplayPart(label)));\n};\n\nexport const PaletteShortcut = (props: { binding: PaletteShortcutBinding }) => {\n const { binding } = props;\n const steps = getShortcutDisplayParts(binding);\n\n return (\n <>\n {steps.map((step, stepIndex) => (\n <Fragment key={`${step.map((part) => part.label).join(\"+\")}-${stepIndex}`}>\n {step.map((part, partIndex) => (\n <Fragment key={`${part.label}-${partIndex}`}>\n <Kbd\n fontSize=\"xs\"\n borderRadius=\"0\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n aria-label={part.label}\n >\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n {partIndex < step.length - 1 ? \" \" : null}\n </Fragment>\n ))}\n {stepIndex < steps.length - 1 ? \" then \" : null}\n </Fragment>\n ))}\n </>\n );\n};\n","import { HStack, type StackProps } from \"@chakra-ui/react\";\n\ninterface HorizontalMenuStackProps extends StackProps {\n children?: StackProps[\"children\"];\n}\n\nexport function HorizontalMenuStack(props: HorizontalMenuStackProps) {\n const { children, h = \"41px\", px = \"xs\", py = \"xs\", borderBottomWidth = \"1px\", ...rest } = props;\n\n return (\n <HStack\n {...rest}\n h={h}\n justify=\"space-between\"\n align=\"center\"\n borderBottomWidth={borderBottomWidth}\n borderColor={\"border.subtle\"}\n px={px}\n py={py}\n >\n {children}\n </HStack>\n );\n}\n","import { Box, Collapsible, Flex, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ItemSectionProps {\n children: ReactNode;\n title?: string;\n defaultOpen?: boolean;\n action?: ReactNode;\n}\n\n/**\n * A collapsible section wrapper with a title trigger and optional action.\n */\nexport const ItemSection = (props: ItemSectionProps) => {\n const { children, title, defaultOpen = true, action } = props;\n\n return (\n <Collapsible.Root defaultOpen={defaultOpen} width=\"full\">\n <Flex>\n <Collapsible.Trigger\n _hover={{\n background: \"bg.hover\",\n }}\n padding=\"sm\"\n height=\"2rem\"\n display=\"flex\"\n width=\"full\"\n gap=\"2\"\n alignItems=\"center\"\n cursor=\"pointer\"\n justifyContent=\"space-between\"\n >\n {title && (\n <Text fontWeight=\"600\" textStyle=\"label/S/medium\">\n {title}\n </Text>\n )}\n <Collapsible.Indicator transition=\"transform 0.2s\" _open={{ transform: \"rotate(90deg)\" }}>\n <ChevronRight size={16} />\n </Collapsible.Indicator>\n </Collapsible.Trigger>\n {action && (\n <Box marginLeft=\"auto\" onClick={(e) => e.stopPropagation()}>\n {action}\n </Box>\n )}\n </Flex>\n <Collapsible.Content>{children}</Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","export const PANEL_HEADER_HEIGHT = \"2.5rem\";\nexport const PANEL_HEADER_CONTROL_SIZE = \"2xs\" as const;\nexport const PANEL_HEADER_TAB_SIZE = \"sm\" as const;\n","import { Badge, Box, Button, HStack, Icon, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { Bell, Search, X } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowAction } from \"../list-row/list-row.types\";\nimport type {\n NotificationCenterAction,\n NotificationCenterItem,\n NotificationCenterProps,\n} from \"./notification-center.types\";\n\nconst priorityColorPalette = (priority: NotificationCenterItem[\"priority\"]) => {\n if (priority === \"urgent\") return \"red\";\n if (priority === \"high\") return \"orange\";\n if (priority === \"low\") return \"gray\";\n return \"blue\";\n};\n\nconst shouldShowPriorityBadge = (priority: NotificationCenterItem[\"priority\"]) => priority !== \"normal\";\n\nconst itemSearchText = (item: NotificationCenterItem) =>\n [\n item.title,\n item.body,\n item.kind,\n item.priority,\n item.status,\n item.sourceLabel,\n item.targetLabel,\n item.searchText,\n ...(item.actions ?? []).map((action) => action.label),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\nconst filterItems = (items: NotificationCenterItem[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n if (!normalizedQuery) return items;\n return items.filter((item) => itemSearchText(item).includes(normalizedQuery));\n};\n\nconst groupItems = (items: NotificationCenterItem[]) => {\n const needsInput = items.filter((item) => item.kind === \"blocked\");\n const urgent = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"urgent\" || item.priority === \"high\"),\n );\n const normal = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"normal\" || item.priority === \"low\"),\n );\n return [\n { id: \"needs-input\", label: \"Needs input\", items: needsInput },\n { id: \"attention\", label: \"Needs attention\", items: urgent },\n { id: \"other\", label: \"Other\", items: normal },\n ].filter((group) => group.items.length > 0);\n};\n\nconst orderItemsForDisplay = (items: NotificationCenterItem[]) => groupItems(items).flatMap((group) => group.items);\n\nconst metadataDescription = (item: NotificationCenterItem) => {\n const parts = [item.body, item.targetLabel, item.sourceLabel, item.timeLabel].filter(Boolean);\n return parts.join(\" · \");\n};\n\nconst getActionButtons = (item: NotificationCenterItem, props: Pick<NotificationCenterProps, \"onDismiss\">) => {\n const actions: ListRowAction[] = [];\n\n if (props.onDismiss) {\n actions.push({\n id: \"dismiss\",\n label: \"Dismiss\",\n icon: <X size={14} />,\n tooltip: \"Dismiss\",\n onAction: () => props.onDismiss?.(item),\n });\n }\n\n return actions;\n};\n\nconst NotificationEndContent = (props: {\n actions: NotificationCenterAction[];\n item: NotificationCenterItem;\n onRunAction?: NotificationCenterProps[\"onRunAction\"];\n}) => {\n const { actions, item, onRunAction } = props;\n return (\n <HStack gap=\"2\" minW=\"0\" flexWrap=\"wrap\" justify=\"flex-end\">\n {shouldShowPriorityBadge(item.priority) ? (\n <Badge size=\"sm\" colorPalette={priorityColorPalette(item.priority)} textTransform=\"capitalize\" flexShrink={0}>\n {item.priority}\n </Badge>\n ) : null}\n {item.status === \"open\" ? (\n <Badge size=\"sm\" colorPalette=\"blue\" variant=\"solid\" flexShrink={0}>\n New\n </Badge>\n ) : null}\n {actions.map((action) => (\n <Button\n key={action.id}\n size=\"2xs\"\n variant=\"outline\"\n colorPalette={action.destructive ? \"red\" : \"gray\"}\n maxW=\"9rem\"\n onClick={(event) => {\n event.stopPropagation();\n onRunAction?.(item, action);\n }}\n >\n <Text truncate>{action.label}</Text>\n </Button>\n ))}\n </HStack>\n );\n};\n\nconst NotificationRows = (\n props: {\n activeIndex: number;\n items: NotificationCenterItem[];\n onActiveIndexChange: (index: number) => void;\n } & Pick<NotificationCenterProps, \"onActivateItem\" | \"onDismiss\" | \"onRunAction\">,\n) => {\n const { activeIndex, items, onActivateItem, onActiveIndexChange, onRunAction } = props;\n const groups = groupItems(items);\n let rowIndex = 0;\n\n return (\n <Stack gap=\"2xs\" py=\"xs\">\n {groups.map((group) => (\n <Stack key={group.id} gap=\"2xs\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\">\n {group.label}\n </Text>\n {group.items.map((item) => {\n const currentIndex = rowIndex;\n rowIndex += 1;\n return (\n <ListRow\n key={item.id}\n id={item.id}\n label={item.title}\n description={metadataDescription(item)}\n icon={<Icon as={Bell} boxSize=\"14px\" />}\n iconColor={`${priorityColorPalette(item.priority)}.500`}\n variant=\"compact\"\n isSelected={currentIndex === activeIndex}\n endContent={\n <NotificationEndContent item={item} actions={item.actions ?? []} onRunAction={onRunAction} />\n }\n actions={getActionButtons(item, props)}\n tabIndex={-1}\n onActivate={() => onActivateItem?.(item)}\n onPointerMove={() => onActiveIndexChange(currentIndex)}\n />\n );\n })}\n </Stack>\n ))}\n </Stack>\n );\n};\n\nconst LoadingRows = () => (\n <Stack gap=\"2\" p=\"sm\">\n {[0, 1, 2, 3].map((row) => (\n <Stack key={row} gap=\"2xs\">\n <Skeleton h=\"4\" w={row % 2 === 0 ? \"68%\" : \"52%\"} borderRadius=\"xs\" />\n <Skeleton h=\"3\" w=\"88%\" borderRadius=\"xs\" />\n </Stack>\n ))}\n </Stack>\n);\n\nexport const NotificationCenter = (props: NotificationCenterProps) => {\n const {\n autoFocus = false,\n emptyLabel = \"No notifications.\",\n error,\n footerEnd,\n footerStart,\n items,\n loading = false,\n onActivateItem,\n onEscape,\n onQueryChange,\n query,\n } = props;\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const activeQuery = query ?? internalQuery;\n const filteredItems = filterItems(items, activeQuery);\n const displayItems = orderItemsForDisplay(filteredItems);\n const activeItem = displayItems[activeIndex] ?? null;\n\n useEffect(() => {\n if (!autoFocus) return;\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [autoFocus]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(displayItems.length - 1, 0)));\n }, [displayItems.length]);\n\n const updateQuery = (nextQuery: string) => {\n if (query === undefined) setInternalQuery(nextQuery);\n onQueryChange?.(nextQuery);\n setActiveIndex(0);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(displayItems.length - 1, 0)));\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeItem) onActivateItem?.(activeItem);\n return;\n }\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (activeQuery.length > 0) {\n updateQuery(\"\");\n return;\n }\n onEscape?.();\n };\n\n return (\n <SearchModalContent\n searchValue={activeQuery}\n searchPlaceholder=\"Search notifications\"\n searchIcon={<Search size={14} />}\n searchInputRef={inputRef}\n searchAutoFocus={autoFocus}\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{ maxH: \"24rem\", showHorizontalScrollbar: false }}\n onSearchChange={updateQuery}\n onSearchKeyDown={handleKeyDown}\n >\n {error ? (\n <Box p=\"sm\">\n <AlertMessage status=\"error\" colorPalette=\"red\" title=\"Notifications unavailable\" size=\"sm\">\n {error}\n </AlertMessage>\n </Box>\n ) : loading ? (\n <LoadingRows />\n ) : filteredItems.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n ) : (\n <NotificationRows\n {...props}\n items={filteredItems}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n />\n )}\n </SearchModalContent>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface AttachedMenuProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n}\n\nexport const AttachedMenu = (props: AttachedMenuProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex as=\"aside\" direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" overflow=\"hidden\" bg=\"bg\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\n\ninterface AttachedPanelProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n header?: ReactNode;\n resizable?: boolean;\n}\n\nexport const AttachedPanel = (props: AttachedPanelProps) => {\n const { children, header, width = \"28rem\", minWidth, resizable = false, ...rest } = props;\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizable ? \"full\" : width;\n\n return (\n <Flex\n direction=\"column\"\n position=\"relative\"\n flexShrink={0}\n w={resolvedWidth}\n minW={resolvedMinWidth}\n h=\"100%\"\n bg=\"bg\"\n overflow=\"hidden\"\n {...rest}\n >\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ntype BubbleButtonStyleProps = \"transition\" | \"_hover\" | \"_active\" | \"borderColor\" | \"borderWidth\";\n\nexport interface BubbleButtonProps extends Omit<IconButtonProps, BubbleButtonStyleProps> {\n containerProps?: HTMLChakraProps<\"div\">;\n isOpen?: boolean;\n tooltip?: ReactNode;\n}\n\nexport const BubbleButton = forwardRef<HTMLButtonElement, BubbleButtonProps>(function BubbleButton(props, ref) {\n const { children, containerProps, isOpen = false, tooltip, ...rest } = props;\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor={isOpen ? \"border.accent\" : \"border\"}\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n }}\n _active={{ borderColor: \"border.accent\" }}\n {...rest}\n >\n {children}\n </IconButton>\n );\n\n return (\n <chakra.div position=\"fixed\" bottom=\"6\" right=\"6\" zIndex=\"docked\" {...containerProps}>\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import { Box, chakra, Flex, HStack, type HTMLChakraProps, IconButton, Portal, Spacer } from \"@chakra-ui/react\";\nimport { Minus, SquareArrowOutUpRight } from \"lucide-react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { PANEL_HEADER_CONTROL_SIZE } from \"@/components/layout/panel-header.constants\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\nexport interface BubblePanelProps {\n isOpen?: boolean;\n title?: string;\n menu?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n onPopOut?: (() => void) | null;\n popOutLabel?: string;\n width?: string;\n height?: string;\n containerProps?: HTMLChakraProps<\"section\">;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n}\n\nexport const BubblePanel = forwardRef<HTMLDivElement, BubblePanelProps>(function BubblePanel(props, ref) {\n const {\n isOpen = false,\n title,\n menu,\n onClose,\n closeLabel,\n onPopOut,\n popOutLabel,\n width = \"28rem\",\n height = \"38rem\",\n containerProps,\n testId,\n \"aria-label\": ariaLabel,\n children,\n } = props;\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <chakra.section\n ref={ref}\n role=\"dialog\"\n data-testid={testId}\n aria-label={ariaLabel ?? title}\n position=\"fixed\"\n bottom=\"3\"\n right=\"3\"\n w={width}\n maxW=\"calc(100vw - 2rem)\"\n h={height}\n maxH=\"calc(100vh - 2rem)\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n overflow=\"hidden\"\n zIndex=\"dropdown\"\n {...containerProps}\n >\n <Flex direction=\"column\" h=\"full\">\n <Header variant=\"main\" gap=\"sm\" flexShrink={0}>\n <HStack gap=\"1\" minW=\"0\">\n {menu}\n </HStack>\n <Spacer />\n <HStack gap=\"1\">\n {onPopOut ? (\n <Tooltip content={popOutLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={popOutLabel}\n onClick={onPopOut}\n >\n <SquareArrowOutUpRight size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n {onClose ? (\n <Tooltip content={closeLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={closeLabel}\n onClick={onClose}\n >\n <Minus size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n </HStack>\n </Header>\n <Box flex=\"1\" minH={0} display=\"flex\" flexDirection=\"column\" gap=\"sm\">\n {children}\n </Box>\n </Flex>\n </chakra.section>\n </Portal>\n );\n});\n","import { Button, CloseButton, Dialog, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\n\ninterface DeleteConfirmationModalProps {\n open: boolean;\n onClose: () => void;\n onDelete: () => void | Promise<void>;\n headline?: string;\n notificationText?: string;\n buttonText?: string;\n /** Extra controls rendered below the message, e.g. an opt-in checkbox. */\n children?: ReactNode;\n}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose, children } = props;\n\n const handleDelete = async () => {\n setIsDeleting(true);\n\n try {\n await onDelete();\n onClose();\n } catch {\n // Errors surface through parent state.\n } finally {\n setIsDeleting(false);\n }\n };\n\n return (\n // Destructive confirmations dismiss only through their explicit controls —\n // outside interactions must never cancel them, and when nested inside another\n // overlay (e.g. the settings dialog) a portal keeps the layers cooperating.\n <Dialog.Root\n open={open}\n onOpenChange={(details) => {\n if (!details.open) onClose();\n }}\n closeOnInteractOutside={false}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Text textStyle=\"heading/M\">{headline}</Text>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"3\">\n {notificationText ? <Text>{notificationText}</Text> : null}\n {children}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"destructive\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Badge, Button, Dialog, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home, Search } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface RepoPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface RepoPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: RepoPickerDialogEntry[];\n selectedPath?: string | null;\n selectedPaths?: string[];\n isLoading?: boolean;\n error?: string;\n isSelectDisabled?: boolean;\n onClose: () => void;\n onSelect: () => void;\n onSelectHomeDirectory: () => void;\n onSelectParentDirectory: () => void;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n}\n\nexport type { RepoPickerDialogProps };\n\nconst getEntryIcon = (entry: RepoPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\nconst filterEntries = (entries: RepoPickerDialogEntry[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return entries;\n }\n\n return entries.filter((entry) => `${entry.name} ${entry.path}`.toLowerCase().includes(normalizedQuery));\n};\n\ntype RepoPickerListEntryProps = {\n entry: RepoPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n};\n\nconst RepoPickerListEntry = (props: RepoPickerListEntryProps) => {\n const { entry, selectedPath, selectedPathSet, onEntryClick } = props;\n const isAlreadySelected = entry.isGitRepo && selectedPathSet.has(entry.path);\n const isDisabled = !entry.isDirectory || isAlreadySelected;\n\n const handleClick = () => {\n if (isAlreadySelected) {\n return;\n }\n\n onEntryClick(entry);\n };\n\n return (\n <ListRow\n variant=\"compact\"\n isSelected={selectedPath === entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Icon as={getEntryIcon(entry)} boxSize=\"16px\" />}\n endContent={\n entry.isGitRepo ? (\n <Badge\n textStyle=\"label/XS/medium\"\n px=\"xs\"\n py=\"2px\"\n colorPalette=\"green\"\n variant=\"subtle\"\n pointerEvents=\"none\"\n >\n Git repo\n </Badge>\n ) : undefined\n }\n disabled={isDisabled}\n onActivate={handleClick}\n />\n );\n};\n\nconst focusInlinePickerOption = (event: KeyboardEvent<HTMLDivElement>) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n const options = Array.from(\n event.currentTarget.querySelectorAll<HTMLButtonElement>('button[role=\"option\"]:not(:disabled)'),\n );\n\n if (options.length === 0) {\n return;\n }\n\n const currentIndex = options.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex = (() => {\n if (event.key === \"Home\") return 0;\n if (event.key === \"End\") return options.length - 1;\n if (event.key === \"ArrowUp\") return currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n return currentIndex < 0 || currentIndex === options.length - 1 ? 0 : currentIndex + 1;\n })();\n\n event.preventDefault();\n options[nextIndex]?.focus();\n};\n\nexport const RepoPickerDialog = (props: RepoPickerDialogProps) => {\n const {\n open,\n title = \"Select folder\",\n description,\n currentPath = \"\",\n entries,\n selectedPath = null,\n selectedPaths = [],\n isLoading = false,\n error = \"\",\n isSelectDisabled = false,\n onClose,\n onSelect,\n onSelectHomeDirectory,\n onSelectParentDirectory,\n onEntryClick,\n } = props;\n\n const [query, setQuery] = useState(\"\");\n const selectedPathSet = new Set(selectedPaths);\n const filteredEntries = filterEntries(entries, query);\n const searchScope = currentPath || \"Home\";\n\n useEffect(() => {\n if (!open || !searchScope) return;\n setQuery(\"\");\n }, [open, searchScope]);\n\n return (\n <Dialog.Root\n lazyMount\n unmountOnExit\n closeOnInteractOutside={false}\n open={open}\n onOpenChange={(details) => !details.open && onClose()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/M\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n <Stack direction=\"row\" gap=\"sm\" align=\"center\">\n <Button aria-label=\"Go to home directory\" variant=\"outline\" size=\"sm\" onClick={onSelectHomeDirectory}>\n <Home size={16} />\n </Button>\n <Button\n aria-label=\"Go to parent directory\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onSelectParentDirectory}\n disabled={!currentPath || currentPath === \"/\"}\n >\n <ChevronUp size={16} />\n </Button>\n <Text\n data-testid=\"folder-picker-path\"\n textStyle=\"paragraph/S/regular\"\n color=\"fg.muted\"\n flex=\"1\"\n lineClamp={1}\n >\n {searchScope}\n </Text>\n </Stack>\n\n <Stack gap=\"0\" borderWidth=\"1px\" borderRadius=\"md\" borderColor=\"border.subtle\" overflow=\"hidden\">\n <InputGroup\n startElement={<Search size={14} />}\n width=\"full\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Input\n mx=\"xs\"\n value={query}\n placeholder=\"Search repositories\"\n aria-label=\"Search repositories\"\n autoComplete=\"off\"\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\" p=\"sm\">\n {error}\n </Text>\n ) : filteredEntries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n No entries found.\n </Text>\n ) : (\n <ScrollArea maxHeight=\"320px\" contentProps={{ padding: \"sm\" }}>\n <Stack gap=\"xs\" role=\"listbox\" aria-label=\"Repository folders\" onKeyDown={focusInlinePickerOption}>\n {filteredEntries.map((entry) => (\n <RepoPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n </ScrollArea>\n )}\n </Stack>\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"sm\">\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button onClick={onSelect} disabled={isSelectDisabled}>\n Select repository\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface BreadcrumbLinkProps {\n to: string;\n children: React.ReactNode;\n}\n\nexport interface BreadcrumbProps extends ChakraBreadcrumb.RootProps {\n separator?: React.ReactNode;\n separatorGap?: SystemStyleObject[\"gap\"];\n items: BreadcrumbItem[];\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\nconst linkProps = {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"2xs\",\n minW: \"0\",\n maxW: \"100%\",\n overflow: \"hidden\",\n outline: \"none\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n _active: { outline: \"none\" },\n _focus: { outline: \"none\" },\n _focusVisible: { outline: \"none\" },\n} as const;\n\nconst staticProps = {\n ...linkProps,\n color: \"fg\",\n cursor: \"default\",\n textDecoration: \"none\",\n _hover: { textDecoration: \"none\" },\n} as const;\n\ninterface BreadcrumbItemContentProps {\n item: BreadcrumbItem;\n isCurrent: boolean;\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\ninterface BreadcrumbSeparatorProps {\n separator?: React.ReactNode;\n}\n\nconst isInteractiveItem = (item: BreadcrumbItem) => Boolean(item.url || item.onClick);\n\nconst BreadcrumbItemLink = (props: BreadcrumbItemContentProps) => {\n const { item, isCurrent, linkComponent: LinkComponent } = props;\n\n if (isCurrent && !isInteractiveItem(item)) {\n return <ChakraBreadcrumb.CurrentLink {...staticProps}>{item.title}</ChakraBreadcrumb.CurrentLink>;\n }\n\n if (item.url && LinkComponent) {\n return (\n <ChakraBreadcrumb.Link asChild {...linkProps}>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.url) {\n return (\n <ChakraBreadcrumb.Link href={item.url} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.onClick) {\n return (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n return (\n <ChakraBreadcrumb.Link as=\"span\" {...staticProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n};\n\nconst BreadcrumbItemContent = (props: BreadcrumbItemContentProps) => {\n const { item } = props;\n const content = <BreadcrumbItemLink {...props} />;\n\n if (!item.contextMenuActions?.length) return content;\n\n return (\n <ResourceContextMenu actions={item.contextMenuActions} positioning={{ placement: \"bottom-start\" }}>\n {content}\n </ResourceContextMenu>\n );\n};\n\nconst BreadcrumbSeparator = (props: BreadcrumbSeparatorProps) => {\n const { separator } = props;\n\n if (separator === undefined) {\n return <ChakraBreadcrumb.Separator flexShrink={0} />;\n }\n\n return <ChakraBreadcrumb.Separator flexShrink={0}>{separator}</ChakraBreadcrumb.Separator>;\n};\n\nexport const Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(function BreadcrumbRoot(props, ref) {\n const { separator, separatorGap, items, linkComponent: LinkComponent, ...rest } = props;\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...rest}>\n <ChakraBreadcrumb.List gap={separatorGap} flexWrap=\"nowrap\" minW=\"0\" maxW=\"100%\" overflow=\"hidden\">\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item minW=\"0\" flexShrink={isCurrent ? 1 : 0} overflow=\"hidden\">\n <BreadcrumbItemContent item={item} isCurrent={isCurrent} linkComponent={LinkComponent} />\n </ChakraBreadcrumb.Item>\n {isCurrent ? null : <BreadcrumbSeparator separator={separator} />}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { Box, type BoxProps, Text, type TextProps } from \"@chakra-ui/react\";\n\nexport interface ContentPlaceholderProps extends BoxProps {}\n\nexport const contentPlaceholderBackgroundImage = `url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.2' fillRule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\")`;\n\nexport const ContentPlaceholder = (props: ContentPlaceholderProps) => (\n <Box\n {...props}\n css={{\n backgroundClip: \"padding-box\",\n backgroundImage: contentPlaceholderBackgroundImage,\n display: \"flex\",\n width: \"100%\",\n }}\n />\n);\n\nexport const Label = (props: TextProps) => (\n <Box p=\"2\">\n <Text color=\"fg.muted\" fontWeight=\"medium\" textStyle=\"sm\" whiteSpace=\"nowrap\" {...props} />\n </Box>\n);\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ContentPlaceholder } from \"@/components/primitives/content-placeholder\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n label?: string;\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Dashboard error boundary caught an error\", error, info);\n }\n\n handleReset = () => {\n this.setState({ error: null });\n this.props.onReset?.();\n };\n\n render() {\n const { children, fallback, label } = this.props;\n const { error } = this.state;\n\n if (error) {\n if (fallback) {\n return fallback;\n }\n\n return <ErrorFallback error={error} label={label} onReset={this.handleReset} />;\n }\n\n return children;\n }\n}\n\ninterface ErrorFallbackProps {\n error: Error;\n label?: string;\n onReset?: () => void;\n}\n\nexport const ErrorFallback = (props: ErrorFallbackProps) => {\n const { error, label, onReset } = props;\n\n return (\n <ContentPlaceholder height=\"100%\" width=\"100%\">\n <AbsoluteCenter>\n <AlertMessage\n status=\"error\"\n title={<Text textStyle=\"paragraph/M/medium\">{label ?? \"Something went wrong\"}</Text>}\n >\n <Stack gap=\"sm\">\n <Text textStyle=\"paragraph/S/regular\">\n {error.message || \"An unexpected error occurred while rendering this section.\"}\n </Text>\n {onReset ? (\n <Button size=\"sm\" variant=\"primary\" onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import { Box, Center, type CenterProps, Icon } from \"@chakra-ui/react\";\nimport { getIconComponent, type IconColorPickerIconOption } from \"./icon-options\";\n\nexport interface TagSwatchProps extends Omit<CenterProps, \"color\"> {\n color: string;\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n /** Renders the icon glyph instead of a plain colour dot when the value carries an icon. */\n showIcon?: boolean;\n}\n\n// The planner writes \"circle\" as its no-icon default, so both it and a missing\n// icon render as the design's plain colour dot instead of a lucide ring.\nconst hasGlyph = (icon?: string | null) => Boolean(icon) && icon !== \"circle\";\n\nexport const TagSwatch = (props: TagSwatchProps) => {\n const { color, icon, iconOptions, showIcon = true, ...rest } = props;\n const IconComponent = getIconComponent(icon, iconOptions);\n\n return (\n <Center boxSize=\"tag-swatch\" flexShrink={0} borderRadius=\"compact\" bg={`${color}.500/15`} {...rest}>\n {showIcon && hasGlyph(icon) ? (\n <Icon as={IconComponent} boxSize=\"icon-xs\" color={`${color}.500`} />\n ) : (\n <Box boxSize=\"tag-swatch-dot\" borderRadius=\"full\" bg={`${color}.500`} />\n )}\n </Center>\n );\n};\n","import { Box, chakra, Grid, Icon, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type IconColorPickerIconOption, optionColors, optionIcons } from \"./icon-options\";\nimport { TagSwatch } from \"./tag-swatch\";\n\nconst SwatchTrigger = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n focusVisibleRing: \"outside\",\n _disabled: { cursor: \"not-allowed\", opacity: 0.5 },\n },\n});\n\nconst ColorDot = chakra(\"button\", {\n base: {\n boxSize: \"tag-color-dot\",\n borderRadius: \"full\",\n cursor: \"pointer\",\n outlineStyle: \"solid\",\n outlineWidth: \"selection\",\n outlineOffset: \"3xs\",\n outlineColor: \"transparent\",\n _selected: { outlineColor: \"fg\" },\n },\n});\n\nconst IconCell = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSize: \"tag-icon-cell\",\n borderRadius: \"compact\",\n color: \"fg.muted\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.hover\" },\n },\n});\n\nexport interface IconColorPickerProps {\n color: string;\n colorOptions?: readonly string[];\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n onColorChange: (color: string) => void;\n onIconChange?: (icon: string | null) => void;\n disabled?: boolean;\n showIcons?: boolean;\n colorLabel?: string;\n iconLabel?: string;\n \"aria-label\"?: string;\n}\n\nexport const IconColorPicker = (props: IconColorPickerProps) => {\n const {\n color,\n colorOptions = optionColors,\n icon,\n iconOptions = optionIcons,\n onColorChange,\n onIconChange,\n disabled,\n showIcons = true,\n colorLabel = \"Color\",\n iconLabel = \"Icon\",\n \"aria-label\": ariaLabel = \"Pick color and icon\",\n } = props;\n const selectedIcon = icon === \"circle\" ? null : (icon ?? null);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\" }}>\n <Popover.Trigger asChild>\n <SwatchTrigger type=\"button\" disabled={disabled} aria-label={ariaLabel}>\n <TagSwatch color={color} icon={icon} iconOptions={iconOptions} showIcon={showIcons} />\n </SwatchTrigger>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width={showIcons ? \"tag-picker\" : \"tag-picker-color-only\"} bg=\"bg.elevated\">\n <Stack gap=\"compact\" p=\"sm\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {colorLabel}\n </Text>\n <Grid templateColumns={`repeat(${showIcons ? 10 : 5}, 1fr)`} gap=\"2xs\" justifyItems=\"center\">\n {colorOptions.map((optionColor) => (\n <ColorDot\n key={optionColor}\n type=\"button\"\n bg={`${optionColor}.500`}\n aria-label={optionColor}\n aria-pressed={optionColor === color}\n data-selected={optionColor === color ? \"\" : undefined}\n onClick={() => onColorChange(optionColor)}\n />\n ))}\n </Grid>\n {showIcons ? (\n <>\n <Box borderTop=\"subtle\" />\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {iconLabel}\n </Text>\n <Grid templateColumns=\"repeat(8, 1fr)\" gap=\"3xs\" justifyItems=\"center\">\n {iconOptions.map((entry) => {\n const selected = entry.value === selectedIcon;\n return (\n <IconCell\n key={entry.value ?? \"none\"}\n type=\"button\"\n color={selected ? `${color}.500` : undefined}\n bg={selected ? `${color}.500/15` : undefined}\n _hover={selected ? { bg: `${color}.500/15` } : undefined}\n aria-label={entry.label}\n aria-pressed={selected}\n onClick={() => onIconChange?.(entry.value)}\n >\n <Icon as={entry.icon} boxSize=\"icon-xs\" />\n </IconCell>\n );\n })}\n </Grid>\n </>\n ) : null}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\n\nexport type SimpleCardProps = BoxProps;\n\nexport const SimpleCard = (props: SimpleCardProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.subtle\" borderRadius=\"xs\" bg=\"bg\" {...rest}>\n {children}\n </Box>\n );\n};\n\nexport type SimpleCardBodyProps = BoxProps;\n\nexport const SimpleCardBody = (props: SimpleCardBodyProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box p=\"md\" {...rest}>\n {children}\n </Box>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { SimpleCard, SimpleCardBody } from \"@/components/primitives/simple-card\";\n\nexport interface IntegrationCardProps {\n icon: ReactNode;\n name: string;\n description: string;\n id: string;\n version?: string;\n category?: string;\n active?: boolean;\n actionLabel?: string;\n}\n\nexport const IntegrationCard = (props: IntegrationCardProps) => {\n const { icon, name, description, id, version, category, active = false, actionLabel } = props;\n\n return (\n <SimpleCard>\n <SimpleCardBody>\n <HStack gap=\"4\" alignItems=\"flex-start\">\n <Icon boxSize=\"1em\" fontSize=\"2xl\" flexShrink=\"0\" color=\"fg.muted\">\n {icon}\n </Icon>\n <Box flex=\"1\" minW=\"0\">\n <Stack gap=\"1\">\n <HStack gap=\"2\" flexWrap=\"wrap\">\n <Text textStyle=\"sm\" fontWeight=\"semibold\">\n {name}\n </Text>\n <Badge size=\"sm\" variant=\"outline\">\n {id}\n </Badge>\n {version && (\n <Badge size=\"sm\" variant=\"outline\">\n v{version}\n </Badge>\n )}\n {category && (\n <Badge size=\"sm\" variant=\"outline\">\n {category}\n </Badge>\n )}\n </HStack>\n <Text color=\"fg.muted\">{description}</Text>\n </Stack>\n </Box>\n <Button\n type=\"button\"\n disabled={active}\n size=\"sm\"\n variant=\"outline\"\n colorPalette=\"gray\"\n bg=\"bg\"\n flexShrink=\"0\"\n >\n {active && (\n <Icon color=\"fg.success\">\n <Check />\n </Icon>\n )}\n {actionLabel ?? (active ? \"Active\" : \"Connect\")}\n </Button>\n </HStack>\n </SimpleCardBody>\n </SimpleCard>\n );\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const segmentedControlSlotRecipe = defineSlotRecipe({\n className: \"ps-segmented-control\",\n slots: [\"root\", \"item\"],\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"3xs\",\n padding: \"3xs\",\n bg: \"bg.subtle\",\n borderRadius: \"compact\",\n borderWidth: \"1px\",\n borderColor: \"border\",\n },\n item: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n whiteSpace: \"nowrap\",\n textStyle: \"label/S/medium\",\n color: \"fg.muted\",\n bg: \"transparent\",\n borderRadius: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"background-color, color\",\n transitionDuration: \"fast\",\n focusVisibleRing: \"outside\",\n _hover: { color: \"fg\" },\n _selected: { bg: \"bg.inverted\", color: \"fg.inverted\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { color: \"fg.muted\" } },\n },\n },\n variants: {\n size: {\n sm: {\n root: { height: \"segmented-control-sm\" },\n item: { height: \"segmented-control-item-sm\", paddingInline: \"compact\" },\n },\n xs: {\n root: { height: \"segmented-control-xs\" },\n item: { height: \"segmented-control-item-xs\", paddingInline: \"xs\" },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport { segmentedControlSlotRecipe as recipe } from \"@/theme/recipes/segmented-control\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\n\ntype VariantProps = RecipeVariantProps<typeof recipe>;\n\nexport interface SegmentedControlRootProps extends HTMLChakraProps<\"div\">, VariantProps {}\nconst SegmentedControlRoot = withProvider<HTMLDivElement, SegmentedControlRootProps>(\"div\", \"root\");\n\nexport interface SegmentedControlItemProps extends HTMLChakraProps<\"button\"> {}\nconst SegmentedControlItem = withContext<HTMLButtonElement, SegmentedControlItemProps>(\"button\", \"item\");\n\nexport interface SegmentedControlOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<SegmentedControlRootProps, \"onChange\"> {\n options: SegmentedControlOption[];\n value: string;\n onValueChange: (value: string) => void;\n disabled?: boolean;\n \"aria-label\"?: string;\n}\n\nexport const SegmentedControl = (props: SegmentedControlProps) => {\n const { options, value, onValueChange, disabled, \"aria-label\": ariaLabel, ...rootProps } = props;\n\n return (\n <SegmentedControlRoot role=\"group\" aria-label={ariaLabel} {...rootProps}>\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <SegmentedControlItem\n key={option.value}\n type=\"button\"\n aria-pressed={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={disabled}\n onClick={() => onValueChange(option.value)}\n >\n {option.label}\n </SegmentedControlItem>\n );\n })}\n </SegmentedControlRoot>\n );\n};\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const toaster: ReturnType<typeof createToaster> = createToaster({\n placement: \"top\",\n pauseOnPageIdle: true,\n duration: 10000,\n});\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} alignItems=\"start\" borderRadius=\"xs\" gap=\"xs\" px=\"sm\" py=\"xs\" minH=\"auto\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"0\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title textStyle=\"label/S/medium\">{toast.title}</Toast.Title>}\n {toast.description && (\n <ScrollArea maxHeight=\"12rem\" contentProps={{ paddingEnd: \"1\" }}>\n <Toast.Description textStyle=\"paragraph/S/regular\" whiteSpace=\"pre-wrap\" wordBreak=\"break-word\">\n {toast.description}\n </Toast.Description>\n </ScrollArea>\n )}\n </Stack>\n {toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}\n <Toast.CloseTrigger />\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface SidenavSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n width: number | null;\n}\n\ninterface SidenavState extends SidenavSnapshot {\n openSidenav: () => void;\n closeSidenav: () => void;\n toggleSidenav: () => void;\n toggleSection: (sectionId: string) => void;\n toggleNode: (nodeId: string) => void;\n setSectionExpanded: (sectionId: string, expanded: boolean) => void;\n setNodeExpanded: (nodeId: string, expanded: boolean) => void;\n setWidth: (width: number) => void;\n reset: () => void;\n}\n\ninterface CreateSidenavStoreOptions {\n storageKey: string;\n initialState?: Partial<SidenavSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n width: null,\n} satisfies SidenavSnapshot;\n\nconst SIDENAV_STORE_NAMESPACE = \"pstdio/ui/sidenav\";\n\nconst toStorageName = (storageKey: string) => `${SIDENAV_STORE_NAMESPACE}/${storageKey}`;\n\nconst toggleId = (values: string[], id: string) =>\n values.includes(id) ? values.filter((value) => value !== id) : [...values, id];\n\nconst setExpanded = (values: string[], id: string, expanded: boolean) => {\n if (expanded) {\n return values.includes(id) ? values : [...values, id];\n }\n\n return values.filter((value) => value !== id);\n};\n\nconst getPersistedSnapshot = (state: SidenavState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n width: state.width,\n});\n\nexport const createSidenavStore = (options: CreateSidenavStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidenavState>()(\n persist(\n (set) => ({\n ...snapshot,\n openSidenav: () => set((state) => ({ ...state, open: true })),\n closeSidenav: () => set((state) => ({ ...state, open: false })),\n toggleSidenav: () => set((state) => ({ ...state, open: !state.open })),\n toggleSection: (sectionId) =>\n set((state) => ({\n ...state,\n expandedSections: toggleId(state.expandedSections, sectionId),\n })),\n toggleNode: (nodeId) =>\n set((state) => ({\n ...state,\n expandedNodes: toggleId(state.expandedNodes, nodeId),\n })),\n setSectionExpanded: (sectionId, expanded) =>\n set((state) => ({\n ...state,\n expandedSections: setExpanded(state.expandedSections, sectionId, expanded),\n })),\n setNodeExpanded: (nodeId, expanded) =>\n set((state) => ({\n ...state,\n expandedNodes: setExpanded(state.expandedNodes, nodeId, expanded),\n })),\n setWidth: (width) => set((state) => ({ ...state, width })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n};\n\nconst sidenavStoreRegistry = new Map<string, ReturnType<typeof createSidenavStore>>();\n\nexport const getSidenavStore = (storageKey: string, initialState?: Partial<SidenavSnapshot>) => {\n const existingStore = sidenavStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidenavStore({ storageKey, initialState });\n sidenavStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidenavStore = <T>(\n storageKey: string,\n selector: (state: SidenavState) => T,\n initialState?: Partial<SidenavSnapshot>,\n) => {\n const store = getSidenavStore(storageKey, initialState);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidenavFooterProps {\n children?: ReactNode;\n}\n\nexport const SidenavFooter = (props: SidenavFooterProps) => {\n const { children } = props;\n\n if (!children) {\n return null;\n }\n\n return (\n <Box bg=\"bg\" position=\"sticky\" bottom=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n","import { HStack } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/layout/panel-header.constants\";\n\ninterface SidenavHeaderProps {\n children?: ReactNode;\n}\n\nexport const SidenavHeader = (props: SidenavHeaderProps) => {\n const { children } = props;\n\n return (\n <HStack\n data-testid=\"sidenav-header\"\n justify=\"space-between\"\n align=\"center\"\n minH={PANEL_HEADER_HEIGHT}\n bg=\"bg\"\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n gap=\"0\"\n >\n <HStack minW=\"0\" flex=\"1\">\n {children}\n </HStack>\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport { useSidenavStore } from \"./sidenav.store\";\nimport type { SidenavProps } from \"./sidenav.types\";\nimport { SidenavFooter } from \"./sidenav-footer\";\nimport { SidenavHeader } from \"./sidenav-header\";\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_MIN_WIDTH = 200;\nconst DEFAULT_MAX_WIDTH = 480;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveInitialWidth = (width?: string | number, defaultWidth = DEFAULT_WIDTH) => {\n if (typeof width === \"number\") return width;\n if (typeof width === \"string\") {\n const parsed = parseInt(width, 10);\n if (!Number.isNaN(parsed)) return parsed;\n }\n return defaultWidth;\n};\n\nexport const Sidenav = (props: SidenavProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n contextActions = [],\n header,\n footer,\n width,\n closable = true,\n emptyLabel = \"No items available.\",\n defaultExpandedSections,\n linkComponent,\n onNavigate,\n onOpenChange,\n resizable = true,\n defaultWidth,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n virtualize = false,\n } = props;\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n\n const initialWidth = resolveInitialWidth(width, defaultWidth);\n const initialState = {\n ...(defaultExpandedSections ? { expandedSections: defaultExpandedSections } : {}),\n width: initialWidth,\n };\n\n const open = useSidenavStore(storageKey, (state) => state.open, initialState);\n const persistedWidth = useSidenavStore(storageKey, (state) => state.width, initialState);\n const expandedSections = useSidenavStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidenavStore(storageKey, (state) => state.expandedNodes, initialState);\n const toggleSection = useSidenavStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidenavStore(storageKey, (state) => state.toggleNode, initialState);\n\n useEffect(() => {\n onOpenChange?.(open);\n }, [onOpenChange, open]);\n\n const effectiveWidth = clamp(persistedWidth ?? initialWidth, minWidth, maxWidth);\n if (!open && closable) {\n return null;\n }\n\n const widthCss = resizable ? `${effectiveWidth}px` : (width ?? `${initialWidth}px`);\n\n const content = (\n <Flex\n as=\"aside\"\n data-testid=\"sidenav\"\n direction=\"column\"\n position=\"relative\"\n h=\"100%\"\n w={widthCss}\n minW={widthCss}\n maxW={widthCss}\n flexShrink={0}\n borderRightWidth=\"1px\"\n borderRightColor=\"border.subtle\"\n bg=\"bg\"\n >\n <SidenavHeader>{header}</SidenavHeader>\n\n <ScrollArea\n flex=\"1\"\n mt=\"lg\"\n viewportRef={viewportRef}\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{\n style: { minWidth: \"100%\", width: \"100%\", minHeight: \"100%\", display: \"flex\", flexDirection: \"column\" },\n }}\n >\n <Box w=\"full\" minW=\"0\" flex=\"1 0 auto\" display=\"flex\" flexDirection=\"column\">\n {sections.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"3\">\n {emptyLabel}\n </Text>\n ) : (\n <TreeList\n sections={sections}\n expandedSectionIds={expandedSections}\n expandedNodeIds={expandedNodes}\n activeNodeId={activeNodeId}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n virtualize={virtualize}\n scrollRef={viewportRef}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidenavFooter>{footer}</SidenavFooter>\n </Flex>\n );\n\n return (\n <ResourceContextMenu actions={contextActions} closeOnSelect={false}>\n {content}\n </ResourceContextMenu>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\n\ninterface TabVisibilitySnapshot {\n tabOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TabVisibilityState extends TabVisibilitySnapshot {\n setTab: (key: string, value: VisibilityOverride | undefined) => void;\n toggleTab: (key: string, hiddenByDefault: boolean) => void;\n clearTab: (key: string) => void;\n reset: () => void;\n}\n\ninterface CreateTabVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TabVisibilitySnapshot = { tabOverrides: {} };\n\nconst STORE_NAMESPACE = \"pstdio/ui/tab-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n key: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(key in overrides)) return overrides;\n const { [key]: _removed, ...rest } = overrides;\n return rest;\n }\n if (overrides[key] === value) return overrides;\n return { ...overrides, [key]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, key: string, hiddenByDefault: boolean) => {\n const current = resolveEffective(overrides[key], hiddenByDefault);\n return setOverride(overrides, key, current === \"hidden\" ? \"shown\" : \"hidden\");\n};\n\nconst getPersistedSnapshot = (state: TabVisibilityState) => ({ tabOverrides: state.tabOverrides });\n\nexport const createTabVisibilityStore = (options: CreateTabVisibilityStoreOptions) =>\n createStore<TabVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setTab: (key, value) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, value) })),\n toggleTab: (key, hiddenByDefault) =>\n set((state) => ({ ...state, tabOverrides: toggleOverride(state.tabOverrides, key, hiddenByDefault) })),\n clearTab: (key) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTabVisibilityStore>>();\n\nexport const getTabVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n const store = createTabVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTabVisibilityStore = <T>(storageKey: string, selector: (state: TabVisibilityState) => T) => {\n const store = getTabVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TabVisibilitySnapshot, TabVisibilityState };\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { TreeListNode, TreeListSection } from \"./tree-list.types\";\nimport type { VisibilityOverride } from \"./tree-list-visibility.store\";\n\nconst toStringLabel = (label: ReactNode, fallback: string) => (typeof label === \"string\" ? label : fallback);\n\nexport const resolveVisibility = (\n override: VisibilityOverride | undefined,\n hiddenByDefault: boolean | undefined,\n): VisibilityOverride => override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\n// A section or node is \"customizable\": it opts in to the hide/show menu and may be toggled.\n// Hideability is explicit — items are non-hideable unless they set canHide (or start hidden by\n// default, which would otherwise be unrecoverable). Body sub-items never opt in, so only\n// categories (sections) and header/footer rows ever appear in the customize menu.\nconst isCustomizable = (item: { canHide?: boolean; hiddenByDefault?: boolean }) =>\n item.canHide === true || item.hiddenByDefault === true;\n\nconst isNodeVisible = (node: TreeListNode, nodeOverrides: Record<string, VisibilityOverride>) =>\n resolveVisibility(nodeOverrides[node.id], node.hiddenByDefault) === \"shown\";\n\nconst filterNodes = (nodes: TreeListNode[], nodeOverrides: Record<string, VisibilityOverride>): TreeListNode[] => {\n let changed = false;\n const next: TreeListNode[] = [];\n for (const node of nodes) {\n if (!isNodeVisible(node, nodeOverrides)) {\n changed = true;\n continue;\n }\n if (node.children && node.children.length > 0) {\n const filteredChildren = filterNodes(node.children, nodeOverrides);\n if (filteredChildren !== node.children) {\n changed = true;\n next.push({ ...node, children: filteredChildren });\n continue;\n }\n }\n next.push(node);\n }\n return changed ? next : nodes;\n};\n\n// Header/footer rows are flat lists, filtered by their own node overrides (mirrors the body's\n// per-node filtering, minus section nesting).\nexport const filterVisibleNodes = (\n nodes: TreeListNode[],\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListNode[] => filterNodes(nodes, nodeOverrides);\n\nexport const filterVisibleSections = (\n sections: TreeListSection[],\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListSection[] => {\n let changed = false;\n const next: TreeListSection[] = [];\n for (const section of sections) {\n if (resolveVisibility(sectionOverrides[section.id], section.hiddenByDefault) === \"hidden\") {\n changed = true;\n continue;\n }\n const filteredNodes = filterNodes(section.nodes, nodeOverrides);\n if (filteredNodes.length === 0 && !section.emptyState) {\n changed = true;\n continue;\n }\n if (filteredNodes !== section.nodes) {\n changed = true;\n next.push({ ...section, nodes: filteredNodes });\n continue;\n }\n next.push(section);\n }\n return changed ? next : sections;\n};\n\nexport interface TreeVisibilityMenuActions {\n onToggleSection: (id: string, hiddenByDefault: boolean) => void;\n onToggleNode: (id: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildMenuOptions {\n // Trailing toggle indicator: an eye when the entry is shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n // Leading icon for the reset rows, kept separate from the toggle list above.\n resetIcon?: ReactNode;\n}\n\nconst visibilityEndContent = (effective: VisibilityOverride, options: BuildMenuOptions) =>\n effective === \"shown\" ? options.visibleIcon : options.hiddenIcon;\n\nconst buildSectionAction = (\n section: TreeListSection,\n sectionOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = section.hiddenByDefault === true;\n const effective = resolveVisibility(sectionOverrides[section.id], hiddenByDefault);\n return {\n key: `section:${section.id}`,\n label: section.label ?? section.id,\n onClick: () => actions.onToggleSection(section.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nconst buildNodeAction = (\n node: TreeListNode,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = node.hiddenByDefault === true;\n const effective = resolveVisibility(nodeOverrides[node.id], hiddenByDefault);\n return {\n key: `node:${node.id}`,\n label: toStringLabel(node.label, node.id),\n icon: node.icon,\n onClick: () => actions.onToggleNode(node.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nexport interface TreeVisibilityMenuItems {\n headerSections?: TreeListSection[];\n sections: TreeListSection[];\n footerSections?: TreeListSection[];\n}\n\n// Builds the back-of-tree hide/show menu. Every slot uses sections, so the same rules apply to\n// pinned and scrolling content. Hideability is explicit per item.\nexport const buildTreeVisibilityMenuActions = (\n items: TreeVisibilityMenuItems,\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n const appendGroup = (group: ResourceContextAction[]) => {\n if (group.length === 0) return;\n if (result.length > 0) group[0] = { ...group[0], separatorBefore: true };\n result.push(...group);\n };\n\n const actionsForSections = (sections: TreeListSection[]) => {\n const sectionActions: ResourceContextAction[] = [];\n for (const section of sections) {\n if (isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, sectionOverrides, actions, options));\n }\n // Top-level rows that opt in (e.g. a \"Tickets\" nav entry) are hideable too; their leaf\n // children are not visited, so files/sessions inside a category stay non-hideable.\n for (const node of section.nodes) {\n if (isCustomizable(node)) sectionActions.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n return sectionActions;\n };\n\n appendGroup(actionsForSections(items.headerSections ?? []));\n appendGroup(actionsForSections(items.sections));\n appendGroup(actionsForSections(items.footerSections ?? []));\n\n if (result.length === 0) return result;\n\n // A separator splits the visibility toggles above from the reset actions below.\n result.push({\n key: \"__reset-visibility\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n\n return result;\n};\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\nimport { resolveVisibility } from \"../tree-list/tree-list-visibility-filter\";\n\nexport interface TabVisibilityPlacement {\n closable?: boolean;\n hiddenByDefault?: boolean;\n pinned?: boolean;\n title?: string;\n contributionId: string;\n}\n\nexport const filterVisibleTabs = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n getKey: (placement: T) => string,\n): T[] => {\n let changed = false;\n const next: T[] = [];\n for (const placement of placements) {\n if (placement.closable === true) {\n next.push(placement);\n continue;\n }\n if (placement.pinned === true && placement.hiddenByDefault === true) {\n changed = true;\n continue;\n }\n const effective = resolveVisibility(tabOverrides[getKey(placement)], placement.hiddenByDefault);\n if (effective === \"hidden\") {\n changed = true;\n continue;\n }\n next.push(placement);\n }\n return changed ? next : placements;\n};\n\nexport interface TabVisibilityMenuActions {\n onToggleTab: (key: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildTabMenuOptions {\n // Trailing toggle indicator, mirroring the tree menu: eye when shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n resetIcon?: ReactNode;\n}\n\nexport const buildTabVisibilityMenuActions = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n actions: TabVisibilityMenuActions,\n getKey: (placement: T) => string,\n options: BuildTabMenuOptions,\n getIcon?: (placement: T) => ReactNode,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n let nonCloseableCount = 0;\n\n for (const placement of placements) {\n if (placement.pinned === true) continue;\n if (placement.closable === true) continue;\n nonCloseableCount += 1;\n const key = getKey(placement);\n const hiddenByDefault = placement.hiddenByDefault === true;\n const effective = resolveVisibility(tabOverrides[key], hiddenByDefault);\n result.push({\n key: `tab:${key}`,\n label: placement.title ?? placement.contributionId,\n icon: getIcon?.(placement),\n onClick: () => actions.onToggleTab(key, hiddenByDefault),\n endContent: effective === \"shown\" ? options.visibleIcon : options.hiddenIcon,\n });\n }\n\n if (nonCloseableCount === 0) return result;\n\n result.push({\n key: \"__reset-tabs\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n return result;\n};\n","import { createSlotRecipeContext, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport {\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { X } from \"lucide-react\";\nimport { type KeyboardEvent, type ReactNode, useEffect, useRef } from \"react\";\nimport { windowTabsRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\nconst List = withProvider<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"list\");\nconst Tab = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"tab\");\nconst Trigger = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"trigger\");\nconst Label = withContext<HTMLSpanElement, HTMLChakraProps<\"span\">>(\"span\", \"label\");\nconst Close = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"close\");\n\nexport interface WindowTab {\n id: string;\n label: string;\n icon?: ReactNode;\n}\n\nexport interface WindowTabsProps {\n tabs: WindowTab[];\n selectedId?: string;\n onSelect: (id: string) => void;\n onClose: (id: string) => void;\n onReorder?: (id: string, targetId: string) => void;\n \"aria-label\": string;\n}\n\ninterface WindowTabItemProps {\n tab: WindowTab;\n selected: boolean;\n tabIndex: number;\n reorderable: boolean;\n onSelect: () => void;\n onClose: () => void;\n onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => void;\n}\n\nconst WindowTabItem = (props: WindowTabItemProps) => {\n const { tab, selected, tabIndex, reorderable, onSelect, onClose, onKeyDown } = props;\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging, isSorting } =\n useSortable({ id: tab.id, disabled: !reorderable });\n return (\n <Tab\n ref={setNodeRef}\n role=\"presentation\"\n data-selected={selected ? \"\" : undefined}\n data-dragging={isDragging ? \"\" : undefined}\n transform={CSS.Translate.toString(transform)}\n transition={transition}\n >\n <Trigger\n {...(reorderable ? attributes : {})}\n {...listeners}\n ref={setActivatorNodeRef}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n aria-label={tab.label}\n tabIndex={tabIndex}\n title={tab.label}\n onClick={onSelect}\n onKeyDown={(event) => {\n listeners?.onKeyDown?.(event);\n if (!isSorting && !event.defaultPrevented) onKeyDown(event);\n }}\n >\n {tab.icon}\n <Label>{tab.label}</Label>\n </Trigger>\n <Close type=\"button\" aria-label={`Close ${tab.label}`} title={`Close ${tab.label}`} onClick={onClose}>\n <X aria-hidden=\"true\" />\n </Close>\n </Tab>\n );\n};\n\nexport const WindowTabs = (props: WindowTabsProps) => {\n const { tabs, selectedId, onSelect, onClose, onReorder, \"aria-label\": label } = props;\n const listRef = useRef<HTMLDivElement>(null);\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n useEffect(() => {\n if (!selectedId) return;\n listRef.current?.querySelector('[aria-selected=\"true\"]')?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }, [selectedId]);\n\n const closeTab = (index: number) => {\n const triggers = listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n const neighbor = triggers?.[index + 1] ?? triggers?.[index - 1];\n onClose(tabs[index].id);\n neighbor?.focus();\n };\n\n const handleKey = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n let next = index;\n if (event.key === \"ArrowRight\") next = (index + 1) % tabs.length;\n else if (event.key === \"ArrowLeft\") next = (index - 1 + tabs.length) % tabs.length;\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = tabs.length - 1;\n else if (event.key === \"Delete\") {\n event.preventDefault();\n closeTab(index);\n return;\n } else return;\n event.preventDefault();\n listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')[next]?.focus();\n onSelect(tabs[next].id);\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[({ transform }) => ({ ...transform, y: 0 })]}\n onDragEnd={({ active, over }) => {\n if (over && active.id !== over.id) onReorder?.(String(active.id), String(over.id));\n }}\n >\n <SortableContext items={tabs.map((tab) => tab.id)} strategy={horizontalListSortingStrategy}>\n <List ref={listRef} role=\"tablist\" aria-label={label}>\n {tabs.map((tab, index) => (\n <WindowTabItem\n key={tab.id}\n tab={tab}\n selected={tab.id === selectedId}\n tabIndex={tab.id === (selectedId ?? tabs[0]?.id) ? 0 : -1}\n reorderable={Boolean(onReorder)}\n onSelect={() => onSelect(tab.id)}\n onClose={() => closeTab(index)}\n onKeyDown={(event) => handleKey(event, index)}\n />\n ))}\n </List>\n </SortableContext>\n </DndContext>\n );\n};\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { windowTitleBarRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\ninterface RootProps extends HTMLChakraProps<\"div\">, RecipeVariantProps<typeof recipe> {}\nconst Root = withProvider<HTMLDivElement, RootProps>(\"div\", \"root\");\nconst Content = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"content\");\n\nexport interface WindowTitleBarProps {\n platform: string;\n children?: ReactNode;\n}\n\nexport const WindowTitleBar = (props: WindowTitleBarProps) => {\n const { platform, children } = props;\n return (\n <Root controls={platform === \"darwin\" ? \"mac\" : \"overlay\"} data-window-title-bar=\"\">\n <Content>{children}</Content>\n </Root>\n );\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface TagEditorHeadingProps {\n children: ReactNode;\n /** Appends the unsaved-changes marker. */\n hasChanges?: boolean;\n}\n\n/**\n * Screen heading for a tag settings panel. The asterisk stays quiet on purpose —\n * the enabled Save button in the same header is the loud signal.\n */\nexport const TagEditorHeading = (props: TagEditorHeadingProps) => {\n const { children, hasChanges } = props;\n\n return (\n <HStack gap=\"3xs\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" truncate>\n {children}\n </Text>\n {hasChanges ? (\n <Text textStyle=\"label/L/medium\" color=\"fg.muted\" aria-label=\"Unsaved changes\">\n *\n </Text>\n ) : null}\n </HStack>\n );\n};\n","import { Badge, Button, Editable, Flex, Icon, IconButton, Menu } from \"@chakra-ui/react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, ChevronDown, GripVertical, Trash2 } from \"lucide-react\";\n\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { IconColorPickerIconOption } from \"@/components/primitives/icon-options\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n actionsLabel?: string;\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: boolean;\n readOnly?: boolean;\n showDefault?: boolean;\n showIcons?: boolean;\n onActionsChange: (actions: string[]) => void;\n onColorChange: (color: string) => void;\n onDelete: () => void;\n onIconChange: (icon: string | null) => void;\n onNameChange: (name: string) => void;\n}\n\n/** Reads out the selected names rather than a count: a number says nothing about what is on. */\nconst selectionLabel = (selected: TagEditorAction[]) => {\n if (selected.length === 0) return \"None\";\n if (selected.length === 1) return selected[0].label;\n return `${selected[0].label} +${selected.length - 1}`;\n};\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n label: string;\n options: TagEditorAction[];\n optionName: string;\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, label, options, optionName, onChange } = props;\n\n const selected = options.filter((option) => actions.includes(option.value));\n\n const toggleAction = (action: string) => {\n onChange(actions.includes(action) ? actions.filter((item) => item !== action) : [...actions, action]);\n };\n\n return (\n <Menu.Root closeOnSelect={false}>\n <Menu.Trigger asChild>\n <Button\n size=\"2xs\"\n variant=\"ghost\"\n gap=\"xs\"\n color={selected.length === 0 ? \"fg.subtle\" : \"fg\"}\n disabled={disabled}\n aria-label={`${label} for ${optionName}`}\n >\n {selected[0]?.icon}\n {selectionLabel(selected)}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {options.map((option) => (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={option.icon}\n isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => toggleAction(option.value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const TagEditorRow = (props: TagEditorRowProps) => {\n const {\n actionOptions,\n actionsLabel = \"Actions\",\n colorOptions,\n iconOptions,\n value,\n isSaving,\n readOnly,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n } = props;\n const disabled = isSaving || readOnly;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: value.id,\n disabled,\n });\n\n return (\n <Flex\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"group\"\n height=\"tag-editor-row\"\n alignItems=\"center\"\n gap=\"compact\"\n px=\"xs\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n // Lifted out of the list while dragging, so the row carries the drag chrome.\n bg={isDragging ? \"bg.elevated\" : \"transparent\"}\n borderRadius={isDragging ? \"compact\" : \"none\"}\n borderWidth={isDragging ? \"1px\" : undefined}\n boxShadow={isDragging ? \"lg\" : undefined}\n _hover={{ bg: isDragging ? \"bg.elevated\" : \"bg.muted\" }}\n >\n <Flex\n cursor={readOnly ? \"default\" : \"grab\"}\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.muted\" }}\n aria-label={`Reorder ${value.name}`}\n {...attributes}\n {...listeners}\n >\n <Icon as={GripVertical} boxSize=\"icon-xs\" />\n </Flex>\n <IconColorPicker\n color={value.color}\n colorOptions={colorOptions}\n icon={value.icon}\n iconOptions={iconOptions}\n showIcons={showIcons}\n onColorChange={onColorChange}\n onIconChange={onIconChange}\n disabled={disabled}\n aria-label={`Change ${value.name} appearance`}\n />\n {/* The default marker belongs to the name, so it sits beside it rather than drifting right. */}\n <Flex flex=\"1\" minWidth=\"0\" alignItems=\"center\" gap=\"xs\">\n <Editable.Root\n // Editable owns its draft text, so a changed source name must remount it for Cancel/reset flows.\n key={value.name}\n minWidth=\"0\"\n defaultValue={value.name}\n // A freshly added option opens straight into its rename input.\n defaultEdit={value.isNew}\n selectOnFocus\n disabled={disabled}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"paragraph/S/regular\" />\n <Editable.Input textStyle=\"paragraph/S/regular\" />\n </Editable.Root>\n {showDefault && value.isDefault ? (\n <Badge size=\"sm\" variant=\"subtle\" colorPalette=\"blue\">\n Default\n </Badge>\n ) : null}\n </Flex>\n {actionOptions ? (\n <Flex width=\"tag-editor-commands\" justifyContent=\"flex-end\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={disabled}\n label={actionsLabel}\n optionName={value.name}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Flex>\n ) : null}\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.error\", bg: \"bg.error\" }}\n onClick={onDelete}\n disabled={disabled || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Icon as={Trash2} boxSize=\"icon-xs\" />\n </IconButton>\n </Flex>\n );\n};\n","import { Button, chakra, Editable, Flex, Icon, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { Check, ChevronDown, Plus } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorHeading } from \"./tag-editor-heading\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\nconst nextSortOrder = (values: TagEditorValue[]) =>\n values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) + 1 : 0;\n\ninterface TagEditorTitleProps {\n title: string;\n hasChanges?: boolean;\n isSaving?: boolean;\n onTitleChange?: (title: string) => void;\n}\n\n/** Renames the tag definition inline, matching how its options are renamed. */\nconst TagEditorTitle = (props: TagEditorTitleProps) => {\n const { title, hasChanges, isSaving, onTitleChange } = props;\n\n if (!onTitleChange) return <TagEditorHeading hasChanges={hasChanges}>{title}</TagEditorHeading>;\n\n return (\n <Editable.Root\n key={title}\n defaultValue={title}\n disabled={isSaving}\n selectOnFocus\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== title) onTitleChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"label/L/medium\" />\n <Editable.Input textStyle=\"label/L/medium\" />\n </Editable.Root>\n );\n};\n\nconst AddOptionRow = chakra(\"button\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"xs\",\n height: \"tag-editor-add-row\",\n paddingInline: \"xs\",\n color: \"fg.muted\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.muted\", color: \"fg\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { bg: \"transparent\", color: \"fg.muted\" } },\n },\n});\n\ninterface ColumnHeadersProps {\n valueLabel: string;\n actionsLabel?: string;\n}\n\n/** Names each column once, so a row reads as data instead of repeating its own labels. */\nconst ColumnHeaders = (props: ColumnHeadersProps) => {\n const { valueLabel, actionsLabel } = props;\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"compact\"\n paddingInline=\"xs\"\n height=\"tag-editor-add-row\"\n bg=\"bg.subtle\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Flex width=\"tag-editor-lead\" flexShrink=\"0\" />\n <Text flex=\"1\" minWidth=\"0\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {valueLabel}\n </Text>\n {actionsLabel ? (\n <Text width=\"tag-editor-commands\" textAlign=\"right\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {actionsLabel}\n </Text>\n ) : null}\n <Flex width=\"tag-editor-trailing\" flexShrink=\"0\" />\n </Flex>\n );\n};\n\ninterface DefaultValueSelectProps {\n label: string;\n values: TagEditorValue[];\n disabled?: boolean;\n onSelect: (value: TagEditorValue) => void;\n}\n\n/**\n * Exactly one option is the default, so it reads as one select rather than a\n * per-row toggle. A select cannot hold two values, which is the rule itself.\n */\nconst DefaultValueSelect = (props: DefaultValueSelectProps) => {\n const { label, values, disabled, onSelect } = props;\n const current = values.find((value) => value.isDefault);\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"sm\"\n paddingInline=\"xs\"\n paddingBlock=\"xs\"\n bg=\"bg.subtle\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {label}\n </Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"2xs\" variant=\"ghost\" gap=\"xs\" disabled={disabled} aria-label={label}>\n {current?.name ?? \"None\"}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {values.map((value) => (\n <Menu.Item key={value.id} value={value.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={value.id}\n label={value.name}\n isSelected={value.isDefault}\n endContent={value.isDefault ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => onSelect(value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Flex>\n );\n};\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n headerActions,\n values,\n onValuesChange,\n onDeleteValue,\n onSetDefault,\n onTitleChange,\n hasChanges,\n isSaving,\n readOnly,\n addLabel = \"Add option\",\n addName = \"New option\",\n actionOptions,\n actionsLabel,\n defaultValueLabel = \"Default value\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n showDefault,\n showIcons = true,\n framed,\n showColumnHeaders,\n valueColumnLabel = \"Name\",\n } = props;\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const updateValue = (index: number, patch: Partial<TagEditorValue>) => {\n const next = [...values];\n next[index] = { ...next[index], ...patch };\n onValuesChange(next);\n };\n\n const handleAddOption = () => {\n onValuesChange([\n ...values,\n {\n id: `new-${crypto.randomUUID()}`,\n name: addName,\n color: defaultAddColor,\n icon: defaultAddIcon,\n sortOrder: nextSortOrder(values),\n isNew: true,\n },\n ]);\n };\n\n const handleDeleteOption = () => {\n if (!valueToDelete) return;\n if (onDeleteValue) {\n onDeleteValue(valueToDelete);\n } else {\n onValuesChange(values.filter((value) => value.id !== valueToDelete.id));\n }\n setValueToDelete(null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = values.findIndex((value) => value.id === active.id);\n const newIndex = values.findIndex((value) => value.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return;\n\n onValuesChange(arrayMove(values, oldIndex, newIndex).map((value, index) => ({ ...value, sortOrder: index })));\n };\n\n return (\n <>\n <Stack gap=\"2xs\">\n {title || headerActions ? (\n <Flex minHeight=\"tag-editor-row\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Stack gap=\"3xs\" minWidth=\"0\">\n {title ? (\n <TagEditorTitle\n title={title}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onTitleChange={onTitleChange}\n />\n ) : null}\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n {headerActions}\n </Flex>\n ) : null}\n\n <Stack\n gap=\"none\"\n borderWidth={framed ? \"1px\" : undefined}\n borderColor={framed ? \"border.subtle\" : undefined}\n borderRadius={framed ? \"md\" : undefined}\n overflow={framed ? \"hidden\" : undefined}\n >\n {showColumnHeaders ? (\n <ColumnHeaders valueLabel={valueColumnLabel} actionsLabel={actionOptions ? actionsLabel : undefined} />\n ) : null}\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={readOnly ? undefined : handleDragEnd}\n >\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n readOnly={readOnly}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\n actionsLabel={actionsLabel}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onNameChange={(name) => updateValue(index, { name })}\n onColorChange={(color) => updateValue(index, { color })}\n onIconChange={(icon) => updateValue(index, { icon })}\n onActionsChange={(actions) => updateValue(index, { actions })}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n </SortableContext>\n </DndContext>\n\n {readOnly ? null : (\n <AddOptionRow type=\"button\" disabled={isSaving} onClick={handleAddOption}>\n <Icon as={Plus} boxSize=\"icon-xs\" />\n <Text textStyle=\"paragraph/S/regular\">{addLabel}</Text>\n </AddOptionRow>\n )}\n\n {showDefault && values.length > 0 ? (\n <DefaultValueSelect\n label={defaultValueLabel}\n values={values}\n disabled={isSaving || readOnly}\n onSelect={(value) => onSetDefault?.(value)}\n />\n ) : null}\n </Stack>\n </Stack>\n\n <DeleteConfirmationModal\n open={Boolean(valueToDelete)}\n onClose={() => setValueToDelete(null)}\n onDelete={handleDeleteOption}\n headline={deleteHeadline}\n notificationText={valueToDelete ? deleteNotificationText(valueToDelete) : \"\"}\n buttonText={deleteButtonText}\n />\n </>\n );\n};\n","import { Button, HStack } from \"@chakra-ui/react\";\n\nexport interface TagEditorSaveBarProps {\n onSave: () => void;\n onReset: () => void;\n hasChanges?: boolean;\n isSaving?: boolean;\n resetLabel?: string;\n saveLabel?: string;\n}\n\n/**\n * The single commit point for a tag settings screen, anchored in its header.\n * Reset only appears while edits are pending, so the resting state stays quiet.\n */\nexport const TagEditorSaveBar = (props: TagEditorSaveBarProps) => {\n const { onSave, onReset, hasChanges, isSaving, resetLabel = \"Reset\", saveLabel = \"Save\" } = props;\n\n return (\n <HStack gap=\"xs\">\n {hasChanges ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={onReset} disabled={isSaving}>\n {resetLabel}\n </Button>\n ) : null}\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n );\n};\n","import { HStack, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { TagEditor } from \"./tag-editor\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorSaveBar } from \"./tag-editor-save-bar\";\n\nexport interface SaveTagSettingsInput<TValue> {\n deletedIds: Set<string>;\n drafts: TagEditorValue[];\n values: TValue[];\n}\n\ntype EditorLabels = Pick<\n TagEditorProps,\n | \"actionOptions\"\n | \"actionsLabel\"\n | \"addLabel\"\n | \"addName\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"defaultValueLabel\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"framed\"\n | \"iconOptions\"\n | \"readOnly\"\n | \"showDefault\"\n | \"onSetDefault\"\n | \"showColumnHeaders\"\n | \"showIcons\"\n | \"title\"\n | \"valueColumnLabel\"\n>;\n\ntype SortableValue = { id: string; sortOrder: number };\n\nexport interface TagSettingsPanelProps<TValue extends SortableValue> extends EditorLabels {\n errorTitle: string;\n loadingText?: string;\n resetLabel?: string;\n saveLabel?: string;\n /** Loaded values; pass undefined while the initial load is pending. */\n values: TValue[] | undefined;\n /** Load/save error surfaced by the host's data layer. */\n loadError?: unknown;\n /**\n * Persists the pending edits. The host owns fetching and cache invalidation;\n * the panel resets its delete tracking once the returned promise resolves.\n */\n onSave: (input: SaveTagSettingsInput<TValue>) => Promise<void>;\n toEditorValue: (value: TValue) => TagEditorValue;\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean;\n}\n\nconst bySortOrder = (left: TagEditorValue, right: TagEditorValue) =>\n left.sortOrder - right.sortOrder || left.name.localeCompare(right.name);\n\nconst toEditorValues = <TValue extends SortableValue>(\n values: TValue[],\n toEditorValue: (value: TValue) => TagEditorValue,\n) => values.map(toEditorValue).sort(bySortOrder);\n\nconst findOriginalValue = <TValue extends SortableValue>(values: TValue[], draft: TagEditorValue) =>\n values.find((value) => value.id === draft.id);\n\nconst hasTagValueChanges = <TValue extends SortableValue>(\n values: TValue[],\n drafts: TagEditorValue[],\n deletedIds: Set<string>,\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean,\n) => {\n if (deletedIds.size > 0) return true;\n\n return drafts.some((draft) => {\n if (draft.isNew) return true;\n const original = findOriginalValue(values, draft);\n if (!original) return true;\n return valueNeedsUpdate(original, draft) || draft.sortOrder !== original.sortOrder;\n });\n};\n\nconst errorMessage = (error: unknown) => (error instanceof Error ? error.message : error ? String(error) : null);\n\nexport const TagSettingsPanel = <TValue extends SortableValue>(props: TagSettingsPanelProps<TValue>) => {\n const {\n errorTitle,\n loadingText = \"Loading...\",\n resetLabel,\n saveLabel,\n values: loadedValues,\n loadError,\n onSave,\n readOnly,\n toEditorValue,\n valueNeedsUpdate,\n ...editorProps\n } = props;\n const [drafts, setDrafts] = useState<TagEditorValue[]>([]);\n const [deletedIds, setDeletedIds] = useState<Set<string>>(new Set());\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState<unknown>(null);\n\n const values = loadedValues ?? [];\n\n // Edits never refetch in the background, so loaded values only change on\n // initial load and after a save invalidates the host's cache — keeping local\n // drafts in sync.\n useEffect(() => {\n if (loadedValues) setDrafts(toEditorValues(loadedValues, toEditorValue));\n }, [loadedValues, toEditorValue]);\n\n const handleSave = async () => {\n setIsSaving(true);\n setSaveError(null);\n try {\n await onSave({ deletedIds, drafts, values });\n setDeletedIds(new Set());\n } catch (error) {\n setSaveError(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const hasChanges = hasTagValueChanges(values, drafts, deletedIds, valueNeedsUpdate);\n const error = errorMessage(loadError) ?? errorMessage(saveError);\n\n const handleDeleteValue = (value: TagEditorValue) => {\n if (!value.isNew) setDeletedIds(new Set([...deletedIds, value.id]));\n setDrafts(drafts.filter((draft) => draft.id !== value.id));\n };\n\n const handleReset = () => {\n setDrafts(toEditorValues(values, toEditorValue));\n setDeletedIds(new Set());\n setSaveError(null);\n };\n\n return (\n <Stack boxSizing=\"border-box\" minH=\"100%\" p=\"lg\" gap=\"lg\" bg=\"bg\" color=\"fg\">\n {error ? (\n <AlertMessage status=\"error\" colorPalette=\"red\" title={errorTitle} size=\"sm\">\n {error}\n </AlertMessage>\n ) : null}\n {loadedValues === undefined ? (\n <HStack gap=\"sm\" color=\"fg.muted\">\n <Spinner size=\"sm\" />\n <Text textStyle=\"paragraph/S/regular\">{loadingText}</Text>\n </HStack>\n ) : (\n <TagEditor\n {...editorProps}\n readOnly={readOnly}\n values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n onSetDefault={\n editorProps.showDefault\n ? (value) => setDrafts(drafts.map((draft) => ({ ...draft, isDefault: draft.id === value.id })))\n : editorProps.onSetDefault\n }\n hasChanges={hasChanges}\n isSaving={isSaving}\n headerActions={\n readOnly ? undefined : (\n <TagEditorSaveBar\n hasChanges={hasChanges}\n isSaving={isSaving}\n resetLabel={resetLabel}\n saveLabel={saveLabel}\n onSave={() => void handleSave()}\n onReset={handleReset}\n />\n )\n }\n />\n )}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => void;\n setSectionSlot: (sectionId: string, slot: TreeListOrderSlot) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-order\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst dedupe = (ids: string[]) => {\n const seen = new Set<string>();\n const result: string[] = [];\n for (const id of ids) {\n if (seen.has(id)) continue;\n seen.add(id);\n result.push(id);\n }\n return result;\n};\n\nconst getPersistedSnapshot = (state: TreeListOrderState) => ({\n sectionOrder: state.sectionOrder,\n nodeOrderBySection: state.nodeOrderBySection,\n sectionSlotById: state.sectionSlotById,\n});\n\nexport const createTreeListOrderStore = (options: CreateTreeListOrderStoreOptions) =>\n createStore<TreeListOrderState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSectionOrder: (nextSectionIds) => set((state) => ({ ...state, sectionOrder: dedupe(nextSectionIds) })),\n setNodeOrder: (sectionId, nextNodeIds) =>\n set((state) => ({\n ...state,\n nodeOrderBySection: { ...state.nodeOrderBySection, [sectionId]: dedupe(nextNodeIds) },\n })),\n setSectionSlot: (sectionId, slot) =>\n set((state) => ({ ...state, sectionSlotById: { ...state.sectionSlotById, [sectionId]: slot } })),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListOrderStore>>();\n\nexport const getTreeListOrderStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListOrderStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\n\nconst reorderBy = <T extends { id: string }>(items: T[], order: string[]): T[] => {\n if (order.length === 0) return items;\n\n const indexById = new Map(items.map((item, index) => [item.id, index]));\n const placed = new Set<number>();\n const next: T[] = [];\n\n for (const id of order) {\n const index = indexById.get(id);\n if (index === undefined || placed.has(index)) continue;\n placed.add(index);\n next.push(items[index]);\n }\n\n let changed = next.length > 0 && next.length !== items.length;\n for (let i = 0; i < items.length; i += 1) {\n if (placed.has(i)) continue;\n if (next.length !== i && !changed) changed = true;\n next.push(items[i]);\n }\n\n if (!changed) {\n for (let i = 0; i < items.length; i += 1) {\n if (items[i] !== next[i]) {\n changed = true;\n break;\n }\n }\n }\n\n return changed ? next : items;\n};\n\nexport const applyTreeListOrder = (\n sections: TreeListSection[],\n sectionOrder: string[],\n nodeOrderBySection: Record<string, string[]>,\n): TreeListSection[] => {\n let changed = false;\n const reorderedSections = reorderBy(sections, sectionOrder);\n if (reorderedSections !== sections) changed = true;\n\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => sections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) => nodeIds.filter((nodeId) => nodesById.has(nodeId))),\n );\n\n const next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!(section.id in nodeOrderBySection)) {\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n if (remainingNodes.length === section.nodes.length) next.push(section);\n else {\n changed = true;\n next.push({ ...section, nodes: remainingNodes });\n }\n continue;\n }\n\n const orderedNodes = (nodeOrder ?? []).flatMap((nodeId) => {\n const node = nodesById.get(nodeId);\n return node ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = [...orderedNodes, ...remainingNodes];\n if (\n reorderedNodes.length !== section.nodes.length ||\n reorderedNodes.some((node, index) => node !== section.nodes[index])\n ) {\n changed = true;\n next.push({ ...section, nodes: reorderedNodes });\n } else {\n next.push(section);\n }\n }\n\n return changed ? next : sections;\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\nexport type VisibilityOverride = \"hidden\" | \"shown\";\n\ninterface TreeListVisibilitySnapshot {\n sectionOverrides: Record<string, VisibilityOverride>;\n nodeOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TreeListVisibilityState extends TreeListVisibilitySnapshot {\n setSection: (id: string, value: VisibilityOverride | undefined) => void;\n setNode: (id: string, value: VisibilityOverride | undefined) => void;\n toggleSection: (id: string, hiddenByDefault: boolean) => void;\n toggleNode: (id: string, hiddenByDefault: boolean) => void;\n clearSection: (id: string) => void;\n clearNode: (id: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListVisibilitySnapshot = {\n sectionOverrides: {},\n nodeOverrides: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst flipOverride = (current: VisibilityOverride): VisibilityOverride => (current === \"hidden\" ? \"shown\" : \"hidden\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n id: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(id in overrides)) return overrides;\n const { [id]: _removed, ...rest } = overrides;\n return rest;\n }\n\n if (overrides[id] === value) return overrides;\n return { ...overrides, [id]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, id: string, hiddenByDefault: boolean) => {\n const next = flipOverride(resolveEffective(overrides[id], hiddenByDefault));\n return setOverride(overrides, id, next);\n};\n\nconst getPersistedSnapshot = (state: TreeListVisibilityState) => ({\n sectionOverrides: state.sectionOverrides,\n nodeOverrides: state.nodeOverrides,\n});\n\nexport const createTreeListVisibilityStore = (options: CreateTreeListVisibilityStoreOptions) =>\n createStore<TreeListVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSection: (id, value) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, value) })),\n setNode: (id, value) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, value) })),\n toggleSection: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n sectionOverrides: toggleOverride(state.sectionOverrides, id, hiddenByDefault),\n })),\n toggleNode: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n nodeOverrides: toggleOverride(state.nodeOverrides, id, hiddenByDefault),\n })),\n clearSection: (id) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, undefined) })),\n clearNode: (id) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListVisibilityStore>>();\n\nexport const getTreeListVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListVisibilitySnapshot, TreeListVisibilityState };\n","export interface FileIconThemeFont {\n fontFamily: string;\n src: { url: string; format?: string }[];\n weight?: string;\n style?: string;\n}\n\nexport interface FileIconThemeDefinition {\n fontCharacter?: string;\n fontColor?: string;\n fontId?: string;\n}\n\nexport interface FileIconThemePreferenceOption {\n id: string;\n title?: string;\n definitions: Record<string, unknown>;\n fileExtensions: Record<string, string>;\n fileNames: Record<string, string>;\n defaults: { file?: string; folder?: string };\n fonts: FileIconThemeFont[];\n}\n\nexport const defaultFileIconThemePreferences: FileIconThemePreferenceOption[] = [];\n\nexport const isFileIconThemePreference = (\n value: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n): value is string => typeof value === \"string\" && themes.some((theme) => theme.id === value);\n\n// VS Code matches the longest compound extension first (\"d.ts\" before \"ts\").\nconst extensionCandidates = (filename: string) => {\n const parts = filename.toLowerCase().split(\".\");\n const candidates: string[] = [];\n for (let i = 1; i < parts.length; i += 1) candidates.push(parts.slice(i).join(\".\"));\n return candidates;\n};\n\nconst resolveDefinitionKey = (theme: FileIconThemePreferenceOption, filename: string, isDirectory: boolean) => {\n if (isDirectory) return theme.defaults.folder;\n\n const named = theme.fileNames[filename.toLowerCase()];\n if (named) return named;\n\n for (const candidate of extensionCandidates(filename)) {\n const match = theme.fileExtensions[candidate];\n if (match) return match;\n }\n\n return theme.defaults.file;\n};\n\nconst fontFamilyForDefinition = (theme: FileIconThemePreferenceOption, definition: FileIconThemeDefinition) => {\n if (definition.fontId) {\n const matched = theme.fonts.find((font) => font.fontFamily === `${theme.id}-${definition.fontId}`);\n if (matched) return matched.fontFamily;\n }\n return theme.fonts[0]?.fontFamily;\n};\n\nexport interface ResolvedFileIconGlyph {\n fontFamily: string;\n fontCharacter: string;\n fontColor?: string;\n}\n\n// VS Code icon themes store the glyph as a CSS escape (\"\\\\E023\"); decode it to the real code point.\nconst decodeFontCharacter = (value: string) => {\n const match = /^\\\\([0-9a-fA-F]+)$/.exec(value);\n return match ? String.fromCodePoint(Number.parseInt(match[1], 16)) : value;\n};\n\nexport const resolveFileIconGlyph = (\n theme: FileIconThemePreferenceOption | undefined,\n filename: string,\n isDirectory = false,\n): ResolvedFileIconGlyph | undefined => {\n if (!theme) return undefined;\n\n const key = resolveDefinitionKey(theme, filename, isDirectory);\n if (!key) return undefined;\n\n const definition = theme.definitions[key] as FileIconThemeDefinition | undefined;\n if (!definition?.fontCharacter) return undefined;\n\n const fontFamily = fontFamilyForDefinition(theme, definition);\n if (!fontFamily) return undefined;\n\n return {\n fontFamily,\n fontCharacter: decodeFontCharacter(definition.fontCharacter),\n fontColor: definition.fontColor,\n };\n};\n\nconst FONT_STYLE_ATTRIBUTE = \"data-pstdio-file-icon-fonts\";\n\nconst fontFaceRule = (font: FileIconThemeFont) => {\n const src = font.src\n .map((entry) => `url(\"${entry.url}\")${entry.format ? ` format(\"${entry.format}\")` : \"\"}`)\n .join(\", \");\n return [\n \"@font-face {\",\n ` font-family: \"${font.fontFamily}\";`,\n ` src: ${src};`,\n ` font-weight: ${font.weight ?? \"normal\"};`,\n ` font-style: ${font.style ?? \"normal\"};`,\n \"}\",\n ].join(\"\\n\");\n};\n\nexport const applyFileIconThemePreference = (\n themeId: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n) => {\n if (typeof document === \"undefined\") return;\n\n let style = document.querySelector<HTMLStyleElement>(`style[${FONT_STYLE_ATTRIBUTE}]`);\n if (!style) {\n style = document.createElement(\"style\");\n style.setAttribute(FONT_STYLE_ATTRIBUTE, \"\");\n document.head.appendChild(style);\n }\n\n const theme = themes.find((option) => option.id === themeId);\n style.textContent = (theme?.fonts ?? []).map(fontFaceRule).join(\"\\n\\n\");\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyFileIconThemePreference,\n defaultFileIconThemePreferences,\n type FileIconThemePreferenceOption,\n isFileIconThemePreference,\n} from \"./apply-file-icon-theme-preference\";\nimport { createBrowserStorage } from \"./browser-storage\";\n\nconst STORAGE_KEY = \"file-icon-theme-preference\";\n\n// The bundled Seti theme is the preferred default; fall back to whatever is registered first.\nconst getDefaultFileIconThemePreference = (themes: readonly FileIconThemePreferenceOption[]) =>\n themes.find((theme) => theme.id.endsWith(\".seti\"))?.id ?? themes[0]?.id ?? null;\n\ninterface FileIconThemePreferenceContextValue {\n fileIconThemePreference: string | null;\n fileIconThemePreferences: readonly FileIconThemePreferenceOption[];\n activeFileIconTheme: FileIconThemePreferenceOption | undefined;\n setFileIconThemePreference: (preference: string) => void;\n}\n\nconst FileIconThemePreferenceContext = createContext<FileIconThemePreferenceContextValue | null>(null);\n\ninterface FileIconThemePreferenceProviderProps {\n children: ReactNode;\n themePreferences?: readonly FileIconThemePreferenceOption[];\n}\n\nconst getInitialPreference = (themes: readonly FileIconThemePreferenceOption[]) => {\n if (typeof window === \"undefined\") return getDefaultFileIconThemePreference(themes);\n\n const stored = createBrowserStorage().getItem(STORAGE_KEY);\n if (isFileIconThemePreference(stored, themes)) return stored;\n\n return getDefaultFileIconThemePreference(themes);\n};\n\nexport const FileIconThemePreferenceProvider = (props: FileIconThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultFileIconThemePreferences } = props;\n const [fileIconThemePreference, setFileIconThemePreference] = useState<string | null>(() =>\n getInitialPreference(themePreferences),\n );\n\n useEffect(() => {\n const resolved = isFileIconThemePreference(fileIconThemePreference, themePreferences)\n ? fileIconThemePreference\n : getDefaultFileIconThemePreference(themePreferences);\n\n if (resolved !== fileIconThemePreference) {\n setFileIconThemePreference(resolved);\n return;\n }\n\n applyFileIconThemePreference(resolved, themePreferences);\n if (typeof window !== \"undefined\" && resolved) createBrowserStorage().setItem(STORAGE_KEY, resolved);\n }, [fileIconThemePreference, themePreferences]);\n\n const activeFileIconTheme = themePreferences.find((theme) => theme.id === fileIconThemePreference);\n\n return (\n <FileIconThemePreferenceContext\n value={{\n fileIconThemePreference,\n fileIconThemePreferences: themePreferences,\n activeFileIconTheme,\n setFileIconThemePreference,\n }}\n >\n {children}\n </FileIconThemePreferenceContext>\n );\n};\n\nexport const useFileIconThemePreference = () => {\n const context = useContext(FileIconThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useFileIconThemePreference must be used within a FileIconThemePreferenceProvider\");\n }\n\n return context;\n};\n","import { Folder } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\n\nimport { type FileIconThemePreferenceOption, resolveFileIconGlyph } from \"./apply-file-icon-theme-preference\";\nimport { getFileTypeIcon } from \"./get-file-type-icon\";\n\ninterface ResolveFileIconElementOptions {\n isDirectory?: boolean;\n theme?: FileIconThemePreferenceOption;\n size?: number;\n}\n\n// Renders a contributed icon-font glyph when the active theme matches; otherwise falls back to Lucide icons.\nexport const resolveFileIconElement = (filename: string, options: ResolveFileIconElementOptions = {}) => {\n const { isDirectory = false, theme, size = 16 } = options;\n\n const glyph = resolveFileIconGlyph(theme, filename, isDirectory);\n if (glyph) {\n const style: CSSProperties = {\n fontFamily: `\"${glyph.fontFamily}\"`,\n color: glyph.fontColor,\n fontSize: size,\n lineHeight: 1,\n display: \"inline-flex\",\n };\n return (\n <span aria-hidden=\"true\" style={style}>\n {glyph.fontCharacter}\n </span>\n );\n }\n\n if (isDirectory) return <Folder size={size} />;\n\n const Icon = getFileTypeIcon(filename);\n return <Icon size={size} />;\n};\n"],"mappings":"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"}