@pstdio/ui 0.16.0 → 0.18.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 (210) hide show
  1. package/dist/{MermaidComponent-BCMQqPqu.js → MermaidComponent-BPiVFNYK.js} +2 -2
  2. package/dist/{MermaidComponent-BCMQqPqu.js.map → MermaidComponent-BPiVFNYK.js.map} +1 -1
  3. package/dist/chat-ui.js +1618 -1102
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/{checkbox-D5AzFRlb.js → checkbox-B2zYVemL.js} +28 -28
  6. package/dist/checkbox-B2zYVemL.js.map +1 -0
  7. package/dist/components/chat-ui/components/chat-input-actions.d.ts +1 -0
  8. package/dist/components/chat-ui/components/chat-input.d.ts +8 -2
  9. package/dist/components/chat-ui/components/chat-panel.d.ts +11 -5
  10. package/dist/components/chat-ui/components/composer-constants.d.ts +1 -0
  11. package/dist/components/chat-ui/components/conversation-browse.d.ts +22 -0
  12. package/dist/components/chat-ui/components/message-types.d.ts +14 -0
  13. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +4 -0
  14. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +11 -0
  15. package/dist/components/chat-ui/components/timeline.d.ts +5 -0
  16. package/dist/components/chat-ui/components/working-indicator.d.ts +9 -0
  17. package/dist/components/chat-ui/components/workspace-hub.d.ts +8 -1
  18. package/dist/components/chat-ui/index.d.ts +4 -2
  19. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  20. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +9 -0
  21. package/dist/components/data-table/build-columns.d.ts +13 -2
  22. package/dist/components/data-table/categorical-color-cell.d.ts +8 -0
  23. package/dist/components/data-table/color-cell-style.d.ts +13 -0
  24. package/dist/components/data-table/color-scale-cell.d.ts +7 -0
  25. package/dist/components/data-table/data-table-column-menu.d.ts +15 -0
  26. package/dist/components/data-table/data-table-header.d.ts +10 -0
  27. package/dist/components/data-table/data-table-stat-chart.d.ts +21 -0
  28. package/dist/components/data-table/data-table-state.d.ts +27 -0
  29. package/dist/components/data-table/data-table-stats-row.d.ts +11 -0
  30. package/dist/components/data-table/data-table-stats.d.ts +19 -0
  31. package/dist/components/data-table/data-table-table-parts.d.ts +21 -0
  32. package/dist/components/data-table/data-table.story-descriptions.d.ts +6 -0
  33. package/dist/components/data-table/data-table.story-fixtures.d.ts +6 -0
  34. package/dist/components/data-table/editable-cells-story.d.ts +9 -0
  35. package/dist/components/data-table/friendly-json-display.d.ts +31 -0
  36. package/dist/components/data-table/index.d.ts +3 -1
  37. package/dist/components/data-table/json-cell.d.ts +6 -0
  38. package/dist/components/data-table/pagination-footer.d.ts +4 -1
  39. package/dist/components/data-table/selection-toolbar.d.ts +3 -1
  40. package/dist/components/data-table/types.d.ts +72 -0
  41. package/dist/components/diff-viewer/code-editor.d.ts +2 -0
  42. package/dist/components/diff-viewer/index.d.ts +1 -1
  43. package/dist/components/diff-viewer/monaco-browser.d.ts +1 -0
  44. package/dist/components/{data-renderer → kanban-renderer}/display-menu.d.ts +4 -4
  45. package/dist/components/{data-renderer → kanban-renderer}/filter-menu.d.ts +3 -3
  46. package/dist/components/kanban-renderer/index.d.ts +19 -0
  47. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +7 -0
  48. package/dist/components/{data-renderer/data-renderer-board-column-header.d.ts → kanban-renderer/kanban-renderer-board-column-header.d.ts} +2 -2
  49. package/dist/components/{data-renderer/data-renderer-board-group-section.d.ts → kanban-renderer/kanban-renderer-board-group-section.d.ts} +2 -2
  50. package/dist/components/{data-renderer/data-renderer-board-move.d.ts → kanban-renderer/kanban-renderer-board-move.d.ts} +3 -3
  51. package/dist/components/{data-renderer/data-renderer-board.d.ts → kanban-renderer/kanban-renderer-board.d.ts} +15 -14
  52. package/dist/components/{data-renderer/data-renderer-card.d.ts → kanban-renderer/kanban-renderer-card.d.ts} +4 -3
  53. package/dist/components/{data-renderer/data-renderer-content.d.ts → kanban-renderer/kanban-renderer-content.d.ts} +8 -8
  54. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +12 -0
  55. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +10 -0
  56. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +23 -0
  57. package/dist/components/{data-renderer/data-renderer-helpers.d.ts → kanban-renderer/kanban-renderer-helpers.d.ts} +15 -15
  58. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +25 -0
  59. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +43 -0
  60. package/dist/components/{data-renderer/data-renderer-story-fixtures.d.ts → kanban-renderer/kanban-renderer-story-fixtures.d.ts} +3 -2
  61. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +15 -0
  62. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +14 -0
  63. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +12 -0
  64. package/dist/components/{data-renderer/data-renderer.d.ts → kanban-renderer/kanban-renderer.d.ts} +11 -8
  65. package/dist/components/{data-renderer → kanban-renderer}/types.d.ts +51 -8
  66. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +78 -0
  67. package/dist/components/layout/index.d.ts +1 -0
  68. package/dist/components/layout/panel-header.constants.d.ts +2 -0
  69. package/dist/components/layout/resizable-split-layout.d.ts +3 -2
  70. package/dist/components/layout/resizable-split-layout.geometry.d.ts +56 -0
  71. package/dist/components/layout/resizable-split-layout.handle.d.ts +6 -2
  72. package/dist/components/layout/resizable-split-layout.panels.d.ts +25 -0
  73. package/dist/components/list-row/list-row-actions.d.ts +1 -0
  74. package/dist/components/list-row/list-row-content.d.ts +7 -0
  75. package/dist/components/list-row/list-row.types.d.ts +4 -1
  76. package/dist/components/overlays/attached-menu.d.ts +6 -0
  77. package/dist/components/overlays/attachment-chip.d.ts +13 -0
  78. package/dist/components/overlays/index.d.ts +6 -2
  79. package/dist/components/overlays/resource-context-menu.d.ts +13 -1
  80. package/dist/components/overlays/searchable-menu-input.d.ts +9 -0
  81. package/dist/components/param-editor/index.d.ts +6 -2
  82. package/dist/components/param-editor/inputs/action-input.d.ts +1 -0
  83. package/dist/components/param-editor/inputs/boolean-input.d.ts +13 -0
  84. package/dist/components/param-editor/inputs/color-input.d.ts +1 -0
  85. package/dist/components/param-editor/inputs/date-input.d.ts +1 -0
  86. package/dist/components/param-editor/inputs/file-upload-input.d.ts +15 -0
  87. package/dist/components/param-editor/inputs/file-upload-value.d.ts +7 -0
  88. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +1 -0
  89. package/dist/components/param-editor/inputs/markdown-input.d.ts +13 -0
  90. package/dist/components/param-editor/inputs/number-input.d.ts +1 -0
  91. package/dist/components/param-editor/inputs/range-input.d.ts +1 -0
  92. package/dist/components/param-editor/inputs/resource-input.d.ts +2 -0
  93. package/dist/components/param-editor/inputs/segmented-input.d.ts +1 -0
  94. package/dist/components/param-editor/inputs/selection-input.d.ts +7 -6
  95. package/dist/components/param-editor/inputs/selection-menu.d.ts +33 -0
  96. package/dist/components/param-editor/inputs/text-input.d.ts +1 -0
  97. package/dist/components/param-editor/param-editor-advanced-field.d.ts +14 -0
  98. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +24 -0
  99. package/dist/components/param-editor/param-editor-field.d.ts +2 -0
  100. package/dist/components/param-editor/param-editor-horizontal.d.ts +3 -2
  101. package/dist/components/param-editor/param-editor-label.d.ts +1 -0
  102. package/dist/components/param-editor/param-editor-presentation.d.ts +3 -0
  103. package/dist/components/param-editor/param-editor-read-only-field.d.ts +9 -0
  104. package/dist/components/param-editor/param-editor-section.d.ts +1 -0
  105. package/dist/components/param-editor/param-editor.d.ts +1 -0
  106. package/dist/components/param-editor/param-editor.types.d.ts +59 -18
  107. package/dist/components/param-editor/resolve-param-value.d.ts +2 -0
  108. package/dist/components/primitives/chip.d.ts +4 -0
  109. package/dist/components/primitives/index.d.ts +2 -0
  110. package/dist/components/primitives/resource-badge.d.ts +12 -10
  111. package/dist/components/rich-text/index.d.ts +1 -0
  112. package/dist/components/rich-text/lazy-markdown-editor.d.ts +2 -0
  113. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +2 -1
  114. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +2 -1
  115. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +2 -1
  116. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +3 -2
  117. package/dist/components/rich-text/types.d.ts +1 -1
  118. package/dist/components/rich-text/utils/inferResourceType.d.ts +1 -1
  119. package/dist/components/{sidebar/sidebar-footer.d.ts → sidenav/sidenav-footer.d.ts} +2 -2
  120. package/dist/components/{sidebar/sidebar-header.d.ts → sidenav/sidenav-header.d.ts} +2 -2
  121. package/dist/components/sidenav/sidenav.d.ts +2 -0
  122. package/dist/components/sidenav/sidenav.store.d.ts +49 -0
  123. package/dist/components/{sidebar/sidebar.types.d.ts → sidenav/sidenav.types.d.ts} +5 -5
  124. package/dist/components/tab-strip/tab-visibility-filter.d.ts +1 -0
  125. package/dist/components/terminal/terminal.d.ts +11 -0
  126. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -1
  127. package/dist/components/tree-list/tree-list.d.ts +1 -1
  128. package/dist/components/tree-list/tree-list.types.d.ts +4 -0
  129. package/dist/data-table.js +1321 -0
  130. package/dist/data-table.js.map +1 -0
  131. package/dist/diff.js +370 -366
  132. package/dist/diff.js.map +1 -1
  133. package/dist/font/css/prompt-studio-icons.css +690 -0
  134. package/dist/font/prompt-studio-icons.eot +0 -0
  135. package/dist/font/prompt-studio-icons.svg +1 -0
  136. package/dist/font/prompt-studio-icons.ttf +0 -0
  137. package/dist/font/prompt-studio-icons.woff +0 -0
  138. package/dist/font/prompt-studio-icons.woff2 +0 -0
  139. package/dist/index.d.ts +3 -3
  140. package/dist/index.js +1854 -3381
  141. package/dist/index.js.map +1 -1
  142. package/dist/kanban-renderer-toolbar-Db1mIWWd.js +1318 -0
  143. package/dist/kanban-renderer-toolbar-Db1mIWWd.js.map +1 -0
  144. package/dist/kanban-renderer.js +1101 -0
  145. package/dist/kanban-renderer.js.map +1 -0
  146. package/dist/lazy-markdown-editor-DwhqQ-NN.js +26 -0
  147. package/dist/lazy-markdown-editor-DwhqQ-NN.js.map +1 -0
  148. package/dist/list-row-BYWwcbGK.js +823 -0
  149. package/dist/list-row-BYWwcbGK.js.map +1 -0
  150. package/dist/markdown-DDd2ESoH.js +743 -0
  151. package/dist/markdown-DDd2ESoH.js.map +1 -0
  152. package/dist/markdown-editor-CYVkzt8t.js +741 -0
  153. package/dist/markdown-editor-CYVkzt8t.js.map +1 -0
  154. package/dist/monaco-browser-CO0NxK_Z.js +19 -0
  155. package/dist/monaco-browser-CO0NxK_Z.js.map +1 -0
  156. package/dist/param-editor-BCZOw5Gt.js +140 -0
  157. package/dist/param-editor-BCZOw5Gt.js.map +1 -0
  158. package/dist/param-editor-field-ZzZwgjZ_.js +2094 -0
  159. package/dist/param-editor-field-ZzZwgjZ_.js.map +1 -0
  160. package/dist/resource-badge-CuItchgL.js +98 -0
  161. package/dist/resource-badge-CuItchgL.js.map +1 -0
  162. package/dist/rich-message--eRzjWYK.js +730 -0
  163. package/dist/rich-message--eRzjWYK.js.map +1 -0
  164. package/dist/rich-text.js +114 -827
  165. package/dist/rich-text.js.map +1 -1
  166. package/dist/style.css +1 -1
  167. package/dist/terminal.js +197 -177
  168. package/dist/terminal.js.map +1 -1
  169. package/dist/theme/primitives/fonts.d.ts +3 -0
  170. package/dist/theme/primitives/sizes.d.ts +23 -0
  171. package/dist/theme/recipes/badge.d.ts +8 -0
  172. package/dist/theme/recipes/button.d.ts +6 -0
  173. package/dist/theme/recipes/color-picker.d.ts +18 -1
  174. package/dist/theme/recipes/switch.d.ts +17 -0
  175. package/dist/theme/recipes/tabs.d.ts +4 -4
  176. package/dist/theme/tokens/colors.d.ts +18 -24
  177. package/dist/{theme-CJBYBJaA.js → theme-poQlUgt0.js} +414 -240
  178. package/dist/theme-poQlUgt0.js.map +1 -0
  179. package/dist/theme.js +1 -1
  180. package/dist/tree-list-BAja2eXU.js +1033 -0
  181. package/dist/tree-list-BAja2eXU.js.map +1 -0
  182. package/package.json +11 -4
  183. package/dist/checkbox-D5AzFRlb.js.map +0 -1
  184. package/dist/components/data-renderer/card-interaction-guard.d.ts +0 -2
  185. package/dist/components/data-renderer/data-renderer-attribute-badge.d.ts +0 -7
  186. package/dist/components/data-renderer/data-renderer-grouping.d.ts +0 -23
  187. package/dist/components/data-renderer/data-renderer-list.d.ts +0 -39
  188. package/dist/components/data-renderer/data-renderer-toolbar.d.ts +0 -12
  189. package/dist/components/data-renderer/index.d.ts +0 -18
  190. package/dist/components/data-renderer/use-data-renderer-store.d.ts +0 -59
  191. package/dist/components/param-editor/inputs/file-accept.d.ts +0 -22
  192. package/dist/components/param-editor/inputs/file-drop-input.d.ts +0 -14
  193. package/dist/components/sidebar/sidebar.d.ts +0 -2
  194. package/dist/components/sidebar/sidebar.store.d.ts +0 -49
  195. package/dist/data-renderer.js +0 -1669
  196. package/dist/data-renderer.js.map +0 -1
  197. package/dist/list-row-mi3Hn-Um.js +0 -740
  198. package/dist/list-row-mi3Hn-Um.js.map +0 -1
  199. package/dist/resource-badge-qCWHP-wQ.js +0 -99
  200. package/dist/resource-badge-qCWHP-wQ.js.map +0 -1
  201. package/dist/rich-message-DBf_5YlW.js +0 -1450
  202. package/dist/rich-message-DBf_5YlW.js.map +0 -1
  203. package/dist/theme-CJBYBJaA.js.map +0 -1
  204. package/dist/tree-list-CcuZMLS5.js +0 -930
  205. package/dist/tree-list-CcuZMLS5.js.map +0 -1
  206. package/dist/workspace-badge-Fuo-1zPj.js +0 -314
  207. package/dist/workspace-badge-Fuo-1zPj.js.map +0 -1
  208. /package/dist/components/{data-renderer/data-renderer-badge-helpers.d.ts → kanban-renderer/kanban-renderer-badge-helpers.d.ts} +0 -0
  209. /package/dist/components/{data-renderer/data-renderer-enum-helpers.d.ts → kanban-renderer/kanban-renderer-enum-helpers.d.ts} +0 -0
  210. /package/dist/components/{data-renderer → kanban-renderer}/use-resolved-attributes.d.ts +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/activity/activity-avatar.tsx","../src/components/activity/activity-comment.tsx","../src/components/activity/activity-composer.tsx","../src/components/activity/activity-event.tsx","../src/components/activity/activity-root.tsx","../src/components/activity/activity-timeline.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/notification-center/notification-center.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/param-editor/param-editor-label.tsx","../src/components/param-editor/param-editor-control-item.tsx","../src/components/param-editor/inputs/action-input.tsx","../src/components/param-editor/inputs/anchor-grid.ts","../src/components/param-editor/param-editor-read-only-value.tsx","../src/components/param-editor/inputs/anchor-grid-input.tsx","../src/components/param-editor/inputs/color-input.tsx","../src/components/param-editor/inputs/date-input.tsx","../src/components/param-editor/inputs/file-accept.ts","../src/components/param-editor/inputs/file-drop-input.tsx","../src/components/param-editor/inputs/horizontal-text-input.tsx","../src/components/primitives/number-input.tsx","../src/components/primitives/slider.tsx","../src/components/param-editor/inputs/number-input.tsx","../src/components/param-editor/inputs/numeric-value.ts","../src/components/param-editor/inputs/range-value.ts","../src/components/param-editor/inputs/slider-marks.tsx","../src/components/param-editor/inputs/range-input.tsx","../src/components/param-editor/inputs/resource-input-chips.tsx","../src/components/param-editor/inputs/resource-input.tsx","../src/components/param-editor/inputs/segmented-input.tsx","../src/components/param-editor/inputs/selection-input.tsx","../src/components/param-editor/inputs/text-input.tsx","../src/components/param-editor/param-editor-inline-group.tsx","../src/components/param-editor/inputs/vector-value.ts","../src/components/param-editor/inputs/vector-input.tsx","../src/components/param-editor/param-editor-field.tsx","../src/components/param-editor/param-editor-section.tsx","../src/components/param-editor/param-editor.tsx","../src/components/param-editor/param-editor-control-list.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/error-boundary.tsx","../src/components/primitives/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/components/primitives/switch.tsx","../src/components/primitives/toaster.tsx","../src/components/sidebar/sidebar.store.ts","../src/components/sidebar/sidebar-footer.tsx","../src/components/layout/panel-header.constants.ts","../src/components/sidebar/sidebar-header.tsx","../src/components/sidebar/sidebar.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/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.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/prism.ts","../src/utils/resolve-file-icon-element.tsx"],"sourcesContent":["import { Avatar, Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\n\nexport interface ActivityAvatarProps {\n actor?: ActivityActor;\n icon?: ReactNode;\n color?: string;\n background?: string;\n}\n\nexport const ActivityAvatar = (props: ActivityAvatarProps) => {\n const { actor, icon, color = \"fg.muted\", background = \"bg.muted\" } = props;\n\n if (icon) {\n return (\n <Box\n boxSize=\"18px\"\n borderRadius=\"full\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n color={color}\n background={background}\n >\n {icon}\n </Box>\n );\n }\n\n return (\n <Avatar.Root size=\"2xs\" flexShrink={0}>\n <Avatar.Image src={actor?.avatarSrc} alt={actor?.avatarAlt ?? actor?.name} />\n <Avatar.Fallback name={actor?.name} background={background} color={color} />\n </Avatar.Root>\n );\n};\n","import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { Children, type ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\ninterface ActivityCommentHeaderProps {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityCommentProps extends Omit<HTMLChakraProps<\"article\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n replies?: ReactNode;\n composer?: ReactNode;\n children: ReactNode;\n}\n\nexport interface ActivityReplyProps extends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n}\n\nconst TimestampSeparator = () => (\n <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />\n);\n\nconst ActivityCommentHeader = (props: ActivityCommentHeaderProps) => {\n const { actor, timestamp, actions } = props;\n\n return (\n <HStack gap=\"xs\" alignItems=\"center\" minW=\"0\">\n <ActivityAvatar actor={actor} />\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {actor.name}\n </Text>\n {timestamp ? (\n <>\n <TimestampSeparator />\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n <Box marginLeft=\"auto\" flexShrink={0}>\n {actions}\n </Box>\n </HStack>\n );\n};\n\nexport const ActivityReply = (props: ActivityReplyProps) => {\n const { actor, timestamp, actions, children, ...rootProps } = props;\n\n return (\n <Box paddingX=\"md\" paddingY=\"sm\" {...rootProps}>\n <Stack gap=\"xs\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Box paddingLeft=\"32px\">\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\">\n {children}\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n};\n\nexport const ActivityComment = (props: ActivityCommentProps) => {\n const { actor, timestamp, actions, replies, composer, children, ...rootProps } = props;\n const hasReplies = Children.count(replies) > 0;\n\n return (\n <Box\n as=\"article\"\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"xs\"\n background=\"bg\"\n overflow=\"hidden\"\n {...rootProps}\n >\n <Stack gap=\"sm\" padding=\"md\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\" whiteSpace=\"pre-wrap\">\n {children}\n </Text>\n </Stack>\n {hasReplies ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {replies}\n </Box>\n ) : null}\n {composer ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {composer}\n </Box>\n ) : null}\n </Box>\n );\n};\n","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 type { TimelineItemProps } from \"@chakra-ui/react\";\nimport { Box, Text, Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityEventProps extends Omit<TimelineItemProps, \"title\"> {\n actor?: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n children: ReactNode;\n}\n\nconst EventSeparator = () => <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />;\n\nexport const ActivityEvent = (props: ActivityEventProps) => {\n const { actor, icon, iconColor = \"fg\", iconBackground = \"transparent\", timestamp, children, ...rootProps } = props;\n\n return (\n <Timeline.Item gap=\"xs\" minH=\"24px\" paddingX=\"md\" {...rootProps}>\n <Timeline.Connector>\n <Timeline.Separator borderColor=\"border\" />\n <Timeline.Indicator outline=\"none\" border=\"none\" background=\"bg\">\n <ActivityAvatar actor={actor} icon={icon} color={iconColor} background={iconBackground} />\n </Timeline.Indicator>\n </Timeline.Connector>\n <Timeline.Content gap=\"0\" paddingBottom=\"xs\" minW=\"0\">\n <Timeline.Title\n marginTop=\"0\"\n gap=\"xs\"\n minW=\"0\"\n fontWeight=\"normal\"\n textStyle=\"label/S/regular\"\n color=\"fg.muted\"\n >\n {actor ? (\n <Text as=\"span\" color=\"fg\" fontWeight=\"500\" flexShrink={0}>\n {actor.name}\n </Text>\n ) : null}\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" gap=\"2xs\" minW=\"0\" flexWrap=\"wrap\">\n {children}\n </Box>\n {timestamp ? (\n <>\n <EventSeparator />\n <Text as=\"span\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n </Timeline.Title>\n </Timeline.Content>\n </Timeline.Item>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { HStack, Stack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityRootProps extends StackProps {\n children: ReactNode;\n}\n\nexport interface ActivityHeaderProps extends Omit<StackProps, \"title\"> {\n title?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityFeedProps extends StackProps {\n children: ReactNode;\n}\n\nexport const ActivityRoot = (props: ActivityRootProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack width=\"full\" gap=\"md\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n\nexport const ActivityHeader = (props: ActivityHeaderProps) => {\n const { title = \"Activity\", actions, ...rootProps } = props;\n\n return (\n <HStack alignItems=\"center\" justifyContent=\"space-between\" gap=\"md\" {...rootProps}>\n <Text textStyle=\"label/M/medium\" color=\"fg\">\n {title}\n </Text>\n {actions ? <HStack gap=\"xs\">{actions}</HStack> : null}\n </HStack>\n );\n};\n\nexport const ActivityFeed = (props: ActivityFeedProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack gap=\"md\" width=\"full\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n","import type { TimelineRootProps } from \"@chakra-ui/react\";\nimport { Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityTimelineProps extends TimelineRootProps {\n children: ReactNode;\n}\n\nexport const ActivityTimeline = (props: ActivityTimelineProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Timeline.Root size=\"sm\" variant=\"plain\" width=\"full\" css={{ \"--timeline-indicator-size\": \"18px\" }} {...rootProps}>\n {children}\n </Timeline.Root>\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\";\n\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\nconst searchInputChromeProps = {\n bg: \"transparent\",\n border: \"0\",\n borderColor: \"transparent\",\n borderRadius: \"0\",\n boxShadow: \"none\",\n transition: \"none\",\n _hover: { bg: \"transparent\", borderColor: \"transparent\" },\n _active: { bg: \"transparent\", borderColor: \"transparent\" },\n _focus: { borderColor: \"transparent\", outline: \"none\", boxShadow: \"none\" },\n _focusVisible: { borderColor: \"transparent\", outline: \"none\", boxShadow: \"none\" },\n} as const;\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 {...searchInputChromeProps}\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","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\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 borderLeftWidth=\"1px\"\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 { 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 size=\"xs\" variant=\"ghost\" aria-label={popOutLabel} onClick={onPopOut}>\n <SquareArrowOutUpRight size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n {onClose ? (\n <Tooltip content={closeLabel}>\n <IconButton size=\"xs\" variant=\"ghost\" aria-label={closeLabel} onClick={onClose}>\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, 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 <Dialog.Root open={open} onOpenChange={onClose}>\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 </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 { HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { CircleHelp } from \"lucide-react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ninterface ParamEditorLabelProps {\n name: string;\n description?: string;\n}\n\nexport const ParamEditorLabel = (props: ParamEditorLabelProps) => {\n const { name, description } = props;\n\n return (\n <HStack gap=\"1\" alignItems=\"center\" minW=\"0\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\" truncate>\n {name}\n </Text>\n {description ? (\n <Tooltip content={description}>\n <Icon as={CircleHelp} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" flexShrink={0} />\n </Tooltip>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { ParamEditorFieldLabel } from \"./param-editor-field-label\";\n\ntype ControlItemOrientation = \"auto\" | \"inline\" | \"stacked\";\n\ninterface ParamEditorControlItemProps {\n name?: string;\n description?: string;\n hideLabel?: boolean;\n fullWidth?: boolean;\n /** `auto` renders inline when compact and stacked when full-width. */\n orientation?: ControlItemOrientation;\n /** Rendered on the label row, right-aligned (e.g. an editable value readout). */\n labelTrailing?: ReactNode;\n children: ReactNode;\n}\n\n// Shared row scaffold for control layouts: a labelled control that renders either\n// inline (label left / control right) or stacked (label above the control).\nexport const ParamEditorControlItem = (props: ParamEditorControlItemProps) => {\n const {\n name,\n description,\n hideLabel = false,\n fullWidth = false,\n orientation = \"auto\",\n labelTrailing,\n children,\n } = props;\n\n const label = hideLabel || !name ? null : <ParamEditorFieldLabel name={name} description={description} />;\n const resolved = orientation === \"auto\" ? (fullWidth ? \"stacked\" : \"inline\") : orientation;\n\n if (resolved === \"stacked\") {\n const header = label || labelTrailing;\n return (\n <Box minW=\"0\">\n {header ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" mb=\"xs\" minW=\"0\">\n {label}\n {labelTrailing}\n </Flex>\n ) : null}\n {children}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\" minW=\"0\">\n {label}\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {labelTrailing}\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { Button, Flex } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { ActionOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\n\ninterface ActionInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue?: string;\n options: ActionOption[];\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const ActionInput = (props: ActionInputProps) => {\n const { id, name, description, defaultValue, options, onChange, readOnly } = props;\n const [active, setActive] = useState(defaultValue);\n\n useEffect(() => {\n setActive(defaultValue);\n }, [defaultValue]);\n\n const run = (optionId: string) => {\n setActive(optionId);\n onChange(id, optionId);\n };\n\n const row = (\n <Flex gap=\"xs\" wrap=\"wrap\">\n {options.map((option) => (\n <Button\n key={option.id}\n size=\"xs\"\n variant={active === option.id ? \"subtle\" : \"outline\"}\n disabled={option.disabled || readOnly}\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n onClick={() => run(option.id)}\n >\n {option.name}\n </Button>\n ))}\n </Flex>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {row}\n </ParamEditorControlItem>\n );\n};\n","import type { AnchorGridValue } from \"../param-editor.types\";\n\n/** The nine anchors in row-major order (top-left → bottom-right). */\nexport const ANCHOR_GRID_VALUES: AnchorGridValue[] = [\n \"top-left\",\n \"top\",\n \"top-right\",\n \"left\",\n \"center\",\n \"right\",\n \"bottom-left\",\n \"bottom\",\n \"bottom-right\",\n];\n\nexport const isAnchorGridValue = (value: unknown): value is AnchorGridValue =>\n typeof value === \"string\" && (ANCHOR_GRID_VALUES as string[]).includes(value);\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface ParamEditorReadOnlyValueProps extends Omit<BoxProps, \"children\"> {\n children: ReactNode;\n preserveWhitespace?: boolean;\n}\n\nexport const ParamEditorReadOnlyValue = (props: ParamEditorReadOnlyValueProps) => {\n const { children, preserveWhitespace = false, ...boxProps } = props;\n\n return (\n <Box minW=\"0\" textStyle=\"label/S/regular\" whiteSpace={preserveWhitespace ? \"pre-wrap\" : undefined} {...boxProps}>\n {children}\n </Box>\n );\n};\n","import { Box, Grid, IconButton } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { AnchorGridValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { ANCHOR_GRID_VALUES } from \"./anchor-grid\";\n\ninterface AnchorGridInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: AnchorGridValue;\n onChange: (id: string, value: AnchorGridValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const AnchorGridInput = (props: AnchorGridInputProps) => {\n const { id, name, description, defaultValue, onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState<AnchorGridValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: AnchorGridValue) => {\n setValue(next);\n onChange(id, next);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const grid = (\n <Grid\n templateColumns=\"repeat(3, 1.5rem)\"\n gap=\"1px\"\n width=\"fit-content\"\n bg=\"border.subtle\"\n p=\"1px\"\n borderRadius=\"sm\"\n overflow=\"hidden\"\n >\n {ANCHOR_GRID_VALUES.map((anchor) => {\n const selected = anchor === value;\n return (\n <IconButton\n key={anchor}\n aria-label={anchor}\n aria-pressed={selected}\n size=\"2xs\"\n variant=\"ghost\"\n bg={selected ? \"fg\" : \"bg\"}\n _hover={{ bg: selected ? \"fg\" : \"bg.muted\" }}\n borderRadius=\"0\"\n onClick={() => select(anchor)}\n >\n <Box boxSize=\"0.375rem\" borderRadius=\"full\" bg={selected ? \"bg\" : \"fg.muted\"} />\n </IconButton>\n );\n })}\n </Grid>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation={fullWidth ? \"stacked\" : \"inline\"}>\n {grid}\n </ParamEditorControlItem>\n );\n};\n","import { Box, ColorPicker, type ColorPickerValueChangeDetails, Flex, parseColor } from \"@chakra-ui/react\";\nimport { type FocusEvent as ReactFocusEvent, useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface ColorInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n}\n\nexport const ColorInput = (props: ColorInputProps) => {\n const { id, defaultValue, name, onChange, description, readOnly, hideLabel = false, fullWidth = false } = props;\n const [value, setValue] = useState(defaultValue);\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextColor: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextColor), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (!open) return;\n\n const isInsidePicker = (target: EventTarget | null) => {\n const node = target as Node;\n return rootRef.current?.contains(node) || contentRef.current?.contains(node);\n };\n\n const handleOutsideInteraction = (event: FocusEvent | PointerEvent) => {\n if (isInsidePicker(event.target)) return;\n\n setOpen(false);\n };\n\n document.addEventListener(\"focusin\", handleOutsideInteraction, true);\n document.addEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.addEventListener(\"click\", handleOutsideInteraction, true);\n\n return () => {\n document.removeEventListener(\"focusin\", handleOutsideInteraction, true);\n document.removeEventListener(\"pointerdown\", handleOutsideInteraction, true);\n document.removeEventListener(\"click\", handleOutsideInteraction, true);\n };\n }, [open]);\n\n const handleChange = (newColor: string) => {\n setValue(newColor);\n scheduleChange(newColor);\n };\n\n const handleBlur = (event: ReactFocusEvent<HTMLDivElement>) => {\n const root = event.currentTarget;\n\n setTimeout(() => {\n if (!root.contains(root.ownerDocument.activeElement)) setOpen(false);\n });\n };\n\n if (readOnly) {\n const valueElement = (\n <ParamEditorReadOnlyValue>\n <Flex alignItems=\"center\" gap=\"xs\">\n <Box boxSize=\"0.75rem\" borderRadius=\"xs\" bg={value} />\n <Box as=\"span\">{value}</Box>\n </Flex>\n </ParamEditorReadOnlyValue>\n );\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n const rootProps = {\n value: parseColor(value),\n open,\n onOpenChange: (details: { open: boolean }) => setOpen(details.open),\n onFocusOutside: () => setOpen(false),\n onInteractOutside: () => setOpen(false),\n onBlur: handleBlur,\n onValueChange: (details: ColorPickerValueChangeDetails) => handleChange(details.value.toString(\"hex\")),\n disabled: readOnly,\n };\n\n const picker = (\n <ColorPicker.Root ref={rootRef} {...rootProps} size=\"sm\" width={fullWidth ? \"100%\" : \"8.75rem\"} maxW=\"100%\">\n <ColorPicker.HiddenInput />\n <ColorPicker.Label srOnly>{name}</ColorPicker.Label>\n <ColorPicker.Control>\n <ColorPicker.Input readOnly={readOnly} onFocus={() => setOpen(false)} />\n <ColorPicker.Trigger />\n </ColorPicker.Control>\n <ColorPicker.Positioner>\n <ColorPicker.Content ref={contentRef} onBlur={handleBlur}>\n <ColorPicker.Area />\n <ColorPicker.Sliders />\n <ColorPicker.SwatchGroup>\n <ColorPicker.SwatchTrigger value={value}>\n <ColorPicker.Swatch value={value} />\n </ColorPicker.SwatchTrigger>\n </ColorPicker.SwatchGroup>\n </ColorPicker.Content>\n </ColorPicker.Positioner>\n </ColorPicker.Root>\n );\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {picker}\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {picker}\n </Flex>\n )}\n </Box>\n );\n};\n","import { Box, Flex, Input } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface DateInputProps {\n id: string;\n defaultValue: string;\n name: string;\n min?: string;\n max?: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n}\n\nexport const DateInput = (props: DateInputProps) => {\n const {\n id,\n defaultValue,\n name,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n fullWidth = false,\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"8.75rem\"\n size=\"sm\"\n type=\"date\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n min={min}\n max={max}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n )}\n </Box>\n );\n};\n","import type { FileDropValue } from \"../param-editor.types\";\n\ninterface AcceptClause {\n kind: \"extension\" | \"mime\" | \"wildcard\";\n value: string;\n}\n\n/** Parse an accept string (\"image/*,.png,image/jpeg\") into normalized clauses. */\nexport const parseAccept = (accept?: string): AcceptClause[] => {\n if (!accept) return [];\n return accept\n .split(\",\")\n .map((entry) => entry.trim().toLowerCase())\n .filter(Boolean)\n .map((entry) => {\n if (entry.startsWith(\".\")) return { kind: \"extension\", value: entry };\n if (entry.endsWith(\"/*\")) return { kind: \"wildcard\", value: entry.slice(0, entry.indexOf(\"/\")) };\n return { kind: \"mime\", value: entry };\n });\n};\n\nexport interface AcceptCandidate {\n name: string;\n mimeType?: string;\n}\n\n/** Whether a file satisfies the accept string. An empty accept matches anything. */\nexport const acceptsFile = (candidate: AcceptCandidate, accept?: string) => {\n const clauses = parseAccept(accept);\n if (clauses.length === 0) return true;\n const name = candidate.name.toLowerCase();\n const mime = candidate.mimeType?.toLowerCase();\n return clauses.some((clause) => {\n if (clause.kind === \"extension\") return name.endsWith(clause.value);\n if (clause.kind === \"wildcard\") return Boolean(mime?.startsWith(`${clause.value}/`));\n return mime === clause.value;\n });\n};\n\ninterface FileMetadataInput {\n name: string;\n type?: string;\n size?: number;\n dataUrl?: string;\n}\n\n/** Build the serializable metadata a file-drop control commits (never a live File). */\nexport const fileDropValueFromFile = (input: FileMetadataInput): FileDropValue => ({\n name: input.name,\n mimeType: input.type || undefined,\n size: input.size,\n dataUrl: input.dataUrl,\n});\n","import { Box, Button, Flex, Icon, Text } from \"@chakra-ui/react\";\nimport { Upload, X } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { FileDropValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { acceptsFile, fileDropValueFromFile } from \"./file-accept\";\n\ninterface FileDropInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: FileDropValue | null;\n accept?: string;\n assetKind?: \"file\" | \"image\";\n onChange: (id: string, value: FileDropValue | null) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nconst formatSize = (size?: number) => {\n if (!size) return undefined;\n if (size < 1024) return `${size} B`;\n if (size < 1024 * 1024) return `${Math.round(size / 1024)} KB`;\n return `${(size / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport const FileDropInput = (props: FileDropInputProps) => {\n const { id, name, description, defaultValue, accept, assetKind = \"file\", onChange, readOnly } = props;\n const [value, setValue] = useState<FileDropValue | null>(defaultValue);\n const [error, setError] = useState<string | null>(null);\n const [dragging, setDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const ingest = (file: File | undefined) => {\n if (!file) return;\n if (!acceptsFile({ name: file.name, mimeType: file.type }, accept)) {\n setError(`${file.name} is not an accepted ${assetKind}`);\n return;\n }\n setError(null);\n const reader = new FileReader();\n reader.onload = () => {\n const dataUrl = typeof reader.result === \"string\" ? reader.result : undefined;\n const next = fileDropValueFromFile({ name: file.name, type: file.type, size: file.size, dataUrl });\n setValue(next);\n onChange(id, next);\n };\n reader.readAsDataURL(file);\n };\n\n const clear = () => {\n setValue(null);\n setError(null);\n onChange(id, null);\n };\n\n const selected = value ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" minW=\"0\" width=\"full\">\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\">\n {assetKind === \"image\" && value.dataUrl ? (\n <Box boxSize=\"1.75rem\" borderRadius=\"xs\" bgImage={`url(${value.dataUrl})`} bgSize=\"cover\" flexShrink={0} />\n ) : null}\n <Box minW=\"0\">\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {value.name}\n </Text>\n {formatSize(value.size) ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {formatSize(value.size)}\n </Text>\n ) : null}\n </Box>\n </Flex>\n {readOnly ? null : (\n <Button size=\"2xs\" variant=\"ghost\" onClick={clear}>\n <X />\n </Button>\n )}\n </Flex>\n ) : null;\n\n const dropZone = (\n <Box\n borderWidth=\"1px\"\n borderStyle=\"dashed\"\n borderColor={error ? \"border.error\" : dragging ? \"border.accent-light\" : \"border\"}\n borderRadius=\"sm\"\n bg={dragging ? \"bg.muted\" : \"bg\"}\n px=\"sm\"\n py=\"md\"\n cursor={readOnly ? \"default\" : \"pointer\"}\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: error ? \"border.error\" : \"border.accent-light\" }}\n _active={{ borderColor: error ? \"border.error\" : \"border.accent-light\" }}\n _focusWithin={{ borderColor: error ? \"border.error\" : \"border.accent-light\", boxShadow: \"none\" }}\n onClick={() => {\n if (!readOnly) inputRef.current?.click();\n }}\n onDragOver={(event) => {\n if (readOnly) return;\n event.preventDefault();\n setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={(event) => {\n if (readOnly) return;\n event.preventDefault();\n setDragging(false);\n ingest(event.dataTransfer.files[0]);\n }}\n >\n <Flex direction=\"column\" alignItems=\"center\" gap=\"2xs\" color=\"fg.muted\">\n <Icon as={Upload} boxSize=\"16px\" />\n <Text textStyle=\"label/XS/regular\">Drop {assetKind} or click to browse</Text>\n </Flex>\n </Box>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <input ref={inputRef} type=\"file\" accept={accept} hidden onChange={(event) => ingest(event.target.files?.[0])} />\n {value ? selected : dropZone}\n {error ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.error\" mt=\"2xs\">\n {error}\n </Text>\n ) : null}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface HorizontalTextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n}\n\nexport const HorizontalTextInput = (props: HorizontalTextInputProps) => {\n const { id, defaultValue, name, onChange, description, readOnly, hideLabel = false } = props;\n const [value, setValue] = useState(defaultValue);\n const [isExpanded, setIsExpanded] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n const handleClick = () => {\n if (!readOnly) {\n setIsExpanded(true);\n }\n };\n\n const handleBlur = () => {\n // Only collapse if the value is empty\n if (value.trim().length === 0) {\n setIsExpanded(false);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n // Allow users to collapse with Escape key\n if (e.key === \"Escape\") {\n setIsExpanded(false);\n e.preventDefault();\n }\n };\n\n if (readOnly) {\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <ParamEditorReadOnlyValue preserveWhitespace>{value}</ParamEditorReadOnlyValue>\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box position=\"relative\" flex=\"1\" minW=\"12.5rem\">\n <Box position=\"relative\" minHeight=\"2rem\">\n {!isExpanded ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" height=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size=\"sm\"\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onClick={handleClick}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n right=\"0\"\n zIndex=\"10\"\n bg=\"bg\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius=\"lg\"\n p=\"2\"\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {!hideLabel && (\n <Box mb=\"sm\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n rows={3}\n resize=\"vertical\"\n autoFocus\n />\n </Box>\n )}\n </Box>\n </Box>\n );\n};\n","import { NumberInput as ChakraNumberInput } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface NumberInputProps extends ChakraNumberInput.RootProps {}\n\nexport const NumberInputRoot = React.forwardRef<HTMLDivElement, NumberInputProps>(function NumberInput(props, ref) {\n const { children, ...rest } = props;\n return (\n <ChakraNumberInput.Root ref={ref} variant=\"outline\" {...rest}>\n {children}\n <ChakraNumberInput.Control>\n <ChakraNumberInput.IncrementTrigger />\n <ChakraNumberInput.DecrementTrigger />\n </ChakraNumberInput.Control>\n </ChakraNumberInput.Root>\n );\n});\n\nexport const NumberInputField = ChakraNumberInput.Input;\n","import { Slider as ChakraSlider } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SliderProps extends ChakraSlider.RootProps {}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {\n const { children, ...rest } = props;\n\n return (\n <ChakraSlider.Root ref={ref} variant=\"solid\" {...rest}>\n <ChakraSlider.Control>\n <ChakraSlider.Track height=\"2px\" borderRadius=\"0\" bg=\"bg.muted\">\n <ChakraSlider.Range bg=\"fg\" />\n </ChakraSlider.Track>\n <ChakraSlider.Thumbs\n boxSize=\"0.625rem\"\n bg=\"fg\"\n borderWidth=\"1px\"\n borderColor=\"bg\"\n borderRadius=\"2xs\"\n boxShadow=\"none\"\n transition=\"width 0.12s ease, height 0.12s ease, border-color 0.2s ease-in-out\"\n _hover={{ boxSize: \"0.75rem\", borderColor: \"border.accent-light\" }}\n _active={{ boxSize: \"0.875rem\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n />\n </ChakraSlider.Control>\n {children}\n </ChakraSlider.Root>\n );\n});\n","import { Box, Flex, type NumberInputValueChangeDetails, type SliderValueChangeDetails } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface NumberInputProps {\n id: string;\n defaultValue: number;\n name: string;\n step?: number;\n min?: number;\n max?: number;\n onChange: (id: string, value: number) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n hideSlider?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n fullWidth?: boolean;\n}\n\nexport const NumberInput = (props: NumberInputProps) => {\n const {\n id,\n defaultValue,\n name,\n step = 1,\n min,\n max,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n hideSlider = false,\n fullWidth = false,\n } = props;\n const [value, setValue] = useState(defaultValue);\n const isRange = min !== undefined && max !== undefined;\n const showSlider = isRange && !hideSlider;\n const useFullWidthLayout = fullWidth && !showSlider;\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const scheduleChange = (nextValue: number) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{value}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {useFullWidthLayout ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <NumberInputRoot\n disabled={readOnly}\n width=\"100%\"\n size=\"sm\"\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n h=\"2rem\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <NumberInputRoot\n disabled={readOnly}\n width=\"5rem\"\n size=\"sm\"\n value={`${value}`}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: NumberInputValueChangeDetails) => {\n const next = Number.isNaN(details.valueAsNumber) ? (min ?? 0) : details.valueAsNumber;\n setValue(next);\n scheduleChange(next);\n }}\n >\n <NumberInputField\n className=\"nodrag\"\n h=\"2rem\"\n readOnly={readOnly}\n placeholder={hideLabel ? name : undefined}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </NumberInputRoot>\n </Flex>\n )}\n {showSlider && (\n <Slider\n size=\"sm\"\n disabled={readOnly}\n value={[value]}\n step={step}\n min={min}\n max={max}\n onValueChange={(details: SliderValueChangeDetails) => {\n setValue(details.value[0]);\n }}\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n onChange(id, details.value[0]);\n }}\n />\n )}\n </Box>\n );\n};\n","/** Clamp `value` into the inclusive range, tolerating an inverted min/max. */\nexport const clampToRange = (value: number, min: number, max: number) => {\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n if (value < lower) return lower;\n if (value > upper) return upper;\n return value;\n};\n\n/** Snap `value` to the nearest multiple of `step` measured from `origin`. */\nexport const snapToStep = (value: number, step: number, origin = 0) => {\n if (!(step > 0)) return value;\n const steps = Math.round((value - origin) / step);\n return origin + steps * step;\n};\n\n/** Format a number with an optional unit suffix, trimming float noise. */\nexport const formatUnitValue = (value: number, unit?: string) => {\n const rounded = Number.isInteger(value) ? `${value}` : `${Number(value.toFixed(3))}`;\n return unit ? `${rounded}${unit}` : rounded;\n};\n","import type { RangeValue } from \"../param-editor.types\";\nimport { clampToRange, snapToStep } from \"./numeric-value\";\n\n/** Order both handles and clamp (and optionally snap) them into `[min, max]`. */\nexport const normalizeRange = (value: RangeValue, min: number, max: number, step?: number): RangeValue => {\n const first = clampToRange(value[0], min, max);\n const second = clampToRange(value[1], min, max);\n let start = Math.min(first, second);\n let end = Math.max(first, second);\n if (step && step > 0) {\n start = clampToRange(snapToStep(start, step, min), min, max);\n end = clampToRange(snapToStep(end, step, min), min, max);\n }\n return [start, end];\n};\n\n/** Replace a single handle, keeping the pair ordered. */\nexport const updateRangeHandle = (\n value: RangeValue,\n index: 0 | 1,\n next: number,\n min: number,\n max: number,\n step?: number,\n): RangeValue => {\n const draft: RangeValue = index === 0 ? [next, value[1]] : [value[0], next];\n return normalizeRange(draft, min, max, step);\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\n\ninterface SliderMarksProps {\n count?: number;\n}\n\n// Evenly-spaced tick marks rendered under a slider track. Purely decorative.\nexport const SliderMarks = (props: SliderMarksProps) => {\n const { count } = props;\n if (!count || count < 2) return null;\n const positions = Array.from({ length: count }, (_, index) => index / (count - 1));\n\n return (\n <Flex justifyContent=\"space-between\" mt=\"2xs\" aria-hidden=\"true\">\n {positions.map((position) => (\n <Box key={position} width=\"1px\" height=\"0.375rem\" bg=\"border.subtle\" />\n ))}\n </Flex>\n );\n};\n","import { Box, type SliderValueChangeDetails, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Slider } from \"@/components/primitives/slider\";\nimport type { RangeValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { formatUnitValue } from \"./numeric-value\";\nimport { normalizeRange } from \"./range-value\";\nimport { SliderMarks } from \"./slider-marks\";\n\ninterface RangeInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: RangeValue;\n min: number;\n max: number;\n step?: number;\n unit?: string;\n markerCount?: number;\n onChange: (id: string, value: RangeValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const RangeInput = (props: RangeInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n min,\n max,\n step = 1,\n unit,\n markerCount,\n onChange,\n readOnly,\n fullWidth,\n } = props;\n\n const [value, setValue] = useState<RangeValue>(() => normalizeRange(defaultValue, min, max, step));\n\n useEffect(() => {\n setValue(normalizeRange(defaultValue, min, max, step));\n }, [defaultValue, min, max, step]);\n\n const label = `${formatUnitValue(value[0], unit)} – ${formatUnitValue(value[1], unit)}`;\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{label}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const trailing = (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n {label}\n </Text>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\" labelTrailing={trailing}>\n <Box>\n <Slider\n size=\"sm\"\n value={value}\n min={min}\n max={max}\n step={step}\n onValueChange={(details: SliderValueChangeDetails) =>\n setValue(normalizeRange(details.value as RangeValue, min, max, step))\n }\n onValueChangeEnd={(details: SliderValueChangeDetails) => {\n const next = normalizeRange(details.value as RangeValue, min, max, step);\n setValue(next);\n onChange(id, next);\n }}\n />\n <SliderMarks count={markerCount} />\n </Box>\n </ParamEditorControlItem>\n );\n};\n","import { Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport { getIconComponent } from \"../../primitives/icon-color-picker\";\nimport { ResourceBadge } from \"../../primitives/resource-badge\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\n\nconst optionIcon = (option: ResourceOption) => (\n <Icon as={getIconComponent(option.icon)} boxSize=\"14px\" color={option.color ? `${option.color}.500` : \"fg.muted\"} />\n);\n\nconst openExternal = (href: string) => window.open(href, \"_blank\", \"noreferrer\");\n\nconst copyToClipboard = (text: string) => void navigator.clipboard?.writeText(text).catch(() => undefined);\n\ninterface ResourceChipProps {\n option: ResourceOption;\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: () => void;\n}\n\n// A chip opens its external href in a new tab, opens its internal ref via the host, or\n// copies its text to the clipboard — whichever the option declares.\nexport const ResourceChip = (props: ResourceChipProps) => {\n const { option, onOpenResource, onRemove } = props;\n\n const handleSelect =\n option.href && option.href.length > 0\n ? () => openExternal(option.href!)\n : option.ref && onOpenResource\n ? () => onOpenResource(option.ref!)\n : option.copyText\n ? () => copyToClipboard(option.copyText!)\n : undefined;\n\n return (\n <ResourceBadge\n fileName={option.name}\n icon={optionIcon(option)}\n size=\"sm\"\n onSelect={handleSelect ? () => handleSelect() : undefined}\n onRemove={onRemove ? () => onRemove() : undefined}\n />\n );\n};\n\ninterface ResourceChipListProps {\n options: ResourceOption[];\n onOpenResource?: (ref: ResourceRefValue) => void;\n onRemove?: (optionId: string) => void;\n emptyText?: string;\n}\n\nexport const ResourceChipList = (props: ResourceChipListProps) => {\n const { options, onOpenResource, onRemove, emptyText } = props;\n\n if (options.length === 0) {\n return (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {emptyText ?? \"None\"}\n </Text>\n );\n }\n\n return (\n <Wrap gap=\"2xs\">\n {options.map((option) => (\n <ResourceChip\n key={option.id}\n option={option}\n onOpenResource={onOpenResource}\n onRemove={onRemove ? () => onRemove(option.id) : undefined}\n />\n ))}\n </Wrap>\n );\n};\n","import { Box, Button, Flex, Icon, Menu } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Plus, Square, SquareCheck, X } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ListRow } from \"../../list-row/list-row\";\nimport { getIconComponent } from \"../../primitives/icon-color-picker\";\nimport type { ResourceOption, ResourceRefValue } from \"../param-editor.types\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ResourceChipList } from \"./resource-input-chips\";\n\ninterface ResourceInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string | string[];\n options: ResourceOption[];\n onChange: (id: string, value: string | string[]) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n editable?: boolean;\n multiSelect?: boolean;\n placeholder?: string;\n emptyText?: string;\n fullWidth?: boolean;\n}\n\nconst toIds = (value: string | string[]) => {\n if (Array.isArray(value)) return value;\n return value ? [value] : [];\n};\n\nconst resolveOptions = (ids: string[], options: ResourceOption[]) =>\n ids\n .map((id) => options.find((option) => option.id === id))\n .filter((option): option is ResourceOption => Boolean(option));\n\nconst FieldShell = (props: { fullWidth: boolean; label: ReactNode; control: ReactNode }) => {\n const { fullWidth, label, control } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">{label}</Box>\n {control}\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {label}\n {control}\n </Flex>\n );\n};\n\ninterface ResourceSelectMenuProps {\n triggerLabel: ReactNode;\n options: ResourceOption[];\n selectedIds: string[];\n multiSelect: boolean;\n name: string;\n emptyText?: string;\n onToggle: (optionId: string) => void;\n onClear: () => void;\n}\n\nconst selectionIndicator = (multiSelect: boolean, selected: boolean) => {\n if (multiSelect)\n return <Icon as={selected ? SquareCheck : Square} boxSize=\"14px\" color={selected ? \"fg\" : \"fg.muted\"} />;\n return selected ? <Icon as={Check} boxSize=\"14px\" color=\"fg\" /> : null;\n};\n\nconst ResourceSelectMenu = (props: ResourceSelectMenuProps) => {\n const { triggerLabel, options, selectedIds, multiSelect, name, emptyText, onToggle, onClear } = props;\n const noneSelected = selectedIds.length === 0;\n\n return (\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"subtle\" gap=\"2xs\" justifyContent=\"space-between\">\n {triggerLabel}\n <Icon as={ChevronDown} boxSize=\"12px\" color=\"fg.muted\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content bg=\"bg\">\n {!multiSelect ? (\n <Menu.Item value=\"__clear\" asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role=\"menuitemradio\"\n aria-checked={noneSelected}\n id=\"__clear\"\n label={emptyText ?? `No ${name}`}\n icon={<Icon as={X} boxSize=\"16px\" />}\n iconColor=\"gray.500\"\n isSelected={noneSelected}\n endContent={selectionIndicator(false, noneSelected)}\n onActivate={onClear}\n />\n </Menu.Item>\n ) : null}\n {options.map((option) => {\n const selected = selectedIds.includes(option.id);\n return (\n <Menu.Item key={option.id} value={option.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={selected}\n id={option.id}\n label={option.name}\n icon={<Icon as={getIconComponent(option.icon)} boxSize=\"16px\" />}\n iconColor={`${option.color ?? \"gray\"}.500`}\n tooltip={option.description ?? undefined}\n isSelected={selected}\n endContent={selectionIndicator(multiSelect, selected)}\n onActivate={() => onToggle(option.id)}\n />\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const ResourceInput = (props: ResourceInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n options,\n onChange,\n onOpenResource,\n readOnly,\n editable = false,\n multiSelect = false,\n placeholder,\n emptyText,\n fullWidth = false,\n } = props;\n\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const emitChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n onChange(id, next);\n };\n\n // Debounce multi-select toggles so a burst of menu clicks makes one update call.\n const scheduleChange = (next: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, next), 540);\n };\n\n const selectedIds = toIds(value);\n const selectedOptions = resolveOptions(selectedIds, options);\n const interactive = editable && !readOnly;\n\n const label = <ParamEditorLabel name={name} description={description} />;\n\n if (!interactive) {\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n control={<ResourceChipList options={selectedOptions} onOpenResource={onOpenResource} emptyText={emptyText} />}\n />\n );\n }\n\n const toggleOption = (optionId: string) => {\n if (multiSelect) {\n const next = selectedIds.includes(optionId)\n ? selectedIds.filter((entry) => entry !== optionId)\n : [...selectedIds, optionId];\n setValue(next);\n scheduleChange(next);\n return;\n }\n setValue(optionId);\n emitChange(optionId);\n };\n\n const removeOption = (optionId: string) => {\n const next = selectedIds.filter((entry) => entry !== optionId);\n setValue(next);\n scheduleChange(next);\n };\n\n const clearSelection = () => {\n const next = multiSelect ? [] : \"\";\n setValue(next);\n emitChange(next);\n };\n\n if (multiSelect) {\n const control = (\n <Flex direction=\"column\" gap=\"2xs\" align=\"flex-start\" minW=\"0\">\n {selectedOptions.length > 0 ? (\n <ResourceChipList\n options={selectedOptions}\n onOpenResource={onOpenResource}\n onRemove={removeOption}\n emptyText={emptyText}\n />\n ) : null}\n <ResourceSelectMenu\n triggerLabel={\n <Flex align=\"center\" gap=\"2xs\">\n <Icon as={Plus} boxSize=\"12px\" />\n {placeholder ?? \"Add\"}\n </Flex>\n }\n options={options}\n selectedIds={selectedIds}\n multiSelect\n name={name}\n emptyText={emptyText}\n onToggle={toggleOption}\n onClear={clearSelection}\n />\n </Flex>\n );\n\n return <FieldShell fullWidth={fullWidth} label={label} control={control} />;\n }\n\n const selected = selectedOptions[0];\n const triggerLabel = selected ? (\n <Flex align=\"center\" gap=\"2xs\" minW=\"0\">\n <Icon\n as={getIconComponent(selected.icon)}\n boxSize=\"14px\"\n color={selected.color ? `${selected.color}.500` : \"fg.muted\"}\n />\n {selected.name}\n </Flex>\n ) : (\n (placeholder ?? \"Select\")\n );\n\n return (\n <FieldShell\n fullWidth={fullWidth}\n label={label}\n control={\n <ResourceSelectMenu\n triggerLabel={triggerLabel}\n options={options}\n selectedIds={selectedIds}\n multiSelect={false}\n name={name}\n emptyText={emptyText}\n onToggle={toggleOption}\n onClear={clearSelection}\n />\n }\n />\n );\n};\n","import { Box, Button, Group } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { SegmentedOption } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface SegmentedInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: string;\n options: SegmentedOption[];\n variant?: \"default\" | \"dots\";\n onChange: (id: string, value: string) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const SegmentedInput = (props: SegmentedInputProps) => {\n const { id, name, description, defaultValue, options, variant = \"default\", onChange, readOnly, fullWidth } = props;\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const select = (next: string) => {\n setValue(next);\n onChange(id, next);\n };\n\n const selectedName = options.find((option) => option.id === value)?.name ?? value;\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description} fullWidth={fullWidth}>\n <ParamEditorReadOnlyValue>{selectedName}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n const group = (\n <Group\n attached\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusWithin={{ borderColor: \"border.accent-light\", boxShadow: \"none\" }}\n >\n {options.map((option) => {\n const selected = option.id === value;\n return (\n <Button\n key={option.id}\n flex=\"1\"\n size=\"xs\"\n variant={selected ? \"subtle\" : \"ghost\"}\n borderRadius=\"0\"\n aria-pressed={selected}\n onClick={() => select(option.id)}\n >\n {variant === \"dots\" ? (\n <Box boxSize=\"0.5rem\" borderRadius=\"full\" bg={option.indicatorColor ?? \"fg.muted\"} mr=\"1\" />\n ) : null}\n {option.name}\n </Button>\n );\n })}\n </Group>\n );\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n {group}\n </ParamEditorControlItem>\n );\n};\n","import { Box, Button, Flex, Icon, Menu } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, Square, SquareCheck } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ListRow } from \"../../list-row/list-row\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface Option {\n id: string;\n name: string;\n icon?: string;\n}\n\ninterface SelectionInputProps {\n id: string;\n defaultValue: string | string[];\n name: string;\n options: Option[];\n onChange: (id: string, value: string | string[]) => void;\n description: string;\n readOnly?: boolean;\n hideLabel?: boolean;\n multiSelect?: boolean;\n tooltipPlacement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n placeholder?: string;\n fullWidth?: boolean;\n}\n\nexport const SelectionInput = (props: SelectionInputProps) => {\n const {\n id,\n defaultValue,\n name,\n options,\n onChange,\n description,\n readOnly,\n hideLabel = false,\n multiSelect = false,\n placeholder,\n fullWidth = false,\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string | string[]) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const isSelected = (optionId: string) => {\n if (multiSelect) {\n return Array.isArray(value) && value.includes(optionId);\n }\n return value === optionId;\n };\n\n const getDisplayText = () => {\n if (multiSelect) {\n const selectedValues = Array.isArray(value) ? value : [];\n if (selectedValues.length === 0) {\n return placeholder || `Select`;\n }\n\n const selectedOptions = selectedValues\n .map((id) => options.find((o) => o.id === id))\n .filter(Boolean)\n .map((opt) => opt!.name);\n\n if (selectedOptions.length <= 3) {\n return selectedOptions.join(\", \");\n }\n const displayItems = selectedOptions.slice(0, 3).join(\", \");\n const remaining = selectedOptions.length - 3;\n return `${displayItems} +${remaining}`;\n }\n const selectedOption = options.find((o) => o.id === value);\n return selectedOption?.name || \"Select\";\n };\n\n const handleSelect = (newValue: string) => {\n if (multiSelect) {\n const currentValues = Array.isArray(value) ? value : [];\n let updatedValues: string[];\n\n if (currentValues.includes(newValue)) {\n updatedValues = currentValues.filter((v) => v !== newValue);\n } else {\n updatedValues = [...currentValues, newValue];\n }\n\n setValue(updatedValues);\n scheduleChange(updatedValues);\n } else {\n setValue(newValue);\n scheduleChange(newValue);\n }\n };\n\n const selectionIndicator = (selected: boolean) =>\n multiSelect ? (\n <Icon as={selected ? SquareCheck : Square} boxSize=\"14px\" color={selected ? \"fg\" : \"fg.muted\"} />\n ) : selected ? (\n <Icon as={Check} boxSize=\"14px\" color=\"fg\" />\n ) : null;\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue>{getDisplayText()}</ParamEditorReadOnlyValue>;\n\n if (fullWidth) {\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {fullWidth ? (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>\n <Button\n size=\"sm\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n disabled={readOnly}\n textStyle=\"label/S/regular\"\n width=\"100%\"\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _expanded={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n >\n <Flex alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\" w=\"full\">\n <Flex alignItems=\"center\" gap=\"xs\">\n {getDisplayText()}\n </Flex>\n <ChevronDown size={14} />\n </Flex>\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content>\n {options.map((opt) => (\n <Menu.Item key={opt.id} value={opt.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={isSelected(opt.id)}\n id={opt.id}\n isSelected={isSelected(opt.id)}\n label={opt.name}\n endContent={selectionIndicator(isSelected(opt.id))}\n onActivate={() => handleSelect(opt.id)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Box>\n ) : (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Menu.Root closeOnSelect={!multiSelect}>\n <Menu.Trigger asChild>\n <Button\n size=\"sm\"\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor=\"border\"\n disabled={readOnly}\n textStyle=\"label/S/regular\"\n _hover={{ bg: \"bg.hover\", borderColor: \"border.accent-light\" }}\n _active={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _expanded={{ bg: \"bg.active\", borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n >\n <Flex alignItems=\"center\" gap=\"xs\">\n {getDisplayText()}\n <ChevronDown size={14} />\n </Flex>\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content>\n {options.map((opt) => (\n <Menu.Item key={opt.id} value={opt.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n role={multiSelect ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={isSelected(opt.id)}\n id={opt.id}\n isSelected={isSelected(opt.id)}\n label={opt.name}\n endContent={selectionIndicator(isSelected(opt.id))}\n onActivate={() => handleSelect(opt.id)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Flex>\n )}\n </Box>\n );\n};\n","import { Box, Flex, Input, Textarea } from \"@chakra-ui/react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ParamEditorLabel } from \"../param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\n\ninterface TextInputProps {\n id: string;\n defaultValue: string;\n name: string;\n onChange: (id: string, value: string) => void;\n description: string;\n readOnly?: boolean;\n singleLine?: boolean;\n hideLabel?: boolean;\n fullWidth?: boolean;\n}\n\nexport const TextInput = (props: TextInputProps) => {\n const {\n id,\n defaultValue,\n name,\n onChange,\n description,\n readOnly,\n singleLine = true,\n hideLabel = false,\n fullWidth = false,\n } = props;\n const [value, setValue] = useState(defaultValue);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const scheduleChange = (nextValue: string) => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => onChange(id, nextValue), 540);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const handleChange = (newValue: string) => {\n setValue(newValue);\n scheduleChange(newValue);\n };\n\n if (readOnly) {\n const valueElement = <ParamEditorReadOnlyValue preserveWhitespace={!singleLine}>{value}</ParamEditorReadOnlyValue>;\n\n if (singleLine && !fullWidth) {\n return (\n <Box>\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n {valueElement}\n </Flex>\n </Box>\n );\n }\n\n return (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {valueElement}\n </Box>\n );\n }\n\n return (\n <Box>\n {singleLine && !fullWidth ? (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n {!hideLabel && <ParamEditorLabel name={name} description={description} />}\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n flex=\"1\"\n maxW=\"12.5rem\"\n size=\"sm\"\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n </Flex>\n ) : (\n <Box>\n {!hideLabel && (\n <Box mb=\"xs\">\n <ParamEditorLabel name={name} description={description} />\n </Box>\n )}\n {singleLine ? (\n <Input\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n type=\"text\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n onKeyUp={(e) => {\n if (e.key === \"Enter\") {\n e.currentTarget.blur();\n }\n }}\n />\n ) : (\n <Textarea\n className=\"nodrag\"\n readOnly={readOnly}\n width=\"100%\"\n size=\"sm\"\n placeholder={hideLabel ? name : undefined}\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n rows={3}\n resize=\"vertical\"\n />\n )}\n </Box>\n )}\n </Box>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorInlineGroupProps extends FlexProps {}\n\n// A horizontal row of controls that share a line (e.g. paired x/y inputs).\nexport const ParamEditorInlineGroup = (props: ParamEditorInlineGroupProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"xs\" minW=\"0\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import type { VectorValue } from \"../param-editor.types\";\nimport { clampToRange } from \"./numeric-value\";\n\nexport interface VectorBounds {\n min?: number;\n max?: number;\n}\n\nconst clampAxis = (value: number, bounds: VectorBounds) => {\n if (bounds.min === undefined && bounds.max === undefined) return value;\n const min = bounds.min ?? Number.NEGATIVE_INFINITY;\n const max = bounds.max ?? Number.POSITIVE_INFINITY;\n return clampToRange(value, min, max);\n};\n\n/** Update a single axis without dropping the other, clamping into optional bounds. */\nexport const updateVectorAxis = (\n value: VectorValue,\n axis: \"x\" | \"y\",\n next: number,\n bounds: VectorBounds = {},\n): VectorValue => {\n const clamped = clampAxis(next, bounds);\n return axis === \"x\" ? { x: clamped, y: value.y } : { x: value.x, y: clamped };\n};\n","import { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport type { VectorValue } from \"../param-editor.types\";\nimport { ParamEditorControlItem } from \"../param-editor-control-item\";\nimport { ParamEditorInlineGroup } from \"../param-editor-inline-group\";\nimport { ParamEditorReadOnlyValue } from \"../param-editor-read-only-value\";\nimport { NumberInput } from \"./number-input\";\nimport { updateVectorAxis } from \"./vector-value\";\n\ninterface VectorInputProps {\n id: string;\n name: string;\n description?: string;\n defaultValue: VectorValue;\n xLabel?: string;\n yLabel?: string;\n min?: number;\n max?: number;\n step?: number;\n onChange: (id: string, value: VectorValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\ninterface VectorAxisFieldProps {\n label: string;\n fieldId: string;\n value: number;\n min?: number;\n max?: number;\n step?: number;\n onCommit: (value: number) => void;\n}\n\n// A single axis: the shared NumberInput (label/slider hidden) prefixed with its axis letter.\nconst VectorAxisField = (props: VectorAxisFieldProps) => {\n const { label, fieldId, value, min, max, step, onCommit } = props;\n\n return (\n <Flex alignItems=\"center\" gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" width=\"1rem\" flexShrink={0}>\n {label}\n </Text>\n <NumberInput\n id={fieldId}\n name={label}\n description=\"\"\n defaultValue={value}\n min={min}\n max={max}\n step={step}\n hideLabel\n hideSlider\n fullWidth\n onChange={(_, next) => onCommit(next)}\n />\n </Flex>\n );\n};\n\nexport const VectorInput = (props: VectorInputProps) => {\n const {\n id,\n name,\n description,\n defaultValue,\n xLabel = \"X\",\n yLabel = \"Y\",\n min,\n max,\n step = 1,\n onChange,\n readOnly,\n } = props;\n const [value, setValue] = useState<VectorValue>(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n const commitAxis = (axis: \"x\" | \"y\", next: number) => {\n const updated = updateVectorAxis(value, axis, next, { min, max });\n setValue(updated);\n onChange(id, updated);\n };\n\n if (readOnly) {\n return (\n <ParamEditorControlItem name={name} description={description}>\n <ParamEditorReadOnlyValue>{`${value.x}, ${value.y}`}</ParamEditorReadOnlyValue>\n </ParamEditorControlItem>\n );\n }\n\n return (\n <ParamEditorControlItem name={name} description={description} orientation=\"stacked\">\n <ParamEditorInlineGroup>\n <VectorAxisField\n label={xLabel}\n fieldId={`${id}.x`}\n value={value.x}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"x\", next)}\n />\n <VectorAxisField\n label={yLabel}\n fieldId={`${id}.y`}\n value={value.y}\n min={min}\n max={max}\n step={step}\n onCommit={(next) => commitAxis(\"y\", next)}\n />\n </ParamEditorInlineGroup>\n </ParamEditorControlItem>\n );\n};\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport { ActionInput } from \"./inputs/action-input\";\nimport { AnchorGridInput } from \"./inputs/anchor-grid-input\";\nimport { ColorInput } from \"./inputs/color-input\";\nimport { DateInput } from \"./inputs/date-input\";\nimport { FileDropInput } from \"./inputs/file-drop-input\";\nimport { NumberInput } from \"./inputs/number-input\";\nimport { RangeInput } from \"./inputs/range-input\";\nimport { ResourceInput } from \"./inputs/resource-input\";\nimport { SegmentedInput } from \"./inputs/segmented-input\";\nimport { SelectionInput } from \"./inputs/selection-input\";\nimport { TextInput } from \"./inputs/text-input\";\nimport { VectorInput } from \"./inputs/vector-input\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorLabel } from \"./param-editor-label\";\nimport { ParamEditorReadOnlyValue } from \"./param-editor-read-only-value\";\n\ninterface ParamEditorFieldProps {\n param: Param;\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nconst resolveDefaultValue = <T,>(defaultValues: ParamValueMap, paramId: string, fallback: T) => {\n return defaultValues[paramId] === undefined ? fallback : (defaultValues[paramId] as T);\n};\n\nconst PropertyField = (props: { param: Extract<Param, { type: \"property\" }>; fullWidth?: boolean }) => {\n const { param, fullWidth } = props;\n\n if (fullWidth) {\n return (\n <Box>\n <Box mb=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n </Box>\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Box>\n );\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2rem\" gap=\"xs\">\n <ParamEditorLabel name={param.name} description={param.description} />\n <ParamEditorReadOnlyValue>{param.value}</ParamEditorReadOnlyValue>\n </Flex>\n );\n};\n\nexport const ParamEditorField = (props: ParamEditorFieldProps) => {\n const { param, defaultValues, onChange, onOpenResource, readOnly, fullWidth = false } = props;\n const common = { id: param.id, readOnly, onChange, fullWidth };\n\n switch (param.type) {\n case \"number\":\n return (\n <NumberInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"text\":\n return (\n <TextInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n singleLine={param.singleLine}\n />\n );\n case \"selection\":\n return (\n <SelectionInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n placeholder={param.placeholder}\n />\n );\n case \"date\":\n return (\n <DateInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n />\n );\n case \"color\":\n return (\n <ColorInput\n {...common}\n name={param.name}\n description={param.description || \"\"}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"property\":\n return <PropertyField param={param} fullWidth={fullWidth} />;\n case \"resource\":\n return (\n <ResourceInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n multiSelect={param.multiSelect}\n editable={param.editable}\n placeholder={param.placeholder}\n emptyText={param.emptyText}\n onOpenResource={onOpenResource}\n />\n );\n case \"range\":\n return (\n <RangeInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n min={param.min}\n max={param.max}\n step={param.step}\n unit={param.unit}\n markerCount={param.markerCount}\n />\n );\n case \"segmented\":\n return (\n <SegmentedInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n variant={param.variant}\n />\n );\n case \"actions\":\n return (\n <ActionInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n options={param.options}\n />\n );\n case \"anchorGrid\":\n return (\n <AnchorGridInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n />\n );\n case \"vector\":\n return (\n <VectorInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n xLabel={param.xLabel}\n yLabel={param.yLabel}\n min={param.min}\n max={param.max}\n step={param.step}\n />\n );\n case \"fileDrop\":\n return (\n <FileDropInput\n {...common}\n name={param.name}\n description={param.description}\n defaultValue={resolveDefaultValue(defaultValues, param.id, param.defaultValue)}\n accept={param.accept}\n assetKind={param.assetKind}\n />\n );\n default:\n return null;\n }\n};\n","import { Box, Button, Collapsible, Flex, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { useState } from \"react\";\nimport type { Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorField } from \"./param-editor-field\";\n\ninterface ParamEditorSectionProps {\n title?: string;\n description?: string;\n params: Param[];\n defaultValues: ParamValueMap;\n onChange: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n isFirst?: boolean;\n}\n\nconst ParamEditorSectionTitle = (props: { title: string; description?: string }) => {\n const { title, description } = props;\n\n return (\n <Stack gap=\"2xs\" minW=\"0\" textAlign=\"left\">\n <Text textStyle=\"label/M/medium\" color=\"fg\" truncate>\n {title}\n </Text>\n {description ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" lineClamp={2}>\n {description}\n </Text>\n ) : null}\n </Stack>\n );\n};\n\nconst ParamEditorSectionHeader = (props: {\n title: string;\n description?: string;\n open: boolean;\n collapsible?: boolean;\n onToggle: () => void;\n}) => {\n const { title, description, open, collapsible, onToggle } = props;\n\n if (!collapsible) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\" minHeight=\"2.25rem\" px=\"sm\" py=\"xs\">\n <ParamEditorSectionTitle title={title} description={description} />\n </Flex>\n );\n }\n\n return (\n <Button\n aria-expanded={open}\n borderRadius=\"0\"\n height=\"auto\"\n justifyContent=\"space-between\"\n minHeight=\"2.25rem\"\n onClick={onToggle}\n px=\"sm\"\n py=\"xs\"\n size=\"xs\"\n variant=\"ghost\"\n width=\"full\"\n _expanded={{ bg: \"transparent\" }}\n >\n <ParamEditorSectionTitle title={title} description={description} />\n <Icon\n as={ChevronDown}\n boxSize=\"14px\"\n color=\"fg.muted\"\n flexShrink={0}\n transform={open ? \"rotate(0deg)\" : \"rotate(-90deg)\"}\n transition=\"transform 120ms ease\"\n />\n </Button>\n );\n};\n\nconst ParamEditorSectionBody = (props: Omit<ParamEditorSectionProps, \"title\" | \"description\" | \"collapsible\">) => {\n const { params, defaultValues, onChange, onOpenResource, readOnly, fullWidth, defaultCollapsed, isFirst } = props;\n\n return (\n <Stack gap=\"0\" py={defaultCollapsed || isFirst ? \"2xs\" : \"xs\"}>\n {params.map((param) => (\n <Box key={param.id} px=\"sm\" py=\"xs\">\n <ParamEditorField\n param={param}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n />\n </Box>\n ))}\n </Stack>\n );\n};\n\nexport const ParamEditorSection = (props: ParamEditorSectionProps) => {\n const {\n title,\n description,\n params,\n defaultValues,\n onChange,\n onOpenResource,\n readOnly,\n fullWidth,\n collapsible,\n defaultCollapsed = false,\n isFirst = false,\n } = props;\n const [open, setOpen] = useState(!defaultCollapsed);\n const hasTitle = Boolean(title);\n const canCollapse = Boolean(hasTitle && collapsible);\n const contentOpen = canCollapse ? open : true;\n\n return (\n <Stack as=\"section\" gap=\"0\" borderTopWidth={isFirst ? \"0\" : \"1px\"} borderColor=\"border.subtle\" minW=\"0\">\n {title ? (\n <ParamEditorSectionHeader\n title={title}\n description={description}\n open={contentOpen}\n collapsible={canCollapse}\n onToggle={() => setOpen((current) => !current)}\n />\n ) : null}\n <Collapsible.Root open={contentOpen}>\n <Collapsible.Content>\n <ParamEditorSectionBody\n params={params}\n defaultValues={defaultValues}\n onChange={onChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n defaultCollapsed={defaultCollapsed}\n isFirst={isFirst}\n />\n </Collapsible.Content>\n </Collapsible.Root>\n </Stack>\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport type { InputGroup, Param, ParamValue, ParamValueMap, ResourceRefValue } from \"./param-editor.types\";\nimport { ParamEditorSection } from \"./param-editor-section\";\n\nexport interface ParamEditorProps {\n params?: Param[];\n groups?: InputGroup[];\n defaultValues?: ParamValueMap;\n onChange?: (id: string, value: ParamValue) => void;\n onOpenResource?: (ref: ResourceRefValue) => void;\n readOnly?: boolean;\n fullWidth?: boolean;\n}\n\nexport const ParamEditor = (props: ParamEditorProps) => {\n const { params = [], groups = [], defaultValues = {}, onChange, onOpenResource, readOnly, fullWidth = false } = props;\n const handleChange = onChange ?? (() => undefined);\n\n return (\n <Stack flex=\"1\" maxW=\"full\" gap=\"0\">\n {params.length > 0 ? (\n <ParamEditorSection\n params={params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n isFirst\n />\n ) : null}\n {groups.map((group, index) => (\n <ParamEditorSection\n key={group.id}\n title={group.title}\n description={group.description}\n params={group.params}\n defaultValues={defaultValues}\n onChange={handleChange}\n onOpenResource={onOpenResource}\n readOnly={readOnly}\n fullWidth={fullWidth}\n collapsible={group.collapsible}\n defaultCollapsed={group.defaultCollapsed}\n isFirst={params.length === 0 && index === 0}\n />\n ))}\n </Stack>\n );\n};\n","import { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\n </Stack>\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, 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 { Switch as ChakraSwitch } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface SwitchProps extends ChakraSwitch.RootProps {\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.RefObject<HTMLLabelElement | null>;\n trackLabel?: { on: React.ReactNode; off: React.ReactNode };\n thumbLabel?: { on: React.ReactNode; off: React.ReactNode };\n}\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(function Switch(props, ref) {\n const { inputProps, children, rootRef, trackLabel, thumbLabel, disabled = false, ...rest } = props;\n const interactiveCursor = disabled ? \"not-allowed\" : \"pointer\";\n\n return (\n <ChakraSwitch.Root ref={rootRef} disabled={disabled} cursor={interactiveCursor} {...rest}>\n <ChakraSwitch.HiddenInput ref={ref} {...inputProps} />\n <ChakraSwitch.Control\n bg=\"bg.muted\"\n borderWidth=\"1px\"\n borderColor=\"border\"\n borderRadius=\"md\"\n color=\"fg\"\n cursor={interactiveCursor}\n transition=\"border-color 0.2s ease-in-out\"\n boxShadow=\"none\"\n _hover={{ borderColor: \"border.accent-light\" }}\n _active={{ borderColor: \"border.accent-light\" }}\n _focusVisible={{ borderColor: \"border.accent-light\", outline: \"none\", boxShadow: \"none\" }}\n _checked={{\n bg: \"bg.button.primary.default\",\n borderColor: \"bg.button.primary.default\",\n color: \"fg.button.primary.default\",\n _hover: { borderColor: \"bg.button.primary.default\" },\n _active: { borderColor: \"bg.button.primary.default\" },\n }}\n >\n <ChakraSwitch.Thumb bg=\"bg\" borderColor=\"border\" borderRadius=\"full\">\n {thumbLabel && (\n <ChakraSwitch.ThumbIndicator fallback={thumbLabel?.off}>{thumbLabel?.on}</ChakraSwitch.ThumbIndicator>\n )}\n </ChakraSwitch.Thumb>\n {trackLabel && <ChakraSwitch.Indicator fallback={trackLabel.off}>{trackLabel.on}</ChakraSwitch.Indicator>}\n </ChakraSwitch.Control>\n {children != null && <ChakraSwitch.Label cursor={interactiveCursor}>{children}</ChakraSwitch.Label>}\n </ChakraSwitch.Root>\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 SidebarSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n width: number | null;\n}\n\ninterface SidebarState extends SidebarSnapshot {\n openSidebar: () => void;\n closeSidebar: () => void;\n toggleSidebar: () => 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 CreateSidebarStoreOptions {\n storageKey: string;\n initialState?: Partial<SidebarSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n width: null,\n} satisfies SidebarSnapshot;\n\nconst SIDEBAR_STORE_NAMESPACE = \"pstdio/ui/sidebar\";\n\nconst toStorageName = (storageKey: string) => `${SIDEBAR_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: SidebarState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n width: state.width,\n});\n\nexport const createSidebarStore = (options: CreateSidebarStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidebarState>()(\n persist(\n (set) => ({\n ...snapshot,\n openSidebar: () => set((state) => ({ ...state, open: true })),\n closeSidebar: () => set((state) => ({ ...state, open: false })),\n toggleSidebar: () => 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 sidebarStoreRegistry = new Map<string, ReturnType<typeof createSidebarStore>>();\n\nexport const getSidebarStore = (storageKey: string, initialState?: Partial<SidebarSnapshot>) => {\n const existingStore = sidebarStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidebarStore({ storageKey, initialState });\n sidebarStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidebarStore = <T>(\n storageKey: string,\n selector: (state: SidebarState) => T,\n initialState?: Partial<SidebarSnapshot>,\n) => {\n const store = getSidebarStore(storageKey, initialState);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidebarFooterProps {\n children?: ReactNode;\n}\n\nexport const SidebarFooter = (props: SidebarFooterProps) => {\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","export const PANEL_HEADER_HEIGHT = \"2.5rem\";\n","import { HStack } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/layout/panel-header.constants\";\n\ninterface SidebarHeaderProps {\n children?: ReactNode;\n}\n\nexport const SidebarHeader = (props: SidebarHeaderProps) => {\n const { children } = props;\n\n return (\n <HStack\n data-testid=\"sidebar-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 { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport { useSidebarStore } from \"./sidebar.store\";\nimport type { SidebarProps } from \"./sidebar.types\";\nimport { SidebarFooter } from \"./sidebar-footer\";\nimport { SidebarHeader } from \"./sidebar-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 Sidebar = (props: SidebarProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n backgroundContextActions,\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 = useSidebarStore(storageKey, (state) => state.open, initialState);\n const persistedWidth = useSidebarStore(storageKey, (state) => state.width, initialState);\n const expandedSections = useSidebarStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidebarStore(storageKey, (state) => state.expandedNodes, initialState);\n const toggleSection = useSidebarStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidebarStore(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 return (\n <Flex\n as=\"aside\"\n data-testid=\"sidebar\"\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 <SidebarHeader>{header}</SidebarHeader>\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 backgroundContextActions={backgroundContextActions}\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 <SidebarFooter>{footer}</SidebarFooter>\n </Flex>\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 !== 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 onResetOrder?: () => 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 headerNodes?: TreeListNode[];\n sections: TreeListSection[];\n footerNodes?: TreeListNode[];\n}\n\n// Builds the back-of-tree hide/show menu. Only items that opt in via canHide (or start hidden by\n// default) are listed: header rows, body categories (sections), category-level body rows, and\n// footer rows. Hideability is explicit per item, so leaf sub-items — which never opt in — stay\n// out of the menu; you customize categories and top-level entries, not individual files/sessions.\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\n for (const node of items.headerNodes ?? []) {\n if (isCustomizable(node)) result.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n for (const section of items.sections) {\n if (isCustomizable(section)) result.push(buildSectionAction(section, sectionOverrides, actions, options));\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)) result.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n for (const node of items.footerNodes ?? []) {\n if (isCustomizable(node)) result.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\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 if (actions.onResetOrder) {\n result.push({ key: \"__reset-order\", label: \"Reset order\", icon: options.resetIcon, onClick: actions.onResetOrder });\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 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 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.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 { Button, Editable, Flex, Icon, Menu, Table } 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, type IconColorPickerIconOption } from \"@/components/primitives/icon-color-picker\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: 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 onSetDefault: () => void;\n}\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n options: TagEditorAction[];\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, options, onChange } = props;\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 size=\"2xs\" variant=\"outline\" gap=\"xs\" disabled={disabled}>\n {actions.length} action{actions.length !== 1 ? \"s\" : \"\"}\n <Icon as={ChevronDown} boxSize=\"12px\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" 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 isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Check size={14} /> : 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 colorOptions,\n iconOptions,\n value,\n isSaving,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n onSetDefault,\n } = props;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: value.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <Table.Row ref={setNodeRef} style={style}>\n <Table.Cell width=\"40px\">\n <Flex cursor=\"grab\" {...attributes} {...listeners}>\n <GripVertical size={14} color=\"var(--chakra-colors-fg-muted)\" />\n </Flex>\n </Table.Cell>\n <Table.Cell>\n <Editable.Root\n defaultValue={value.name}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview />\n <Editable.Input />\n </Editable.Root>\n </Table.Cell>\n <Table.Cell width=\"54px\">\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={isSaving}\n />\n </Table.Cell>\n {showDefault ? (\n <Table.Cell width=\"80px\">\n <Button\n size=\"2xs\"\n variant={value.isDefault ? \"primary\" : \"ghost\"}\n onClick={onSetDefault}\n disabled={isSaving || value.isDefault}\n aria-label={`Set ${value.name} as default`}\n >\n <Check size={14} />\n </Button>\n </Table.Cell>\n ) : null}\n {actionOptions ? (\n <Table.Cell width=\"140px\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={isSaving}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Table.Cell>\n ) : null}\n <Table.Cell width=\"40px\">\n <Button\n size=\"2xs\"\n variant=\"destructive\"\n onClick={onDelete}\n disabled={isSaving || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Trash2 size={14} />\n </Button>\n </Table.Cell>\n </Table.Row>\n );\n};\n","import { Button, Flex, HStack, Input, Stack, Table, 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 { Plus, X } from \"lucide-react\";\nimport type { KeyboardEvent } from \"react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\ninterface AddFormState {\n name: string;\n color: string;\n icon: string | null;\n}\n\nconst buildDraftItem = (form: AddFormState, sortOrder: number) => ({\n id: `new-${crypto.randomUUID()}`,\n name: form.name.trim(),\n color: form.color,\n icon: form.icon,\n sortOrder,\n isNew: true,\n});\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n values,\n onValuesChange,\n onSave,\n onCancel,\n onDeleteValue,\n onSetDefault,\n hasChanges,\n isSaving,\n addLabel = \"Add tag\",\n addPlaceholder = \"Tag name\",\n actionOptions,\n actionsColumnLabel = \"Actions\",\n cancelLabel = \"Cancel\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n defaultColumnLabel = \"Default\",\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n saveLabel = \"Save\",\n showDefault,\n showIcons = true,\n valueColumnLabel = \"Name\",\n } = props;\n const [isAdding, setIsAdding] = useState(false);\n const [addForm, setAddForm] = useState<AddFormState>({ name: \"\", color: defaultAddColor, icon: defaultAddIcon });\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const resetAddForm = () => {\n setIsAdding(false);\n setAddForm({ name: \"\", color: defaultAddColor, icon: defaultAddIcon });\n };\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 if (!addForm.name.trim()) return;\n const maxOrder = values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) : 0;\n onValuesChange([...values, buildDraftItem(addForm, maxOrder + 1)]);\n resetAddForm();\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 const handleAddKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") handleAddOption();\n if (event.key === \"Escape\") resetAddForm();\n };\n\n return (\n <>\n <Stack gap=\"md\" height=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap=\"sm\" flexWrap=\"wrap\">\n <Stack gap=\"2xs\">\n <Text textStyle=\"heading/S\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n <Button size=\"sm\" variant=\"outline\" onClick={() => setIsAdding(true)} disabled={isAdding || isSaving}>\n <Plus size={16} />\n {addLabel}\n </Button>\n </Flex>\n\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n <Table.Root size=\"sm\" variant=\"outline\">\n <Table.Header>\n <Table.Row>\n <Table.ColumnHeader width=\"40px\" />\n <Table.ColumnHeader>{valueColumnLabel}</Table.ColumnHeader>\n <Table.ColumnHeader width=\"54px\" />\n {showDefault ? <Table.ColumnHeader width=\"80px\">{defaultColumnLabel}</Table.ColumnHeader> : null}\n {actionOptions ? <Table.ColumnHeader width=\"140px\">{actionsColumnLabel}</Table.ColumnHeader> : null}\n <Table.ColumnHeader width=\"40px\" />\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\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 onSetDefault={() => onSetDefault?.(value)}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n {isAdding ? (\n <Table.Row>\n <Table.Cell />\n <Table.Cell>\n <Input\n size=\"xs\"\n placeholder={addPlaceholder}\n value={addForm.name}\n onChange={(event) => setAddForm({ ...addForm, name: event.target.value })}\n onKeyDown={handleAddKeyDown}\n autoFocus\n />\n </Table.Cell>\n <Table.Cell>\n <IconColorPicker\n color={addForm.color}\n icon={addForm.icon}\n showIcons={showIcons}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onColorChange={(color) => setAddForm({ ...addForm, color })}\n onIconChange={(icon) => setAddForm({ ...addForm, icon })}\n />\n </Table.Cell>\n {showDefault ? <Table.Cell /> : null}\n {actionOptions ? <Table.Cell /> : null}\n <Table.Cell>\n <HStack gap=\"2xs\">\n <Button size=\"2xs\" variant=\"primary\" onClick={handleAddOption} disabled={!addForm.name.trim()}>\n Add\n </Button>\n <Button size=\"2xs\" variant=\"ghost\" onClick={resetAddForm} aria-label=\"Cancel add value\">\n <X size={14} />\n </Button>\n </HStack>\n </Table.Cell>\n </Table.Row>\n ) : null}\n </Table.Body>\n </Table.Root>\n </SortableContext>\n </DndContext>\n\n <Flex justifyContent=\"flex-end\">\n <HStack gap=\"xs\">\n <Button size=\"sm\" variant=\"outline\" onClick={onCancel} disabled={!hasChanges || isSaving}>\n {cancelLabel}\n </Button>\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n </Flex>\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 { 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\";\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 | \"actionsColumnLabel\"\n | \"addLabel\"\n | \"addPlaceholder\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"iconOptions\"\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 /** 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 values: loadedValues,\n loadError,\n onSave,\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 handleCancel = () => {\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 values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onSave={() => void handleSave()}\n onCancel={handleCancel}\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}\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => 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};\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});\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 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 { 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 next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!nodeOrder || nodeOrder.length === 0) {\n next.push(section);\n continue;\n }\n const reorderedNodes = reorderBy(section.nodes, nodeOrder);\n if (reorderedNodes !== section.nodes) {\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","const readDefaultExport = (module: { default?: unknown }) => module.default ?? module;\n\nexport const installPrismGlobal = async () => {\n const globalScope = globalThis as typeof globalThis & { Prism?: unknown };\n if (globalScope.Prism) return;\n\n const prismModule = await import(\"prismjs\");\n globalScope.Prism = readDefaultExport(prismModule);\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":["ActivityAvatar","props","$","_c","actor","icon","color","t0","background","t1","undefined","t2","Box","avatarSrc","t3","avatarAlt","name","t4","Avatar","t5","t6","t7","TimestampSeparator","Symbol","for","jsx","ActivityCommentHeader","timestamp","actions","Text","jsxs","Fragment","HStack","ActivityReply","children","rootProps","Stack","ActivityComment","composer","replies","hasReplies","Children","count","ActivityComposer","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","onAttach","onChange","onSubmit","internalValue","setInternalValue","useState","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","handleSubmit","event","preventDefault","chakra","borderColor","Textarea","currentTarget","Spacer","Tooltip","IconButton","Icon","Paperclip","ArrowUp","EventSeparator","ActivityEvent","iconColor","iconBackground","Timeline","t8","ActivityRoot","ActivityHeader","title","ActivityFeed","ActivityTimeline","Activity","Root","Header","Feed","Event","Comment","Reply","Composer","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","filterPaletteEntries","options","effectiveQuery","getEffectiveQuery","toLowerCase","filteredEntries","includes","defaultAssetLimit","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","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","getTotalSize","getVirtualItems","map","virtualRow","measureElement","top","start","ListRow","key","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","searchInputChromeProps","bg","border","borderRadius","boxShadow","transition","_hover","_active","_focus","outline","_focusVisible","SearchModalContent","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","onSearchChange","onSearchKeyDown","restScrollAreaProps","maxH","showHorizontalScrollbar","target","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","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","part_0","partIndex","Kbd","join","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","action","transform","ChevronRight","Collapsible","Flex","e","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","currentIndex","Bell","LoadingRows","NotificationCenter","autoFocus","error","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2","Search","AlertMessage","Skeleton","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","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","ParamEditorLabel","CircleHelp","ParamEditorControlItem","hideLabel","fullWidth","orientation","labelTrailing","ParamEditorFieldLabel","ActionInput","readOnly","active","setActive","optionId","run","disabled","ANCHOR_GRID_VALUES","isAnchorGridValue","ParamEditorReadOnlyValue","boxProps","preserveWhitespace","AnchorGridInput","setValue","next","select","anchor","selected","Grid","grid","ColorInput","setOpen","rootRef","contentRef","timeoutRef","nextColor","scheduleChange","isInsidePicker","node","contains","handleOutsideInteraction","addEventListener","removeEventListener","newColor","event_0","root","ownerDocument","handleBlur","valueElement","parseColor","details_0","toString","onOpenChange","onFocusOutside","onInteractOutside","onBlur","onValueChange","ColorPicker","picker","DateInput","newValue","e_1","e_0","blur","e_2","parseAccept","accept","endsWith","acceptsFile","clauses","mime","mimeType","some","clause","fileDropValueFromFile","size","dataUrl","formatSize","round","toFixed","FileDropInput","assetKind","setError","dragging","setDragging","file","reader","FileReader","onload","result","readAsDataURL","ingest","clear","click","dataTransfer","files","Upload","dropZone","event_1","HorizontalTextInput","isExpanded","setIsExpanded","NumberInputRoot","React","ChakraNumberInput","NumberInputField","Slider","ChakraSlider","boxSize","NumberInput","hideSlider","showSlider","useFullWidthLayout","Number","isNaN","valueAsNumber","next_0","details_1","details_2","clampToRange","lower","upper","snapToStep","origin","formatUnitValue","unit","rounded","isInteger","normalizeRange","first","second","end","SliderMarks","_","positions","position","RangeInput","markerCount","trailing","optionIcon","getIconComponent","openExternal","href","window","copyToClipboard","text","clipboard","writeText","catch","ResourceChip","onOpenResource","onRemove","copyText","handleSelect","ResourceBadge","ResourceChipList","emptyText","Wrap","toIds","resolveOptions","ids","FieldShell","selectionIndicator","multiSelect","SquareCheck","Square","ResourceSelectMenu","triggerLabel","selectedIds","onToggle","onClear","noneSelected","ChevronDown","Menu","ResourceInput","editable","emitChange","selectedOptions","interactive","toggleOption","next_1","removeOption","optionId_0","next_2","entry_0","clearSelection","next_3","Plus","SegmentedInput","selectedName","option_0","indicatorColor","Group","SelectionInput","selectedValues","id_0","o","remaining","o_0","getDisplayText","currentValues","updatedValues","v","opt_0","opt","opt_1","TextInput","singleLine","e_3","ParamEditorInlineGroup","clampAxis","bounds","NEGATIVE_INFINITY","POSITIVE_INFINITY","updateVectorAxis","axis","clamped","x","y","VectorAxisField","fieldId","onCommit","VectorInput","xLabel","yLabel","updated","commitAxis","resolveDefaultValue","defaultValues","paramId","PropertyField","param","ParamEditorField","common","ParamEditorSectionTitle","ParamEditorSectionHeader","collapsible","ParamEditorSectionBody","params","defaultCollapsed","isFirst","ParamEditorSection","canCollapse","contentOpen","ParamEditor","ParamEditorControlList","linkProps","alignItems","display","gap","minW","maxW","overflow","textOverflow","whiteSpace","staticProps","cursor","textDecoration","isInteractiveItem","url","onClick","BreadcrumbItemLink","isCurrent","linkComponent","LinkComponent","ChakraBreadcrumb","BreadcrumbItemContent","content","contextMenuActions","placement","ResourceContextMenu","BreadcrumbSeparator","separator","Breadcrumb","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","backgroundClip","backgroundImage","Label","ErrorBoundary","Component","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","ErrorFallback","message","AbsoluteCenter","SimpleCard","SimpleCardBody","IntegrationCard","version","category","actionLabel","Switch","inputProps","thumbLabel","trackLabel","interactiveCursor","ChakraSwitch","off","on","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","Spinner","paddingEnd","DEFAULT_SNAPSHOT","expandedSections","expandedNodes","SIDEBAR_STORE_NAMESPACE","toStorageName","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot","createSidebarStore","initialState","snapshot","createStore","persist","set","openSidebar","closeSidebar","toggleSidebar","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","setNodeExpanded","setWidth","reset","storage","createJSONStorage","createBrowserStorage","partialize","sidebarStoreRegistry","Map","getSidebarStore","existingStore","get","store","useSidebarStore","selector","useStore","SidebarFooter","PANEL_HEADER_HEIGHT","SidebarHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","resolveInitialWidth","defaultWidth","parsed","parseInt","Sidebar","sections","activeNodeId","backgroundContextActions","footer","closable","defaultExpandedSections","onNavigate","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","nodeOverrides","filterNodes","nodes","changed","filteredChildren","filterVisibleNodes","filterVisibleSections","sectionOverrides","section","filteredNodes","visibilityEndContent","effective","visibleIcon","hiddenIcon","buildSectionAction","onToggleSection","buildNodeAction","onToggleNode","buildTreeVisibilityMenuActions","headerNodes","footerNodes","resetIcon","separatorBefore","onResetAll","onResetOrder","filterVisibleTabs","placements","getKey","buildTabVisibilityMenuActions","getIcon","nonCloseableCount","contributionId","onToggleTab","ActionDropdown","toggleAction","TagEditorRow","actionOptions","colorOptions","iconOptions","isSaving","showDefault","showIcons","onActionsChange","onColorChange","onIconChange","onNameChange","onSetDefault","attributes","listeners","setNodeRef","isDragging","useSortable","CSS","Transform","opacity","GripVertical","Table","trimmed","Editable","IconColorPicker","isDefault","Trash2","buildDraftItem","form","sortOrder","crypto","randomUUID","isNew","TagEditor","onValuesChange","onSave","onCancel","onDeleteValue","hasChanges","addLabel","addPlaceholder","actionsColumnLabel","cancelLabel","defaultAddColor","defaultAddIcon","defaultColumnLabel","deleteButtonText","deleteHeadline","deleteNotificationText","saveLabel","valueColumnLabel","isAdding","setIsAdding","addForm","setAddForm","valueToDelete","setValueToDelete","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","resetAddForm","updateValue","patch","handleAddOption","maxOrder","handleDeleteOption","handleDragEnd","over","oldIndex","newIndex","arrayMove","handleAddKeyDown","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","bySortOrder","left","right","localeCompare","toEditorValues","toEditorValue","sort","findOriginalValue","draft","hasTagValueChanges","drafts","deletedIds","valueNeedsUpdate","original","errorMessage","Error","String","TagSettingsPanel","errorTitle","loadingText","loadedValues","loadError","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","handleDeleteValue","handleCancel","sectionOrder","nodeOrderBySection","dedupe","seen","add","createTreeListOrderStore","setSectionOrder","nextSectionIds","setNodeOrder","nextNodeIds","resetSectionOrder","resetNodeOrder","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","nodeOrder","reorderedNodes","flipOverride","createTreeListVisibilityStore","setSection","setNode","clearSection","clearNode","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","filename","parts","candidates","resolveDefinitionKey","defaults","folder","named","fileNames","match","fileExtensions","fontFamilyForDefinition","definition","fontId","matched","fonts","font","fontFamily","decodeFontCharacter","exec","fromCodePoint","resolveFileIconGlyph","definitions","fontCharacter","fontColor","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","format","weight","applyFileIconThemePreference","themeId","querySelector","createElement","setAttribute","head","appendChild","textContent","STORAGE_KEY","getDefaultFileIconThemePreference","FileIconThemePreferenceContext","createContext","getInitialPreference","stored","getItem","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","setItem","activeFileIconTheme","fileIconThemePreferences","useFileIconThemePreference","context","useContext","readDefaultExport","module","default","installPrismGlobal","globalScope","globalThis","Prism","prismModule","resolveFileIconElement","glyph","fontSize","lineHeight","getFileTypeIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/activity/activity-avatar.tsx","../src/components/activity/activity-comment.tsx","../src/components/activity/activity-composer.tsx","../src/components/activity/activity-event.tsx","../src/components/activity/activity-root.tsx","../src/components/activity/activity-timeline.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/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/components/primitives/toaster.tsx","../src/components/param-editor/param-editor-control-list.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/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.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 { Avatar, Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\n\nexport interface ActivityAvatarProps {\n actor?: ActivityActor;\n icon?: ReactNode;\n color?: string;\n background?: string;\n}\n\nexport const ActivityAvatar = (props: ActivityAvatarProps) => {\n const { actor, icon, color = \"fg.muted\", background = \"bg.muted\" } = props;\n\n if (icon) {\n return (\n <Box\n boxSize=\"18px\"\n borderRadius=\"full\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n color={color}\n background={background}\n >\n {icon}\n </Box>\n );\n }\n\n return (\n <Avatar.Root size=\"2xs\" flexShrink={0}>\n <Avatar.Image src={actor?.avatarSrc} alt={actor?.avatarAlt ?? actor?.name} />\n <Avatar.Fallback name={actor?.name} background={background} color={color} />\n </Avatar.Root>\n );\n};\n","import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { Children, type ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\ninterface ActivityCommentHeaderProps {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityCommentProps extends Omit<HTMLChakraProps<\"article\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n replies?: ReactNode;\n composer?: ReactNode;\n children: ReactNode;\n}\n\nexport interface ActivityReplyProps extends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n}\n\nconst TimestampSeparator = () => (\n <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />\n);\n\nconst ActivityCommentHeader = (props: ActivityCommentHeaderProps) => {\n const { actor, timestamp, actions } = props;\n\n return (\n <HStack gap=\"xs\" alignItems=\"center\" minW=\"0\">\n <ActivityAvatar actor={actor} />\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {actor.name}\n </Text>\n {timestamp ? (\n <>\n <TimestampSeparator />\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n <Box marginLeft=\"auto\" flexShrink={0}>\n {actions}\n </Box>\n </HStack>\n );\n};\n\nexport const ActivityReply = (props: ActivityReplyProps) => {\n const { actor, timestamp, actions, children, ...rootProps } = props;\n\n return (\n <Box paddingX=\"md\" paddingY=\"sm\" {...rootProps}>\n <Stack gap=\"xs\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Box paddingLeft=\"32px\">\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\">\n {children}\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n};\n\nexport const ActivityComment = (props: ActivityCommentProps) => {\n const { actor, timestamp, actions, replies, composer, children, ...rootProps } = props;\n const hasReplies = Children.count(replies) > 0;\n\n return (\n <Box\n as=\"article\"\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"xs\"\n background=\"bg\"\n overflow=\"hidden\"\n {...rootProps}\n >\n <Stack gap=\"sm\" padding=\"md\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\" whiteSpace=\"pre-wrap\">\n {children}\n </Text>\n </Stack>\n {hasReplies ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {replies}\n </Box>\n ) : null}\n {composer ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {composer}\n </Box>\n ) : null}\n </Box>\n );\n};\n","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 type { TimelineItemProps } from \"@chakra-ui/react\";\nimport { Box, Text, Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityEventProps extends Omit<TimelineItemProps, \"title\"> {\n actor?: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n children: ReactNode;\n}\n\nconst EventSeparator = () => <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />;\n\nexport const ActivityEvent = (props: ActivityEventProps) => {\n const { actor, icon, iconColor = \"fg\", iconBackground = \"transparent\", timestamp, children, ...rootProps } = props;\n\n return (\n <Timeline.Item gap=\"xs\" minH=\"24px\" paddingX=\"md\" {...rootProps}>\n <Timeline.Connector>\n <Timeline.Separator borderColor=\"border\" />\n <Timeline.Indicator outline=\"none\" border=\"none\" background=\"bg\">\n <ActivityAvatar actor={actor} icon={icon} color={iconColor} background={iconBackground} />\n </Timeline.Indicator>\n </Timeline.Connector>\n <Timeline.Content gap=\"0\" paddingBottom=\"xs\" minW=\"0\">\n <Timeline.Title\n marginTop=\"0\"\n gap=\"xs\"\n minW=\"0\"\n fontWeight=\"normal\"\n textStyle=\"label/S/regular\"\n color=\"fg.muted\"\n >\n {actor ? (\n <Text as=\"span\" color=\"fg\" fontWeight=\"500\" flexShrink={0}>\n {actor.name}\n </Text>\n ) : null}\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" gap=\"2xs\" minW=\"0\" flexWrap=\"wrap\">\n {children}\n </Box>\n {timestamp ? (\n <>\n <EventSeparator />\n <Text as=\"span\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n </Timeline.Title>\n </Timeline.Content>\n </Timeline.Item>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { HStack, Stack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityRootProps extends StackProps {\n children: ReactNode;\n}\n\nexport interface ActivityHeaderProps extends Omit<StackProps, \"title\"> {\n title?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityFeedProps extends StackProps {\n children: ReactNode;\n}\n\nexport const ActivityRoot = (props: ActivityRootProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack width=\"full\" gap=\"md\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n\nexport const ActivityHeader = (props: ActivityHeaderProps) => {\n const { title = \"Activity\", actions, ...rootProps } = props;\n\n return (\n <HStack alignItems=\"center\" justifyContent=\"space-between\" gap=\"md\" {...rootProps}>\n <Text textStyle=\"label/M/medium\" color=\"fg\">\n {title}\n </Text>\n {actions ? <HStack gap=\"xs\">{actions}</HStack> : null}\n </HStack>\n );\n};\n\nexport const ActivityFeed = (props: ActivityFeedProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack gap=\"md\" width=\"full\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n","import type { TimelineRootProps } from \"@chakra-ui/react\";\nimport { Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityTimelineProps extends TimelineRootProps {\n children: ReactNode;\n}\n\nexport const ActivityTimeline = (props: ActivityTimelineProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Timeline.Root size=\"sm\" variant=\"plain\" width=\"full\" css={{ \"--timeline-indicator-size\": \"18px\" }} {...rootProps}>\n {children}\n </Timeline.Root>\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\";\n\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\nconst searchInputChromeProps = {\n bg: \"transparent\",\n border: \"0\",\n borderColor: \"transparent\",\n borderRadius: \"0\",\n boxShadow: \"none\",\n transition: \"none\",\n _hover: { bg: \"transparent\", borderColor: \"transparent\" },\n _active: { bg: \"transparent\", borderColor: \"transparent\" },\n _focus: { borderColor: \"transparent\", outline: \"none\", boxShadow: \"none\" },\n _focusVisible: { borderColor: \"transparent\", outline: \"none\", boxShadow: \"none\" },\n} as const;\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 {...searchInputChromeProps}\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 borderLeftWidth=\"1px\"\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, 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 <Dialog.Root open={open} onOpenChange={onClose}>\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 </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, 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 { 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 { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\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 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 !== 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 headerNodes?: TreeListNode[];\n sections: TreeListSection[];\n footerNodes?: TreeListNode[];\n}\n\n// Builds the back-of-tree hide/show menu. Only items that opt in via canHide (or start hidden by\n// default) are listed: header rows, body categories (sections), category-level body rows, and\n// footer rows. Hideability is explicit per item, so leaf sub-items — which never opt in — stay\n// out of the menu; you customize categories and top-level entries, not individual files/sessions.\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 appendGroup(\n (items.headerNodes ?? [])\n .filter(isCustomizable)\n .map((node) => buildNodeAction(node, nodeOverrides, actions, options)),\n );\n const mainActions: ResourceContextAction[] = [];\n for (const section of items.sections) {\n if (isCustomizable(section)) mainActions.push(buildSectionAction(section, sectionOverrides, actions, options));\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)) mainActions.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n appendGroup(mainActions);\n appendGroup(\n (items.footerNodes ?? [])\n .filter(isCustomizable)\n .map((node) => buildNodeAction(node, nodeOverrides, actions, options)),\n );\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.pinned === true && placement.hiddenByDefault === true) {\n changed = true;\n continue;\n }\n if (placement.closable === true) {\n next.push(placement);\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 { Button, Editable, Flex, Icon, Menu, Table } 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, type IconColorPickerIconOption } from \"@/components/primitives/icon-color-picker\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: 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 onSetDefault: () => void;\n}\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n options: TagEditorAction[];\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, options, onChange } = props;\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 size=\"2xs\" variant=\"outline\" gap=\"xs\" disabled={disabled}>\n {actions.length} action{actions.length !== 1 ? \"s\" : \"\"}\n <Icon as={ChevronDown} boxSize=\"12px\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" 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 isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Check size={14} /> : 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 colorOptions,\n iconOptions,\n value,\n isSaving,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n onSetDefault,\n } = props;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: value.id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n };\n\n return (\n <Table.Row ref={setNodeRef} style={style}>\n <Table.Cell width=\"40px\">\n <Flex cursor=\"grab\" {...attributes} {...listeners}>\n <GripVertical size={14} color=\"var(--chakra-colors-fg-muted)\" />\n </Flex>\n </Table.Cell>\n <Table.Cell>\n <Editable.Root\n defaultValue={value.name}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview />\n <Editable.Input />\n </Editable.Root>\n </Table.Cell>\n <Table.Cell width=\"54px\">\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={isSaving}\n />\n </Table.Cell>\n {showDefault ? (\n <Table.Cell width=\"80px\">\n <Button\n size=\"2xs\"\n variant={value.isDefault ? \"primary\" : \"ghost\"}\n onClick={onSetDefault}\n disabled={isSaving || value.isDefault}\n aria-label={`Set ${value.name} as default`}\n >\n <Check size={14} />\n </Button>\n </Table.Cell>\n ) : null}\n {actionOptions ? (\n <Table.Cell width=\"140px\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={isSaving}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Table.Cell>\n ) : null}\n <Table.Cell width=\"40px\">\n <Button\n size=\"2xs\"\n variant=\"destructive\"\n onClick={onDelete}\n disabled={isSaving || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Trash2 size={14} />\n </Button>\n </Table.Cell>\n </Table.Row>\n );\n};\n","import { Button, Flex, HStack, Input, Stack, Table, 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 { Plus, X } from \"lucide-react\";\nimport type { KeyboardEvent } from \"react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\ninterface AddFormState {\n name: string;\n color: string;\n icon: string | null;\n}\n\nconst buildDraftItem = (form: AddFormState, sortOrder: number) => ({\n id: `new-${crypto.randomUUID()}`,\n name: form.name.trim(),\n color: form.color,\n icon: form.icon,\n sortOrder,\n isNew: true,\n});\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n values,\n onValuesChange,\n onSave,\n onCancel,\n onDeleteValue,\n onSetDefault,\n hasChanges,\n isSaving,\n addLabel = \"Add tag\",\n addPlaceholder = \"Tag name\",\n actionOptions,\n actionsColumnLabel = \"Actions\",\n cancelLabel = \"Cancel\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n defaultColumnLabel = \"Default\",\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n saveLabel = \"Save\",\n showDefault,\n showIcons = true,\n valueColumnLabel = \"Name\",\n } = props;\n const [isAdding, setIsAdding] = useState(false);\n const [addForm, setAddForm] = useState<AddFormState>({ name: \"\", color: defaultAddColor, icon: defaultAddIcon });\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const resetAddForm = () => {\n setIsAdding(false);\n setAddForm({ name: \"\", color: defaultAddColor, icon: defaultAddIcon });\n };\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 if (!addForm.name.trim()) return;\n const maxOrder = values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) : 0;\n onValuesChange([...values, buildDraftItem(addForm, maxOrder + 1)]);\n resetAddForm();\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 const handleAddKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") handleAddOption();\n if (event.key === \"Escape\") resetAddForm();\n };\n\n return (\n <>\n <Stack gap=\"md\" height=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap=\"sm\" flexWrap=\"wrap\">\n <Stack gap=\"2xs\">\n <Text textStyle=\"heading/S\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n <Button size=\"sm\" variant=\"outline\" onClick={() => setIsAdding(true)} disabled={isAdding || isSaving}>\n <Plus size={16} />\n {addLabel}\n </Button>\n </Flex>\n\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n <Table.Root size=\"sm\" variant=\"outline\">\n <Table.Header>\n <Table.Row>\n <Table.ColumnHeader width=\"40px\" />\n <Table.ColumnHeader>{valueColumnLabel}</Table.ColumnHeader>\n <Table.ColumnHeader width=\"54px\" />\n {showDefault ? <Table.ColumnHeader width=\"80px\">{defaultColumnLabel}</Table.ColumnHeader> : null}\n {actionOptions ? <Table.ColumnHeader width=\"140px\">{actionsColumnLabel}</Table.ColumnHeader> : null}\n <Table.ColumnHeader width=\"40px\" />\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\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 onSetDefault={() => onSetDefault?.(value)}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n {isAdding ? (\n <Table.Row>\n <Table.Cell />\n <Table.Cell>\n <Input\n size=\"xs\"\n placeholder={addPlaceholder}\n value={addForm.name}\n onChange={(event) => setAddForm({ ...addForm, name: event.target.value })}\n onKeyDown={handleAddKeyDown}\n autoFocus\n />\n </Table.Cell>\n <Table.Cell>\n <IconColorPicker\n color={addForm.color}\n icon={addForm.icon}\n showIcons={showIcons}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onColorChange={(color) => setAddForm({ ...addForm, color })}\n onIconChange={(icon) => setAddForm({ ...addForm, icon })}\n />\n </Table.Cell>\n {showDefault ? <Table.Cell /> : null}\n {actionOptions ? <Table.Cell /> : null}\n <Table.Cell>\n <HStack gap=\"2xs\">\n <Button size=\"2xs\" variant=\"primary\" onClick={handleAddOption} disabled={!addForm.name.trim()}>\n Add\n </Button>\n <Button size=\"2xs\" variant=\"ghost\" onClick={resetAddForm} aria-label=\"Cancel add value\">\n <X size={14} />\n </Button>\n </HStack>\n </Table.Cell>\n </Table.Row>\n ) : null}\n </Table.Body>\n </Table.Root>\n </SortableContext>\n </DndContext>\n\n <Flex justifyContent=\"flex-end\">\n <HStack gap=\"xs\">\n <Button size=\"sm\" variant=\"outline\" onClick={onCancel} disabled={!hasChanges || isSaving}>\n {cancelLabel}\n </Button>\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n </Flex>\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 { 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\";\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 | \"actionsColumnLabel\"\n | \"addLabel\"\n | \"addPlaceholder\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"iconOptions\"\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 /** 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 values: loadedValues,\n loadError,\n onSave,\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 handleCancel = () => {\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 values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onSave={() => void handleSave()}\n onCancel={handleCancel}\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}\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => 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};\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});\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 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 { 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 next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!nodeOrder || nodeOrder.length === 0) {\n next.push(section);\n continue;\n }\n const reorderedNodes = reorderBy(section.nodes, nodeOrder);\n if (reorderedNodes !== section.nodes) {\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":["ActivityAvatar","props","$","_c","actor","icon","color","t0","background","t1","undefined","t2","Box","avatarSrc","t3","avatarAlt","name","t4","Avatar","t5","t6","t7","TimestampSeparator","Symbol","for","jsx","ActivityCommentHeader","timestamp","actions","Text","jsxs","Fragment","HStack","ActivityReply","children","rootProps","Stack","ActivityComment","composer","replies","hasReplies","Children","count","ActivityComposer","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","onAttach","onChange","onSubmit","internalValue","setInternalValue","useState","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","handleSubmit","event","preventDefault","chakra","borderColor","Textarea","currentTarget","Spacer","Tooltip","IconButton","Icon","Paperclip","ArrowUp","EventSeparator","ActivityEvent","iconColor","iconBackground","Timeline","t8","ActivityRoot","ActivityHeader","title","ActivityFeed","ActivityTimeline","Activity","Root","Header","Feed","Event","Comment","Reply","Composer","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","filterPaletteEntries","options","effectiveQuery","getEffectiveQuery","toLowerCase","filteredEntries","includes","defaultAssetLimit","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","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","getTotalSize","getVirtualItems","map","virtualRow","measureElement","top","start","ListRow","key","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","searchInputChromeProps","bg","border","borderRadius","boxShadow","transition","_hover","_active","_focus","outline","_focusVisible","SearchModalContent","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","onSearchChange","onSearchKeyDown","restScrollAreaProps","maxH","showHorizontalScrollbar","target","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","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","part_0","partIndex","Kbd","join","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","action","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","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","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","textOverflow","whiteSpace","staticProps","cursor","textDecoration","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","SimpleCard","SimpleCardBody","IntegrationCard","version","category","active","actionLabel","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","Spinner","paddingEnd","ParamEditorControlList","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","visibilityEndContent","effective","visibleIcon","hiddenIcon","buildSectionAction","onToggleSection","buildNodeAction","onToggleNode","buildTreeVisibilityMenuActions","result","appendGroup","separatorBefore","headerNodes","mainActions","footerNodes","resetIcon","onResetAll","filterVisibleTabs","placements","getKey","pinned","buildTabVisibilityMenuActions","getIcon","nonCloseableCount","contributionId","onToggleTab","ActionDropdown","disabled","toggleAction","ChevronDown","Menu","TagEditorRow","actionOptions","colorOptions","iconOptions","isSaving","showDefault","showIcons","onActionsChange","onColorChange","onIconChange","onNameChange","onSetDefault","attributes","listeners","setNodeRef","isDragging","useSortable","CSS","Transform","toString","opacity","GripVertical","Table","trimmed","Editable","IconColorPicker","isDefault","Trash2","buildDraftItem","form","sortOrder","crypto","randomUUID","isNew","TagEditor","onValuesChange","onSave","onCancel","onDeleteValue","hasChanges","addLabel","addPlaceholder","actionsColumnLabel","cancelLabel","defaultAddColor","defaultAddIcon","defaultColumnLabel","deleteButtonText","deleteHeadline","deleteNotificationText","saveLabel","valueColumnLabel","isAdding","setIsAdding","addForm","setAddForm","valueToDelete","setValueToDelete","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","resetAddForm","updateValue","patch","handleAddOption","maxOrder","handleDeleteOption","handleDragEnd","over","oldIndex","newIndex","arrayMove","handleAddKeyDown","Plus","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","bySortOrder","left","right","localeCompare","toEditorValues","toEditorValue","sort","findOriginalValue","draft","hasTagValueChanges","drafts","deletedIds","valueNeedsUpdate","size","some","original","errorMessage","Error","String","TagSettingsPanel","errorTitle","loadingText","loadedValues","loadError","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","handleDeleteValue","handleCancel","sectionOrder","nodeOrderBySection","dedupe","ids","seen","add","createTreeListOrderStore","setSectionOrder","nextSectionIds","setNodeOrder","nextNodeIds","resetSectionOrder","resetNodeOrder","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","nodeOrder","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","querySelector","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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"}