@pstdio/ui 0.5.1 → 0.6.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 (92) hide show
  1. package/dist/{MermaidComponent-x3aKzNXm.js → MermaidComponent-D7Baqkwx.js} +2 -2
  2. package/dist/{MermaidComponent-x3aKzNXm.js.map → MermaidComponent-D7Baqkwx.js.map} +1 -1
  3. package/dist/chat-ui.js +744 -726
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/activity/activity-avatar.d.ts +9 -0
  6. package/dist/components/activity/activity-comment.d.ts +19 -0
  7. package/dist/components/activity/activity-composer.d.ts +18 -0
  8. package/dist/components/activity/activity-event.d.ts +12 -0
  9. package/dist/components/activity/activity-root.d.ts +15 -0
  10. package/dist/components/activity/activity-timeline.d.ts +6 -0
  11. package/dist/components/activity/activity.types.d.ts +5 -0
  12. package/dist/components/activity/index.d.ts +25 -0
  13. package/dist/components/app-shell/app-shell.d.ts +1 -0
  14. package/dist/components/app-shell/command-palette.d.ts +16 -0
  15. package/dist/components/app-shell/file-tree.d.ts +7 -0
  16. package/dist/components/app-shell/mock-chat.d.ts +2 -0
  17. package/dist/components/app-shell/mock-data.d.ts +37 -0
  18. package/dist/components/app-shell/pages/project-list-page.d.ts +7 -0
  19. package/dist/components/app-shell/pages/sessions-page.d.ts +6 -0
  20. package/dist/components/app-shell/pages/settings-page.d.ts +5 -0
  21. package/dist/components/app-shell/pages/ticket-details-page.d.ts +7 -0
  22. package/dist/components/app-shell/pages/tickets-page.d.ts +7 -0
  23. package/dist/components/app-shell/pages/workspace-page.d.ts +1 -0
  24. package/dist/components/app-shell/resizable-panel.d.ts +13 -0
  25. package/dist/components/chat-ui/components/ai-conversation.d.ts +4 -4
  26. package/dist/components/chat-ui/components/ai-message.d.ts +7 -5
  27. package/dist/components/chat-ui/components/chat-input.d.ts +1 -0
  28. package/dist/components/chat-ui/components/chat-panel.d.ts +1 -0
  29. package/dist/components/chat-ui/mocks/library/index.d.ts +10 -0
  30. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  31. package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
  32. package/dist/components/content-placeholder.d.ts +1 -0
  33. package/dist/components/header.d.ts +7 -0
  34. package/dist/components/list-row/list-row-actions.d.ts +10 -0
  35. package/dist/components/list-row/list-row.d.ts +2 -0
  36. package/dist/components/list-row/list-row.types.d.ts +85 -0
  37. package/dist/components/{sidebar-tree → list-row}/searchable-action-menu.d.ts +2 -2
  38. package/dist/components/panel-header.constants.d.ts +1 -1
  39. package/dist/components/resource-context-menu.d.ts +1 -2
  40. package/dist/components/rich-text/shared/editor-config.d.ts +1 -0
  41. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +16 -0
  42. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +2 -0
  43. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +3 -0
  44. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +18 -0
  45. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +1 -0
  46. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +2 -0
  47. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
  48. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +3 -0
  49. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +1 -0
  50. package/dist/components/sidebar/sidebar-project-menu.d.ts +0 -3
  51. package/dist/components/sidebar/sidebar.store.d.ts +2 -0
  52. package/dist/components/sidebar/sidebar.types.d.ts +10 -4
  53. package/dist/components/tickets/tickets-workspace.d.ts +1 -0
  54. package/dist/components/tree-list/tree-list.d.ts +18 -0
  55. package/dist/components/tree-list/tree-list.types.d.ts +29 -0
  56. package/dist/index.d.ts +10 -5
  57. package/dist/index.js +2697 -2343
  58. package/dist/index.js.map +1 -1
  59. package/dist/{rich-message-CoXTd5kw.js → rich-message-33DPxuWJ.js} +502 -464
  60. package/dist/rich-message-33DPxuWJ.js.map +1 -0
  61. package/dist/rich-text.js +738 -414
  62. package/dist/rich-text.js.map +1 -1
  63. package/dist/style.css +1 -1
  64. package/dist/theme/custom/index.d.ts +3 -0
  65. package/dist/theme/custom/monokai.json.d.ts +80 -0
  66. package/dist/theme/index.d.ts +1 -0
  67. package/dist/theme/primitives/colors.d.ts +6 -0
  68. package/dist/theme/recipes/alert.d.ts +1 -1
  69. package/dist/theme/recipes/button.d.ts +28 -0
  70. package/dist/theme/recipes/dialog.d.ts +1 -1
  71. package/dist/theme/recipes/drawer.d.ts +1 -1
  72. package/dist/theme/recipes/kbd.d.ts +41 -0
  73. package/dist/theme/recipes/menu.d.ts +1 -1
  74. package/dist/theme/recipes/popover.d.ts +1 -1
  75. package/dist/theme/tokens/borders.d.ts +6 -24
  76. package/dist/theme/tokens/colors.d.ts +180 -168
  77. package/dist/theme/tokens/shadows.d.ts +5 -5
  78. package/dist/{theme-BLGUwVOD.js → theme-0SQvHr1t.js} +331 -243
  79. package/dist/theme-0SQvHr1t.js.map +1 -0
  80. package/dist/theme.js +4 -2
  81. package/dist/utils/apply-theme-preference.d.ts +20 -2
  82. package/dist/utils/theme-preference.d.ts +4 -2
  83. package/package.json +1 -2
  84. package/dist/components/drawer-inline.d.ts +0 -24
  85. package/dist/components/file-selector.d.ts +0 -12
  86. package/dist/components/menu-item.d.ts +0 -42
  87. package/dist/components/pstdio-logo.d.ts +0 -2
  88. package/dist/components/sidebar-tree/sidebar-node-content.d.ts +0 -9
  89. package/dist/components/sidebar-tree/sidebar-tree.d.ts +0 -13
  90. package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +0 -68
  91. package/dist/rich-message-CoXTd5kw.js.map +0 -1
  92. package/dist/theme-BLGUwVOD.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/attached-panel.utils.ts","../src/components/attached-panel.tsx","../src/components/breadcrumb.tsx","../src/components/bubble-button.tsx","../src/components/bubble-panel.tsx","../src/components/code-editor.tsx","../src/components/content-placeholder.tsx","../src/components/delete-confirmation-modal.tsx","../src/components/diff-card.tsx","../src/components/diff-drawer.tsx","../src/components/error-boundary.tsx","../src/components/menu-item.tsx","../src/components/folder-picker-dialog.tsx","../src/components/horizontal-menu-stack.tsx","../src/components/item-section.tsx","../src/components/panel-header.constants.ts","../src/components/toaster.tsx","../src/components/layout.tsx","../src/components/open-source-notices-screen.tsx","../src/components/properties.tsx","../src/components/resource-context-menu.tsx","../src/components/searchable-menu.tsx","../src/components/session-indicator.tsx","../src/components/sidebar-tree/searchable-action-menu.tsx","../src/components/sidebar-tree/sidebar-node-content.tsx","../src/components/sidebar-tree/sidebar-tree.tsx","../src/components/sidebar/sidebar.store.ts","../src/components/sidebar/sidebar-footer.tsx","../src/components/sidebar/sidebar-header.tsx","../src/components/sidebar/sidebar.tsx","../src/components/sidebar/sidebar-project-menu.tsx","../src/components/switch.tsx","../src/components/tickets/types.ts","../src/components/tickets/workspace-helpers.ts","../src/components/tickets/display-menu.tsx","../src/components/tickets/filter-menu.tsx","../src/components/workspace-badge.tsx","../src/components/tickets/tag-option-icon.ts","../src/components/tickets/tag-badge.tsx","../src/components/tickets/ticket-card.tsx","../src/components/tickets/ticket-board.tsx","../src/components/tickets/ticket-list.tsx","../src/components/tickets/ticket-grouping.ts","../src/components/tickets/use-workspace-store.ts","../src/components/tickets/tickets-workspace.tsx","../src/utils/apply-theme-preference.ts","../src/utils/theme-preference.tsx"],"sourcesContent":["interface AttachedPanelWidthBounds {\n min: number;\n max: number;\n}\n\nexport const clampAttachedPanelWidth = (width: number, bounds: AttachedPanelWidthBounds) => {\n const { min, max } = bounds;\n return Math.min(Math.max(width, min), max);\n};\n","import { Box, Flex, type FlexProps } from \"@chakra-ui/react\";\nimport { type ReactNode, type PointerEvent as ReactPointerEvent, useEffect, useRef, useState } from \"react\";\nimport { clampAttachedPanelWidth } from \"./attached-panel.utils\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\nconst MIN_CONTENT_WIDTH = 320;\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 panelRef = useRef<HTMLDivElement>(null);\n const cleanupDragRef = useRef<() => void>(() => undefined);\n const [resizedWidth, setResizedWidth] = useState<number | null>(null);\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizedWidth === null ? width : `${resizedWidth}px`;\n\n useEffect(() => () => cleanupDragRef.current(), []);\n\n const handleResizeStart = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!resizable || !panelRef.current) {\n return;\n }\n\n event.preventDefault();\n\n const panel = panelRef.current;\n const startX = event.clientX;\n const startWidth = panel.getBoundingClientRect().width;\n const computedStyle = window.getComputedStyle(panel);\n const minPanelWidth = Number.parseFloat(computedStyle.minWidth) || MIN_CONTENT_WIDTH;\n const parentWidth = panel.parentElement?.getBoundingClientRect().width ?? window.innerWidth;\n const maxPanelWidth = Math.max(minPanelWidth, parentWidth - MIN_CONTENT_WIDTH);\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n const deltaX = moveEvent.clientX - startX;\n const nextWidth = clampAttachedPanelWidth(startWidth - deltaX, {\n min: minPanelWidth,\n max: maxPanelWidth,\n });\n\n setResizedWidth(nextWidth);\n };\n\n const cleanup = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", cleanup);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n cleanupDragRef.current = () => undefined;\n };\n\n cleanupDragRef.current = cleanup;\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", cleanup, { once: true });\n };\n\n return (\n <Flex\n ref={panelRef}\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 {resizable ? (\n <Box\n role=\"separator\"\n aria-label=\"Resize attached panel\"\n aria-orientation=\"vertical\"\n position=\"absolute\"\n top=\"0\"\n bottom=\"0\"\n left=\"0\"\n width=\"3\"\n transform=\"translateX(-50%)\"\n cursor=\"col-resize\"\n touchAction=\"none\"\n zIndex=\"1\"\n onPointerDown={handleResizeStart}\n />\n ) : null}\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\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\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}>\n {items.map((item, index) => {\n const last = index === items.length - 1;\n const isInteractive = Boolean(item.url || item.onClick);\n let itemContent: React.ReactNode;\n\n if (last && !isInteractive) {\n itemContent = <ChakraBreadcrumb.CurrentLink>{item.title}</ChakraBreadcrumb.CurrentLink>;\n } else if (item.url) {\n itemContent = LinkComponent ? (\n <ChakraBreadcrumb.Link asChild>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n ) : (\n <ChakraBreadcrumb.Link href={item.url}>{item.title}</ChakraBreadcrumb.Link>\n );\n } else if (item.onClick) {\n itemContent = (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n } else {\n itemContent = <ChakraBreadcrumb.Link>{item.title}</ChakraBreadcrumb.Link>;\n }\n\n return (\n <ChakraBreadcrumb.Item key={index}>\n {itemContent}\n {last ? null : (\n <ChakraBreadcrumb.Separator as=\"span\" aria-hidden ml=\"xs\">\n {separator}\n </ChakraBreadcrumb.Separator>\n )}\n </ChakraBreadcrumb.Item>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\ntype BubbleButtonStyleProps = \"boxShadow\" | \"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 boxShadow={isOpen ? \"none\" : \"mid\"}\n transition=\"box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n boxShadow: \"mid\",\n }}\n _active={{ boxShadow: isOpen ? \"none\" : \"mid\" }}\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 { Tooltip } from \"./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=\"3xl\"\n boxShadow=\"2xl\"\n bg=\"bg\"\n zIndex=\"dropdown\"\n {...containerProps}\n >\n <Flex direction=\"column\" h=\"full\">\n <HStack alignItems=\"center\" gap=\"sm\" px=\"xs\" pt=\"md\" pb=\"xs\">\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 </HStack>\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 { DiffEditor, Editor } from \"@monaco-editor/react\";\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n};\n\ninterface CodeEditorProps {\n language: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const { defaultCode, code, showLineNumbers, isEditable, language = \"javascript\", onChange, disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Editor\n width=\"100%\"\n height=\"100%\"\n language={language}\n defaultValue={defaultCode}\n value={code}\n theme={\"ps-theme\"}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={async (editor, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n // Add JSX support\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n\n // Format on cmd+s\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n\n // Run format on the initial value\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n }}\n />\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <DiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={\"ps-theme\"}\n options={options}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={(_, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n }}\n />\n );\n};\n","import { Box, type BoxProps, Text, type TextProps } from \"@chakra-ui/react\";\n\nexport interface ContentPlaceholderProps extends BoxProps {}\n\nexport const ContentPlaceholder = (props: ContentPlaceholderProps) => (\n <Box\n {...props}\n css={{\n backgroundClip: \"padding-box\",\n backgroundImage: `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 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 { Button, CloseButton, Dialog, Stack, Text } from \"@chakra-ui/react\";\nimport { 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}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose } = 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>{notificationText}</Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"solid\" colorPalette=\"red\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Box, Grid, IconButton, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport { DiffBubble } from \"@/components/diff-bubble\";\nimport { DiffEditor } from \"./diff-editor\";\n\nexport interface Diff {\n change: \"added\" | \"deleted\" | \"modified\" | \"renamed\" | \"copied\" | \"permissionChange\";\n oldPath?: string;\n newPath?: string;\n oldContent?: string;\n newContent?: string;\n additions?: number;\n deletions?: number;\n}\n\ninterface DiffCardProps {\n diff: Diff;\n isSelected?: boolean;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n}\n\nexport const DiffCard = (props: DiffCardProps) => {\n const { diff, isSelected = false, isExpanded = true, onToggleExpanded } = props;\n\n const filePath = diff.newPath || diff.oldPath || \"unknown\";\n\n const additions = diff.additions ?? 0;\n const deletions = diff.deletions ?? 0;\n\n return (\n <Box\n border=\"1px solid\"\n borderColor={isSelected ? \"border.accent\" : \"border.muted\"}\n borderRadius=\"xs\"\n overflow=\"hidden\"\n bg={isSelected ? \"bg.active\" : \"bg\"}\n width=\"100%\"\n maxW=\"100%\"\n transition=\"border-color 0.14s ease\"\n _hover={{ borderColor: \"border.accent\" }}\n >\n <Grid\n templateColumns=\"auto minmax(0, 1fr) auto\"\n px=\"xs\"\n py=\"2xs\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderBottom={isExpanded ? \"1px solid\" : \"none\"}\n borderColor=\"border.muted\"\n cursor=\"pointer\"\n transition=\"background 0.14s ease\"\n _hover={{ bg: isSelected ? \"bg.active\" : \"bg.subtle\" }}\n onClick={() => onToggleExpanded?.()}\n gap=\"sm\"\n >\n <IconButton\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n onToggleExpanded?.();\n }}\n flexShrink={0}\n >\n {isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />}\n </IconButton>\n\n <Box minW={0} overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" title={filePath}>\n {diff.change === \"renamed\" ? (\n <Text as=\"span\" textStyle=\"sm\">\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" mr=\"xs\">\n {diff.oldPath}\n </Text>\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" verticalAlign=\"middle\" mr=\"xs\">\n <ChevronRight size={12} />\n </Box>\n {diff.newPath}\n </Text>\n ) : diff.change === \"deleted\" ? (\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" textStyle=\"sm\">\n {filePath}\n </Text>\n ) : (\n <Text as=\"span\" textStyle=\"sm\">\n {filePath}\n </Text>\n )}\n </Box>\n\n <Box flexShrink={0}>\n <DiffBubble variant=\"ghost\" additions={additions} deletions={deletions} />\n </Box>\n </Grid>\n\n {isExpanded && (\n <Box bg=\"bg\">\n <DiffEditor\n original={diff.oldContent || \"\"}\n modified={diff.newContent || \"\"}\n oldPath={diff.oldPath}\n newPath={diff.newPath}\n sideBySide={false}\n />\n </Box>\n )}\n </Box>\n );\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { type Diff, DiffCard } from \"./diff-card\";\nimport { EmptyState } from \"./empty-state\";\nimport { ScrollArea } from \"./scroll-area\";\n\ninterface DiffDrawerProps {\n diffs: Diff[];\n selectedDiffPath?: string | null;\n}\n\nexport type { Diff };\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nexport function DiffDrawer(props: DiffDrawerProps) {\n const { diffs, selectedDiffPath = null } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const [collapsedPaths, setCollapsedPaths] = useState<Set<string>>(() => new Set());\n\n const virtualizer = useVirtualizer({\n count: diffs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => 42,\n overscan: 5,\n });\n\n useEffect(() => {\n if (!selectedDiffPath) return;\n\n const index = diffs.findIndex((diff) => getDiffPath(diff) === selectedDiffPath);\n if (index < 0) return;\n\n virtualizer.scrollToIndex(index, { align: \"start\" });\n }, [selectedDiffPath, diffs, virtualizer]);\n\n if (diffs.length === 0) {\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\">\n <ScrollArea flex=\"1\" minH=\"0\" contentProps={{ p: \"xs\", spaceY: \"xs\" }}>\n <EmptyState title=\"No changes detected\" description=\"Make some changes to see the diff here.\" paddingY=\"sm\" />\n </ScrollArea>\n </Stack>\n );\n }\n\n const toggleCollapsed = (path: string) => {\n setCollapsedPaths((prev) => {\n const next = new Set(prev);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n });\n };\n\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\">\n <Box position=\"relative\" flex=\"1\" minH=\"0\">\n <ScrollArea position=\"absolute\" inset=\"0\" viewportRef={scrollRef} contentProps={{ p: \"xs\" }}>\n <Box position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const diff = diffs[virtualItem.index];\n const path = getDiffPath(diff);\n\n return (\n <Box\n key={virtualItem.key}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n pb=\"xs\"\n style={{ transform: `translateY(${virtualItem.start}px)` }}\n >\n <DiffCard\n diff={diff}\n isSelected={selectedDiffPath === path}\n isExpanded={!collapsedPaths.has(path)}\n onToggleExpanded={() => toggleCollapsed(path)}\n />\n </Box>\n );\n })}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n );\n}\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"./alert\";\nimport { ContentPlaceholder } from \"./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=\"solid\" colorScheme={\"black\"} onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import type { IconProps } from \"@chakra-ui/react\";\nimport { Badge, MenuItem as ChakraMenuItem, Flex, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport {\n Children,\n type ComponentProps,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\ntype ChakraMenuItemProps = ComponentProps<typeof ChakraMenuItem>;\ntype MenuItemIcon = ComponentProps<typeof Icon>[\"as\"] | ReactNode;\ntype MenuItemIconColor = IconProps[\"color\"];\ntype MenuItemTagColor = ComponentProps<typeof Badge>[\"colorPalette\"];\ntype MenuItemTagVariant = ComponentProps<typeof Badge>[\"variant\"];\ntype MenuItemVariant = \"default\" | \"compact\";\n\nconst menuItemVariantStyles = {\n default: {\n paddingX: \"sm\",\n paddingY: \"xs\",\n minHeight: \"2rem\",\n iconSize: \"19px\",\n primaryTextStyle: \"label/M/regular\",\n secondaryMarginLeft: \"2px\",\n secondaryTextStyle: \"label/XS/regular\",\n },\n compact: {\n paddingX: \"xs\",\n paddingY: \"2xs\",\n minHeight: \"1.75rem\",\n iconSize: \"16px\",\n primaryTextStyle: \"label/S/regular\",\n secondaryMarginLeft: \"0\",\n secondaryTextStyle: \"label/XS/regular\",\n },\n} as const;\n\ninterface MenuItemContentProps {\n primaryLabel: string;\n secondaryLabel?: string;\n shortcutLabel?: ReactNode;\n tooltipLabel?: ReactNode;\n leftIcon?: MenuItemIcon | null;\n rightIcon?: MenuItemIcon | null;\n leftIconColor: MenuItemIconColor;\n rightIconColor: MenuItemIconColor;\n leftIconSize: string;\n rightIconSize: string;\n rightIconAriaLabel?: string;\n rightTooltipLabel?: ReactNode;\n onRightIconClick?: () => void;\n tagLabel?: ReactNode;\n tagColorPalette: MenuItemTagColor;\n tagVariant: MenuItemTagVariant;\n variant: MenuItemVariant;\n}\n\nconst MenuItemContent = (props: MenuItemContentProps) => {\n const {\n primaryLabel,\n tooltipLabel,\n secondaryLabel,\n shortcutLabel,\n leftIcon,\n rightIcon,\n leftIconColor,\n rightIconColor,\n leftIconSize,\n rightIconSize,\n rightIconAriaLabel,\n rightTooltipLabel,\n onRightIconClick,\n tagLabel,\n tagColorPalette,\n tagVariant,\n variant,\n } = props;\n\n const variantStyles = menuItemVariantStyles[variant];\n const isRightIconInteractive = Boolean(onRightIconClick && rightIcon);\n\n const handleRightIconMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n if (!isRightIconInteractive) return;\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleRightIconClick = (event: ReactMouseEvent<HTMLElement>) => {\n if (!isRightIconInteractive || !onRightIconClick) return;\n event.preventDefault();\n event.stopPropagation();\n onRightIconClick();\n };\n\n const renderIcon = (icon: MenuItemIcon | null | undefined, size: string, color: MenuItemIconColor) => {\n if (!icon) return null;\n if (isValidElement(icon)) {\n return (\n <Flex alignItems=\"center\" justifyContent=\"center\" boxSize={size} color={color}>\n {icon}\n </Flex>\n );\n }\n\n if (typeof icon !== \"function\" && (typeof icon !== \"object\" || icon === null)) {\n return icon;\n }\n\n return <Icon as={icon as ComponentProps<typeof Icon>[\"as\"]} boxSize={size} color={color} />;\n };\n\n return (\n <>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap=\"xs\" flex=\"1\">\n <Tooltip positioning={{ placement: \"right\" }} content={tooltipLabel} disabled={!tooltipLabel}>\n <Stack gap=\"2xs\">\n <Flex alignItems=\"flex-start\" gap=\"xs\" flex=\"1\">\n {renderIcon(leftIcon, leftIconSize, leftIconColor)}\n <Text lineClamp={1} textOverflow=\"ellipsis\" textStyle={variantStyles.primaryTextStyle}>\n {primaryLabel}\n </Text>\n </Flex>\n {secondaryLabel && (\n <Text\n ml={variantStyles.secondaryMarginLeft}\n lineClamp={1}\n textOverflow=\"ellipsis\"\n textStyle={variantStyles.secondaryTextStyle}\n color=\"fg.menu-item.secondary\"\n >\n {secondaryLabel}\n </Text>\n )}\n </Stack>\n </Tooltip>\n <Flex justifyContent=\"flex-end\" alignItems=\"center\" gap=\"xs\" color=\"fg.menu-item.default\">\n {shortcutLabel ? <Flex alignItems=\"center\">{shortcutLabel}</Flex> : null}\n {rightIcon ? (\n <Tooltip positioning={{ placement: \"right\" }} content={rightTooltipLabel} disabled={!rightTooltipLabel}>\n <Flex\n as={isRightIconInteractive ? \"button\" : \"div\"}\n alignItems=\"center\"\n aria-label={rightIconAriaLabel}\n cursor={isRightIconInteractive ? \"pointer\" : \"default\"}\n bg=\"transparent\"\n borderWidth=\"0\"\n padding=\"0\"\n onMouseDown={handleRightIconMouseDown}\n onClick={handleRightIconClick}\n >\n {renderIcon(rightIcon, rightIconSize, rightIconColor)}\n </Flex>\n </Tooltip>\n ) : null}\n </Flex>\n </Flex>\n {tagLabel ? (\n <Badge\n position=\"absolute\"\n top=\"xs\"\n right=\"sm\"\n textStyle=\"label/XS/medium\"\n px=\"xs\"\n py=\"2px\"\n borderRadius=\"md\"\n colorPalette={tagColorPalette}\n variant={tagVariant}\n pointerEvents=\"none\"\n >\n {tagLabel}\n </Badge>\n ) : null}\n </>\n );\n};\n\nexport interface MenuItemProps {\n id?: string;\n children?: ReactNode;\n /** When true, the single child element becomes the root element (e.g. a Link for cmd+click support). */\n asChild?: boolean;\n isDisabled?: boolean;\n isSelected?: boolean;\n primaryLabel: string;\n secondaryLabel?: string;\n shortcutLabel?: ReactNode;\n tooltipLabel?: ReactNode;\n leftIcon?: MenuItemIcon | null;\n rightIcon?: MenuItemIcon | null;\n leftIconColor?: MenuItemIconColor;\n rightIconColor?: MenuItemIconColor;\n leftIconSize?: string;\n rightIconSize?: string;\n rightIconAriaLabel?: string;\n rightTooltipLabel?: ReactNode;\n onRightIconClick?: () => void;\n tagLabel?: ReactNode;\n tagColorPalette?: MenuItemTagColor;\n tagVariant?: MenuItemTagVariant;\n variant?: MenuItemVariant;\n tabIndex?: number;\n width?: ChakraMenuItemProps[\"width\"];\n maxWidth?: ChakraMenuItemProps[\"maxWidth\"];\n setRefElement?: ChakraMenuItemProps[\"ref\"];\n onClick?: ChakraMenuItemProps[\"onClick\"];\n onMouseDown?: ChakraMenuItemProps[\"onMouseDown\"];\n onMouseEnter?: ChakraMenuItemProps[\"onMouseEnter\"];\n}\n\nexport const MenuItem = (props: MenuItemProps) => {\n const {\n id,\n children,\n asChild,\n primaryLabel,\n tooltipLabel,\n secondaryLabel,\n shortcutLabel,\n leftIcon = null,\n rightIcon,\n leftIconColor = \"fg.menu-item.default\",\n rightIconColor = \"fg.menu-item.default\",\n leftIconSize,\n rightIconSize,\n rightIconAriaLabel,\n rightTooltipLabel,\n onRightIconClick,\n isDisabled,\n isSelected,\n tagLabel,\n tagColorPalette = \"yellow\",\n tagVariant = \"subtle\",\n variant = \"default\",\n tabIndex,\n width,\n maxWidth,\n setRefElement,\n } = props;\n const { onClick, onMouseDown, onMouseEnter } = props;\n const variantStyles = menuItemVariantStyles[variant];\n const backgroundColor = isSelected ? \"bg.menu-item.selected\" : \"bg.menu-item.default\";\n const resolvedLeftIconSize = leftIconSize ?? variantStyles.iconSize;\n const resolvedRightIconSize = rightIconSize ?? variantStyles.iconSize;\n\n const contentProps: MenuItemContentProps = {\n primaryLabel,\n secondaryLabel,\n shortcutLabel,\n tooltipLabel,\n leftIcon,\n rightIcon,\n leftIconColor,\n rightIconColor,\n leftIconSize: resolvedLeftIconSize,\n rightIconSize: resolvedRightIconSize,\n rightIconAriaLabel,\n rightTooltipLabel,\n onRightIconClick,\n tagLabel,\n tagColorPalette,\n tagVariant,\n variant,\n };\n\n const commonProps = {\n id,\n ref: setRefElement,\n tabIndex,\n disabled: isDisabled,\n \"aria-selected\": isSelected,\n paddingX: variantStyles.paddingX,\n paddingY: variantStyles.paddingY,\n height: \"auto\" as const,\n minHeight: variantStyles.minHeight,\n role: \"option\" as const,\n width,\n maxWidth: maxWidth ?? \"20rem\",\n overflow: \"hidden\" as const,\n position: \"relative\" as const,\n cursor: isDisabled ? (\"default\" as const) : (\"pointer\" as const),\n value: id ?? primaryLabel,\n bg: backgroundColor,\n _hover: { bg: \"bg.menu-item.hover\" },\n _focus: { bg: \"bg.menu-item.focus\" },\n textDecoration: \"none\",\n color: \"inherit\",\n };\n\n if (asChild && children) {\n const child = Children.only(children);\n if (!isValidElement<HTMLAttributes<HTMLElement>>(child)) return null;\n\n return (\n <ChakraMenuItem asChild {...commonProps}>\n {cloneElement(child, undefined, <MenuItemContent {...contentProps} />)}\n </ChakraMenuItem>\n );\n }\n\n return (\n <ChakraMenuItem {...commonProps} onClick={onClick} onMouseDown={onMouseDown} onMouseEnter={onMouseEnter}>\n <MenuItemContent {...contentProps} />\n </ChakraMenuItem>\n );\n};\n","import { Button, Dialog, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home } from \"lucide-react\";\nimport { MenuItem } from \"./menu-item\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface FolderPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface FolderPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: FolderPickerDialogEntry[];\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: FolderPickerDialogEntry) => void;\n}\n\nexport type { FolderPickerDialogProps };\n\nconst getEntryIcon = (entry: FolderPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\ntype FolderPickerListEntryProps = {\n entry: FolderPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: FolderPickerDialogEntry) => void;\n};\n\nconst FolderPickerListEntry = (props: FolderPickerListEntryProps) => {\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 <Menu.Root>\n <MenuItem\n primaryLabel={entry.name}\n leftIcon={getEntryIcon(entry)}\n tagLabel={entry.isGitRepo ? \"Git repo\" : undefined}\n tagColorPalette={entry.isGitRepo ? \"green\" : undefined}\n isDisabled={isDisabled}\n isSelected={selectedPath === entry.path}\n width=\"100%\"\n maxWidth=\"100%\"\n onClick={handleClick}\n />\n </Menu.Root>\n );\n};\n\nexport const FolderPickerDialog = (props: FolderPickerDialogProps) => {\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 selectedPathSet = new Set(selectedPaths);\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 {currentPath || \"Home\"}\n </Text>\n </Stack>\n\n <ScrollArea\n borderWidth=\"1px\"\n borderRadius=\"md\"\n borderColor=\"border.muted\"\n maxHeight=\"320px\"\n contentProps={{ padding: \"sm\" }}\n >\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\">\n {error}\n </Text>\n ) : entries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n No entries found.\n </Text>\n ) : (\n <Stack gap=\"xs\">\n {entries.map((entry) => (\n <FolderPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n )}\n </ScrollArea>\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, 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.muted\"}\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 borderRadius={\"xs\"}\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.5625rem\";\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\n\nexport const toaster: ReturnType<typeof createToaster> = createToaster({\n placement: \"bottom-end\",\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\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"1\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description\n maxHeight=\"12rem\"\n overflowY=\"auto\"\n paddingEnd=\"1\"\n whiteSpace=\"pre-wrap\"\n wordBreak=\"break-word\"\n >\n {toast.description}\n </Toast.Description>\n )}\n </Stack>\n {toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}\n {toast.closable && <Toast.CloseTrigger />}\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n","import { Flex, Stack } from \"@chakra-ui/react\";\nimport { Outlet, useRouterState } from \"@tanstack/react-router\";\nimport { ErrorBoundary } from \"@/components/error-boundary\";\nimport { HorizontalMenuStack } from \"@/components/horizontal-menu-stack\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/panel-header.constants\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport { Toaster } from \"@/components/toaster\";\n\nexport const Layout = () => {\n const { location } = useRouterState();\n return (\n <>\n <Stack flex=\"1\" minH=\"100vh\" gap=\"0\" overflow=\"hidden\">\n <Flex flex=\"1\" height=\"100%\" alignItems=\"stretch\" overflow=\"hidden\">\n <ScrollArea flex=\"1\" bg=\"bg\" contentProps={{ minH: \"100%\" }}>\n <ErrorBoundary key={location.pathname} label=\"Unable to render this page.\">\n <Outlet />\n </ErrorBoundary>\n </ScrollArea>\n </Flex>\n </Stack>\n <Toaster />\n </>\n );\n};\n\ninterface PanelLayoutProps {\n sidebar?: React.ReactNode;\n errorLabel?: string;\n children?: React.ReactNode;\n}\n\nexport const PanelLayout = (props: PanelLayoutProps) => {\n const { sidebar, errorLabel, children } = props;\n\n return (\n <Flex height=\"100%\" width=\"100%\" minH=\"0\" minW=\"0\">\n {sidebar ? (\n <Flex minH=\"0\" flexShrink={0}>\n {sidebar}\n </Flex>\n ) : null}\n <ErrorBoundary label={errorLabel ?? \"Unable to render the panel.\"}>\n <Flex flex=\"1\" overflow=\"hidden\" minH=\"0\" minW=\"0\">\n {children ?? <Outlet />}\n </Flex>\n </ErrorBoundary>\n </Flex>\n );\n};\n\ninterface PanelSectionLayoutProps {\n actions: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport const PanelSectionLayout = (props: PanelSectionLayoutProps) => {\n const { actions, content } = props;\n return (\n <Stack height=\"100%\" width=\"100%\" gap=\"0\" minH=\"0\">\n <HorizontalMenuStack\n data-testid=\"panel-section-actions\"\n align=\"flex-start\"\n minH={PANEL_HEADER_HEIGHT}\n flexWrap=\"wrap\"\n gap=\"sm\"\n py=\"2xs\"\n >\n {actions}\n </HorizontalMenuStack>\n <ScrollArea flex=\"1\" bg=\"bg\" contentProps={{ minH: \"100%\" }}>\n <ErrorBoundary label=\"Unable to render the panel.\">\n <Flex flex=\"1\" overflow=\"hidden\" minH=\"0\">\n {content}\n </Flex>\n </ErrorBoundary>\n </ScrollArea>\n </Stack>\n );\n};\n","import { Box, HStack, Link, Separator, Stack, Text } from \"@chakra-ui/react\";\n\nexport interface OpenSourceNotice {\n name: string;\n version?: string;\n license?: string;\n copyright?: string;\n homepageUrl?: string;\n sourceUrl?: string;\n attribution?: string;\n}\n\nexport interface OpenSourceNoticesScreenProps {\n notices: OpenSourceNotice[];\n title?: string;\n description?: string;\n productName?: string;\n productVersion?: string;\n generatedAt?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\nconst getNoticeKey = (notice: OpenSourceNotice, index: number) => {\n return `${notice.name}-${notice.version ?? \"unknown\"}-${index}`;\n};\n\nconst getNoticeTitle = (notice: OpenSourceNotice) => {\n if (!notice.version) return notice.name;\n\n return `${notice.name} v${notice.version}`;\n};\n\nexport const OpenSourceNoticesScreen = (props: OpenSourceNoticesScreenProps) => {\n const {\n notices,\n title = \"Open Source and Third-Party Notices\",\n description = \"This product includes software developed by the open source community.\",\n productName,\n productVersion,\n generatedAt,\n emptyTitle = \"No third-party notices available\",\n emptyDescription = \"No third-party packages were included in this build.\",\n } = props;\n\n return (\n <Stack width=\"full\" minHeight=\"100%\" background=\"bg\" color=\"fg\" padding={{ base: \"md\", md: \"xl\" }} gap=\"lg\">\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/L\">{title}</Text>\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n\n <HStack gap=\"md\" flexWrap=\"wrap\">\n {productName ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Product: {productName}\n </Text>\n ) : null}\n\n {productVersion ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Version: {productVersion}\n </Text>\n ) : null}\n\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Packages: {notices.length}\n </Text>\n\n {generatedAt ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Generated: {generatedAt}\n </Text>\n ) : null}\n </HStack>\n </Stack>\n\n <Separator borderColor=\"border.muted\" />\n\n {notices.length === 0 ? (\n <Stack borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" padding=\"lg\" gap=\"xs\">\n <Text textStyle=\"label/L/medium\">{emptyTitle}</Text>\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {emptyDescription}\n </Text>\n </Stack>\n ) : (\n <Stack gap=\"md\">\n {notices.map((notice, index) => (\n <Box\n key={getNoticeKey(notice, index)}\n borderWidth=\"1px\"\n borderColor=\"border.muted\"\n borderRadius=\"md\"\n padding=\"md\"\n >\n <Stack gap=\"sm\">\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/L/medium\">{getNoticeTitle(notice)}</Text>\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n License: {notice.license ?? \"Unknown\"}\n </Text>\n </Stack>\n\n {notice.copyright ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {notice.copyright}\n </Text>\n ) : null}\n\n {(notice.homepageUrl || notice.sourceUrl) && (\n <Stack gap=\"2xs\">\n {notice.homepageUrl ? (\n <Link\n href={notice.homepageUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n textStyle=\"label/S/medium\"\n width=\"fit-content\"\n >\n Homepage\n </Link>\n ) : null}\n\n {notice.sourceUrl ? (\n <Link\n href={notice.sourceUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n textStyle=\"label/S/medium\"\n width=\"fit-content\"\n >\n Source code\n </Link>\n ) : null}\n </Stack>\n )}\n\n {notice.attribution ? (\n <Box background=\"bg.muted\" borderRadius=\"sm\" padding=\"sm\">\n <Text textStyle=\"label/S/regular\" whiteSpace=\"pre-wrap\">\n {notice.attribution}\n </Text>\n </Box>\n ) : null}\n </Stack>\n </Box>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n","import { Box, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Info } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\nexport interface PropertyItem {\n label: string;\n description?: string;\n value: ReactNode;\n}\n\nexport interface PropertiesProps {\n items: PropertyItem[];\n}\n\n/**\n * Displays a list of label–value property rows.\n *\n * Each property has a label, an optional description (shown as a tooltip), and a value (ReactNode).\n * All labels share a fixed width for alignment.\n *\n * Wrap with `<ItemSection>` when collapsible behavior is needed.\n */\nexport const Properties = (props: PropertiesProps) => {\n const { items } = props;\n\n return (\n <Stack gap=\"sm\" paddingLeft=\"sm\" paddingY=\"xs\">\n {items.map((item, index) => (\n <HStack key={`${item.label}-${index}`} gap=\"xs\" alignItems=\"center\">\n <Box width=\"110px\" flexShrink={0}>\n <HStack gap=\"1\" alignItems=\"center\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {item.label}\n </Text>\n {item.description && (\n <Tooltip content={item.description} showArrow>\n <Icon as={Info} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" />\n </Tooltip>\n )}\n </HStack>\n </Box>\n <Box flex=\"1\">{item.value}</Box>\n </HStack>\n ))}\n </Stack>\n );\n};\n","import { Menu, Portal } from \"@chakra-ui/react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { MenuItem } from \"./menu-item\";\n\ntype MenuRootProps = ComponentProps<typeof Menu.Root>;\n\nexport interface ResourceContextAction {\n key: string;\n label: string;\n onClick: () => void;\n isDisabled?: boolean;\n icon?: ComponentProps<typeof MenuItem>[\"leftIcon\"];\n}\n\ninterface ResourceContextMenuProps {\n actions: ResourceContextAction[];\n children: ReactNode;\n contentMinWidth?: string;\n contentBackground?: string;\n positioning?: MenuRootProps[\"positioning\"];\n}\n\nexport const ResourceContextMenu = (props: ResourceContextMenuProps) => {\n const {\n actions,\n children,\n contentMinWidth = \"220px\",\n contentBackground = \"bg\",\n positioning = { placement: \"bottom-start\" },\n } = props;\n\n if (actions.length === 0) {\n return <>{children}</>;\n }\n\n return (\n <Menu.Root positioning={positioning}>\n <Menu.ContextTrigger asChild>{children}</Menu.ContextTrigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content minW={contentMinWidth} bg={contentBackground}>\n {actions.map((action) => (\n <MenuItem\n key={action.key}\n primaryLabel={action.label}\n leftIcon={action.icon ?? null}\n isDisabled={action.isDisabled}\n onClick={action.onClick}\n />\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Input, InputGroup, Menu, Portal } from \"@chakra-ui/react\";\nimport { ChevronDown, Search } from \"lucide-react\";\nimport { type ElementType, Fragment, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { MenuItem } from \"./menu-item\";\nimport { ScrollArea } from \"./scroll-area\";\n\ntype MenuRootProps = React.ComponentProps<typeof Menu.Root>;\ntype MenuContentProps = React.ComponentProps<typeof Menu.Content>;\n\nexport interface SearchableMenuItem {\n id: string;\n label: string;\n searchText?: string;\n secondaryLabel?: string;\n tooltipLabel?: ReactNode;\n icon?: ElementType;\n variant?: \"default\" | \"compact\";\n isDisabled?: boolean;\n isSelected?: boolean;\n onSelect?: () => void;\n}\n\nexport interface SearchableMenuParentList<T extends SearchableMenuItem> {\n items: T[];\n selectedLabel: string;\n selectedIcon?: ElementType;\n ariaLabel?: string;\n disabled?: boolean;\n emptyState?: ReactNode;\n filterItems?: (items: T[], query: string) => T[];\n searchPlaceholder?: string;\n showSearch?: boolean;\n contentTestId?: string;\n onSelect?: (item: T) => void;\n}\n\ninterface ListConfig<T extends SearchableMenuItem> {\n items: T[];\n filterItems: (items: T[], query: string) => T[];\n showSearch: boolean;\n searchPlaceholder: string;\n emptyState: ReactNode;\n contentTestId?: string;\n closeOnSelect: boolean;\n listId: string;\n}\n\ninterface SearchableMenuProps<T extends SearchableMenuItem> {\n trigger: ReactNode;\n items: T[];\n searchPlaceholder: string;\n emptyState: ReactNode;\n filterItems?: (items: T[], query: string) => T[];\n listId?: string;\n header?: ReactNode;\n width?: MenuContentProps[\"width\"];\n maxListHeight?: string;\n showSearch?: boolean;\n closeOnSelect?: MenuRootProps[\"closeOnSelect\"];\n lazyMount?: MenuRootProps[\"lazyMount\"];\n open?: MenuRootProps[\"open\"];\n positioning?: MenuRootProps[\"positioning\"];\n onOpenChange?: MenuRootProps[\"onOpenChange\"];\n onFocusOutside?: MenuRootProps[\"onFocusOutside\"];\n contentTestId?: string;\n portalled?: boolean;\n parentList?: SearchableMenuParentList<T>;\n}\n\nexport const filterSearchableMenuItems = <T extends SearchableMenuItem>(items: T[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return items;\n }\n\n return items.filter((item) => {\n const content = [item.label, item.searchText].filter(Boolean).join(\" \").toLowerCase();\n return content.includes(normalizedQuery);\n });\n};\n\nexport const shouldResetSearchableMenuQuery = (currentListId?: string, nextListId?: string) => {\n if (!currentListId || !nextListId) {\n return false;\n }\n\n return currentListId !== nextListId;\n};\n\nexport const resolveActiveListConfig = <T extends SearchableMenuItem>(\n isShowingParent: boolean,\n parentList: SearchableMenuParentList<T> | undefined,\n childConfig: ListConfig<T>,\n): ListConfig<T> => {\n if (!isShowingParent || !parentList) {\n return childConfig;\n }\n\n return {\n items: parentList.items,\n filterItems: parentList.filterItems ?? childConfig.filterItems,\n showSearch: parentList.showSearch ?? childConfig.showSearch,\n searchPlaceholder: parentList.searchPlaceholder ?? childConfig.searchPlaceholder,\n emptyState: parentList.emptyState ?? childConfig.emptyState,\n contentTestId: parentList.contentTestId ?? childConfig.contentTestId,\n closeOnSelect: false,\n listId: \"parent\",\n };\n};\n\nconst searchInputBorderProps = {\n borderColor: \"border.muted\",\n boxShadow: \"none\",\n outline: \"none\",\n} as const;\n\nexport const SearchableMenu = <T extends SearchableMenuItem>(props: SearchableMenuProps<T>) => {\n const {\n trigger,\n items,\n searchPlaceholder,\n emptyState,\n filterItems = filterSearchableMenuItems,\n listId,\n header,\n width = \"260px\",\n maxListHeight = \"18rem\",\n showSearch = true,\n closeOnSelect = true,\n lazyMount = false,\n open,\n positioning,\n onOpenChange,\n onFocusOutside,\n contentTestId,\n portalled = true,\n parentList,\n } = props;\n const hasParentList = Boolean(parentList);\n const [internalOpen, setInternalOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [activeList, setActiveList] = useState<\"child\" | \"parent\">(\"child\");\n const inputRef = useRef<HTMLInputElement>(null);\n const isOpen = open ?? internalOpen;\n const isShowingParent = hasParentList && activeList === \"parent\";\n\n const childConfig: ListConfig<T> = {\n items,\n filterItems,\n showSearch,\n searchPlaceholder,\n emptyState,\n contentTestId,\n closeOnSelect,\n listId: hasParentList ? \"child\" : (listId ?? \"\"),\n };\n\n const config = resolveActiveListConfig(isShowingParent, parentList, childConfig);\n const filteredItems = config.filterItems(config.items, query);\n const previousListIdRef = useRef(config.listId);\n\n useEffect(() => {\n if (!isOpen) {\n previousListIdRef.current = config.listId;\n return;\n }\n\n if (shouldResetSearchableMenuQuery(previousListIdRef.current, config.listId)) {\n setQuery(\"\");\n }\n\n previousListIdRef.current = config.listId;\n }, [isOpen, config.listId]);\n\n useEffect(() => {\n if (!isOpen || !config.showSearch) {\n return;\n }\n\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [isOpen, config.showSearch]);\n\n const handleOpenChange: NonNullable<MenuRootProps[\"onOpenChange\"]> = (details) => {\n if (open === undefined) {\n setInternalOpen(details.open);\n }\n\n setQuery(\"\");\n\n if (details.open && hasParentList) {\n setActiveList(\"child\");\n }\n\n onOpenChange?.(details);\n };\n\n const handleMenuItemSelect = (details: { value: string }) => {\n if (!isShowingParent || !parentList) return;\n\n const item = parentList.items.find((i) => i.id === details.value);\n if (!item) return;\n\n parentList.onSelect?.(item);\n setActiveList(\"child\");\n };\n\n const parentListHeader = parentList ? (\n <div\n onPointerDownCapture={(event) => event.stopPropagation()}\n onClickCapture={(event) => {\n event.stopPropagation();\n if (parentList.disabled) return;\n setActiveList((current) => (current === \"child\" ? \"parent\" : \"child\"));\n }}\n >\n <MenuItem\n primaryLabel={parentList.selectedLabel}\n leftIcon={parentList.selectedIcon}\n rightIcon={parentList.disabled ? undefined : ChevronDown}\n isDisabled={parentList.disabled}\n />\n </div>\n ) : null;\n\n const resolvedHeader = parentList ? parentListHeader : header;\n const shouldShowSeparator = Boolean(resolvedHeader) && !config.showSearch;\n\n const searchInput = config.showSearch ? (\n <InputGroup startElement={<Search size={14} />}>\n <Input\n ref={inputRef}\n borderRight={0}\n borderLeft={0}\n borderRadius=\"0\"\n borderColor=\"border.muted\"\n value={query}\n placeholder={config.searchPlaceholder}\n aria-label={config.searchPlaceholder}\n autoComplete=\"off\"\n _hover={searchInputBorderProps}\n _active={searchInputBorderProps}\n _focus={searchInputBorderProps}\n _focusVisible={searchInputBorderProps}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </InputGroup>\n ) : null;\n\n return (\n <Menu.Root\n lazyMount={lazyMount}\n closeOnSelect={config.closeOnSelect}\n open={open}\n positioning={positioning}\n onOpenChange={handleOpenChange}\n onFocusOutside={onFocusOutside}\n onSelect={hasParentList ? handleMenuItemSelect : undefined}\n >\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n <Portal disabled={!portalled}>\n <Menu.Positioner>\n <Menu.Content w={width} bg=\"bg\" gap=\"0\" p=\"0\" zIndex=\"popover\">\n {resolvedHeader}\n {searchInput}\n {shouldShowSeparator ? <Menu.Separator margin=\"0\" /> : null}\n <ScrollArea\n maxH={maxListHeight}\n data-testid={config.contentTestId}\n viewportProps={{ overscrollBehavior: \"contain\" }}\n p=\"2xs\"\n gap=\"2xs\"\n >\n {filteredItems.length > 0\n ? filteredItems.map((item) => (\n <Fragment key={item.id}>\n <MenuItem\n id={item.id}\n primaryLabel={item.label}\n secondaryLabel={item.secondaryLabel}\n tooltipLabel={item.tooltipLabel}\n leftIcon={item.icon}\n variant={item.variant}\n isDisabled={item.isDisabled}\n isSelected={item.isSelected}\n onClick={item.onSelect}\n />\n </Fragment>\n ))\n : config.emptyState}\n </ScrollArea>\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Icon } from \"@chakra-ui/react\";\nimport { CircleAlert, CircleCheck, CircleDashed, CirclePause, CircleStop } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type SessionCompletionStatus =\n | \"in_progress\"\n | \"awaiting_input\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n | \"disconnected\";\n\nexport const resolveSessionIndicatorIcon = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return CircleCheck;\n if (status === \"failed\") return CircleAlert;\n if (status === \"cancelled\") return CircleStop;\n if (status === \"disconnected\") return CirclePause;\n return CircleDashed;\n};\n\nexport const resolveSessionIndicatorColor = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return \"fg.success\";\n if (status === \"failed\") return \"fg.error\";\n if (status === \"cancelled\") return \"fg.warning\";\n if (status === \"disconnected\") return \"fg.warning\";\n return \"fg.muted\";\n};\n\ninterface SessionIndicatorProps {\n status?: SessionCompletionStatus;\n boxSize?: ComponentProps<typeof Icon>[\"boxSize\"];\n ariaLabel?: string;\n cursor?: ComponentProps<typeof Icon>[\"cursor\"];\n onClick?: ComponentProps<typeof Icon>[\"onClick\"];\n}\n\nexport const SessionIndicator = (props: SessionIndicatorProps) => {\n const { status, boxSize = \"14px\", ariaLabel = \"Session status\", cursor, onClick } = props;\n\n return (\n <Icon\n as={resolveSessionIndicatorIcon(status)}\n boxSize={boxSize}\n color={resolveSessionIndicatorColor(status)}\n aria-label={ariaLabel}\n cursor={cursor}\n onClick={onClick}\n />\n );\n};\n","import { IconButton } from \"@chakra-ui/react\";\nimport { MenuItem } from \"../menu-item\";\nimport { SearchableMenu } from \"../searchable-menu\";\nimport type { SidebarAction } from \"./sidebar-tree.types\";\n\ninterface SearchableActionMenuProps {\n action: SidebarAction;\n}\n\nexport const SearchableActionMenu = (props: SearchableActionMenuProps) => {\n const { action } = props;\n const items = (action.menuItems ?? []).map((item) => ({\n id: item.id,\n label: item.label,\n searchText: [item.label, item.description].filter(Boolean).join(\" \"),\n tooltipLabel: item.description,\n variant: \"compact\" as const,\n onSelect: () => item.onAction?.(),\n }));\n\n return (\n <SearchableMenu\n trigger={\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n }\n items={items}\n searchPlaceholder={action.searchPlaceholder ?? \"Search…\"}\n emptyState={<MenuItem primaryLabel={action.emptyMenuLabel ?? \"No results found\"} isDisabled variant=\"compact\" />}\n onFocusOutside={(event) => event.preventDefault()}\n />\n );\n};\n","import { Box, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Tooltip } from \"../tooltip\";\nimport type { SidebarNode } from \"./sidebar-tree.types\";\n\ninterface SidebarNodeContentProps {\n node: SidebarNode;\n expanded: boolean;\n hasChildren: boolean;\n isDisabled: boolean;\n}\n\nexport const SidebarNodeContent = (props: SidebarNodeContentProps) => {\n const { node, expanded, hasChildren, isDisabled } = props;\n\n return (\n <HStack gap=\"2\" minW=\"0\" flex=\"1\" overflow=\"hidden\">\n {node.icon ? (\n <Box color={node.iconColor ?? \"fg.muted\"} flexShrink={0}>\n {node.icon}\n </Box>\n ) : null}\n {node.indicator ? (\n <Tooltip content={node.indicator.tooltip} disabled={!node.indicator.tooltip} openDelay={300}>\n <Box color={node.indicator.color ?? \"fg.muted\"} flexShrink={0}>\n {node.indicator.icon}\n </Box>\n </Tooltip>\n ) : null}\n <Stack gap=\"0\" minW=\"0\" flex=\"1\">\n <HStack gap=\"1\" minW=\"0\">\n {typeof node.label === \"string\" ? (\n <Text textStyle=\"paragraph/S/regular\" color={isDisabled ? \"fg.muted\" : \"fg\"} truncate>\n {node.label}\n </Text>\n ) : (\n <Box minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {node.label}\n </Box>\n )}\n {hasChildren ? (\n <Box color=\"fg.muted\" flexShrink={0}>\n <ChevronRight\n size={14}\n style={{ transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n ) : null}\n </HStack>\n {node.description ? (\n typeof node.description === \"string\" ? (\n <Text textStyle=\"paragraph/XS/regular\" color=\"fg.muted\" truncate>\n {node.description}\n </Text>\n ) : (\n <Box minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {node.description}\n </Box>\n )\n ) : null}\n </Stack>\n </HStack>\n );\n};\n","import { Box, HStack, Icon, IconButton, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { isValidElement } from \"react\";\nimport { ResourceContextMenu } from \"../resource-context-menu\";\nimport { Tooltip } from \"../tooltip\";\nimport { SearchableActionMenu } from \"./searchable-action-menu\";\nimport { SidebarNodeContent } from \"./sidebar-node-content\";\nimport type {\n SidebarAction,\n SidebarLinkComponent,\n SidebarNavigateEvent,\n SidebarNode,\n SidebarSection,\n} from \"./sidebar-tree.types\";\n\ninterface SidebarTreeProps {\n sections: SidebarSection[];\n expandedSections: string[];\n expandedNodes: string[];\n activeNodeId?: string | string[] | null;\n linkComponent?: SidebarLinkComponent;\n onNavigate?: (event: SidebarNavigateEvent) => void;\n onToggleSection: (sectionId: string) => void;\n onToggleNode: (nodeId: string) => void;\n}\n\ninterface SidebarRowActionsProps {\n sectionId: string;\n nodeId?: string;\n actions: SidebarAction[];\n}\n\ninterface SidebarNodeRowProps {\n sectionId: string;\n node: SidebarNode;\n level: number;\n expandedNodes: string[];\n activeNodeId?: string | string[] | null;\n linkComponent?: SidebarLinkComponent;\n onNavigate?: (event: SidebarNavigateEvent) => void;\n onToggleNode: (nodeId: string) => void;\n}\n\nconst isExpanded = (id: string, values: string[]) => values.includes(id);\n\nconst renderSidebarMenuItemIcon = (icon: unknown) => {\n if (!icon) return null;\n if (isValidElement(icon)) return <Box mr=\"2\">{icon}</Box>;\n\n return <Icon as={icon as never} boxSize=\"14px\" mr=\"2\" />;\n};\n\nconst handleSidebarNodeClick = ({\n sectionId,\n node,\n hasChildren,\n isDisabled,\n isNavigable,\n onNavigate,\n onToggleNode,\n}: Pick<SidebarNodeRowProps, \"sectionId\" | \"node\" | \"onNavigate\" | \"onToggleNode\"> & {\n hasChildren: boolean;\n isDisabled: boolean;\n isNavigable: boolean;\n}) => {\n if (isDisabled) return;\n\n if (hasChildren) {\n onToggleNode(node.id);\n return;\n }\n\n if (!isNavigable) return;\n\n onNavigate?.({\n sectionId,\n nodeId: node.id,\n node,\n intent: node.navigationIntent,\n });\n};\n\nconst SidebarActionButton = (props: { action: SidebarAction; sectionId: string; nodeId?: string }) => {\n const { action, sectionId, nodeId } = props;\n\n if (action.menuItems && action.menuItems.length > 0) {\n if (action.menuItems.length >= 8) {\n return <SearchableActionMenu action={action} />;\n }\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\">\n {action.menuItems.map((item) => (\n <Tooltip key={item.id} content={item.description} disabled={!item.description} openDelay={300}>\n <Menu.Item value={item.id} disabled={item.disabled} onClick={() => item.onAction?.()}>\n {renderSidebarMenuItemIcon(item.icon)}\n {item.label}\n </Menu.Item>\n </Tooltip>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n }\n\n return (\n <IconButton\n variant=\"ghost\"\n size=\"2xs\"\n aria-label={action.label}\n onClick={(event) => {\n event.stopPropagation();\n action.onAction?.({ sectionId, nodeId });\n }}\n >\n {action.icon}\n </IconButton>\n );\n};\n\nconst SidebarRowActions = (props: SidebarRowActionsProps) => {\n const { sectionId, nodeId, actions } = props;\n\n if (actions.length === 0) return null;\n\n return (\n <HStack\n gap=\"0\"\n opacity=\"0\"\n pointerEvents=\"none\"\n _groupHover={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: \"1\", pointerEvents: \"auto\" }}\n transition=\"opacity 120ms ease\"\n onClick={(event) => event.stopPropagation()}\n >\n {actions.map((action) => (\n <SidebarActionButton key={action.id} action={action} sectionId={sectionId} nodeId={nodeId} />\n ))}\n </HStack>\n );\n};\n\nconst SidebarNodeRow = (props: SidebarNodeRowProps) => {\n const {\n sectionId,\n node,\n level,\n expandedNodes,\n activeNodeId,\n linkComponent: LinkComponent,\n onNavigate,\n onToggleNode,\n } = props;\n const hasChildren = (node.children?.length ?? 0) > 0;\n const expanded = hasChildren && isExpanded(node.id, expandedNodes);\n const isNavigable = node.isNavigable || node.navigationIntent !== undefined;\n const isActive = Array.isArray(activeNodeId) ? activeNodeId.includes(node.id) : activeNodeId === node.id;\n const isDisabled = node.disabled === true;\n const paddingLeft = level > 0 ? `calc(var(--chakra-spacing-1) + ${level} * var(--chakra-spacing-3))` : undefined;\n const canLink = Boolean(LinkComponent && node.href && isNavigable && !hasChildren && !isDisabled);\n\n const handleClick = () =>\n handleSidebarNodeClick({\n sectionId,\n node,\n hasChildren,\n isDisabled,\n isNavigable,\n onNavigate,\n onToggleNode,\n });\n\n const rowStyles = {\n className: \"group\",\n role: \"option\" as const,\n \"aria-selected\": isActive,\n justify: \"space-between\" as const,\n align: \"center\" as const,\n w: \"full\",\n minW: \"0\",\n maxW: \"full\",\n borderRadius: \"xs\",\n px: \"1\",\n py: \"2xs\",\n pl: paddingLeft,\n bg: isActive ? \"bg.active\" : \"transparent\",\n _hover: { bg: isActive ? \"bg.active\" : \"bg.hover\" },\n cursor: isDisabled ? (\"default\" as const) : (\"pointer\" as const),\n overflow: \"hidden\" as const,\n };\n\n const contextMenuActions = (node.contextMenuItems ?? []).map((item) => ({\n key: item.id,\n label: item.label,\n icon: item.icon,\n isDisabled: item.disabled,\n onClick: () => item.onAction?.(),\n }));\n\n return (\n <Stack gap=\"1px\" w=\"full\" minW=\"0\" maxW=\"full\">\n <ResourceContextMenu actions={contextMenuActions} contentMinWidth=\"180px\">\n {canLink && LinkComponent && node.href ? (\n <LinkComponent to={node.href}>\n <HStack {...rowStyles} onClick={handleClick}>\n <SidebarNodeContent node={node} expanded={expanded} hasChildren={hasChildren} isDisabled={isDisabled} />\n <SidebarRowActions sectionId={sectionId} nodeId={node.id} actions={node.actions ?? []} />\n </HStack>\n </LinkComponent>\n ) : (\n <HStack {...rowStyles} onClick={handleClick}>\n <SidebarNodeContent node={node} expanded={expanded} hasChildren={hasChildren} isDisabled={isDisabled} />\n <SidebarRowActions sectionId={sectionId} nodeId={node.id} actions={node.actions ?? []} />\n </HStack>\n )}\n </ResourceContextMenu>\n\n {expanded\n ? node.children?.map((childNode) => (\n <SidebarNodeRow\n key={childNode.id}\n sectionId={sectionId}\n node={childNode}\n level={level + 1}\n expandedNodes={expandedNodes}\n activeNodeId={activeNodeId}\n linkComponent={LinkComponent}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n />\n ))\n : null}\n </Stack>\n );\n};\n\ninterface SidebarSectionHeaderProps {\n section: SidebarSection;\n collapsible: boolean;\n expanded: boolean;\n onToggle: () => void;\n}\n\nconst SidebarSectionHeader = (props: SidebarSectionHeaderProps) => {\n const { section, collapsible, expanded, onToggle } = props;\n\n return (\n <HStack\n className=\"group\"\n justify=\"space-between\"\n align=\"center\"\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n px=\"1\"\n py=\"2xs\"\n minH=\"7\"\n cursor={collapsible ? \"pointer\" : \"default\"}\n borderRadius=\"xs\"\n _hover={collapsible ? { bg: \"bg.hover\" } : undefined}\n onClick={collapsible ? onToggle : undefined}\n >\n <HStack gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/XS\" textTransform=\"uppercase\" color=\"fg.muted\" letterSpacing=\"0.08em\" truncate>\n {section.label}\n </Text>\n {collapsible ? (\n <Box color=\"fg.muted\" flexShrink={0}>\n <ChevronRight\n size={14}\n style={{ transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n ) : null}\n </HStack>\n <SidebarRowActions sectionId={section.id} actions={section.actions ?? []} />\n </HStack>\n );\n};\n\nexport const SidebarTree = (props: SidebarTreeProps) => {\n const {\n sections,\n expandedSections,\n expandedNodes,\n activeNodeId,\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n } = props;\n\n return (\n <Stack role=\"listbox\" gap=\"md\" w=\"full\" minW=\"0\" maxW=\"full\" overflowX=\"hidden\">\n {sections.map((section) => {\n const collapsible = section.collapsible !== false && section.label !== undefined;\n const sectionExpanded = collapsible ? isExpanded(section.id, expandedSections) : true;\n\n return (\n <Stack key={section.id} gap=\"0\" w=\"full\" minW=\"0\" maxW=\"full\" data-testid={`sidebar-section-${section.id}`}>\n {section.label ? (\n <SidebarSectionHeader\n section={section}\n collapsible={collapsible}\n expanded={sectionExpanded}\n onToggle={() => onToggleSection(section.id)}\n />\n ) : null}\n\n {sectionExpanded ? (\n section.nodes.length > 0 ? (\n <Stack gap=\"1px\" w=\"full\" minW=\"0\" maxW=\"full\">\n {section.nodes.map((node) => (\n <SidebarNodeRow\n key={node.id}\n sectionId={section.id}\n node={node}\n level={0}\n expandedNodes={expandedNodes}\n activeNodeId={activeNodeId}\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n />\n ))}\n </Stack>\n ) : (\n (section.emptyState ?? null)\n )\n ) : null}\n </Stack>\n );\n })}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\n\ninterface SidebarSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\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 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} satisfies SidebarSnapshot;\n\nconst SIDEBAR_STORE_NAMESPACE = \"pstdio/ui/sidebar\";\n\nconst toStorageName = (storageKey: string) => `${SIDEBAR_STORE_NAMESPACE}/${storageKey}`;\n\nconst createNoopStorage = () => ({\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n});\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});\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 reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n storage: createJSONStorage(() => {\n if (typeof globalThis.localStorage === \"undefined\") {\n return createNoopStorage();\n }\n\n return globalThis.localStorage;\n }),\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 px=\"2\" py=\"2\" bg=\"bg\" position=\"sticky\" bottom=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n","import { HStack, IconButton } from \"@chakra-ui/react\";\nimport { PanelLeftClose } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"../panel-header.constants\";\n\ninterface SidebarHeaderProps {\n children?: ReactNode;\n onClose?: () => void;\n}\n\nexport const SidebarHeader = (props: SidebarHeaderProps) => {\n const { children, onClose } = props;\n\n return (\n <HStack\n data-testid=\"sidebar-header\"\n justify=\"space-between\"\n align=\"center\"\n minH={PANEL_HEADER_HEIGHT}\n p=\"2xs\"\n bg=\"bg\"\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n >\n <HStack minW=\"0\" flex=\"1\">\n {children}\n </HStack>\n {onClose ? (\n <IconButton variant=\"ghost\" size=\"sm\" aria-label=\"Hide sidebar\" onClick={onClose}>\n <PanelLeftClose size={16} />\n </IconButton>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect } from \"react\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { SidebarTree } from \"../sidebar-tree/sidebar-tree\";\nimport { useSidebarStore } from \"./sidebar.store\";\nimport type { SidebarProps } from \"./sidebar.types\";\nimport { SidebarFooter } from \"./sidebar-footer\";\nimport { SidebarHeader } from \"./sidebar-header\";\n\nexport const Sidebar = (props: SidebarProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n header,\n footer,\n width = \"240px\",\n closable = true,\n emptyLabel = \"No items available.\",\n defaultExpandedSections,\n linkComponent,\n onNavigate,\n onOpenChange,\n } = props;\n\n const initialState = defaultExpandedSections ? { expandedSections: defaultExpandedSections } : undefined;\n const open = useSidebarStore(storageKey, (state) => state.open, initialState);\n const expandedSections = useSidebarStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidebarStore(storageKey, (state) => state.expandedNodes, initialState);\n const closeSidebar = useSidebarStore(storageKey, (state) => state.closeSidebar, 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 if (!open && closable) {\n return null;\n }\n\n return (\n <Flex\n as=\"aside\"\n data-testid=\"sidebar\"\n direction=\"column\"\n h=\"100%\"\n w={width}\n minW={width}\n maxW={width}\n borderRightWidth=\"1px\"\n borderRightColor=\"border.muted\"\n bg=\"bg\"\n >\n <SidebarHeader onClose={closable ? closeSidebar : undefined}>{header}</SidebarHeader>\n\n <ScrollArea\n flex=\"1\"\n px=\"xs\"\n mt=\"lg\"\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{ style: { minWidth: \"100%\", width: \"100%\" } }}\n >\n <Box w=\"full\" minW=\"0\">\n {sections.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"3\">\n {emptyLabel}\n </Text>\n ) : (\n <SidebarTree\n sections={sections}\n expandedSections={expandedSections}\n expandedNodes={expandedNodes}\n activeNodeId={activeNodeId}\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidebarFooter>{footer}</SidebarFooter>\n </Flex>\n );\n};\n","import { Avatar, Button, HStack, Menu, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, FolderIcon, Moon, Sun } from \"lucide-react\";\nimport { MenuItem } from \"../menu-item\";\n\ninterface SidebarProjectMenuProps {\n name: string;\n projectsLabel: string;\n themeModeLabel: string;\n isDarkMode: boolean;\n onSelectProjects: () => void;\n onToggleThemePreference: () => void;\n}\n\nexport const SidebarProjectMenu = (props: SidebarProjectMenuProps) => {\n const { name, projectsLabel, themeModeLabel, isDarkMode, onSelectProjects, onToggleThemePreference } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button variant=\"ghost\" size=\"sm\" width=\"full\" justifyContent=\"flex-start\">\n <HStack gap=\"2\" minW=\"0\" flex=\"1\">\n <Avatar.Root size=\"2xs\">\n <Avatar.Fallback name={name} />\n </Avatar.Root>\n <Text textStyle=\"label/S/medium\" truncate>\n {name}\n </Text>\n </HStack>\n <ChevronDown size={14} />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"240px\" bg=\"bg\">\n <MenuItem onClick={onSelectProjects} primaryLabel={projectsLabel} leftIcon={FolderIcon} />\n <Menu.Separator />\n <MenuItem\n onClick={onToggleThemePreference}\n primaryLabel={themeModeLabel}\n leftIcon={isDarkMode ? Sun : Moon}\n />\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\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 borderRadius=\"md\" cursor={interactiveCursor}>\n <ChakraSwitch.Thumb 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","export type ViewMode = \"board\" | \"list\";\n\nexport type GroupingField = \"status\" | \"assignee\" | \"none\" | `tag:${string}`;\n\nexport type OrderingField = \"manual\" | \"updated\" | \"title\" | \"ticketId\" | `tag:${string}`;\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport type DisplayProperty = \"id\" | \"status\" | \"assignee\" | \"updated\" | `tag:${string}`;\n\nexport type FilterCategory = \"status\" | \"assignee\" | `tag:${string}`;\n\nexport interface WorkspaceOrdering {\n field: OrderingField;\n direction: SortDirection;\n}\n\nexport interface WorkspaceSettings {\n viewMode: ViewMode;\n columnGrouping: GroupingField;\n rowGrouping: GroupingField;\n ordering: WorkspaceOrdering;\n displayProperties: DisplayProperty[];\n}\n\nexport type FilterState = Partial<Record<FilterCategory, string[]>>;\n\nexport interface WorkspaceOption<TValue extends string> {\n value: TValue;\n label: string;\n}\n\nexport interface WorkspaceFilterOption {\n value: string;\n label: string;\n}\n\nexport interface WorkspaceFilterCategory {\n id: FilterCategory;\n label: string;\n options: WorkspaceFilterOption[];\n}\n\nexport interface WorkspaceTagOption {\n value: string;\n label: string;\n color?: string;\n icon?: string | null;\n}\n\nexport interface WorkspaceTagDefinition {\n name: string;\n label: string;\n options: WorkspaceTagOption[];\n}\n\nexport interface WorkspaceTag {\n name: string;\n value: string;\n}\n\nexport interface WorkspaceTicket {\n id: string;\n ticketId: string;\n title: string;\n status?: string | null;\n statusColor?: string;\n assignee?: string | null;\n tags?: WorkspaceTag[];\n updatedAt?: string | null;\n parentPath?: string[];\n isSubIssue?: boolean;\n}\n\nexport const DEFAULT_WORKSPACE_SETTINGS: WorkspaceSettings = {\n viewMode: \"board\",\n columnGrouping: \"status\",\n rowGrouping: \"none\",\n ordering: {\n field: \"manual\",\n direction: \"asc\",\n },\n displayProperties: [],\n};\n\nexport const DEFAULT_GROUPING_OPTIONS: WorkspaceOption<GroupingField>[] = [\n { value: \"status\", label: \"Status\" },\n { value: \"assignee\", label: \"Assignee\" },\n { value: \"none\", label: \"No grouping\" },\n];\n\nexport const DEFAULT_ORDERING_OPTIONS: WorkspaceOption<OrderingField>[] = [\n { value: \"manual\", label: \"Manual\" },\n { value: \"updated\", label: \"Updated\" },\n { value: \"title\", label: \"Title\" },\n { value: \"ticketId\", label: \"ID\" },\n];\n\nexport const DEFAULT_DISPLAY_PROPERTY_OPTIONS: WorkspaceOption<DisplayProperty>[] = [\n { value: \"id\", label: \"ID\" },\n { value: \"status\", label: \"Status\" },\n { value: \"updated\", label: \"Updated\" },\n];\n\nexport const isTagKey = (key: string): key is `tag:${string}` => key.startsWith(\"tag:\");\n\nexport const toTagName = (key: `tag:${string}`) => key.slice(4);\n","import type { TicketCardBadge, TicketCardTagBadge } from \"./ticket-card\";\nimport type {\n DisplayProperty,\n FilterCategory,\n FilterState,\n GroupingField,\n OrderingField,\n WorkspaceFilterCategory,\n WorkspaceOption,\n WorkspaceTagDefinition,\n WorkspaceTicket,\n} from \"./types\";\nimport { isTagKey, toTagName } from \"./types\";\n\nexport const toTitleCase = (value: string) =>\n value\n .replaceAll(\"_\", \" \")\n .split(\" \")\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => chunk[0]!.toUpperCase() + chunk.slice(1))\n .join(\" \");\n\nconst collectCategoryOptions = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const values = new Set<string>();\n\n for (const ticket of tickets) {\n if (category === \"status\") {\n if (ticket.status) values.add(ticket.status);\n } else if (category === \"assignee\") {\n if (ticket.assignee) values.add(ticket.assignee);\n } else if (isTagKey(category)) {\n const tagName = toTagName(category);\n const tag = ticket.tags?.find((t) => t.name === tagName);\n if (tag) values.add(tag.value);\n }\n }\n\n return [...values]\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n};\n\nexport const buildDefaultFilterCategories = (\n tickets: WorkspaceTicket[],\n tagDefinitions: WorkspaceTagDefinition[],\n): WorkspaceFilterCategory[] => {\n const categories: WorkspaceFilterCategory[] = [\n { id: \"status\", label: \"Status\", options: collectCategoryOptions(tickets, \"status\") },\n { id: \"assignee\", label: \"Assignee\", options: collectCategoryOptions(tickets, \"assignee\") },\n ];\n\n for (const def of tagDefinitions) {\n const categoryId = `tag:${def.name}` as FilterCategory;\n categories.push({\n id: categoryId,\n label: def.label,\n options: def.options.map((o) => ({ value: o.value, label: o.label })),\n });\n }\n\n return categories;\n};\n\nexport const toBadges = (ticket: WorkspaceTicket, displayProperties: DisplayProperty[]): TicketCardBadge[] => {\n const badges: TicketCardBadge[] = [];\n const includes = (property: DisplayProperty) => displayProperties.includes(property);\n\n if (includes(\"status\") && ticket.status) {\n badges.push({ label: ticket.status, color: ticket.statusColor ?? \"gray\" });\n }\n\n if (includes(\"assignee\") && ticket.assignee) {\n badges.push({ label: ticket.assignee, color: \"blue\" });\n }\n\n if (includes(\"updated\") && ticket.updatedAt) {\n badges.push({ label: new Date(ticket.updatedAt).toLocaleDateString(), color: \"gray\" });\n }\n\n return badges;\n};\n\nexport const toTagBadges = (\n ticket: WorkspaceTicket,\n displayProperties: DisplayProperty[],\n tagDefinitions: WorkspaceTagDefinition[],\n): TicketCardTagBadge[] => {\n const tagBadges: TicketCardTagBadge[] = [];\n\n for (const def of tagDefinitions) {\n const displayKey = `tag:${def.name}` as DisplayProperty;\n if (!displayProperties.includes(displayKey)) continue;\n\n const tag = ticket.tags?.find((t) => t.name === def.name);\n const optionDef = tag ? def.options.find((o) => o.value === tag.value) : undefined;\n\n tagBadges.push({\n tagName: def.name,\n label: def.label,\n value: tag?.value ?? null,\n color: optionDef?.color ?? \"purple\",\n options: def.options,\n });\n }\n\n return tagBadges;\n};\n\nexport const buildTagOptions = (tagDefinitions: WorkspaceTagDefinition[]) => ({\n grouping: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<GroupingField>,\n ),\n ordering: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<OrderingField>,\n ),\n display: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<DisplayProperty>,\n ),\n});\n\nexport const orderGroupingOptions = <TValue extends string>(options: WorkspaceOption<TValue>[]) => {\n const noGrouping = options.find((option) => option.value === \"none\");\n if (!noGrouping) {\n return options;\n }\n\n return [noGrouping, ...options.filter((option) => option.value !== \"none\")];\n};\n\nexport const resolveSubGroupingOptions = (options: WorkspaceOption<GroupingField>[], columnGrouping: GroupingField) => {\n if (columnGrouping === \"none\") {\n return options.filter((option) => option.value === \"none\");\n }\n\n return options.filter((option) => option.value === \"none\" || option.value !== columnGrouping);\n};\n\nexport const resolveListDropTargetColumnKey = (columnGrouping: GroupingField, placement?: { columnKey?: string }) => {\n if (columnGrouping === \"none\") {\n return \"all\";\n }\n\n return placement?.columnKey;\n};\n\nexport const resolveKnownColumnKeys = (\n columnGrouping: GroupingField,\n knownColumnKeys: string[] | undefined,\n categories: WorkspaceFilterCategory[],\n filters?: FilterState,\n) => {\n if (columnGrouping === \"none\") {\n return undefined;\n }\n\n const activeValues = filters?.[columnGrouping];\n if (activeValues && activeValues.length > 0) {\n return activeValues;\n }\n\n if (columnGrouping === \"status\") {\n if (knownColumnKeys) {\n return knownColumnKeys;\n }\n }\n\n return categories.find((category) => category.id === columnGrouping)?.options.map((option) => option.value);\n};\n\nexport const omitFilterCategory = (filters: FilterState, category: FilterCategory): FilterState => {\n const next = { ...filters } as Record<string, string[] | undefined>;\n delete next[category];\n return next as FilterState;\n};\n","import {\n Button,\n HStack,\n Icon,\n IconButton,\n Menu,\n Popover,\n Portal,\n SegmentGroup,\n Separator,\n Stack,\n Text,\n} from \"@chakra-ui/react\";\nimport { ArrowDownUp, ChevronDown, KanbanSquare, List, Settings2 } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nimport type { DisplayProperty, GroupingField, OrderingField, WorkspaceOption, WorkspaceSettings } from \"./types\";\nimport { orderGroupingOptions, resolveSubGroupingOptions } from \"./workspace-helpers\";\n\ninterface DisplayMenuProps {\n settings: WorkspaceSettings;\n groupingOptions: WorkspaceOption<GroupingField>[];\n orderingOptions: WorkspaceOption<OrderingField>[];\n displayPropertyOptions: WorkspaceOption<DisplayProperty>[];\n onViewModeChange: (value: WorkspaceSettings[\"viewMode\"]) => void;\n onColumnGroupingChange: (value: GroupingField) => void;\n onRowGroupingChange: (value: GroupingField) => void;\n onOrderingFieldChange: (value: OrderingField) => void;\n onSortDirectionToggle: () => void;\n onDisplayPropertyToggle: (property: DisplayProperty) => void;\n}\n\nconst SectionLabel = (props: { children: string }) => (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n {props.children}\n </Text>\n);\n\nconst Dropdown = <T extends string>(props: {\n label: string;\n value: T;\n options: WorkspaceOption<T>[];\n onSelect: (value: T) => void;\n}) => {\n const orderedOptions = orderGroupingOptions(props.options);\n const selectedLabel = orderedOptions.find((option) => option.value === props.value)?.label ?? props.label;\n const hasNoGrouping = orderedOptions[0]?.value === \"none\";\n\n return (\n <Stack gap=\"2xs\">\n <SectionLabel>{props.label}</SectionLabel>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"sm\" variant=\"outline\" width=\"full\" justifyContent=\"space-between\">\n {selectedLabel}\n <Icon as={ChevronDown} color=\"fg.muted\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"260px\" bg=\"bg\">\n {orderedOptions.map((option, index) => (\n <Fragment key={option.value}>\n {hasNoGrouping && index === 1 ? <Menu.Separator /> : null}\n <Menu.Item value={option.value} onClick={() => props.onSelect(option.value)}>\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n </Menu.Item>\n </Fragment>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Stack>\n );\n};\n\nexport const DisplayMenu = (props: DisplayMenuProps) => {\n const {\n settings,\n groupingOptions,\n orderingOptions,\n displayPropertyOptions,\n onViewModeChange,\n onColumnGroupingChange,\n onRowGroupingChange,\n onOrderingFieldChange,\n onSortDirectionToggle,\n onDisplayPropertyToggle,\n } = props;\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Display settings\" variant=\"ghost\" size=\"sm\">\n <Icon as={Settings2} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"320px\" p=\"sm\" bg=\"bg\">\n <Stack gap=\"sm\">\n <SectionLabel>View</SectionLabel>\n <SegmentGroup.Root\n size=\"sm\"\n value={settings.viewMode}\n onValueChange={(event) => {\n if (!event.value) return;\n onViewModeChange(event.value as WorkspaceSettings[\"viewMode\"]);\n }}\n >\n <SegmentGroup.Indicator />\n <SegmentGroup.Item value=\"list\">\n <SegmentGroup.ItemText>\n <HStack as=\"span\" gap=\"2xs\">\n <List size={14} />\n <span>List</span>\n </HStack>\n </SegmentGroup.ItemText>\n <SegmentGroup.ItemHiddenInput />\n </SegmentGroup.Item>\n <SegmentGroup.Item value=\"board\">\n <SegmentGroup.ItemText>\n <HStack as=\"span\" gap=\"2xs\">\n <KanbanSquare size={14} />\n <span>Board</span>\n </HStack>\n </SegmentGroup.ItemText>\n <SegmentGroup.ItemHiddenInput />\n </SegmentGroup.Item>\n </SegmentGroup.Root>\n\n <Separator />\n\n <Dropdown\n label=\"Grouping\"\n value={settings.columnGrouping}\n options={groupingOptions}\n onSelect={(value) => {\n onColumnGroupingChange(value);\n if (value === \"none\" || value === settings.rowGrouping) {\n onRowGroupingChange(\"none\");\n }\n }}\n />\n\n <Dropdown\n label=\"Sub-grouping\"\n value={settings.rowGrouping}\n options={resolveSubGroupingOptions(groupingOptions, settings.columnGrouping)}\n onSelect={onRowGroupingChange}\n />\n\n <Stack gap=\"2xs\">\n <SectionLabel>Ordering</SectionLabel>\n <HStack gap=\"2xs\">\n <Dropdown\n label=\"Sort by\"\n value={settings.ordering.field}\n options={orderingOptions}\n onSelect={onOrderingFieldChange}\n />\n <IconButton\n mt=\"lg\"\n aria-label=\"Toggle sort direction\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onSortDirectionToggle}\n data-direction={settings.ordering.direction}\n >\n <Icon\n as={ArrowDownUp}\n transform={settings.ordering.direction === \"asc\" ? \"rotate(0deg)\" : \"rotate(180deg)\"}\n />\n </IconButton>\n </HStack>\n </Stack>\n\n <Separator />\n <Stack gap=\"2xs\">\n <SectionLabel>Display properties</SectionLabel>\n <HStack flexWrap=\"wrap\" gap=\"2xs\">\n {displayPropertyOptions.map((option) => {\n const isActive = settings.displayProperties.includes(option.value);\n\n return (\n <Button\n key={option.value}\n size=\"2xs\"\n variant={isActive ? \"solid\" : \"outline\"}\n onClick={() => onDisplayPropertyToggle(option.value)}\n >\n {option.label}\n </Button>\n );\n })}\n </HStack>\n </Stack>\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, IconButton, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { Filter } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { Checkbox } from \"@/components/checkbox\";\n\nimport type { FilterState, WorkspaceFilterCategory } from \"./types\";\n\ninterface FilterMenuProps {\n categories: WorkspaceFilterCategory[];\n filters: FilterState;\n countsByCategory: Record<string, Record<string, number>>;\n onToggleFilterValue: (category: WorkspaceFilterCategory[\"id\"], value: string) => void;\n onClearFilter: (category: WorkspaceFilterCategory[\"id\"]) => void;\n onClearAll: () => void;\n}\n\nconst getActiveFilterCount = (filters: FilterState) =>\n Object.values(filters).reduce((sum, values) => sum + (values?.length ?? 0), 0);\n\nexport const FilterMenu = (props: FilterMenuProps) => {\n const { categories, filters, countsByCategory, onToggleFilterValue, onClearFilter, onClearAll } = props;\n const [activeCategoryId, setActiveCategoryId] = useState<WorkspaceFilterCategory[\"id\"]>(\n categories[0]?.id ?? \"status\",\n );\n\n const activeCategory = categories.find((category) => category.id === activeCategoryId) ?? categories[0];\n\n const activeFilterCount = getActiveFilterCount(filters);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Filter tickets\" variant={activeFilterCount > 0 ? \"outline\" : \"ghost\"} size=\"sm\">\n <HStack gap=\"2xs\">\n <Icon as={Filter} boxSize=\"14px\" />\n {activeFilterCount > 0 ? <Badge variant=\"solid\">{activeFilterCount}</Badge> : null}\n </HStack>\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"560px\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <HStack align=\"stretch\" gap=\"0\" minH=\"320px\">\n <Stack width=\"220px\" borderRightWidth=\"1px\" borderColor=\"border.muted\" p=\"sm\" gap=\"2xs\">\n <HStack justifyContent=\"space-between\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n Filters\n </Text>\n <Button size=\"2xs\" variant=\"ghost\" onClick={onClearAll}>\n Clear all\n </Button>\n </HStack>\n {categories.map((category) => {\n const selectedValues = filters[category.id] ?? [];\n return (\n <Button\n key={category.id}\n variant={activeCategoryId === category.id ? \"subtle\" : \"ghost\"}\n size=\"sm\"\n justifyContent=\"space-between\"\n onClick={() => setActiveCategoryId(category.id)}\n >\n <Text>{category.label}</Text>\n {selectedValues.length > 0 ? <Badge variant=\"subtle\">{selectedValues.length}</Badge> : null}\n </Button>\n );\n })}\n </Stack>\n\n <Stack flex=\"1\" p=\"sm\" gap=\"sm\">\n {activeCategory ? (\n <>\n <HStack justifyContent=\"space-between\">\n <Text textStyle=\"label/S/medium\">{activeCategory.label}</Text>\n <Button size=\"2xs\" variant=\"ghost\" onClick={() => onClearFilter(activeCategory.id)}>\n Clear\n </Button>\n </HStack>\n <Stack gap=\"2xs\">\n {activeCategory.options.map((option) => {\n const checked = (filters[activeCategory.id] ?? []).includes(option.value);\n const count = countsByCategory[activeCategory.id]?.[option.value] ?? 0;\n\n return (\n <Box key={option.value} px=\"xs\" py=\"2xs\" borderRadius=\"sm\" _hover={{ bg: \"bg.hover\" }}>\n <Checkbox\n checked={checked}\n onCheckedChange={() => onToggleFilterValue(activeCategory.id, option.value)}\n >\n <HStack gap=\"2xs\" justifyContent=\"space-between\" width=\"full\">\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {count}\n </Text>\n </HStack>\n </Checkbox>\n </Box>\n );\n })}\n </Stack>\n </>\n ) : null}\n </Stack>\n </HStack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, HStack, Icon, Spinner, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, GitBranchIcon, GitCommitIcon } from \"lucide-react\";\nimport type { MouseEvent } from \"react\";\nimport { DiffBubble } from \"@/components/diff-bubble\";\nimport { type SessionCompletionStatus, SessionIndicator } from \"@/components/session-indicator\";\nimport { Tooltip } from \"@/components/tooltip\";\n\ninterface WorkspaceAttemptStatus {\n name: string;\n color: string;\n description?: string | null;\n}\n\nconst ATTEMPT_STATUS_COLOR_ALIASES: Record<string, string> = {\n amber: \"yellow\",\n};\n\nconst CHAKRA_COLOR_PALETTES = new Set([\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n]);\n\nexport interface WorkspaceBadgeProps {\n workspaceType: \"worktree\" | \"current_branch\";\n initializing?: boolean;\n shorthand?: string;\n attemptStatus?: WorkspaceAttemptStatus;\n sessionStatus?: SessionCompletionStatus;\n showLeadingSessionIndicator?: boolean;\n diffAdditions?: number;\n diffDeletions?: number;\n hasMultipleWorkspaces?: boolean;\n onClick?: () => void;\n onDropdownClick?: () => void;\n onSessionIndicatorClick?: () => void;\n}\n\nconst resolveWorkspaceIcon = (workspaceType: WorkspaceBadgeProps[\"workspaceType\"]) => {\n if (workspaceType === \"current_branch\") {\n return GitCommitIcon;\n }\n\n return GitBranchIcon;\n};\n\nconst resolveAttemptStatusColor = (color: string) => {\n if (color.startsWith(\"#\") || color.startsWith(\"rgb\") || color.startsWith(\"hsl\") || color.startsWith(\"var(\")) {\n return color;\n }\n\n const resolvedColor = ATTEMPT_STATUS_COLOR_ALIASES[color] ?? color;\n if (CHAKRA_COLOR_PALETTES.has(resolvedColor)) {\n return `var(--chakra-colors-${resolvedColor}-500)`;\n }\n\n return resolvedColor;\n};\n\nconst buildAttemptStatusTooltip = (attemptStatus: WorkspaceAttemptStatus | undefined) => {\n if (!attemptStatus) return null;\n\n if (attemptStatus.description) {\n return `${attemptStatus.name}: ${attemptStatus.description}`;\n }\n\n return attemptStatus.name;\n};\n\nconst handleIconClick = (event: MouseEvent<SVGSVGElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst handleBadgeClick = (event: MouseEvent<HTMLSpanElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst LeadingSessionIndicator = (props: {\n sessionStatus?: SessionCompletionStatus;\n onSessionIndicatorClick?: () => void;\n}) => {\n const { sessionStatus, onSessionIndicatorClick } = props;\n\n if (!sessionStatus) {\n return null;\n }\n\n const sessionTooltip = onSessionIndicatorClick ? \"Open latest session\" : \"Latest session status\";\n\n return (\n <Tooltip content={sessionTooltip}>\n <SessionIndicator\n status={sessionStatus}\n boxSize=\"12px\"\n ariaLabel={sessionTooltip}\n cursor=\"pointer\"\n onClick={onSessionIndicatorClick ? (event) => handleIconClick(event, onSessionIndicatorClick) : undefined}\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceTypeIndicator = (props: {\n workspaceType: WorkspaceBadgeProps[\"workspaceType\"];\n initializing: boolean;\n shorthand?: string;\n}) => {\n const { workspaceType, initializing, shorthand } = props;\n const WorkspaceTypeIcon = resolveWorkspaceIcon(workspaceType);\n\n return (\n <HStack as=\"span\" gap=\"0\" alignItems=\"center\" color=\"fg.muted\" flexShrink={0}>\n <Icon\n as={WorkspaceTypeIcon}\n boxSize=\"12px\"\n aria-label={workspaceType === \"worktree\" ? \"Worktree\" : \"Current branch\"}\n />\n {initializing ? <Spinner size=\"xs\" color=\"fg.muted\" /> : null}\n {shorthand ? (\n <Text as=\"span\" textStyle=\"label/XS/regular\" color=\"fg.muted\" flexShrink={0}>\n {shorthand}\n </Text>\n ) : null}\n </HStack>\n );\n};\n\nconst WorkspaceAttemptStatusIndicator = (props: { attemptStatus?: WorkspaceAttemptStatus }) => {\n const { attemptStatus } = props;\n\n if (!attemptStatus) {\n return null;\n }\n\n return (\n <Tooltip content={buildAttemptStatusTooltip(attemptStatus)}>\n <Box\n as=\"span\"\n boxSize=\"8px\"\n borderRadius=\"full\"\n backgroundColor={resolveAttemptStatusColor(attemptStatus.color)}\n flexShrink={0}\n aria-label={`Attempt status ${attemptStatus.name}`}\n data-testid=\"workspace-attempt-status\"\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceDiffTotals = (props: { diffAdditions?: number; diffDeletions?: number }) => {\n const { diffAdditions, diffDeletions } = props;\n\n if (typeof diffAdditions !== \"number\" || typeof diffDeletions !== \"number\") {\n return null;\n }\n\n return (\n <DiffBubble additions={diffAdditions} deletions={diffDeletions} variant=\"ghost\" size=\"small\" fileName={undefined} />\n );\n};\n\nconst WorkspaceDropdownTrigger = (props: { hasMultipleWorkspaces: boolean; onDropdownClick?: () => void }) => {\n const { hasMultipleWorkspaces, onDropdownClick } = props;\n\n if (!hasMultipleWorkspaces) {\n return null;\n }\n\n return (\n <Icon\n as={ChevronDown}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor={onDropdownClick ? \"pointer\" : \"default\"}\n aria-label=\"Workspace selector\"\n onClick={onDropdownClick ? (event) => handleIconClick(event, onDropdownClick) : undefined}\n />\n );\n};\n\nexport const WorkspaceBadge = (props: WorkspaceBadgeProps) => {\n const {\n workspaceType,\n initializing = false,\n shorthand,\n attemptStatus,\n sessionStatus,\n showLeadingSessionIndicator = true,\n diffAdditions,\n diffDeletions,\n hasMultipleWorkspaces = false,\n onClick,\n onDropdownClick,\n onSessionIndicatorClick,\n } = props;\n\n return (\n <HStack\n as=\"span\"\n display=\"inline-flex\"\n gap=\"2xs\"\n alignItems=\"center\"\n minW=\"0\"\n px=\"2px\"\n py=\"1px\"\n borderRadius=\"xs\"\n cursor=\"pointer\"\n transition=\"background-color 0.2s ease-in-out\"\n _hover={{ backgroundColor: \"bg.hover\" }}\n onClick={onClick ? (event) => handleBadgeClick(event, onClick) : undefined}\n data-testid=\"workspace-badge\"\n >\n {showLeadingSessionIndicator ? (\n <LeadingSessionIndicator sessionStatus={sessionStatus} onSessionIndicatorClick={onSessionIndicatorClick} />\n ) : null}\n <WorkspaceTypeIndicator workspaceType={workspaceType} initializing={initializing} shorthand={shorthand} />\n <WorkspaceAttemptStatusIndicator attemptStatus={attemptStatus} />\n <WorkspaceDiffTotals diffAdditions={diffAdditions} diffDeletions={diffDeletions} />\n <WorkspaceDropdownTrigger hasMultipleWorkspaces={hasMultipleWorkspaces} onDropdownClick={onDropdownClick} />\n </HStack>\n );\n};\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n AlertTriangle,\n BookOpen,\n Bug,\n CheckCircle,\n Circle,\n Clock,\n Eye,\n Flag,\n Flame,\n Gauge,\n Lightbulb,\n Shield,\n Sparkles,\n Star,\n Wrench,\n} from \"lucide-react\";\n\nconst TAG_OPTION_ICON_MAP: Record<string, LucideIcon> = {\n circle: Circle,\n bug: Bug,\n sparkles: Sparkles,\n \"book-open\": BookOpen,\n wrench: Wrench,\n gauge: Gauge,\n \"alert-triangle\": AlertTriangle,\n star: Star,\n flag: Flag,\n flame: Flame,\n lightbulb: Lightbulb,\n shield: Shield,\n eye: Eye,\n clock: Clock,\n \"check-circle\": CheckCircle,\n};\n\nexport const getTagOptionIcon = (icon: string | null | undefined) => {\n if (!icon) {\n return null;\n }\n\n return TAG_OPTION_ICON_MAP[icon] ?? null;\n};\n","import { Badge, HStack, Icon, Menu, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\n\nimport { getTagOptionIcon } from \"./tag-option-icon\";\nimport type { WorkspaceTagOption } from \"./types\";\n\ninterface TagBadgeProps {\n value: string | null;\n label?: string;\n color?: string;\n options: WorkspaceTagOption[];\n onValueChange?: (newValue: string) => void;\n}\n\nexport const TagBadge = (props: TagBadgeProps) => {\n const { value, label, color = \"purple\", options, onValueChange } = props;\n const selectedOption = value ? options.find((option) => option.value === value) : undefined;\n const selectedIcon = getTagOptionIcon(selectedOption?.icon);\n\n const displayLabel = value ? (selectedOption?.label ?? value) : (label ?? \"—\");\n\n if (!onValueChange || options.length === 0) {\n return (\n <Badge variant=\"subtle\" colorPalette={color} textStyle=\"label/XS/medium\">\n <HStack as=\"span\" gap=\"1\" alignItems=\"center\">\n {selectedIcon ? <Icon as={selectedIcon} boxSize=\"12px\" /> : null}\n <Text as=\"span\">{displayLabel}</Text>\n </HStack>\n </Badge>\n );\n }\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Badge\n variant=\"subtle\"\n colorPalette={color}\n textStyle=\"label/XS/medium\"\n cursor=\"pointer\"\n _hover={{ opacity: 0.8 }}\n onClick={(event) => event.stopPropagation()}\n >\n <HStack as=\"span\" gap=\"1\" alignItems=\"center\">\n {selectedIcon ? <Icon as={selectedIcon} boxSize=\"12px\" /> : null}\n <Text as=\"span\">{displayLabel}</Text>\n </HStack>\n </Badge>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\" onClick={(event) => event.stopPropagation()}>\n {options.map((option) => {\n const optionIcon = getTagOptionIcon(option.icon);\n\n return (\n <Menu.Item key={option.value} value={option.value} onClick={() => onValueChange(option.value)}>\n {optionIcon ? <Icon as={optionIcon} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n <Text textStyle=\"label/S/regular\" flex=\"1\">\n {option.label}\n </Text>\n {option.value === value && <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" />}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n","import { Badge, HStack, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport type { DragEventHandler } from \"react\";\nimport type { WorkspaceBadgeProps } from \"@/components/workspace-badge\";\nimport { WorkspaceBadge } from \"@/components/workspace-badge\";\nimport { TagBadge } from \"./tag-badge\";\nimport type { WorkspaceTagOption } from \"./types\";\n\nexport interface TicketCardBadge {\n label: string;\n color?: string;\n}\n\nexport interface TicketCardTagBadge {\n tagName: string;\n label: string;\n value: string | null;\n color?: string;\n options: WorkspaceTagOption[];\n}\n\ninterface TicketCardProps {\n ticketId: string;\n parentPath?: string[];\n title: string;\n badges?: TicketCardBadge[];\n tagBadges?: TicketCardTagBadge[];\n workspaceBadge?: WorkspaceBadgeProps;\n isSelected?: boolean;\n draggable?: boolean;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n onTagChange?: (tagName: string, newValue: string) => void;\n}\n\nexport const TicketCard = (props: TicketCardProps) => {\n const {\n ticketId,\n parentPath = [],\n title,\n badges = [],\n tagBadges = [],\n workspaceBadge,\n isSelected = false,\n draggable,\n onDragStart,\n onDragEnd,\n onClick,\n onTagChange,\n } = props;\n\n const hasBadges = badges.length > 0 || tagBadges.length > 0;\n\n return (\n <Stack\n gap=\"xs\"\n padding=\"sm\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n width=\"100%\"\n background=\"bg\"\n transition=\"box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.blue\",\n boxShadow: \"mid\",\n }}\n cursor={draggable ? \"grab\" : onClick ? \"pointer\" : \"default\"}\n draggable={draggable}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onClick={onClick}\n data-selected={isSelected ? \"true\" : undefined}\n data-testid=\"ticket-card\"\n >\n <HStack gap=\"2xs\" flexWrap=\"wrap\" alignItems=\"center\">\n <HStack gap=\"2xs\" flexShrink={0}>\n <Text textStyle=\"label/S/regular\" flexShrink={0}>\n {parentPath.length > 0 && (\n <Text as=\"span\" color=\"subtle\">\n {parentPath.join(\" / \")} /{\" \"}\n </Text>\n )}\n {ticketId}\n </Text>\n {workspaceBadge ? <WorkspaceBadge {...workspaceBadge} /> : null}\n </HStack>\n </HStack>\n\n <HStack align=\"start\" gap=\"2xs\" flexWrap=\"wrap\" minW=\"0\">\n <Text textStyle=\"label/S/regular\" flex=\"1\" minW=\"0\" overflowWrap=\"anywhere\">\n {title}\n </Text>\n </HStack>\n\n {hasBadges && (\n <Wrap gap=\"2xs\">\n {badges.map((badge) => (\n <Badge key={badge.label} variant=\"subtle\" colorPalette={badge.color ?? \"gray\"} textStyle=\"label/XS/medium\">\n {badge.label}\n </Badge>\n ))}\n {tagBadges.map((tag) => (\n <TagBadge\n key={tag.tagName}\n value={tag.value}\n label={tag.label}\n color={tag.value ? tag.color : \"gray\"}\n options={tag.options}\n onValueChange={onTagChange ? (newValue) => onTagChange(tag.tagName, newValue) : undefined}\n />\n ))}\n </Wrap>\n )}\n </Stack>\n );\n};\n","import { Badge, Box, HStack, Icon, IconButton, Menu, Spacer, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight, MoreHorizontal, Plus } from \"lucide-react\";\nimport { type ComponentProps, type ComponentType, type DragEvent, useState } from \"react\";\n\nimport { MenuItem } from \"@/components/menu-item\";\nimport type { ResourceContextAction } from \"@/components/resource-context-menu\";\nimport { ResourceContextMenu } from \"@/components/resource-context-menu\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport { Tooltip } from \"@/components/tooltip\";\n\nimport { TicketCard } from \"./ticket-card\";\n\ntype TicketCardProps = ComponentProps<typeof TicketCard>;\n\nexport interface TicketBoardItem {\n id: string;\n cardProps: Omit<TicketCardProps, \"draggable\" | \"onDragStart\" | \"onDragEnd\" | \"isSelected\">;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface TicketBoardColumnAction {\n id: string;\n label: string;\n icon: ComponentType<{ size?: number | string }>;\n}\n\nexport interface TicketBoardGroup {\n key: string;\n label: string;\n items: TicketBoardItem[];\n}\n\nexport interface TicketBoardColumn {\n id: string;\n label: string;\n color?: string;\n items: TicketBoardItem[];\n groups?: TicketBoardGroup[];\n canDragIn: boolean;\n canDragOut: boolean;\n canCreate: boolean;\n actions: TicketBoardColumnAction[];\n}\n\ninterface TicketBoardProps {\n columns: TicketBoardColumn[];\n selectedItemId?: string | null;\n onMoveItem?: (itemId: string, targetColumnId: string, context?: { beforeItemId?: string }) => void;\n onMoveToGroup?: (itemId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => void;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const TicketBoard = (props: TicketBoardProps) => {\n const { columns, selectedItemId = null, onMoveItem, onMoveToGroup, onCreateStart, onColumnAction } = props;\n\n const [activeColumn, setActiveColumn] = useState<string | null>(null);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const handleDragStart = (itemId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(\"text/plain\", itemId);\n event.dataTransfer.effectAllowed = \"move\";\n };\n\n const handleDragEnd = () => {\n setActiveColumn(null);\n setActiveGroup(null);\n };\n\n const handleDragOver = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(columnId);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveColumn(null);\n };\n\n const handleDrop = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setActiveColumn(null);\n\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n\n onMoveItem?.(itemId, columnId);\n };\n\n return (\n <ScrollArea\n height=\"100%\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ display: \"flex\", alignItems: \"stretch\", gap: \"0\", pb: \"2xs\", minH: \"100%\" }}\n >\n {columns.map((column) => (\n <Stack\n key={column.id}\n data-testid={`board-column-${column.id}`}\n gap=\"xs\"\n _notFirst={{ borderLeft: \"1px solid\", borderColor: \"border.muted\" }}\n background={activeColumn === column.id ? \"bg.subtle\" : \"bg\"}\n transition=\"background 150ms ease\"\n height=\"100%\"\n minH=\"240px\"\n overflow=\"hidden\"\n minW=\"260px\"\n flex=\"1 0 260px\"\n onDragOver={column.canDragIn ? handleDragOver(column.id) : undefined}\n onDragLeave={column.canDragIn ? handleDragLeave : undefined}\n onDrop={column.canDragIn ? handleDrop(column.id) : undefined}\n >\n <ColumnHeader column={column} onCreateStart={onCreateStart} onColumnAction={onColumnAction} />\n\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n verticalScrollbarProps={{ margin: \"0\" }}\n contentProps={{\n spaceY: \"sm\",\n ps: \"xs\",\n pe: \"xs\",\n }}\n >\n {column.groups && column.groups.length > 0\n ? column.groups.map((group) => {\n const groupId = `${column.id}::${group.key}`;\n return (\n <GroupSection\n key={group.key}\n columnId={column.id}\n group={group}\n selectedItemId={selectedItemId}\n canDragIn={column.canDragIn}\n canDragOut={column.canDragOut}\n isDropTarget={activeGroup === groupId}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onGroupDragOver={(event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveGroup(groupId);\n setActiveColumn(null);\n }}\n onGroupDragLeave={(event) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveGroup(null);\n }}\n onGroupDrop={(event, beforeItemId) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveGroup(null);\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n onMoveItem?.(itemId, column.id, { beforeItemId });\n onMoveToGroup?.(itemId, group.key, { beforeItemId });\n }}\n />\n );\n })\n : column.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(column.id);\n }\n : undefined\n }\n onDrop={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onMoveItem?.(itemId, column.id, { beforeItemId: item.id });\n }\n : undefined\n }\n >\n <TicketCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={column.canDragOut}\n onDragStart={column.canDragOut ? handleDragStart(item.id) : undefined}\n onDragEnd={column.canDragOut ? handleDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </ScrollArea>\n </Stack>\n ))}\n </ScrollArea>\n );\n};\n\ninterface ColumnHeaderProps {\n column: TicketBoardColumn;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\ninterface GroupSectionProps {\n columnId: string;\n group: TicketBoardGroup;\n selectedItemId: string | null;\n canDragIn: boolean;\n canDragOut: boolean;\n isDropTarget: boolean;\n onDragStart: (itemId: string) => (event: DragEvent<HTMLDivElement>) => void;\n onDragEnd: () => void;\n onGroupDragOver: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDragLeave: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDrop: (event: DragEvent<HTMLDivElement>, beforeItemId?: string) => void;\n}\n\nconst GroupSection = (props: GroupSectionProps) => {\n const {\n columnId,\n group,\n selectedItemId,\n canDragIn,\n canDragOut,\n isDropTarget,\n onDragStart,\n onDragEnd,\n onGroupDragOver,\n onGroupDragLeave,\n onGroupDrop,\n } = props;\n const [expanded, setExpanded] = useState(true);\n\n return (\n <Stack\n data-column-id={columnId}\n data-group-key={group.key}\n gap=\"0\"\n borderRadius=\"sm\"\n background={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n transition=\"background 150ms ease\"\n onDragOver={canDragIn ? onGroupDragOver : undefined}\n onDragLeave={canDragIn ? onGroupDragLeave : undefined}\n onDrop={canDragIn ? onGroupDrop : undefined}\n >\n <HStack\n px=\"xs\"\n py=\"2xs\"\n gap=\"2xs\"\n cursor=\"pointer\"\n _hover={{ bg: \"bg.hover\" }}\n borderRadius=\"sm\"\n onClick={() => setExpanded((v) => !v)}\n >\n <Box display=\"flex\" alignItems=\"center\" flexShrink={0}>\n <Icon\n as={ChevronRight}\n boxSize=\"14px\"\n color=\"fg.muted\"\n transform={expanded ? \"rotate(90deg)\" : \"rotate(0deg)\"}\n transition=\"transform 0.15s ease\"\n />\n </Box>\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {group.label}\n </Text>\n <Badge variant=\"subtle\" colorPalette=\"gray\" size=\"sm\">\n {group.items.length}\n </Badge>\n </HStack>\n {expanded && (\n <Stack gap=\"sm\" pt=\"xs\">\n {group.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onGroupDrop(event, item.id);\n }\n : undefined\n }\n >\n <TicketCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={canDragOut}\n onDragStart={canDragOut ? onDragStart(item.id) : undefined}\n onDragEnd={canDragOut ? onDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n\nconst ColumnHeader = (props: ColumnHeaderProps) => {\n const { column, onCreateStart, onColumnAction } = props;\n\n return (\n <HStack padding=\"xs\" gap=\"xs\" alignItems=\"center\">\n <Text textStyle=\"label/L/medium\">{column.label}</Text>\n\n <Badge variant=\"subtle\" colorPalette={column.color ?? \"gray\"}>\n {column.items.length}\n </Badge>\n\n <Spacer />\n\n {column.canCreate && onCreateStart && (\n <Tooltip content=\"Create new ticket\">\n <IconButton size=\"2xs\" variant=\"outline\" onClick={() => onCreateStart(column.id)} aria-label=\"Create ticket\">\n <Icon as={Plus} boxSize=\"12px\" />\n </IconButton>\n </Tooltip>\n )}\n\n {column.actions.length > 0 && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={`Column actions for ${column.label}`}>\n <Icon as={MoreHorizontal} boxSize=\"12px\" />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"180px\" bg=\"bg\">\n {column.actions.map((action) => (\n <MenuItem\n key={action.id}\n primaryLabel={action.label}\n leftIcon={action.icon}\n onClick={() => onColumnAction?.(column.id, action.id)}\n />\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n )}\n </HStack>\n );\n};\n","import { Badge, Box, HStack, Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport {\n type ColumnDef,\n type ExpandedState,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n type Row,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { ChevronRight } from \"lucide-react\";\nimport { type ComponentType, type ReactNode, useState } from \"react\";\nimport type { ResourceContextAction } from \"../resource-context-menu\";\nimport { ResourceContextMenu } from \"../resource-context-menu\";\nimport { TagBadge } from \"./tag-badge\";\nimport type { TicketCardBadge, TicketCardTagBadge } from \"./ticket-card\";\n\nexport interface TicketListItem {\n id: string;\n ticketId: string;\n title: string;\n countBadge?: number;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n badges?: TicketCardBadge[];\n tagBadges?: TicketCardTagBadge[];\n date?: string;\n assigneeIcon?: ReactNode;\n children?: TicketListItem[];\n onClick?: () => void;\n onTagChange?: (tagName: string, newValue: string) => void;\n contextMenuActions?: ResourceContextAction[];\n draggable?: boolean;\n onDropTicket?: (ticketId: string) => void;\n}\n\ninterface TicketListProps {\n items: TicketListItem[];\n selectedItemId?: string | null;\n onItemClick?: (item: TicketListItem) => void;\n}\n\nconst INDENT_STEP_PX = 12;\n\nexport const getTicketListIndentation = (depth: number) => {\n if (depth <= 0) {\n return undefined;\n }\n\n return `${depth * INDENT_STEP_PX}px`;\n};\n\nconst columns: ColumnDef<TicketListItem, unknown>[] = [\n {\n id: \"ticket\",\n header: \"\",\n cell: ({ row }) => <TicketCell row={row} />,\n },\n];\n\nexport const TicketList = (props: TicketListProps) => {\n const { items, selectedItemId = null, onItemClick } = props;\n\n const [expanded, setExpanded] = useState<ExpandedState>(true);\n\n const table = useReactTable({\n data: items,\n columns,\n state: { expanded },\n onExpandedChange: setExpanded,\n getSubRows: (row) => row.children,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getRowId: (row) => row.id,\n });\n\n return (\n <Box>\n {table.getRowModel().rows.map((row) => {\n const item = row.original;\n const isSelected = item.id === selectedItemId;\n const canExpand = row.getCanExpand();\n\n return (\n <ResourceContextMenu key={row.id} actions={item.contextMenuActions ?? []}>\n <HStack\n paddingX=\"sm\"\n paddingY=\"xs\"\n gap=\"sm\"\n cursor=\"pointer\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.muted\"\n background={isSelected ? \"bg.active\" : \"transparent\"}\n _hover={{ background: isSelected ? \"bg.active\" : \"bg.hover\" }}\n onClick={() => {\n if (canExpand) {\n row.toggleExpanded();\n } else {\n item.onClick?.();\n onItemClick?.(item);\n }\n }}\n data-selected={isSelected ? \"true\" : undefined}\n draggable={item.draggable}\n onDragStart={(event) => {\n if (!item.draggable) {\n return;\n }\n\n event.dataTransfer.setData(\"text/plain\", item.id);\n event.dataTransfer.effectAllowed = \"move\";\n }}\n onDragOver={(event) => {\n if (!item.onDropTicket) {\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n }}\n onDrop={(event) => {\n if (!item.onDropTicket) {\n return;\n }\n\n event.preventDefault();\n const ticketId = event.dataTransfer.getData(\"text/plain\");\n if (!ticketId || ticketId === item.id) {\n return;\n }\n\n item.onDropTicket(ticketId);\n }}\n >\n {flexRender(row.getVisibleCells()[0].column.columnDef.cell, row.getVisibleCells()[0].getContext())}\n </HStack>\n </ResourceContextMenu>\n );\n })}\n </Box>\n );\n};\n\ninterface TicketCellProps {\n row: Row<TicketListItem>;\n}\n\nconst TicketCell = (props: TicketCellProps) => {\n const { row } = props;\n const item = row.original;\n const depth = row.depth;\n const hasTicketId = item.ticketId.trim().length > 0;\n\n return (\n <HStack gap=\"xs\" flex=\"1\" paddingLeft={getTicketListIndentation(depth)}>\n {row.getCanExpand() ? <ExpandToggle row={row} /> : depth > 0 ? <TreeConnector /> : null}\n\n {item.statusIcon && (\n <Icon as={item.statusIcon} boxSize=\"16px\" color={item.statusColor ?? \"fg.muted\"} flexShrink={0} />\n )}\n\n {hasTicketId && (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0} minW=\"70px\">\n {item.ticketId}\n </Text>\n )}\n\n <Text textStyle=\"label/S/regular\" flex=\"1\" truncate>\n {item.title}\n </Text>\n\n {typeof item.countBadge === \"number\" && (\n <Badge variant=\"subtle\" colorPalette=\"gray\" size=\"sm\" flexShrink={0}>\n {item.countBadge}\n </Badge>\n )}\n\n {((item.badges && item.badges.length > 0) || (item.tagBadges && item.tagBadges.length > 0)) && (\n <Wrap gap=\"2xs\" flexShrink={0}>\n {item.badges?.map((badge) => (\n <Badge key={badge.label} variant=\"subtle\" colorPalette={badge.color ?? \"gray\"} textStyle=\"label/XS/medium\">\n {badge.label}\n </Badge>\n ))}\n {item.tagBadges?.map((tag) => (\n <TagBadge\n key={tag.tagName}\n value={tag.value}\n label={tag.label}\n color={tag.value ? tag.color : \"gray\"}\n options={tag.options}\n onValueChange={item.onTagChange ? (newValue) => item.onTagChange!(tag.tagName, newValue) : undefined}\n />\n ))}\n </Wrap>\n )}\n\n {item.assigneeIcon && <Box flexShrink={0}>{item.assigneeIcon}</Box>}\n\n {item.date && (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" flexShrink={0}>\n {item.date}\n </Text>\n )}\n </HStack>\n );\n};\n\ninterface ExpandToggleProps {\n row: Row<TicketListItem>;\n}\n\nconst ExpandToggle = (props: ExpandToggleProps) => {\n const { row } = props;\n const isExpanded = row.getIsExpanded();\n\n return (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n width=\"16px\"\n height=\"16px\"\n data-expanded={isExpanded ? \"true\" : undefined}\n aria-label={isExpanded ? \"Collapse group\" : \"Expand group\"}\n >\n <Icon\n as={ChevronRight}\n boxSize=\"14px\"\n color=\"fg.muted\"\n transform={isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\"}\n transition=\"transform 0.15s ease\"\n />\n </Box>\n );\n};\n\nconst TreeConnector = () => (\n <Box width=\"16px\" height=\"16px\" position=\"relative\" flexShrink={0}>\n <Box position=\"absolute\" left=\"7px\" top=\"0\" bottom=\"50%\" borderLeftWidth=\"1px\" borderColor=\"border.muted\" />\n <Box position=\"absolute\" left=\"7px\" top=\"50%\" width=\"8px\" borderBottomWidth=\"1px\" borderColor=\"border.muted\" />\n </Box>\n);\n","import {\n type FilterCategory,\n type FilterState,\n type GroupingField,\n isTagKey,\n toTagName,\n type WorkspaceOrdering,\n type WorkspaceTagDefinition,\n type WorkspaceTicket,\n} from \"./types\";\n\ninterface GroupingOptions {\n columnGrouping: GroupingField;\n rowGrouping: GroupingField;\n knownColumnKeys?: string[];\n}\n\ninterface TicketRowGroup {\n key: string;\n label: string;\n tickets: WorkspaceTicket[];\n}\n\ninterface TicketColumnGroup {\n key: string;\n label: string;\n tickets: WorkspaceTicket[];\n rows: TicketRowGroup[];\n}\n\nconst FALLBACK_LABELS: Record<string, string> = {\n status: \"No status\",\n assignee: \"Unassigned\",\n};\n\nconst normalize = (value: string | null | undefined, fallback: string) => {\n if (!value || value.trim() === \"\") {\n return fallback;\n }\n\n return value;\n};\n\nconst getTagValue = (ticket: WorkspaceTicket, tagName: string) =>\n ticket.tags?.find((tag) => tag.name === tagName)?.value ?? null;\n\nconst getGroupingValue = (ticket: WorkspaceTicket, grouping: GroupingField) => {\n if (grouping === \"none\") {\n return \"All\";\n }\n\n if (grouping === \"status\") {\n return normalize(ticket.status, FALLBACK_LABELS.status!);\n }\n\n if (grouping === \"assignee\") {\n return normalize(ticket.assignee, FALLBACK_LABELS.assignee!);\n }\n\n if (isTagKey(grouping)) {\n const tagName = toTagName(grouping);\n const fallback = FALLBACK_LABELS[grouping] ?? `No ${tagName}`;\n return normalize(getTagValue(ticket, tagName), fallback);\n }\n\n return \"All\";\n};\n\nconst compareGroupKey = (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true });\n\nconst orderByDirection = (value: number, direction: WorkspaceOrdering[\"direction\"]) =>\n direction === \"asc\" ? value : value * -1;\n\nexport const orderTickets = (\n tickets: WorkspaceTicket[],\n ordering: WorkspaceOrdering,\n tagDefinitions: WorkspaceTagDefinition[] = [],\n) => {\n if (ordering.field === \"manual\") {\n return tickets;\n }\n\n return [...tickets].sort((a, b) => {\n if (ordering.field === \"updated\") {\n const left = new Date(a.updatedAt ?? 0).getTime();\n const right = new Date(b.updatedAt ?? 0).getTime();\n return orderByDirection(left - right, ordering.direction);\n }\n\n if (ordering.field === \"title\") {\n return orderByDirection(a.title.localeCompare(b.title), ordering.direction);\n }\n\n if (isTagKey(ordering.field)) {\n const tagName = toTagName(ordering.field);\n const def = tagDefinitions.find((d) => d.name === tagName);\n const leftVal = getTagValue(a, tagName);\n const rightVal = getTagValue(b, tagName);\n\n if (def) {\n const toOptionIndex = (value: string | null) => {\n if (value === null) {\n return def.options.length;\n }\n\n const index = def.options.findIndex((o) => o.value === value);\n return index === -1 ? def.options.length + 1 : index;\n };\n\n const leftIndex = toOptionIndex(leftVal);\n const rightIndex = toOptionIndex(rightVal);\n return orderByDirection(leftIndex - rightIndex, ordering.direction);\n }\n\n return orderByDirection(\n (leftVal ?? \"\").localeCompare(rightVal ?? \"\", undefined, { numeric: true }),\n ordering.direction,\n );\n }\n\n return orderByDirection(a.ticketId.localeCompare(b.ticketId, undefined, { numeric: true }), ordering.direction);\n });\n};\n\nexport const groupTickets = (tickets: WorkspaceTicket[], options: GroupingOptions): TicketColumnGroup[] => {\n const { columnGrouping, rowGrouping, knownColumnKeys } = options;\n const groupedByColumn = new Map<string, WorkspaceTicket[]>();\n\n // Seed with known keys so empty columns are preserved\n if (knownColumnKeys) {\n for (const key of knownColumnKeys) {\n groupedByColumn.set(key, []);\n }\n }\n\n for (const ticket of tickets) {\n const key = getGroupingValue(ticket, columnGrouping);\n groupedByColumn.set(key, [...(groupedByColumn.get(key) ?? []), ticket]);\n }\n\n const columnEntries = [...groupedByColumn.entries()].sort(([left], [right]) => compareGroupKey(left, right));\n\n return columnEntries.map(([columnKey, columnTickets]) => {\n if (rowGrouping === \"none\") {\n return {\n key: columnKey,\n label: columnKey,\n tickets: columnTickets,\n rows: [],\n };\n }\n\n const groupedByRow = new Map<string, WorkspaceTicket[]>();\n\n for (const ticket of columnTickets) {\n const rowKey = getGroupingValue(ticket, rowGrouping);\n groupedByRow.set(rowKey, [...(groupedByRow.get(rowKey) ?? []), ticket]);\n }\n\n const rows = [...groupedByRow.entries()]\n .sort(([left], [right]) => compareGroupKey(left, right))\n .map(([rowKey, rowTickets]) => ({\n key: rowKey,\n label: rowKey,\n tickets: rowTickets,\n }));\n\n return {\n key: columnKey,\n label: columnKey,\n tickets: columnTickets,\n rows,\n };\n });\n};\n\nconst getTicketFilterValues = (ticket: WorkspaceTicket, category: FilterCategory): string[] => {\n if (category === \"status\") {\n return [normalize(ticket.status, FALLBACK_LABELS.status!)];\n }\n\n if (category === \"assignee\") {\n return [normalize(ticket.assignee, FALLBACK_LABELS.assignee!)];\n }\n\n if (isTagKey(category)) {\n const tagName = toTagName(category);\n const value = getTagValue(ticket, tagName);\n return value ? [value] : [];\n }\n\n return [];\n};\n\nexport const filterTickets = (tickets: WorkspaceTicket[], filters: FilterState) => {\n const activeFilters = Object.entries(filters).filter(([, values]) => values && values.length > 0);\n\n if (activeFilters.length === 0) {\n return tickets;\n }\n\n return tickets.filter((ticket) =>\n activeFilters.every(([category, values]) => {\n const ticketValues = getTicketFilterValues(ticket, category as FilterCategory);\n return ticketValues.some((value) => values?.includes(value));\n }),\n );\n};\n\nexport const countFilterValues = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const counts: Record<string, number> = {};\n\n for (const ticket of tickets) {\n for (const value of getTicketFilterValues(ticket, category)) {\n counts[value] = (counts[value] ?? 0) + 1;\n }\n }\n\n return counts;\n};\n\nexport type { TicketColumnGroup, TicketRowGroup };\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\n\nimport {\n DEFAULT_WORKSPACE_SETTINGS,\n type DisplayProperty,\n type FilterCategory,\n type FilterState,\n type WorkspaceSettings,\n} from \"./types\";\nimport { omitFilterCategory } from \"./workspace-helpers\";\n\ninterface WorkspaceSnapshot {\n settings: WorkspaceSettings;\n filters: FilterState;\n}\n\ninterface WorkspaceState extends WorkspaceSnapshot {\n setViewMode: (viewMode: WorkspaceSettings[\"viewMode\"]) => void;\n setColumnGrouping: (columnGrouping: WorkspaceSettings[\"columnGrouping\"]) => void;\n setRowGrouping: (rowGrouping: WorkspaceSettings[\"rowGrouping\"]) => void;\n setOrdering: (ordering: WorkspaceSettings[\"ordering\"]) => void;\n setOrderingField: (field: WorkspaceSettings[\"ordering\"][\"field\"]) => void;\n toggleSortDirection: () => void;\n toggleDisplayProperty: (property: WorkspaceSettings[\"displayProperties\"][number]) => void;\n setFilter: (category: FilterCategory, values: string[]) => void;\n toggleFilterValue: (category: FilterCategory, value: string) => void;\n clearFilter: (category: FilterCategory) => void;\n clearAllFilters: () => void;\n reset: () => void;\n}\n\ninterface CreateTicketsWorkspaceStoreOptions {\n storageKey: string;\n initialState?: Partial<WorkspaceSnapshot>;\n}\n\nconst WORKSPACE_STORE_NAMESPACE = \"pstdio/ui/tickets-workspace\";\n\nconst toStorageName = (storageKey: string) => `${WORKSPACE_STORE_NAMESPACE}/${storageKey}`;\n\nconst DEFAULT_SNAPSHOT: WorkspaceSnapshot = {\n settings: DEFAULT_WORKSPACE_SETTINGS,\n filters: {},\n};\n\nconst createNoopStorage = () => ({\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n});\n\nconst toggleValue = (values: string[], value: string) =>\n values.includes(value) ? values.filter((entry) => entry !== value) : [...values, value];\n\nexport const createTicketsWorkspaceStore = (options: CreateTicketsWorkspaceStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = {\n settings: { ...DEFAULT_SNAPSHOT.settings, ...(initialState?.settings ?? {}) },\n filters: initialState?.filters ?? DEFAULT_SNAPSHOT.filters,\n };\n\n return createStore<WorkspaceState>()(\n persist(\n (set) => ({\n ...snapshot,\n setViewMode: (viewMode) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, viewMode },\n })),\n setColumnGrouping: (columnGrouping) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, columnGrouping },\n })),\n setRowGrouping: (rowGrouping) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, rowGrouping },\n })),\n setOrdering: (ordering) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, ordering },\n })),\n setOrderingField: (field) =>\n set((state) => ({\n ...state,\n settings: {\n ...state.settings,\n ordering: {\n ...state.settings.ordering,\n field,\n },\n },\n })),\n toggleSortDirection: () =>\n set((state) => ({\n ...state,\n settings: {\n ...state.settings,\n ordering: {\n ...state.settings.ordering,\n direction: state.settings.ordering.direction === \"asc\" ? \"desc\" : \"asc\",\n },\n },\n })),\n toggleDisplayProperty: (property) =>\n set((state) => {\n const displayProperties = state.settings.displayProperties.includes(property)\n ? state.settings.displayProperties.filter((value) => value !== property)\n : [...state.settings.displayProperties, property];\n\n return {\n ...state,\n settings: {\n ...state.settings,\n displayProperties,\n },\n };\n }),\n setFilter: (category, values) =>\n set((state) => ({\n ...state,\n filters: {\n ...state.filters,\n [category]: values,\n },\n })),\n toggleFilterValue: (category, value) =>\n set((state) => {\n const currentValues = state.filters[category] ?? [];\n const nextValues = toggleValue(currentValues, value);\n const nextFilters =\n nextValues.length === 0\n ? omitFilterCategory(state.filters, category)\n : { ...state.filters, [category]: nextValues };\n\n return { ...state, filters: nextFilters };\n }),\n clearFilter: (category) =>\n set((state) => {\n return {\n ...state,\n filters: omitFilterCategory(state.filters, category),\n };\n }),\n clearAllFilters: () => set((state) => ({ ...state, filters: {} })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n version: 1,\n migrate: (persisted, version) => {\n if (version === 0) {\n const state = persisted as WorkspaceSnapshot;\n // Remove legacy \"labels\" filter category\n const filters = { ...state.filters };\n delete (filters as Record<string, unknown>).labels;\n\n // Remove legacy \"labels\" display property\n const displayProperties = state.settings.displayProperties.filter(\n (p) => p !== (\"labels\" as DisplayProperty),\n );\n\n return {\n ...state,\n settings: { ...state.settings, displayProperties },\n filters,\n };\n }\n return persisted as WorkspaceSnapshot;\n },\n storage: createJSONStorage(() => {\n if (typeof globalThis.localStorage === \"undefined\") {\n return createNoopStorage();\n }\n\n return globalThis.localStorage;\n }),\n partialize: (state) => ({\n settings: state.settings,\n filters: state.filters,\n }),\n },\n ),\n );\n};\n\nconst workspaceStoreRegistry = new Map<string, ReturnType<typeof createTicketsWorkspaceStore>>();\n\nexport const getTicketsWorkspaceStore = (storageKey: string) => {\n const existingStore = workspaceStoreRegistry.get(storageKey);\n if (existingStore) {\n return existingStore;\n }\n\n const store = createTicketsWorkspaceStore({ storageKey });\n workspaceStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useTicketsWorkspaceStore = <T>(storageKey: string, selector: (state: WorkspaceState) => T) => {\n const store = getTicketsWorkspaceStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { WorkspaceState };\n","import { Box, HStack, Stack } from \"@chakra-ui/react\";\n\nimport { EmptyState } from \"@/components/empty-state\";\n\nimport { DisplayMenu } from \"./display-menu\";\nimport { FilterMenu } from \"./filter-menu\";\nimport {\n TicketBoard,\n type TicketBoardColumn,\n type TicketBoardColumnAction,\n type TicketBoardGroup,\n} from \"./ticket-board\";\nimport {\n countFilterValues,\n filterTickets,\n groupTickets,\n orderTickets,\n type TicketColumnGroup,\n} from \"./ticket-grouping\";\nimport { TicketList, type TicketListItem } from \"./ticket-list\";\nimport {\n DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n DEFAULT_GROUPING_OPTIONS,\n DEFAULT_ORDERING_OPTIONS,\n type DisplayProperty,\n type GroupingField,\n type OrderingField,\n type WorkspaceFilterCategory,\n type WorkspaceOption,\n type WorkspaceSettings,\n type WorkspaceTagDefinition,\n type WorkspaceTicket,\n} from \"./types\";\nimport { useTicketsWorkspaceStore } from \"./use-workspace-store\";\nimport {\n buildDefaultFilterCategories,\n buildTagOptions,\n resolveKnownColumnKeys,\n resolveListDropTargetColumnKey,\n toBadges,\n toTagBadges,\n toTitleCase,\n} from \"./workspace-helpers\";\n\ninterface BoardColumnConfig {\n color?: string;\n canDragIn?: boolean;\n canDragOut?: boolean;\n canCreate?: boolean;\n actions?: TicketBoardColumnAction[];\n}\n\ninterface TicketsWorkspaceProps<TTicket extends WorkspaceTicket = WorkspaceTicket> {\n tickets: TTicket[];\n storageKey: string;\n tagDefinitions?: WorkspaceTagDefinition[];\n selectedTicketId?: string | null;\n groupingOptions?: WorkspaceOption<GroupingField>[];\n orderingOptions?: WorkspaceOption<OrderingField>[];\n displayPropertyOptions?: WorkspaceOption<DisplayProperty>[];\n filterCategories?: WorkspaceFilterCategory[];\n knownColumnKeys?: string[];\n emptyTitle?: string;\n emptyDescription?: string;\n onTicketClick?: (ticket: TTicket) => void;\n onTagChange?: (ticketId: string, tagName: string, newValue: string) => void;\n onMoveTicket?: (\n ticketId: string,\n targetColumnId: string,\n context?: { columnGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onMoveToGroup?: (\n ticketId: string,\n targetGroupKey: string,\n context?: { rowGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onCreateTicket?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n}\n\ninterface BuildListItemsInput<TTicket extends WorkspaceTicket> {\n settings: WorkspaceSettings;\n visibleTickets: TTicket[];\n grouped: TicketColumnGroup[];\n tagDefinitions: WorkspaceTagDefinition[];\n onTicketClick?: (ticket: TTicket) => void;\n onTagChange?: (ticketId: string, tagName: string, newValue: string) => void;\n onMoveTicket?: (\n ticketId: string,\n targetColumnId: string,\n context?: { columnGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onMoveToGroup?: (\n ticketId: string,\n targetGroupKey: string,\n context?: { rowGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n}\n\nconst buildListItems = <TTicket extends WorkspaceTicket>(input: BuildListItemsInput<TTicket>): TicketListItem[] => {\n const { settings, visibleTickets, grouped, tagDefinitions, onTicketClick, onTagChange, onMoveTicket, onMoveToGroup } =\n input;\n\n const toListItem = (ticket: TTicket, placement?: { columnKey?: string; rowKey?: string }): TicketListItem => ({\n id: ticket.id,\n ticketId: settings.displayProperties.includes(\"id\") ? ticket.ticketId : \"\",\n title: ticket.title,\n badges: toBadges(ticket, settings.displayProperties),\n tagBadges: toTagBadges(ticket, settings.displayProperties, tagDefinitions),\n onClick: () => onTicketClick?.(ticket),\n onTagChange: onTagChange ? (tagName, newValue) => onTagChange(ticket.id, tagName, newValue) : undefined,\n draggable: Boolean(onMoveTicket),\n onDropTicket:\n settings.ordering.field === \"manual\" && onMoveTicket\n ? (draggedTicketId) => {\n const targetColumnKey = resolveListDropTargetColumnKey(settings.columnGrouping, placement);\n if (!targetColumnKey) {\n return;\n }\n\n onMoveTicket(draggedTicketId, targetColumnKey, {\n columnGrouping: settings.columnGrouping,\n beforeTicketId: ticket.id,\n });\n\n const rowKey = placement?.rowKey;\n if (settings.rowGrouping !== \"none\" && onMoveToGroup && rowKey) {\n onMoveToGroup(draggedTicketId, rowKey, {\n rowGrouping: settings.rowGrouping,\n beforeTicketId: ticket.id,\n });\n }\n }\n : undefined,\n });\n\n const toGroupListItem = (\n group: { key: string; label: string; tickets: WorkspaceTicket[] },\n parent?: { columnKey: string },\n ): TicketListItem => ({\n id: parent ? `group::${parent.columnKey}::${group.key}` : `group::${group.key}`,\n ticketId: \"\",\n title: toTitleCase(group.label),\n countBadge: group.tickets.length,\n onDropTicket:\n onMoveTicket && settings.columnGrouping !== \"none\"\n ? (draggedTicketId) => {\n const columnKey = parent?.columnKey ?? group.key;\n onMoveTicket(draggedTicketId, columnKey, {\n columnGrouping: settings.columnGrouping,\n });\n\n if (settings.rowGrouping !== \"none\" && onMoveToGroup && parent) {\n onMoveToGroup(draggedTicketId, group.key, {\n rowGrouping: settings.rowGrouping,\n });\n }\n }\n : undefined,\n children: orderTickets(group.tickets, settings.ordering, tagDefinitions).map((ticket) =>\n toListItem(ticket as TTicket, {\n columnKey: parent?.columnKey ?? group.key,\n rowKey: parent ? group.key : undefined,\n }),\n ),\n });\n\n if (settings.columnGrouping === \"none\") {\n return orderTickets(visibleTickets, settings.ordering, tagDefinitions).map((ticket) =>\n toListItem(ticket as TTicket),\n );\n }\n\n return grouped.map((group) => {\n if (group.rows.length > 0) {\n return {\n id: `group::${group.key}`,\n ticketId: \"\",\n title: toTitleCase(group.label),\n countBadge: group.tickets.length,\n onDropTicket: onMoveTicket\n ? (draggedTicketId: string) => {\n onMoveTicket(draggedTicketId, group.key, {\n columnGrouping: settings.columnGrouping,\n });\n }\n : undefined,\n children: group.rows.map((row) => toGroupListItem(row, { columnKey: group.key })),\n } satisfies TicketListItem;\n }\n\n return toGroupListItem(group);\n });\n};\n\nexport const TicketsWorkspace = <TTicket extends WorkspaceTicket>(props: TicketsWorkspaceProps<TTicket>) => {\n const {\n tickets,\n storageKey,\n tagDefinitions = [],\n selectedTicketId = null,\n groupingOptions: groupingOptionsProp,\n orderingOptions: orderingOptionsProp,\n displayPropertyOptions: displayPropertyOptionsProp,\n filterCategories,\n knownColumnKeys: knownColumnKeysProp,\n emptyTitle = \"No tickets found\",\n emptyDescription = \"Try changing filters or display settings.\",\n onTicketClick,\n onTagChange,\n onMoveTicket,\n onMoveToGroup,\n onCreateTicket,\n onColumnAction,\n getBoardColumnConfig,\n } = props;\n\n const tagOptions = buildTagOptions(tagDefinitions);\n\n const groupingOptions = groupingOptionsProp ?? [...DEFAULT_GROUPING_OPTIONS, ...tagOptions.grouping];\n const orderingOptions = orderingOptionsProp ?? [...DEFAULT_ORDERING_OPTIONS, ...tagOptions.ordering];\n const displayPropertyOptions = displayPropertyOptionsProp ?? [\n ...DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n ...tagOptions.display,\n ];\n\n const settings = useTicketsWorkspaceStore(storageKey, (state) => state.settings);\n const filters = useTicketsWorkspaceStore(storageKey, (state) => state.filters);\n const setViewMode = useTicketsWorkspaceStore(storageKey, (state) => state.setViewMode);\n const setColumnGrouping = useTicketsWorkspaceStore(storageKey, (state) => state.setColumnGrouping);\n const setRowGrouping = useTicketsWorkspaceStore(storageKey, (state) => state.setRowGrouping);\n const setOrderingField = useTicketsWorkspaceStore(storageKey, (state) => state.setOrderingField);\n const toggleSortDirection = useTicketsWorkspaceStore(storageKey, (state) => state.toggleSortDirection);\n const toggleDisplayProperty = useTicketsWorkspaceStore(storageKey, (state) => state.toggleDisplayProperty);\n const toggleFilterValue = useTicketsWorkspaceStore(storageKey, (state) => state.toggleFilterValue);\n const clearFilter = useTicketsWorkspaceStore(storageKey, (state) => state.clearFilter);\n const clearAllFilters = useTicketsWorkspaceStore(storageKey, (state) => state.clearAllFilters);\n\n const visibleTickets = filterTickets(tickets, filters) as TTicket[];\n\n const categoryOptions = filterCategories ?? buildDefaultFilterCategories(tickets, tagDefinitions);\n\n const countsByCategory = Object.fromEntries(\n categoryOptions.map((category) => [category.id, countFilterValues(tickets, category.id)]),\n );\n\n const knownColumnKeys = resolveKnownColumnKeys(\n settings.columnGrouping,\n knownColumnKeysProp,\n categoryOptions,\n filters,\n );\n\n const grouped = groupTickets(visibleTickets, {\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n knownColumnKeys,\n });\n\n const listItems = buildListItems({\n settings,\n visibleTickets,\n grouped,\n tagDefinitions,\n onTicketClick,\n onTagChange,\n onMoveTicket,\n onMoveToGroup,\n });\n\n const toBoardItems = (tickets: WorkspaceTicket[]) =>\n tickets.map((ticket) => ({\n id: ticket.id,\n cardProps: {\n ticketId: settings.displayProperties.includes(\"id\") ? ticket.ticketId : \"\",\n parentPath: ticket.parentPath,\n title: ticket.title,\n badges: toBadges(ticket, settings.displayProperties),\n tagBadges: toTagBadges(ticket, settings.displayProperties, tagDefinitions),\n onClick: () => onTicketClick?.(ticket as TTicket),\n onTagChange: onTagChange\n ? (tagName: string, newValue: string) => onTagChange(ticket.id, tagName, newValue)\n : undefined,\n },\n }));\n\n const boardColumns: TicketBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedTickets = orderTickets(column.tickets, settings.ordering, tagDefinitions);\n\n const groups: TicketBoardGroup[] | undefined =\n column.rows.length > 0\n ? column.rows.map((row) => ({\n key: row.key,\n label: toTitleCase(row.label),\n items: toBoardItems(orderTickets(row.tickets, settings.ordering, tagDefinitions)),\n }))\n : undefined;\n\n return {\n id: column.key,\n label: column.label,\n color: columnConfig.color,\n canDragIn: columnConfig.canDragIn ?? false,\n canDragOut: columnConfig.canDragOut ?? false,\n canCreate: columnConfig.canCreate ?? false,\n actions: columnConfig.actions ?? [],\n items: toBoardItems(orderedTickets),\n groups,\n } satisfies TicketBoardColumn;\n });\n\n return (\n <Stack gap=\"sm\" height=\"100%\" minH=\"0\">\n <HStack justifyContent=\"flex-end\" gap=\"2xs\">\n <FilterMenu\n categories={categoryOptions}\n filters={filters}\n countsByCategory={countsByCategory}\n onToggleFilterValue={toggleFilterValue}\n onClearFilter={clearFilter}\n onClearAll={clearAllFilters}\n />\n <DisplayMenu\n settings={settings}\n groupingOptions={groupingOptions}\n orderingOptions={orderingOptions}\n displayPropertyOptions={displayPropertyOptions}\n onViewModeChange={setViewMode}\n onColumnGroupingChange={setColumnGrouping}\n onRowGroupingChange={setRowGrouping}\n onOrderingFieldChange={setOrderingField}\n onSortDirectionToggle={toggleSortDirection}\n onDisplayPropertyToggle={toggleDisplayProperty}\n />\n </HStack>\n\n {settings.viewMode === \"board\" ? (\n <Box flex=\"1\" minH=\"0\">\n {boardColumns.length > 0 ? (\n <TicketBoard\n columns={boardColumns}\n selectedItemId={selectedTicketId}\n onMoveItem={(ticketId, targetColumnId, context) =>\n onMoveTicket?.(ticketId, targetColumnId, {\n columnGrouping: settings.columnGrouping,\n beforeTicketId: context?.beforeItemId,\n })\n }\n onMoveToGroup={(ticketId, targetGroupKey, context) =>\n onMoveToGroup?.(ticketId, targetGroupKey, {\n rowGrouping: settings.rowGrouping,\n beforeTicketId: context?.beforeItemId,\n })\n }\n onCreateStart={onCreateTicket}\n onColumnAction={onColumnAction}\n />\n ) : (\n <EmptyState\n title={emptyTitle}\n description={emptyDescription}\n height=\"100%\"\n borderWidth=\"1px\"\n borderRadius=\"md\"\n />\n )}\n </Box>\n ) : listItems.length > 0 ? (\n <TicketList items={listItems} selectedItemId={selectedTicketId} />\n ) : (\n <EmptyState title={emptyTitle} description={emptyDescription} borderWidth=\"1px\" borderRadius=\"md\" />\n )}\n </Stack>\n );\n};\n\nexport type { TicketsWorkspaceProps };\n","export type ThemePreference = \"light\" | \"dark\";\n\nexport const applyThemePreference = (theme: ThemePreference) => {\n if (typeof document === \"undefined\") return;\n\n const root = document.documentElement;\n const body = document.body;\n const opposite = theme === \"dark\" ? \"light\" : \"dark\";\n\n for (const el of [root, body]) {\n if (!el) continue;\n el.classList.remove(opposite);\n el.classList.add(theme);\n el.setAttribute(\"data-theme\", theme);\n el.style.colorScheme = theme;\n }\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport { applyThemePreference, type ThemePreference } from \"./apply-theme-preference\";\n\nconst STORAGE_KEY = \"theme-preference\";\n\nconst ThemePreferenceContext = createContext<ThemePreferenceContextValue | null>(null);\n\ninterface ThemePreferenceContextValue {\n themePreference: ThemePreference;\n setThemePreference: (preference: ThemePreference) => void;\n toggleThemePreference: () => void;\n}\n\ninterface ThemePreferenceProviderProps {\n children: ReactNode;\n initialPreference?: ThemePreference;\n}\n\nexport const getInitialThemePreference = () => {\n if (typeof window === \"undefined\") return \"light\";\n\n const stored = window.localStorage.getItem(STORAGE_KEY);\n if (stored === \"dark\" || stored === \"light\") return stored;\n\n const prefersDark =\n typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n return prefersDark ? \"dark\" : \"light\";\n};\n\nexport const ThemePreferenceProvider = (props: ThemePreferenceProviderProps) => {\n const { children, initialPreference = getInitialThemePreference() } = props;\n const [themePreference, setThemePreference] = useState<ThemePreference>(initialPreference);\n\n useEffect(() => {\n applyThemePreference(themePreference);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(STORAGE_KEY, themePreference);\n }\n }, [themePreference]);\n\n const toggleThemePreference = () => setThemePreference((prev) => (prev === \"dark\" ? \"light\" : \"dark\"));\n\n return (\n <ThemePreferenceContext value={{ themePreference, setThemePreference, toggleThemePreference }}>\n {children}\n </ThemePreferenceContext>\n );\n};\n\nexport const useThemePreference = () => {\n const context = useContext(ThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useThemePreference must be used within a ThemePreferenceProvider\");\n }\n\n return context;\n};\n"],"names":["clampAttachedPanelWidth","width","bounds","min","max","Math","DEFAULT_RESIZABLE_MIN_WIDTH","MIN_CONTENT_WIDTH","AttachedPanel","props","$","_c","children","header","minWidth","rest","t0","t1","resizable","undefined","panelRef","useRef","cleanupDragRef","_temp","resizedWidth","setResizedWidth","useState","resolvedMinWidth","resolvedWidth","t2","t3","Symbol","for","current","useEffect","t4","event","preventDefault","panel","startX","clientX","startWidth","getBoundingClientRect","computedStyle","window","getComputedStyle","minPanelWidth","Number","parseFloat","parentWidth","parentElement","innerWidth","maxPanelWidth","previousCursor","document","body","style","cursor","previousUserSelect","userSelect","handlePointerMove","moveEvent","deltaX","nextWidth","cleanup","removeEventListener","_temp2","addEventListener","once","handleResizeStart","t5","jsx","Box","t6","Flex","t7","jsxs","Breadcrumb","React","forwardRef","ref","LinkComponent","items","separator","separatorGap","linkComponent","length","item","index","last","isInteractive","Boolean","url","onClick","itemContent","title","ChakraBreadcrumb","map","BubbleButton","containerProps","tooltip","isOpen","borderColor","boxShadow","IconButton","button","Tooltip","chakra","BubblePanel","menu","onClose","closeLabel","onPopOut","popOutLabel","height","testId","ariaLabel","HStack","Spacer","SquareArrowOutUpRight","Minus","t8","t9","t10","t11","t12","Portal","customTheme","base","inherit","rules","colors","CodeEditor","defaultCode","code","showLineNumbers","isEditable","language","onChange","disableScroll","enabled","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","tabSize","minimap","fontSize","readOnly","lineNumbers","options","value","Editor","CodeDiffEditor","original","modified","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","DiffEditor","_temp3","_temp4","monaco","editor","defineTheme","monaco_0","setTheme","languages","typescript","typescriptDefaults","setCompilerOptions","JsxEmit","addCommand","KeyMod","CtrlCmd","KeyCode","KeyS","getAction","run","_","ContentPlaceholder","backgroundClip","backgroundImage","display","Label","Text","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","buttonText","notificationText","onDelete","open","handleDelete","Dialog","CloseButton","Stack","Button","DiffCard","diff","isSelected","isExpanded","onToggleExpanded","filePath","newPath","oldPath","additions","deletions","bg","stopPropagation","ChevronDown","ChevronRight","t13","change","t14","t15","DiffBubble","t16","Grid","t17","newContent","oldContent","t18","getDiffPath","DiffDrawer","diffs","selectedDiffPath","scrollRef","collapsedPaths","setCollapsedPaths","Set","virtualizer","useVirtualizer","count","getScrollElement","estimateSize","overscan","findIndex","scrollToIndex","align","ScrollArea","p","spaceY","EmptyState","toggleCollapsed","path","prev","next","has","delete","add","getTotalSize","getVirtualItems","virtualItem","measureElement","transform","start","key","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","fallback","label","ErrorFallback","message","AbsoluteCenter","AlertMessage","menuItemVariantStyles","default","paddingX","paddingY","minHeight","iconSize","primaryTextStyle","secondaryMarginLeft","secondaryTextStyle","compact","MenuItemContent","primaryLabel","tooltipLabel","secondaryLabel","shortcutLabel","leftIcon","rightIcon","leftIconColor","rightIconColor","leftIconSize","rightIconSize","rightIconAriaLabel","rightTooltipLabel","onRightIconClick","tagLabel","tagColorPalette","tagVariant","variant","variantStyles","isRightIconInteractive","handleRightIconMouseDown","event_0","handleRightIconClick","renderIcon","placement","Badge","MenuItem","id","asChild","isDisabled","tabIndex","maxWidth","setRefElement","onMouseDown","onMouseEnter","backgroundColor","resolvedLeftIconSize","resolvedRightIconSize","contentProps","disabled","role","overflow","position","_hover","_focus","textDecoration","color","commonProps","bb0","child","Children","only","isValidElement","ChakraMenuItem","cloneElement","icon","size","Icon","getEntryIcon","entry","isDirectory","isGitRepo","FolderOpen","Folder","FileText","FolderPickerListEntry","selectedPath","selectedPathSet","onEntryClick","isAlreadySelected","handleClick","name","Menu","FolderPickerDialog","description","currentPath","entries","selectedPaths","isLoading","isSelectDisabled","onSelect","onSelectHomeDirectory","onSelectParentDirectory","details","Home","ChevronUp","t19","t20","t21","t22","padding","t23","t24","t25","t26","t27","t28","t29","HorizontalMenuStack","h","px","py","borderBottomWidth","ItemSection","defaultOpen","action","background","Collapsible","e","PANEL_HEADER_HEIGHT","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","type","Spinner","closable","PanelLayout","sidebar","errorLabel","Outlet","PanelSectionLayout","actions","content","minH","getNoticeKey","notice","version","getNoticeTitle","OpenSourceNoticesScreen","notices","productName","productVersion","generatedAt","emptyTitle","emptyDescription","Separator","license","copyright","homepageUrl","sourceUrl","Link","attribution","Properties","Info","ResourceContextMenu","contentMinWidth","contentBackground","positioning","filterSearchableMenuItems","query","normalizedQuery","trim","toLowerCase","filter","searchText","join","includes","shouldResetSearchableMenuQuery","currentListId","nextListId","resolveActiveListConfig","isShowingParent","parentList","childConfig","filterItems","showSearch","searchPlaceholder","emptyState","contentTestId","closeOnSelect","listId","searchInputBorderProps","outline","SearchableMenu","trigger","maxListHeight","lazyMount","onOpenChange","onFocusOutside","portalled","hasParentList","internalOpen","setInternalOpen","setQuery","activeList","setActiveList","inputRef","config","filteredItems","previousListIdRef","timeout","setTimeout","focus","clearTimeout","handleOpenChange","details_0","find","i","handleMenuItemSelect","selectedLabel","selectedIcon","resolvedHeader","shouldShowSeparator","searchInput","InputGroup","Search","Input","event_1","target","T0","T1","overscrollBehavior","Content","Positioner","t30","Root","event_2","item_0","Fragment","resolveSessionIndicatorIcon","status","CircleCheck","CircleAlert","CircleStop","CirclePause","CircleDashed","resolveSessionIndicatorColor","SessionIndicator","boxSize","SearchableActionMenu","menuItems","emptyMenuLabel","onAction","SidebarNodeContent","node","expanded","hasChildren","iconColor","indicator","transition","values","renderSidebarMenuItemIcon","handleSidebarNodeClick","sectionId","isNavigable","onNavigate","onToggleNode","nodeId","intent","navigationIntent","SidebarActionButton","SidebarRowActions","opacity","pointerEvents","SidebarNodeRow","level","expandedNodes","activeNodeId","Array","isArray","isActive","paddingLeft","canLink","href","className","justify","w","minW","maxW","borderRadius","pl","rowStyles","contextMenuItems","contextMenuActions","childNode","SidebarSectionHeader","section","collapsible","onToggle","SidebarTree","sections","expandedSections","onToggleSection","sectionExpanded","nodes","DEFAULT_SNAPSHOT","SIDEBAR_STORE_NAMESPACE","toStorageName","storageKey","createNoopStorage","getItem","setItem","removeItem","toggleId","setExpanded","getPersistedSnapshot","createSidebarStore","initialState","snapshot","createStore","persist","set","openSidebar","closeSidebar","toggleSidebar","toggleSection","toggleNode","setSectionExpanded","setNodeExpanded","reset","storage","createJSONStorage","globalThis","localStorage","partialize","sidebarStoreRegistry","Map","getSidebarStore","existingStore","get","store","useSidebarStore","selector","useStore","SidebarFooter","SidebarHeader","PanelLeftClose","Sidebar","footer","emptyLabel","defaultExpandedSections","_temp5","_temp6","overflowX","state_0","state_1","state_2","state_3","state_4","SidebarProjectMenu","projectsLabel","themeModeLabel","isDarkMode","onSelectProjects","onToggleThemePreference","Avatar","FolderIcon","Sun","Moon","Switch","inputProps","rootRef","thumbLabel","trackLabel","interactiveCursor","ChakraSwitch","off","on","DEFAULT_WORKSPACE_SETTINGS","viewMode","columnGrouping","rowGrouping","ordering","field","direction","displayProperties","DEFAULT_GROUPING_OPTIONS","DEFAULT_ORDERING_OPTIONS","DEFAULT_DISPLAY_PROPERTY_OPTIONS","isTagKey","startsWith","toTagName","slice","toTitleCase","replaceAll","split","chunk","toUpperCase","collectCategoryOptions","tickets","category","ticket","assignee","tagName","tag","tags","t","sort","a","b","localeCompare","numeric","buildDefaultFilterCategories","tagDefinitions","categories","def","categoryId","push","o","toBadges","badges","property","statusColor","updatedAt","Date","toLocaleDateString","toTagBadges","tagBadges","displayKey","optionDef","buildTagOptions","grouping","orderGroupingOptions","noGrouping","option","resolveSubGroupingOptions","resolveListDropTargetColumnKey","columnKey","resolveKnownColumnKeys","knownColumnKeys","filters","activeValues","omitFilterCategory","SectionLabel","Dropdown","T2","T3","orderedOptions","hasNoGrouping","option_0","DisplayMenu","settings","groupingOptions","orderingOptions","displayPropertyOptions","onViewModeChange","onColumnGroupingChange","onRowGroupingChange","onOrderingFieldChange","onSortDirectionToggle","onDisplayPropertyToggle","offset","mainAxis","Settings2","SegmentGroup","List","KanbanSquare","ArrowDownUp","Popover","getActiveFilterCount","Object","reduce","sum","FilterMenu","countsByCategory","onToggleFilterValue","onClearFilter","onClearAll","activeCategoryId","setActiveCategoryId","activeCategory","activeFilterCount","Filter","category_0","selectedValues","checked","Checkbox","ATTEMPT_STATUS_COLOR_ALIASES","amber","CHAKRA_COLOR_PALETTES","resolveWorkspaceIcon","workspaceType","GitCommitIcon","GitBranchIcon","resolveAttemptStatusColor","resolvedColor","buildAttemptStatusTooltip","attemptStatus","handleIconClick","handleBadgeClick","LeadingSessionIndicator","sessionStatus","onSessionIndicatorClick","sessionTooltip","WorkspaceTypeIndicator","initializing","shorthand","WorkspaceTypeIcon","WorkspaceAttemptStatusIndicator","WorkspaceDiffTotals","diffAdditions","diffDeletions","WorkspaceDropdownTrigger","hasMultipleWorkspaces","onDropdownClick","WorkspaceBadge","showLeadingSessionIndicator","TAG_OPTION_ICON_MAP","circle","Circle","bug","Bug","sparkles","Sparkles","BookOpen","wrench","Wrench","gauge","Gauge","AlertTriangle","star","Star","flag","Flag","flame","Flame","lightbulb","Lightbulb","shield","Shield","eye","Eye","clock","Clock","CheckCircle","getTagOptionIcon","TagBadge","onValueChange","selectedOption","displayLabel","optionIcon","Check","TicketCard","ticketId","parentPath","workspaceBadge","draggable","onDragStart","onDragEnd","onTagChange","hasBadges","Wrap","newValue","badge","TicketBoard","columns","selectedItemId","onMoveItem","onMoveToGroup","onCreateStart","onColumnAction","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","handleDragEnd","columnId","dataTransfer","dropEffect","handleDragOver","currentTarget","contains","relatedTarget","handleDragLeave","columnId_0","itemId_0","getData","itemId","handleDrop","alignItems","gap","pb","column","borderLeft","canDragIn","ColumnHeader","margin","ps","pe","groups","group","groupId","GroupSection","canDragOut","event_3","event_4","event_5","beforeItemId","itemId_1","event_6","event_7","itemId_2","cardProps","isDropTarget","onGroupDragOver","onGroupDragLeave","onGroupDrop","canCreate","Plus","MoreHorizontal","setData","effectAllowed","v","INDENT_STEP_PX","getTicketListIndentation","depth","cell","row","TicketCell","TicketList","onItemClick","table","useReactTable","data","onExpandedChange","getSubRows","getCoreRowModel","getExpandedRowModel","getRowId","getRowModel","rows","canExpand","getCanExpand","toggleExpanded","onDropTicket","flexRender","getVisibleCells","columnDef","getContext","hasTicketId","ExpandToggle","TreeConnector","statusIcon","countBadge","assigneeIcon","date","getIsExpanded","FALLBACK_LABELS","normalize","getTagValue","getGroupingValue","compareGroupKey","orderByDirection","orderTickets","left","getTime","right","d","leftVal","rightVal","toOptionIndex","leftIndex","rightIndex","groupTickets","groupedByColumn","columnTickets","groupedByRow","rowKey","rowTickets","getTicketFilterValues","filterTickets","activeFilters","every","some","countFilterValues","counts","WORKSPACE_STORE_NAMESPACE","toggleValue","createTicketsWorkspaceStore","setViewMode","setColumnGrouping","setRowGrouping","setOrdering","setOrderingField","toggleSortDirection","toggleDisplayProperty","setFilter","toggleFilterValue","currentValues","nextValues","nextFilters","clearFilter","clearAllFilters","migrate","persisted","labels","workspaceStoreRegistry","getTicketsWorkspaceStore","useTicketsWorkspaceStore","buildListItems","input","visibleTickets","grouped","onTicketClick","onMoveTicket","toListItem","draggedTicketId","targetColumnKey","beforeTicketId","toGroupListItem","parent","TicketsWorkspace","selectedTicketId","groupingOptionsProp","orderingOptionsProp","displayPropertyOptionsProp","filterCategories","knownColumnKeysProp","onCreateTicket","getBoardColumnConfig","tagOptions","_temp7","_temp8","_temp9","_temp0","_temp1","categoryOptions","fromEntries","listItems","toBoardItems","tickets_0","boardColumns","columnConfig","orderedTickets","targetColumnId","context","ticketId_0","targetGroupKey","context_0","state_5","state_6","state_7","state_8","state_9","applyThemePreference","theme","root","documentElement","opposite","el","classList","remove","setAttribute","colorScheme","STORAGE_KEY","ThemePreferenceContext","createContext","getInitialThemePreference","stored","matchMedia","matches","ThemePreferenceProvider","initialPreference","themePreference","setThemePreference","toggleThemePreference","useThemePreference","useContext","Error"],"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/attached-panel.utils.ts","../src/components/attached-panel.tsx","../src/components/breadcrumb.tsx","../src/components/bubble-button.tsx","../src/components/header.tsx","../src/components/bubble-panel.tsx","../src/components/code-editor.tsx","../src/components/content-placeholder.tsx","../src/components/delete-confirmation-modal.tsx","../src/components/diff-card.tsx","../src/components/diff-drawer.tsx","../src/components/error-boundary.tsx","../src/components/resource-context-menu.tsx","../src/components/searchable-menu.tsx","../src/components/list-row/searchable-action-menu.tsx","../src/components/list-row/list-row-actions.tsx","../src/components/list-row/list-row.tsx","../src/components/folder-picker-dialog.tsx","../src/components/horizontal-menu-stack.tsx","../src/components/item-section.tsx","../src/components/panel-header.constants.ts","../src/components/toaster.tsx","../src/components/layout.tsx","../src/components/open-source-notices-screen.tsx","../src/components/properties.tsx","../src/components/session-indicator.tsx","../src/components/tree-list/tree-list.tsx","../src/components/sidebar/sidebar.store.ts","../src/components/sidebar/sidebar-footer.tsx","../src/components/sidebar/sidebar-header.tsx","../src/components/sidebar/sidebar.tsx","../src/components/sidebar/sidebar-project-menu.tsx","../src/components/switch.tsx","../src/components/tickets/types.ts","../src/components/tickets/workspace-helpers.ts","../src/components/tickets/display-menu.tsx","../src/components/tickets/filter-menu.tsx","../src/components/workspace-badge.tsx","../src/components/tickets/tag-option-icon.ts","../src/components/tickets/tag-badge.tsx","../src/components/tickets/ticket-card.tsx","../src/components/tickets/ticket-board.tsx","../src/components/tickets/ticket-list.tsx","../src/components/tickets/ticket-grouping.ts","../src/components/tickets/use-workspace-store.ts","../src/components/tickets/tickets-workspace.tsx","../src/utils/apply-theme-preference.ts","../src/utils/theme-preference.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.muted\"\n borderRadius=\"sm\"\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.muted\">\n {replies}\n </Box>\n ) : null}\n {composer ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.muted\">\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 \"../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.muted\"\n borderRadius={isInline ? \"0\" : \"sm\"}\n transition=\"border-color 0.12s ease, box-shadow 0.12s ease\"\n _focusWithin={isInline ? undefined : { borderColor: \"blue.border\", boxShadow: \"mid\" }}\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 _focus={{ borderColor: \"transparent\", boxShadow: \"none\", outline: \"none\" }}\n _focusVisible={{ borderColor: \"transparent\", boxShadow: \"none\", outline: \"none\" }}\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 {\n actor,\n icon,\n iconColor = \"fg.muted\",\n iconBackground = \"transparent\",\n timestamp,\n children,\n ...rootProps\n } = props;\n\n return (\n <Timeline.Item gap=\"xs\" minH=\"24px\" paddingX=\"md\" {...rootProps}>\n <Timeline.Connector>\n <Timeline.Separator borderColor=\"border.muted\" />\n <Timeline.Indicator outline=\"none\" shadow=\"none\" border=\"none\" background=\"transparent\">\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","interface AttachedPanelWidthBounds {\n min: number;\n max: number;\n}\n\nexport const clampAttachedPanelWidth = (width: number, bounds: AttachedPanelWidthBounds) => {\n const { min, max } = bounds;\n return Math.min(Math.max(width, min), max);\n};\n","import { Box, Flex, type FlexProps } from \"@chakra-ui/react\";\nimport { type ReactNode, type PointerEvent as ReactPointerEvent, useEffect, useRef, useState } from \"react\";\nimport { clampAttachedPanelWidth } from \"./attached-panel.utils\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\nconst MIN_CONTENT_WIDTH = 320;\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 panelRef = useRef<HTMLDivElement>(null);\n const cleanupDragRef = useRef<() => void>(() => undefined);\n const [resizedWidth, setResizedWidth] = useState<number | null>(null);\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizedWidth === null ? width : `${resizedWidth}px`;\n\n useEffect(() => () => cleanupDragRef.current(), []);\n\n const handleResizeStart = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!resizable || !panelRef.current) {\n return;\n }\n\n event.preventDefault();\n\n const panel = panelRef.current;\n const startX = event.clientX;\n const startWidth = panel.getBoundingClientRect().width;\n const computedStyle = window.getComputedStyle(panel);\n const minPanelWidth = Number.parseFloat(computedStyle.minWidth) || MIN_CONTENT_WIDTH;\n const parentWidth = panel.parentElement?.getBoundingClientRect().width ?? window.innerWidth;\n const maxPanelWidth = Math.max(minPanelWidth, parentWidth - MIN_CONTENT_WIDTH);\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n\n const handlePointerMove = (moveEvent: PointerEvent) => {\n const deltaX = moveEvent.clientX - startX;\n const nextWidth = clampAttachedPanelWidth(startWidth - deltaX, {\n min: minPanelWidth,\n max: maxPanelWidth,\n });\n\n setResizedWidth(nextWidth);\n };\n\n const cleanup = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", cleanup);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n cleanupDragRef.current = () => undefined;\n };\n\n cleanupDragRef.current = cleanup;\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", cleanup, { once: true });\n };\n\n return (\n <Flex\n ref={panelRef}\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 {resizable ? (\n <Box\n role=\"separator\"\n aria-label=\"Resize attached panel\"\n aria-orientation=\"vertical\"\n position=\"absolute\"\n top=\"0\"\n bottom=\"0\"\n left=\"0\"\n width=\"3\"\n transform=\"translateX(-50%)\"\n cursor=\"col-resize\"\n touchAction=\"none\"\n zIndex=\"1\"\n onPointerDown={handleResizeStart}\n />\n ) : null}\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\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\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}>\n {items.map((item, index) => {\n const last = index === items.length - 1;\n const isInteractive = Boolean(item.url || item.onClick);\n let itemContent: React.ReactNode;\n\n if (last && !isInteractive) {\n itemContent = <ChakraBreadcrumb.CurrentLink>{item.title}</ChakraBreadcrumb.CurrentLink>;\n } else if (item.url) {\n itemContent = LinkComponent ? (\n <ChakraBreadcrumb.Link asChild>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n ) : (\n <ChakraBreadcrumb.Link href={item.url}>{item.title}</ChakraBreadcrumb.Link>\n );\n } else if (item.onClick) {\n itemContent = (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n } else {\n itemContent = <ChakraBreadcrumb.Link>{item.title}</ChakraBreadcrumb.Link>;\n }\n\n return (\n <ChakraBreadcrumb.Item key={index}>\n {itemContent}\n {last ? null : (\n <ChakraBreadcrumb.Separator as=\"span\" aria-hidden ml=\"xs\">\n {separator}\n </ChakraBreadcrumb.Separator>\n )}\n </ChakraBreadcrumb.Item>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\ntype BubbleButtonStyleProps = \"boxShadow\" | \"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 boxShadow={isOpen ? \"none\" : \"mid\"}\n transition=\"box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n boxShadow: \"mid\",\n }}\n _active={{ boxShadow: isOpen ? \"none\" : \"mid\" }}\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 { HStack, type StackProps } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport type HeaderVariant = \"main\" | \"narrow\" | \"input\";\n\ninterface HeaderVariantStyles {\n h: string;\n px: string;\n}\n\nconst headerVariantStyles: Record<HeaderVariant, HeaderVariantStyles> = {\n main: {\n h: \"2.5rem\",\n px: \"xs\",\n },\n narrow: {\n h: \"2rem\",\n px: \"xs\",\n },\n input: {\n h: \"3rem\",\n px: \"0\",\n },\n};\n\nexport interface HeaderProps extends Omit<StackProps, \"variant\"> {\n variant?: HeaderVariant;\n}\n\nexport const Header = React.forwardRef<HTMLDivElement, HeaderProps>(function Header(props, ref) {\n const { variant = \"main\", children, ...rest } = props;\n\n return (\n <HStack ref={ref} as=\"header\" alignItems=\"center\" borderWidth=\"0\" {...headerVariantStyles[variant]} {...rest}>\n {children}\n </HStack>\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 \"./header\";\nimport { Tooltip } from \"./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=\"3xl\"\n boxShadow=\"2xl\"\n bg=\"bg\"\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 { DiffEditor, Editor } from \"@monaco-editor/react\";\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n};\n\ninterface CodeEditorProps {\n language: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const { defaultCode, code, showLineNumbers, isEditable, language = \"javascript\", onChange, disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Editor\n width=\"100%\"\n height=\"100%\"\n language={language}\n defaultValue={defaultCode}\n value={code}\n theme={\"ps-theme\"}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={async (editor, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n // Add JSX support\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n\n // Format on cmd+s\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n\n // Run format on the initial value\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n }}\n />\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <DiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={\"ps-theme\"}\n options={options}\n beforeMount={(monaco) => {\n monaco.editor.defineTheme(\"ps-theme\", customTheme);\n }}\n onMount={(_, monaco) => {\n monaco.editor.setTheme(\"ps-theme\");\n\n monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n jsx: monaco.languages.typescript.JsxEmit.React,\n });\n }}\n />\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 { Button, CloseButton, Dialog, Stack, Text } from \"@chakra-ui/react\";\nimport { 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}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose } = 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>{notificationText}</Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"solid\" colorPalette=\"red\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Box, Grid, IconButton, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport { DiffBubble } from \"@/components/diff-bubble\";\nimport { DiffEditor } from \"./diff-editor\";\n\nexport interface Diff {\n change: \"added\" | \"deleted\" | \"modified\" | \"renamed\" | \"copied\" | \"permissionChange\";\n oldPath?: string;\n newPath?: string;\n oldContent?: string;\n newContent?: string;\n additions?: number;\n deletions?: number;\n}\n\ninterface DiffCardProps {\n diff: Diff;\n isSelected?: boolean;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n}\n\nexport const DiffCard = (props: DiffCardProps) => {\n const { diff, isSelected = false, isExpanded = true, onToggleExpanded } = props;\n\n const filePath = diff.newPath || diff.oldPath || \"unknown\";\n\n const additions = diff.additions ?? 0;\n const deletions = diff.deletions ?? 0;\n\n return (\n <Box\n border=\"1px solid\"\n borderColor={isSelected ? \"border.accent\" : \"border.muted\"}\n borderRadius=\"xs\"\n overflow=\"hidden\"\n bg={isSelected ? \"bg.active\" : \"bg\"}\n width=\"100%\"\n maxW=\"100%\"\n transition=\"border-color 0.14s ease\"\n _hover={{ borderColor: \"border.accent\" }}\n >\n <Grid\n templateColumns=\"auto minmax(0, 1fr) auto\"\n px=\"xs\"\n py=\"2xs\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderBottom={isExpanded ? \"1px solid\" : \"none\"}\n borderColor=\"border.muted\"\n cursor=\"pointer\"\n transition=\"background 0.14s ease\"\n _hover={{ bg: isSelected ? \"bg.active\" : \"bg.subtle\" }}\n onClick={() => onToggleExpanded?.()}\n gap=\"sm\"\n >\n <IconButton\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n onToggleExpanded?.();\n }}\n flexShrink={0}\n >\n {isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />}\n </IconButton>\n\n <Box minW={0} overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" title={filePath}>\n {diff.change === \"renamed\" ? (\n <Text as=\"span\" textStyle=\"sm\">\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" mr=\"xs\">\n {diff.oldPath}\n </Text>\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" verticalAlign=\"middle\" mr=\"xs\">\n <ChevronRight size={12} />\n </Box>\n {diff.newPath}\n </Text>\n ) : diff.change === \"deleted\" ? (\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" textStyle=\"sm\">\n {filePath}\n </Text>\n ) : (\n <Text as=\"span\" textStyle=\"sm\">\n {filePath}\n </Text>\n )}\n </Box>\n\n <Box flexShrink={0}>\n <DiffBubble variant=\"ghost\" additions={additions} deletions={deletions} />\n </Box>\n </Grid>\n\n {isExpanded && (\n <Box bg=\"bg\">\n <DiffEditor\n original={diff.oldContent || \"\"}\n modified={diff.newContent || \"\"}\n oldPath={diff.oldPath}\n newPath={diff.newPath}\n sideBySide={false}\n />\n </Box>\n )}\n </Box>\n );\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { type Diff, DiffCard } from \"./diff-card\";\nimport { EmptyState } from \"./empty-state\";\nimport { ScrollArea } from \"./scroll-area\";\n\ninterface DiffDrawerProps {\n diffs: Diff[];\n selectedDiffPath?: string | null;\n}\n\nexport type { Diff };\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nexport function DiffDrawer(props: DiffDrawerProps) {\n const { diffs, selectedDiffPath = null } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const [collapsedPaths, setCollapsedPaths] = useState<Set<string>>(() => new Set());\n\n const virtualizer = useVirtualizer({\n count: diffs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => 42,\n overscan: 5,\n });\n\n useEffect(() => {\n if (!selectedDiffPath) return;\n\n const index = diffs.findIndex((diff) => getDiffPath(diff) === selectedDiffPath);\n if (index < 0) return;\n\n virtualizer.scrollToIndex(index, { align: \"start\" });\n }, [selectedDiffPath, diffs, virtualizer]);\n\n if (diffs.length === 0) {\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\">\n <ScrollArea flex=\"1\" minH=\"0\" contentProps={{ p: \"xs\", spaceY: \"xs\" }}>\n <EmptyState title=\"No changes detected\" description=\"Make some changes to see the diff here.\" paddingY=\"sm\" />\n </ScrollArea>\n </Stack>\n );\n }\n\n const toggleCollapsed = (path: string) => {\n setCollapsedPaths((prev) => {\n const next = new Set(prev);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n });\n };\n\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\">\n <Box position=\"relative\" flex=\"1\" minH=\"0\">\n <ScrollArea position=\"absolute\" inset=\"0\" viewportRef={scrollRef} contentProps={{ p: \"xs\" }}>\n <Box position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualItem) => {\n const diff = diffs[virtualItem.index];\n const path = getDiffPath(diff);\n\n return (\n <Box\n key={virtualItem.key}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n pb=\"xs\"\n style={{ transform: `translateY(${virtualItem.start}px)` }}\n >\n <DiffCard\n diff={diff}\n isSelected={selectedDiffPath === path}\n isExpanded={!collapsedPaths.has(path)}\n onToggleExpanded={() => toggleCollapsed(path)}\n />\n </Box>\n );\n })}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n );\n}\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"./alert\";\nimport { ContentPlaceholder } from \"./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=\"solid\" colorScheme={\"black\"} onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import { Menu, Portal } from \"@chakra-ui/react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { ListRow } from \"./list-row/list-row\";\n\ntype MenuRootProps = ComponentProps<typeof Menu.Root>;\n\nexport interface ResourceContextAction {\n key: string;\n label: string;\n onClick: () => void;\n isDisabled?: boolean;\n icon?: ReactNode;\n}\n\ninterface ResourceContextMenuProps {\n actions: ResourceContextAction[];\n children: ReactNode;\n contentMinWidth?: string;\n contentBackground?: string;\n positioning?: MenuRootProps[\"positioning\"];\n}\n\nexport const ResourceContextMenu = (props: ResourceContextMenuProps) => {\n const {\n actions,\n children,\n contentMinWidth = \"220px\",\n contentBackground = \"bg\",\n positioning = { placement: \"bottom-start\" },\n } = props;\n\n if (actions.length === 0) {\n return <>{children}</>;\n }\n\n return (\n <Menu.Root positioning={positioning}>\n <Menu.ContextTrigger asChild>{children}</Menu.ContextTrigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content minW={contentMinWidth} bg={contentBackground}>\n {actions.map((action) => (\n <Menu.Item key={action.key} value={action.key} asChild>\n <ListRow\n asChild\n variant=\"compact\"\n label={action.label}\n icon={action.icon}\n disabled={action.isDisabled}\n onActivate={action.onClick}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { Box, Icon, Input, InputGroup, Menu, Portal } from \"@chakra-ui/react\";\nimport { ChevronDown, Search } from \"lucide-react\";\nimport { type ElementType, type ReactNode, useEffect, useRef, useState } from \"react\";\nimport { Header } from \"./header\";\nimport { ListRow } from \"./list-row/list-row\";\nimport type { ListRowItem } from \"./list-row/list-row.types\";\nimport { ScrollArea } from \"./scroll-area\";\n\ntype MenuRootProps = React.ComponentProps<typeof Menu.Root>;\ntype MenuContentProps = React.ComponentProps<typeof Menu.Content>;\n\nexport interface SearchableMenuItem {\n id: string;\n label: string;\n searchText?: string;\n secondaryLabel?: string;\n tooltipLabel?: ReactNode;\n icon?: ElementType;\n variant?: \"default\" | \"compact\";\n isDisabled?: boolean;\n isSelected?: boolean;\n onSelect?: () => void;\n}\n\nexport interface SearchableMenuParentList<T extends SearchableMenuItem> {\n items: T[];\n selectedLabel: string;\n selectedIcon?: ElementType;\n ariaLabel?: string;\n disabled?: boolean;\n emptyState?: ReactNode;\n filterItems?: (items: T[], query: string) => T[];\n searchPlaceholder?: string;\n showSearch?: boolean;\n contentTestId?: string;\n onSelect?: (item: T) => void;\n}\n\ninterface ListConfig<T extends SearchableMenuItem> {\n items: T[];\n filterItems: (items: T[], query: string) => T[];\n showSearch: boolean;\n searchPlaceholder: string;\n emptyState: ReactNode;\n contentTestId?: string;\n closeOnSelect: boolean;\n listId: string;\n}\n\ninterface SearchableMenuProps<T extends SearchableMenuItem> {\n trigger: ReactNode;\n items: T[];\n searchPlaceholder: string;\n emptyState: ReactNode;\n filterItems?: (items: T[], query: string) => T[];\n listId?: string;\n header?: ReactNode;\n width?: MenuContentProps[\"width\"];\n maxListHeight?: string;\n showSearch?: boolean;\n closeOnSelect?: MenuRootProps[\"closeOnSelect\"];\n lazyMount?: MenuRootProps[\"lazyMount\"];\n open?: MenuRootProps[\"open\"];\n positioning?: MenuRootProps[\"positioning\"];\n onOpenChange?: MenuRootProps[\"onOpenChange\"];\n onFocusOutside?: MenuRootProps[\"onFocusOutside\"];\n contentTestId?: string;\n portalled?: boolean;\n parentList?: SearchableMenuParentList<T>;\n}\n\nexport const filterSearchableMenuItems = <T extends SearchableMenuItem>(items: T[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return items;\n }\n\n return items.filter((item) => {\n const content = [item.label, item.searchText].filter(Boolean).join(\" \").toLowerCase();\n return content.includes(normalizedQuery);\n });\n};\n\nexport const shouldResetSearchableMenuQuery = (currentListId?: string, nextListId?: string) => {\n if (!currentListId || !nextListId) {\n return false;\n }\n\n return currentListId !== nextListId;\n};\n\nexport const resolveActiveListConfig = <T extends SearchableMenuItem>(\n isShowingParent: boolean,\n parentList: SearchableMenuParentList<T> | undefined,\n childConfig: ListConfig<T>,\n): ListConfig<T> => {\n if (!isShowingParent || !parentList) {\n return childConfig;\n }\n\n return {\n items: parentList.items,\n filterItems: parentList.filterItems ?? childConfig.filterItems,\n showSearch: parentList.showSearch ?? childConfig.showSearch,\n searchPlaceholder: parentList.searchPlaceholder ?? childConfig.searchPlaceholder,\n emptyState: parentList.emptyState ?? childConfig.emptyState,\n contentTestId: parentList.contentTestId ?? childConfig.contentTestId,\n closeOnSelect: false,\n listId: \"parent\",\n };\n};\n\nconst searchInputBorderProps = {\n borderColor: \"border.muted\",\n boxShadow: \"none\",\n outline: \"none\",\n} as const;\n\nexport const SearchableMenu = <T extends SearchableMenuItem>(props: SearchableMenuProps<T>) => {\n const {\n trigger,\n items,\n searchPlaceholder,\n emptyState,\n filterItems = filterSearchableMenuItems,\n listId,\n header,\n width = \"260px\",\n maxListHeight = \"18rem\",\n showSearch = true,\n closeOnSelect = true,\n lazyMount = false,\n open,\n positioning,\n onOpenChange,\n onFocusOutside,\n contentTestId,\n portalled = true,\n parentList,\n } = props;\n const hasParentList = Boolean(parentList);\n const [internalOpen, setInternalOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const [activeList, setActiveList] = useState<\"child\" | \"parent\">(\"child\");\n const inputRef = useRef<HTMLInputElement>(null);\n const isOpen = open ?? internalOpen;\n const isShowingParent = hasParentList && activeList === \"parent\";\n\n const childConfig: ListConfig<T> = {\n items,\n filterItems,\n showSearch,\n searchPlaceholder,\n emptyState,\n contentTestId,\n closeOnSelect,\n listId: hasParentList ? \"child\" : (listId ?? \"\"),\n };\n\n const config = resolveActiveListConfig(isShowingParent, parentList, childConfig);\n const filteredItems = config.filterItems(config.items, query);\n const previousListIdRef = useRef(config.listId);\n\n useEffect(() => {\n if (!isOpen) {\n previousListIdRef.current = config.listId;\n return;\n }\n\n if (shouldResetSearchableMenuQuery(previousListIdRef.current, config.listId)) {\n setQuery(\"\");\n }\n\n previousListIdRef.current = config.listId;\n }, [isOpen, config.listId]);\n\n useEffect(() => {\n if (!isOpen || !config.showSearch) {\n return;\n }\n\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [isOpen, config.showSearch]);\n\n const handleOpenChange: NonNullable<MenuRootProps[\"onOpenChange\"]> = (details) => {\n if (open === undefined) {\n setInternalOpen(details.open);\n }\n\n setQuery(\"\");\n\n if (details.open && hasParentList) {\n setActiveList(\"child\");\n }\n\n onOpenChange?.(details);\n };\n\n const handleMenuItemSelect = (details: { value: string }) => {\n if (!isShowingParent || !parentList) return;\n\n const item = parentList.items.find((i) => i.id === details.value);\n if (!item) return;\n\n parentList.onSelect?.(item);\n setActiveList(\"child\");\n };\n\n const renderIcon = (icon: ElementType | undefined) => (icon ? <Icon as={icon} boxSize=\"14px\" /> : undefined);\n\n const buildRowItem = (item: T): ListRowItem => ({\n id: item.id,\n label: item.label,\n description: item.secondaryLabel,\n icon: renderIcon(item.icon),\n disabled: item.isDisabled,\n tooltip: item.tooltipLabel,\n });\n\n const parentListHeader = parentList ? (\n <Header\n as=\"div\"\n role=\"button\"\n aria-label={parentList.ariaLabel}\n aria-disabled={parentList.disabled || undefined}\n tabIndex={parentList.disabled ? -1 : 0}\n variant=\"narrow\"\n px=\"0\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.muted\"\n flexShrink={0}\n onPointerDownCapture={(event) => event.stopPropagation()}\n onClickCapture={(event) => {\n event.stopPropagation();\n if (parentList.disabled) return;\n setActiveList((current) => (current === \"child\" ? \"parent\" : \"child\"));\n }}\n >\n <ListRow\n variant=\"compact\"\n id=\"__parent-toggle\"\n label={parentList.selectedLabel}\n icon={renderIcon(parentList.selectedIcon)}\n disabled={parentList.disabled}\n endContent={parentList.disabled ? undefined : <Icon as={ChevronDown} boxSize=\"14px\" />}\n />\n </Header>\n ) : null;\n\n const resolvedHeader = parentList ? parentListHeader : header;\n const shouldShowSeparator = Boolean(resolvedHeader) && !config.showSearch;\n\n const searchInput = config.showSearch ? (\n <Header variant=\"input\" borderBottomWidth=\"1px\" borderColor=\"border.muted\" flexShrink={0}>\n <InputGroup startElement={<Search size={14} />} width=\"full\">\n <Input\n ref={inputRef}\n borderWidth=\"0\"\n borderRadius=\"0\"\n height=\"full\"\n value={query}\n placeholder={config.searchPlaceholder}\n aria-label={config.searchPlaceholder}\n autoComplete=\"off\"\n _hover={searchInputBorderProps}\n _active={searchInputBorderProps}\n _focus={searchInputBorderProps}\n _focusVisible={searchInputBorderProps}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </InputGroup>\n </Header>\n ) : null;\n\n return (\n <Menu.Root\n lazyMount={lazyMount}\n closeOnSelect={config.closeOnSelect}\n open={open}\n positioning={positioning}\n onOpenChange={handleOpenChange}\n onFocusOutside={onFocusOutside}\n onSelect={hasParentList ? handleMenuItemSelect : undefined}\n >\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n <Portal disabled={!portalled}>\n <Menu.Positioner>\n <Menu.Content w={width} bg=\"bg\" gap=\"0\" p=\"0\" zIndex=\"popover\">\n {resolvedHeader}\n {searchInput}\n {shouldShowSeparator ? <Menu.Separator margin=\"0\" /> : null}\n <ScrollArea\n maxH={maxListHeight}\n data-testid={config.contentTestId}\n viewportProps={{ overscrollBehavior: \"contain\" }}\n p=\"0\"\n gap=\"0\"\n >\n {filteredItems.length > 0\n ? filteredItems.map((item) => (\n <Menu.Item key={item.id} value={item.id} disabled={item.isDisabled} onClick={item.onSelect} asChild>\n <Box\n bg=\"transparent\"\n h=\"auto\"\n p=\"0\"\n _hover={{ bg: \"transparent\" }}\n _focus={{ bg: \"transparent\" }}\n _active={{ bg: \"transparent\" }}\n >\n <ListRow\n asChild\n {...buildRowItem(item)}\n variant={item.variant ?? \"compact\"}\n isSelected={item.isSelected}\n />\n </Box>\n </Menu.Item>\n ))\n : config.emptyState}\n </ScrollArea>\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n );\n};\n","import { IconButton, Menu } from \"@chakra-ui/react\";\nimport { SearchableMenu } from \"../searchable-menu\";\nimport { ListRow } from \"./list-row\";\nimport type { ListRowAction } from \"./list-row.types\";\n\ninterface SearchableActionMenuProps {\n action: ListRowAction;\n}\n\nexport const SearchableActionMenu = (props: SearchableActionMenuProps) => {\n const { action } = props;\n const items = (action.menuItems ?? []).map((item) => ({\n id: item.id,\n label: item.label,\n searchText: [item.label, item.description].filter(Boolean).join(\" \"),\n tooltipLabel: item.description,\n variant: \"compact\" as const,\n onSelect: () => item.onAction?.(),\n }));\n\n return (\n <SearchableMenu\n trigger={\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n }\n items={items}\n searchPlaceholder={action.searchPlaceholder ?? \"Search...\"}\n emptyState={\n <Menu.Item value=\"empty\" asChild>\n <ListRow asChild variant=\"compact\" label={action.emptyMenuLabel ?? \"No results found\"} disabled />\n </Menu.Item>\n }\n onFocusOutside={(event) => event.preventDefault()}\n />\n );\n};\n","import { Box, HStack, IconButton, Menu } from \"@chakra-ui/react\";\nimport { Tooltip } from \"../tooltip\";\nimport type { ListRowAction } from \"./list-row.types\";\nimport { SearchableActionMenu } from \"./searchable-action-menu\";\n\ninterface RowActionsProps {\n actions: ListRowAction[];\n context: { sectionId?: string; nodeId?: string };\n}\n\nexport const RowActions = (props: RowActionsProps) => {\n const { actions, context } = props;\n if (actions.length === 0) return null;\n\n return (\n <HStack\n gap=\"0\"\n opacity=\"0\"\n pointerEvents=\"none\"\n _groupHover={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: \"1\", pointerEvents: \"auto\" }}\n transition=\"opacity 120ms ease\"\n onClick={(event) => event.stopPropagation()}\n >\n {actions.map((action) => {\n if (action.menuItems && action.menuItems.length >= 8) {\n return <SearchableActionMenu key={action.id} action={action} />;\n }\n\n if (action.menuItems && action.menuItems.length > 0) {\n return (\n <Menu.Root key={action.id}>\n <Menu.Trigger asChild>\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\">\n {action.menuItems.map((item) => (\n <Tooltip key={item.id} content={item.description} disabled={!item.description} openDelay={300}>\n <Menu.Item value={item.id} disabled={item.disabled} onClick={() => item.onAction?.()}>\n {item.icon ? <Box mr=\"2\">{item.icon as never}</Box> : null}\n {item.label}\n </Menu.Item>\n </Tooltip>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n }\n\n return (\n <IconButton\n key={action.id}\n variant=\"ghost\"\n size=\"2xs\"\n aria-label={action.label}\n onClick={(event) => {\n event.stopPropagation();\n action.onAction?.(context);\n }}\n >\n {action.icon}\n </IconButton>\n );\n })}\n </HStack>\n );\n};\n","import { Box, chakra, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { forwardRef, type ReactElement, type MouseEvent as ReactMouseEvent } from \"react\";\nimport { ResourceContextMenu } from \"../resource-context-menu\";\nimport { Tooltip } from \"../tooltip\";\nimport type { ListRowItem, ListRowProps, ListRowVariant, RowContentProps } from \"./list-row.types\";\nimport { RowActions } from \"./list-row-actions\";\n\nconst RowContent = (props: RowContentProps) => {\n const { item, isExpanded, showChevron, isDisabled, variant, tone } = props;\n const isDenseVariant = variant === \"compact\" || variant === \"tree\";\n const labelTextStyle = isDenseVariant ? \"label/S/regular\" : \"label/M/regular\";\n const descriptionTextStyle = isDenseVariant ? \"label/XS\" : \"label/S/regular\";\n const descriptionMarginLeft = isDenseVariant ? \"0\" : \"2px\";\n\n const labelColor = (() => {\n if (isDisabled) return \"fg.muted\";\n if (tone === \"danger\") return \"red.500\";\n return \"fg\";\n })();\n const iconColor = item.iconColor ?? (tone === \"danger\" ? \"red.500\" : \"fg.muted\");\n const descriptionColor = tone === \"danger\" ? \"red.400\" : \"fg.menu-item.secondary\";\n\n return (\n <HStack gap=\"2\" minW=\"0\" flex=\"1\" overflow=\"hidden\" alignItems=\"center\">\n {showChevron ? (\n <Box color=\"fg.muted\" flexShrink={0} display=\"flex\" alignItems=\"center\">\n <ChevronRight\n size={12}\n style={{ transform: isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n ) : null}\n <Stack gap=\"2xs\" minW=\"0\" flex=\"1\">\n <HStack gap=\"2\" minW=\"0\" alignItems=\"center\">\n {item.icon ? (\n <Box color={iconColor} flexShrink={0}>\n {item.icon}\n </Box>\n ) : null}\n {item.indicator ? (\n <Tooltip content={item.indicator.tooltip} disabled={!item.indicator.tooltip} openDelay={300}>\n <Box color={item.indicator.color ?? \"fg.muted\"} flexShrink={0}>\n {item.indicator.icon}\n </Box>\n </Tooltip>\n ) : null}\n {typeof item.label === \"string\" ? (\n <Text textStyle={labelTextStyle} color={labelColor} truncate>\n {item.label}\n </Text>\n ) : (\n <Box minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {item.label}\n </Box>\n )}\n </HStack>\n {item.description ? (\n typeof item.description === \"string\" ? (\n <Text ml={descriptionMarginLeft} textStyle={descriptionTextStyle} color={descriptionColor} truncate>\n {item.description}\n </Text>\n ) : (\n <Box ml={descriptionMarginLeft} minW=\"0\" maxW=\"full\" overflow=\"hidden\">\n {item.description}\n </Box>\n )\n ) : null}\n </Stack>\n </HStack>\n );\n};\n\nconst computePaddingLeft = (depth: number, variant: ListRowVariant) => {\n if (depth <= 0) return undefined;\n const indent = variant === \"tree\" ? 12 : 12;\n return `calc(var(--chakra-spacing-1) + ${depth} * ${indent}px)`;\n};\n\nexport const ListRow = forwardRef<HTMLElement, ListRowProps>((props, ref) => {\n const {\n id,\n label,\n description,\n icon,\n iconColor,\n indicator,\n endContent,\n tooltip,\n disabled,\n isContainer,\n isNavigable,\n href,\n navigationIntent,\n contextMenuItems,\n actions,\n children,\n onActivate,\n depth = 0,\n isSelected = false,\n isExpanded = false,\n showExpandToggle = false,\n variant = \"default\",\n tone = \"default\",\n asChild = false,\n className,\n onToggleExpand,\n onPointerMove,\n draggable,\n onDragStart,\n onDragOver,\n onDragEnd,\n onDrop,\n onClick,\n ...rootProps\n } = props;\n\n const item: ListRowItem = {\n id,\n label,\n description,\n icon,\n iconColor,\n indicator,\n endContent,\n tooltip,\n disabled,\n isContainer,\n isNavigable,\n href,\n navigationIntent,\n contextMenuItems,\n actions,\n children,\n onActivate,\n };\n\n const dragProps = { draggable, onDragStart, onDragOver, onDragEnd, onDrop };\n\n const hasChildren = (item.children?.length ?? 0) > 0 || item.isContainer === true;\n const showChevron = showExpandToggle && hasChildren;\n const isDisabled = item.disabled === true;\n\n const handleActivate = () => {\n if (isDisabled) return;\n if (showChevron) {\n onToggleExpand?.();\n return;\n }\n if (onActivate) {\n onActivate();\n return;\n }\n item.onActivate?.();\n };\n\n const handleClick = (event: ReactMouseEvent<HTMLElement>) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n handleActivate();\n };\n\n const paddingLeft = computePaddingLeft(depth, variant);\n const verticalPadding = variant === \"default\" ? \"xs\" : \"2xs\";\n const hasDescription = item.description !== undefined;\n let rowHeight = \"auto\";\n let minHeight: string | undefined = variant === \"default\" ? \"2.25rem\" : \"1.75rem\";\n\n if (variant === \"compact\" && !hasDescription) {\n rowHeight = \"1.75rem\";\n minHeight = undefined;\n }\n\n const rowProps = {\n ...rootProps,\n role: \"option\" as const,\n \"aria-selected\": isSelected,\n className: className ? `group ${className}` : \"group\",\n width: \"full\",\n minWidth: \"0\",\n maxWidth: \"full\",\n height: rowHeight,\n minHeight,\n display: \"flex\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"space-between\" as const,\n gap: \"xs\" as const,\n px: \"sm\",\n py: verticalPadding,\n pl: paddingLeft,\n borderRadius: \"0\" as const,\n bg: isSelected ? \"bg.menu-item.selected\" : \"transparent\",\n _hover:\n tone === \"danger\" ? { boxShadow: \"inset 0 0 0 1px var(--chakra-colors-red-500)\" } : { bg: \"bg.menu-item.hover\" },\n cursor: isDisabled ? (\"not-allowed\" as const) : (\"pointer\" as const),\n overflow: \"hidden\" as const,\n textAlign: \"left\" as const,\n color: \"inherit\",\n textDecoration: \"none\",\n };\n\n const content = (\n <>\n <RowContent\n item={item}\n isExpanded={isExpanded}\n showChevron={showChevron}\n isDisabled={isDisabled}\n tone={tone}\n variant={variant}\n />\n {item.endContent ? (\n <Box flexShrink={0} color=\"fg.muted\" display=\"flex\" alignItems=\"center\">\n {item.endContent}\n </Box>\n ) : null}\n {item.actions && item.actions.length > 0 ? (\n <RowActions actions={item.actions} context={{ nodeId: item.id }} />\n ) : null}\n </>\n );\n\n const wrapWithContextMenu = (children: ReactElement) => {\n if (!item.contextMenuItems || item.contextMenuItems.length === 0) return children;\n\n const contextActions = item.contextMenuItems.map((entry) => ({\n key: entry.id,\n label: entry.label,\n icon: typeof entry.icon === \"function\" ? <Icon as={entry.icon} boxSize=\"16px\" /> : entry.icon,\n isDisabled: entry.disabled,\n onClick: () => entry.onAction?.(),\n }));\n\n return (\n <ResourceContextMenu actions={contextActions} contentMinWidth=\"180px\">\n {children}\n </ResourceContextMenu>\n );\n };\n\n const wrapWithTooltip = (children: ReactElement) => {\n if (!item.tooltip) return children;\n return <Tooltip content={item.tooltip}>{children}</Tooltip>;\n };\n\n const wrap = (children: ReactElement) => wrapWithContextMenu(wrapWithTooltip(children));\n\n if (asChild) {\n return wrap(\n <chakra.div ref={ref} {...rowProps} {...dragProps} onClick={handleClick} onPointerMove={onPointerMove}>\n {content}\n </chakra.div>,\n );\n }\n\n if (item.href && !showChevron && !isDisabled) {\n return wrap(\n <chakra.a\n ref={ref}\n href={item.href}\n {...(rowProps as object)}\n {...dragProps}\n onClick={handleClick}\n onPointerMove={onPointerMove}\n >\n {content}\n </chakra.a>,\n );\n }\n\n return wrap(\n <chakra.button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n {...(rowProps as object)}\n {...dragProps}\n onClick={handleClick}\n onPointerMove={onPointerMove}\n >\n {content}\n </chakra.button>,\n );\n});\n","import { Badge, Button, Dialog, Icon, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home } from \"lucide-react\";\nimport { ListRow } from \"./list-row/list-row\";\nimport { ScrollArea } from \"./scroll-area\";\n\nexport interface FolderPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface FolderPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: FolderPickerDialogEntry[];\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: FolderPickerDialogEntry) => void;\n}\n\nexport type { FolderPickerDialogProps };\n\nconst getEntryIcon = (entry: FolderPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\ntype FolderPickerListEntryProps = {\n entry: FolderPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: FolderPickerDialogEntry) => void;\n};\n\nconst FolderPickerListEntry = (props: FolderPickerListEntryProps) => {\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 <Menu.Root>\n <Menu.Item value={entry.path} asChild>\n <ListRow\n asChild\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 </Menu.Item>\n </Menu.Root>\n );\n};\n\nexport const FolderPickerDialog = (props: FolderPickerDialogProps) => {\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 selectedPathSet = new Set(selectedPaths);\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 {currentPath || \"Home\"}\n </Text>\n </Stack>\n\n <ScrollArea\n borderWidth=\"1px\"\n borderRadius=\"md\"\n borderColor=\"border.muted\"\n maxHeight=\"320px\"\n contentProps={{ padding: \"sm\" }}\n >\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\">\n {error}\n </Text>\n ) : entries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n No entries found.\n </Text>\n ) : (\n <Stack gap=\"xs\">\n {entries.map((entry) => (\n <FolderPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n )}\n </ScrollArea>\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, 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.muted\"}\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\";\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\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\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"1\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && (\n <Toast.Description\n maxHeight=\"12rem\"\n overflowY=\"auto\"\n paddingEnd=\"1\"\n whiteSpace=\"pre-wrap\"\n wordBreak=\"break-word\"\n >\n {toast.description}\n </Toast.Description>\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 { Flex, Stack } from \"@chakra-ui/react\";\nimport { Outlet, useRouterState } from \"@tanstack/react-router\";\nimport { ErrorBoundary } from \"@/components/error-boundary\";\nimport { HorizontalMenuStack } from \"@/components/horizontal-menu-stack\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/panel-header.constants\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport { Toaster } from \"@/components/toaster\";\n\nexport const Layout = () => {\n const { location } = useRouterState();\n return (\n <>\n <Stack flex=\"1\" minH=\"100vh\" gap=\"0\" overflow=\"hidden\">\n <Flex flex=\"1\" height=\"100%\" alignItems=\"stretch\" overflow=\"hidden\">\n <ScrollArea flex=\"1\" bg=\"bg\" contentProps={{ minH: \"100%\" }}>\n <ErrorBoundary key={location.pathname} label=\"Unable to render this page.\">\n <Outlet />\n </ErrorBoundary>\n </ScrollArea>\n </Flex>\n </Stack>\n <Toaster />\n </>\n );\n};\n\ninterface PanelLayoutProps {\n sidebar?: React.ReactNode;\n errorLabel?: string;\n children?: React.ReactNode;\n}\n\nexport const PanelLayout = (props: PanelLayoutProps) => {\n const { sidebar, errorLabel, children } = props;\n\n return (\n <Flex height=\"100%\" width=\"100%\" minH=\"0\" minW=\"0\">\n {sidebar ? (\n <Flex minH=\"0\" flexShrink={0}>\n {sidebar}\n </Flex>\n ) : null}\n <ErrorBoundary label={errorLabel ?? \"Unable to render the panel.\"}>\n <Flex flex=\"1\" overflow=\"hidden\" minH=\"0\" minW=\"0\">\n {children ?? <Outlet />}\n </Flex>\n </ErrorBoundary>\n </Flex>\n );\n};\n\ninterface PanelSectionLayoutProps {\n actions: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport const PanelSectionLayout = (props: PanelSectionLayoutProps) => {\n const { actions, content } = props;\n return (\n <Stack height=\"100%\" width=\"100%\" gap=\"0\" minH=\"0\">\n <HorizontalMenuStack\n data-testid=\"panel-section-actions\"\n align=\"flex-start\"\n minH={PANEL_HEADER_HEIGHT}\n flexWrap=\"wrap\"\n gap=\"sm\"\n py=\"2xs\"\n >\n {actions}\n </HorizontalMenuStack>\n <ScrollArea flex=\"1\" bg=\"bg\" contentProps={{ minH: \"100%\" }}>\n <ErrorBoundary label=\"Unable to render the panel.\">\n <Flex flex=\"1\" overflow=\"hidden\" minH=\"0\">\n {content}\n </Flex>\n </ErrorBoundary>\n </ScrollArea>\n </Stack>\n );\n};\n","import { Box, HStack, Link, Separator, Stack, Text } from \"@chakra-ui/react\";\n\nexport interface OpenSourceNotice {\n name: string;\n version?: string;\n license?: string;\n copyright?: string;\n homepageUrl?: string;\n sourceUrl?: string;\n attribution?: string;\n}\n\nexport interface OpenSourceNoticesScreenProps {\n notices: OpenSourceNotice[];\n title?: string;\n description?: string;\n productName?: string;\n productVersion?: string;\n generatedAt?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n}\n\nconst getNoticeKey = (notice: OpenSourceNotice, index: number) => {\n return `${notice.name}-${notice.version ?? \"unknown\"}-${index}`;\n};\n\nconst getNoticeTitle = (notice: OpenSourceNotice) => {\n if (!notice.version) return notice.name;\n\n return `${notice.name} v${notice.version}`;\n};\n\nexport const OpenSourceNoticesScreen = (props: OpenSourceNoticesScreenProps) => {\n const {\n notices,\n title = \"Open Source and Third-Party Notices\",\n description = \"This product includes software developed by the open source community.\",\n productName,\n productVersion,\n generatedAt,\n emptyTitle = \"No third-party notices available\",\n emptyDescription = \"No third-party packages were included in this build.\",\n } = props;\n\n return (\n <Stack width=\"full\" minHeight=\"100%\" background=\"bg\" color=\"fg\" padding={{ base: \"md\", md: \"xl\" }} gap=\"lg\">\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/L\">{title}</Text>\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n\n <HStack gap=\"md\" flexWrap=\"wrap\">\n {productName ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Product: {productName}\n </Text>\n ) : null}\n\n {productVersion ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Version: {productVersion}\n </Text>\n ) : null}\n\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Packages: {notices.length}\n </Text>\n\n {generatedAt ? (\n <Text textStyle=\"label/XS\" color=\"fg.muted\">\n Generated: {generatedAt}\n </Text>\n ) : null}\n </HStack>\n </Stack>\n\n <Separator borderColor=\"border.muted\" />\n\n {notices.length === 0 ? (\n <Stack borderWidth=\"1px\" borderColor=\"border.muted\" borderRadius=\"md\" padding=\"lg\" gap=\"xs\">\n <Text textStyle=\"label/L/medium\">{emptyTitle}</Text>\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {emptyDescription}\n </Text>\n </Stack>\n ) : (\n <Stack gap=\"md\">\n {notices.map((notice, index) => (\n <Box\n key={getNoticeKey(notice, index)}\n borderWidth=\"1px\"\n borderColor=\"border.muted\"\n borderRadius=\"md\"\n padding=\"md\"\n >\n <Stack gap=\"sm\">\n <Stack gap=\"2xs\">\n <Text textStyle=\"label/L/medium\">{getNoticeTitle(notice)}</Text>\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n License: {notice.license ?? \"Unknown\"}\n </Text>\n </Stack>\n\n {notice.copyright ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\">\n {notice.copyright}\n </Text>\n ) : null}\n\n {(notice.homepageUrl || notice.sourceUrl) && (\n <Stack gap=\"2xs\">\n {notice.homepageUrl ? (\n <Link\n href={notice.homepageUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n textStyle=\"label/S/medium\"\n width=\"fit-content\"\n >\n Homepage\n </Link>\n ) : null}\n\n {notice.sourceUrl ? (\n <Link\n href={notice.sourceUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n textStyle=\"label/S/medium\"\n width=\"fit-content\"\n >\n Source code\n </Link>\n ) : null}\n </Stack>\n )}\n\n {notice.attribution ? (\n <Box background=\"bg.muted\" borderRadius=\"sm\" padding=\"sm\">\n <Text textStyle=\"label/S/regular\" whiteSpace=\"pre-wrap\">\n {notice.attribution}\n </Text>\n </Box>\n ) : null}\n </Stack>\n </Box>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n","import { Box, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Info } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\nexport interface PropertyItem {\n label: string;\n description?: string;\n value: ReactNode;\n}\n\nexport interface PropertiesProps {\n items: PropertyItem[];\n}\n\n/**\n * Displays a list of label–value property rows.\n *\n * Each property has a label, an optional description (shown as a tooltip), and a value (ReactNode).\n * All labels share a fixed width for alignment.\n *\n * Wrap with `<ItemSection>` when collapsible behavior is needed.\n */\nexport const Properties = (props: PropertiesProps) => {\n const { items } = props;\n\n return (\n <Stack gap=\"sm\" paddingLeft=\"sm\" paddingY=\"xs\">\n {items.map((item, index) => (\n <HStack key={`${item.label}-${index}`} gap=\"xs\" alignItems=\"center\">\n <Box width=\"110px\" flexShrink={0}>\n <HStack gap=\"1\" alignItems=\"center\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {item.label}\n </Text>\n {item.description && (\n <Tooltip content={item.description} showArrow>\n <Icon as={Info} boxSize=\"12px\" color=\"fg.muted\" opacity={0.6} cursor=\"help\" />\n </Tooltip>\n )}\n </HStack>\n </Box>\n <Box flex=\"1\">{item.value}</Box>\n </HStack>\n ))}\n </Stack>\n );\n};\n","import { Icon } from \"@chakra-ui/react\";\nimport { CircleAlert, CircleCheck, CircleDashed, CirclePause, CircleStop } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type SessionCompletionStatus =\n | \"in_progress\"\n | \"awaiting_input\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\"\n | \"disconnected\";\n\nexport const resolveSessionIndicatorIcon = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return CircleCheck;\n if (status === \"failed\") return CircleAlert;\n if (status === \"cancelled\") return CircleStop;\n if (status === \"disconnected\") return CirclePause;\n return CircleDashed;\n};\n\nexport const resolveSessionIndicatorColor = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return \"fg.success\";\n if (status === \"failed\") return \"fg.error\";\n if (status === \"cancelled\") return \"fg.warning\";\n if (status === \"disconnected\") return \"fg.warning\";\n return \"fg.muted\";\n};\n\ninterface SessionIndicatorProps {\n status?: SessionCompletionStatus;\n boxSize?: ComponentProps<typeof Icon>[\"boxSize\"];\n ariaLabel?: string;\n cursor?: ComponentProps<typeof Icon>[\"cursor\"];\n onClick?: ComponentProps<typeof Icon>[\"onClick\"];\n}\n\nexport const SessionIndicator = (props: SessionIndicatorProps) => {\n const { status, boxSize = \"14px\", ariaLabel = \"Session status\", cursor, onClick } = props;\n\n return (\n <Icon\n as={resolveSessionIndicatorIcon(status)}\n boxSize={boxSize}\n color={resolveSessionIndicatorColor(status)}\n aria-label={ariaLabel}\n cursor={cursor}\n onClick={onClick}\n />\n );\n};\n","import { Box, HStack, IconButton, Menu, Stack, type StackProps, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport { SearchableActionMenu } from \"../list-row/searchable-action-menu\";\nimport type {\n TreeListAction,\n TreeListLinkComponent,\n TreeListNavigateEvent,\n TreeListNode,\n TreeListSection,\n} from \"./tree-list.types\";\n\ntype TreeListRowVariant = \"compact\" | \"tree\";\n\ninterface TreeListProps {\n sections: TreeListSection[];\n expandedSectionIds?: string[];\n expandedNodeIds?: string[];\n activeNodeId?: string | string[] | null;\n rowVariant?: TreeListRowVariant;\n sectionGap?: StackProps[\"gap\"];\n nodeGap?: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleSection?: (sectionId: string) => void;\n onToggleNode?: (nodeId: string) => void;\n}\n\ninterface TreeListNodeRowProps {\n sectionId: string;\n node: TreeListNode;\n level: number;\n expandedNodeIds: string[];\n activeNodeId?: string | string[] | null;\n rowVariant: TreeListRowVariant;\n nodeGap: StackProps[\"gap\"];\n linkComponent?: TreeListLinkComponent;\n onNavigate?: (event: TreeListNavigateEvent) => void;\n onToggleNode?: (nodeId: string) => void;\n}\n\nconst isInList = (id: string, values: string[]) => values.includes(id);\n\nconst isActiveNode = (id: string, activeNodeId?: string | string[] | null) =>\n Array.isArray(activeNodeId) ? activeNodeId.includes(id) : activeNodeId === id;\n\nconst isNavigableNode = (node: TreeListNode) => node.isNavigable || node.navigationIntent !== undefined;\n\nconst getNodeChildren = (node: TreeListNode): TreeListNode[] => (node.children as TreeListNode[] | undefined) ?? [];\n\nconst hasExpandableChildren = (node: TreeListNode) => getNodeChildren(node).length > 0 || node.isContainer === true;\n\nconst TreeListNodeRow = (props: TreeListNodeRowProps) => {\n const {\n sectionId,\n node,\n level,\n expandedNodeIds,\n activeNodeId,\n rowVariant,\n nodeGap,\n linkComponent: LinkComponent,\n onNavigate,\n onToggleNode,\n } = props;\n\n const children = getNodeChildren(node);\n const hasChildren = hasExpandableChildren(node);\n const expanded = hasChildren && isInList(node.id, expandedNodeIds);\n const isActive = isActiveNode(node.id, activeNodeId);\n const isDisabled = node.disabled === true;\n const isNavigable = isNavigableNode(node);\n const canLink = Boolean(LinkComponent && node.href && isNavigable && !hasChildren && !isDisabled);\n\n const handleActivate = () => {\n if (isDisabled) return;\n if (hasChildren) {\n onToggleNode?.(node.id);\n return;\n }\n if (isNavigable && onNavigate) {\n onNavigate({ sectionId, nodeId: node.id, node, intent: node.navigationIntent });\n return;\n }\n node.onActivate?.();\n };\n\n const rowItem: TreeListNode = {\n ...node,\n actions: node.actions?.map((action) => ({\n ...action,\n onAction: action.onAction\n ? (context) => action.onAction?.({ sectionId, nodeId: node.id, ...context })\n : undefined,\n })),\n };\n\n const row =\n canLink && LinkComponent && node.href ? (\n <LinkComponent to={node.href}>\n <ListRow\n {...rowItem}\n depth={level}\n variant={rowVariant}\n isSelected={isActive}\n isExpanded={expanded}\n showExpandToggle={hasChildren}\n onActivate={handleActivate}\n onToggleExpand={() => onToggleNode?.(node.id)}\n asChild\n />\n </LinkComponent>\n ) : (\n <ListRow\n {...rowItem}\n depth={level}\n variant={rowVariant}\n isSelected={isActive}\n isExpanded={expanded}\n showExpandToggle={hasChildren}\n onActivate={handleActivate}\n onToggleExpand={() => onToggleNode?.(node.id)}\n />\n );\n\n return (\n <Stack gap={nodeGap} w=\"full\" minW=\"0\" maxW=\"full\">\n {row}\n {expanded && children.length > 0\n ? children.map((childNode) => (\n <TreeListNodeRow\n key={childNode.id}\n sectionId={sectionId}\n node={childNode}\n level={level + 1}\n expandedNodeIds={expandedNodeIds}\n activeNodeId={activeNodeId}\n rowVariant={rowVariant}\n nodeGap={nodeGap}\n linkComponent={LinkComponent}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n />\n ))\n : null}\n </Stack>\n );\n};\n\ninterface TreeListSectionActionsProps {\n sectionId: string;\n actions: TreeListAction[];\n}\n\nconst TreeListSectionActions = (props: TreeListSectionActionsProps) => {\n const { sectionId, actions } = props;\n if (actions.length === 0) return null;\n\n return (\n <HStack\n gap=\"0\"\n opacity=\"0\"\n pointerEvents=\"none\"\n _groupHover={{ opacity: \"1\", pointerEvents: \"auto\" }}\n _groupFocusWithin={{ opacity: \"1\", pointerEvents: \"auto\" }}\n transition=\"opacity 120ms ease\"\n onClick={(event) => event.stopPropagation()}\n >\n {actions.map((action) => {\n if (action.menuItems && action.menuItems.length >= 8) {\n return <SearchableActionMenu key={action.id} action={action} />;\n }\n if (action.menuItems && action.menuItems.length > 0) {\n return (\n <Menu.Root key={action.id}>\n <Menu.Trigger asChild>\n <IconButton variant=\"ghost\" size=\"2xs\" aria-label={action.label}>\n {action.icon}\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\">\n {action.menuItems.map((item) => (\n <Menu.Item key={item.id} value={item.id} disabled={item.disabled} onClick={() => item.onAction?.()}>\n {item.label}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n }\n return (\n <IconButton\n key={action.id}\n variant=\"ghost\"\n size=\"2xs\"\n aria-label={action.label}\n onClick={(event) => {\n event.stopPropagation();\n action.onAction?.({ sectionId });\n }}\n >\n {action.icon}\n </IconButton>\n );\n })}\n </HStack>\n );\n};\n\ninterface TreeListSectionHeaderProps {\n section: TreeListSection;\n collapsible: boolean;\n expanded: boolean;\n onToggle: () => void;\n}\n\nconst TreeListSectionHeader = (props: TreeListSectionHeaderProps) => {\n const { section, collapsible, expanded, onToggle } = props;\n\n return (\n <HStack\n className=\"group\"\n justify=\"space-between\"\n align=\"center\"\n w=\"full\"\n minW=\"0\"\n maxW=\"full\"\n px=\"sm\"\n py=\"2xs\"\n height=\"7\"\n cursor={collapsible ? \"pointer\" : \"default\"}\n _hover={collapsible ? { bg: \"bg.hover\" } : undefined}\n onClick={collapsible ? onToggle : undefined}\n >\n <HStack gap=\"1\" flex=\"1\" minW=\"0\">\n <Text textStyle=\"label/XS\" textTransform=\"uppercase\" color=\"fg.muted\" letterSpacing=\"0.08em\" truncate>\n {section.label}\n </Text>\n {collapsible ? (\n <Box color=\"fg.muted\" flexShrink={0}>\n <ChevronRight\n size={14}\n style={{ transform: expanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n ) : null}\n </HStack>\n <TreeListSectionActions sectionId={section.id} actions={section.actions ?? []} />\n </HStack>\n );\n};\n\nexport const TreeList = (props: TreeListProps) => {\n const {\n sections,\n expandedSectionIds = [],\n expandedNodeIds = [],\n activeNodeId,\n rowVariant = \"tree\",\n sectionGap = \"0\",\n nodeGap = \"0\",\n linkComponent,\n onNavigate,\n onToggleSection,\n onToggleNode,\n } = props;\n\n return (\n <Stack role=\"listbox\" gap={sectionGap} w=\"full\" minW=\"0\" maxW=\"full\" overflowX=\"hidden\">\n {sections.map((section) => {\n const collapsible = section.collapsible !== false && section.label !== undefined;\n const sectionExpanded = collapsible ? isInList(section.id, expandedSectionIds) : true;\n\n return (\n <Stack key={section.id} gap=\"0\" w=\"full\" minW=\"0\" maxW=\"full\" data-testid={`tree-list-section-${section.id}`}>\n {section.label ? (\n <TreeListSectionHeader\n section={section}\n collapsible={collapsible}\n expanded={sectionExpanded}\n onToggle={() => onToggleSection?.(section.id)}\n />\n ) : null}\n\n {sectionExpanded ? (\n section.nodes.length > 0 ? (\n <Stack gap={nodeGap} w=\"full\" minW=\"0\" maxW=\"full\">\n {section.nodes.map((node) => (\n <TreeListNodeRow\n key={node.id}\n sectionId={section.id}\n node={node}\n level={0}\n expandedNodeIds={expandedNodeIds}\n activeNodeId={activeNodeId}\n rowVariant={rowVariant}\n nodeGap={nodeGap}\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleNode={onToggleNode}\n />\n ))}\n </Stack>\n ) : (\n (section.emptyState ?? null)\n )\n ) : null}\n </Stack>\n );\n })}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\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 createNoopStorage = () => ({\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n});\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(() => {\n if (typeof globalThis.localStorage === \"undefined\") {\n return createNoopStorage();\n }\n\n return globalThis.localStorage;\n }),\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","import { HStack, IconButton } from \"@chakra-ui/react\";\nimport { PanelLeftClose } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"../panel-header.constants\";\n\ninterface SidebarHeaderProps {\n children?: ReactNode;\n onClose?: () => void;\n}\n\nexport const SidebarHeader = (props: SidebarHeaderProps) => {\n const { children, onClose } = 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 {onClose ? (\n <IconButton borderRadius={0} variant=\"ghost\" size=\"sm\" aria-label=\"Hide sidebar\" onClick={onClose}>\n <PanelLeftClose size={16} />\n </IconButton>\n ) : null}\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { type PointerEvent as ReactPointerEvent, useEffect, useRef } from \"react\";\nimport { ScrollArea } from \"../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 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 } = props;\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 closeSidebar = useSidebarStore(storageKey, (state) => state.closeSidebar, initialState);\n const toggleSection = useSidebarStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidebarStore(storageKey, (state) => state.toggleNode, initialState);\n const setStoreWidth = useSidebarStore(storageKey, (state) => state.setWidth, initialState);\n\n const cleanupRef = useRef<() => void>(() => undefined);\n\n useEffect(() => () => cleanupRef.current(), []);\n\n useEffect(() => {\n onOpenChange?.(open);\n }, [onOpenChange, open]);\n\n if (!open && closable) {\n return null;\n }\n\n const effectiveWidth = clamp(persistedWidth ?? initialWidth, minWidth, maxWidth);\n const widthCss = resizable ? `${effectiveWidth}px` : (width ?? `${initialWidth}px`);\n\n const handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n event.preventDefault();\n const startX = event.clientX;\n const startWidth = effectiveWidth;\n const previousCursor = document.body.style.cursor;\n const previousUserSelect = document.body.style.userSelect;\n\n const onMove = (moveEvent: PointerEvent) => {\n const next = clamp(startWidth + (moveEvent.clientX - startX), minWidth, maxWidth);\n setStoreWidth(next);\n };\n\n const cleanup = () => {\n window.removeEventListener(\"pointermove\", onMove);\n window.removeEventListener(\"pointerup\", cleanup);\n document.body.style.cursor = previousCursor;\n document.body.style.userSelect = previousUserSelect;\n cleanupRef.current = () => undefined;\n };\n\n cleanupRef.current = cleanup;\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n window.addEventListener(\"pointermove\", onMove);\n window.addEventListener(\"pointerup\", cleanup, { once: true });\n };\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.muted\"\n bg=\"bg\"\n >\n <SidebarHeader onClose={closable ? closeSidebar : undefined}>{header}</SidebarHeader>\n\n <ScrollArea\n flex=\"1\"\n mt=\"lg\"\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{ style: { minWidth: \"100%\", width: \"100%\" } }}\n >\n <Box w=\"full\" minW=\"0\">\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 linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidebarFooter>{footer}</SidebarFooter>\n\n {resizable ? (\n <Box\n role=\"separator\"\n aria-label=\"Resize sidebar\"\n aria-orientation=\"vertical\"\n position=\"absolute\"\n top=\"0\"\n bottom=\"0\"\n right=\"0\"\n width=\"3\"\n transform=\"translateX(50%)\"\n cursor=\"col-resize\"\n touchAction=\"none\"\n zIndex=\"1\"\n onPointerDown={handlePointerDown}\n />\n ) : null}\n </Flex>\n );\n};\n","import { Avatar, Button, HStack, Icon, Menu, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, FolderIcon } from \"lucide-react\";\nimport { ListRow } from \"../list-row/list-row\";\n\ninterface SidebarProjectMenuProps {\n name: string;\n projectsLabel: string;\n onSelectProjects: () => void;\n}\n\nexport const SidebarProjectMenu = (props: SidebarProjectMenuProps) => {\n const { name, projectsLabel, onSelectProjects } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button borderRadius=\"0\" variant=\"ghost\" size=\"sm\" width=\"full\" justifyContent=\"flex-start\">\n <HStack gap=\"0\" minW=\"0\" flex=\"1\">\n <Avatar.Root size=\"2xs\">\n <Avatar.Fallback name={name} />\n </Avatar.Root>\n <Text textStyle=\"label/S/medium\" truncate>\n {name}\n </Text>\n </HStack>\n <ChevronDown size={14} />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"240px\" bg=\"bg\">\n <Menu.Item value=\"projects\" asChild>\n <ListRow\n asChild\n variant=\"compact\"\n id=\"projects\"\n label={projectsLabel}\n icon={<Icon as={FolderIcon} boxSize=\"16px\" />}\n onActivate={onSelectProjects}\n />\n </Menu.Item>\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\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 borderRadius=\"md\" cursor={interactiveCursor}>\n <ChakraSwitch.Thumb 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","export type ViewMode = \"board\" | \"list\";\n\nexport type GroupingField = \"status\" | \"assignee\" | \"none\" | `tag:${string}`;\n\nexport type OrderingField = \"manual\" | \"updated\" | \"title\" | \"ticketId\" | `tag:${string}`;\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport type DisplayProperty = \"id\" | \"status\" | \"assignee\" | \"updated\" | `tag:${string}`;\n\nexport type FilterCategory = \"status\" | \"assignee\" | `tag:${string}`;\n\nexport interface WorkspaceOrdering {\n field: OrderingField;\n direction: SortDirection;\n}\n\nexport interface WorkspaceSettings {\n viewMode: ViewMode;\n columnGrouping: GroupingField;\n rowGrouping: GroupingField;\n ordering: WorkspaceOrdering;\n displayProperties: DisplayProperty[];\n}\n\nexport type FilterState = Partial<Record<FilterCategory, string[]>>;\n\nexport interface WorkspaceOption<TValue extends string> {\n value: TValue;\n label: string;\n}\n\nexport interface WorkspaceFilterOption {\n value: string;\n label: string;\n}\n\nexport interface WorkspaceFilterCategory {\n id: FilterCategory;\n label: string;\n options: WorkspaceFilterOption[];\n}\n\nexport interface WorkspaceTagOption {\n value: string;\n label: string;\n color?: string;\n icon?: string | null;\n}\n\nexport interface WorkspaceTagDefinition {\n name: string;\n label: string;\n options: WorkspaceTagOption[];\n}\n\nexport interface WorkspaceTag {\n name: string;\n value: string;\n}\n\nexport interface WorkspaceTicket {\n id: string;\n ticketId: string;\n title: string;\n status?: string | null;\n statusColor?: string;\n assignee?: string | null;\n tags?: WorkspaceTag[];\n updatedAt?: string | null;\n parentPath?: string[];\n isSubIssue?: boolean;\n}\n\nexport const DEFAULT_WORKSPACE_SETTINGS: WorkspaceSettings = {\n viewMode: \"board\",\n columnGrouping: \"status\",\n rowGrouping: \"none\",\n ordering: {\n field: \"manual\",\n direction: \"asc\",\n },\n displayProperties: [],\n};\n\nexport const DEFAULT_GROUPING_OPTIONS: WorkspaceOption<GroupingField>[] = [\n { value: \"status\", label: \"Status\" },\n { value: \"assignee\", label: \"Assignee\" },\n { value: \"none\", label: \"No grouping\" },\n];\n\nexport const DEFAULT_ORDERING_OPTIONS: WorkspaceOption<OrderingField>[] = [\n { value: \"manual\", label: \"Manual\" },\n { value: \"updated\", label: \"Updated\" },\n { value: \"title\", label: \"Title\" },\n { value: \"ticketId\", label: \"ID\" },\n];\n\nexport const DEFAULT_DISPLAY_PROPERTY_OPTIONS: WorkspaceOption<DisplayProperty>[] = [\n { value: \"id\", label: \"ID\" },\n { value: \"status\", label: \"Status\" },\n { value: \"updated\", label: \"Updated\" },\n];\n\nexport const isTagKey = (key: string): key is `tag:${string}` => key.startsWith(\"tag:\");\n\nexport const toTagName = (key: `tag:${string}`) => key.slice(4);\n","import type { TicketCardBadge, TicketCardTagBadge } from \"./ticket-card\";\nimport type {\n DisplayProperty,\n FilterCategory,\n FilterState,\n GroupingField,\n OrderingField,\n WorkspaceFilterCategory,\n WorkspaceOption,\n WorkspaceTagDefinition,\n WorkspaceTicket,\n} from \"./types\";\nimport { isTagKey, toTagName } from \"./types\";\n\nexport const toTitleCase = (value: string) =>\n value\n .replaceAll(\"_\", \" \")\n .split(\" \")\n .filter((chunk) => chunk.length > 0)\n .map((chunk) => chunk[0]!.toUpperCase() + chunk.slice(1))\n .join(\" \");\n\nconst collectCategoryOptions = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const values = new Set<string>();\n\n for (const ticket of tickets) {\n if (category === \"status\") {\n if (ticket.status) values.add(ticket.status);\n } else if (category === \"assignee\") {\n if (ticket.assignee) values.add(ticket.assignee);\n } else if (isTagKey(category)) {\n const tagName = toTagName(category);\n const tag = ticket.tags?.find((t) => t.name === tagName);\n if (tag) values.add(tag.value);\n }\n }\n\n return [...values]\n .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))\n .map((value) => ({ value, label: toTitleCase(value) }));\n};\n\nexport const buildDefaultFilterCategories = (\n tickets: WorkspaceTicket[],\n tagDefinitions: WorkspaceTagDefinition[],\n): WorkspaceFilterCategory[] => {\n const categories: WorkspaceFilterCategory[] = [\n { id: \"status\", label: \"Status\", options: collectCategoryOptions(tickets, \"status\") },\n { id: \"assignee\", label: \"Assignee\", options: collectCategoryOptions(tickets, \"assignee\") },\n ];\n\n for (const def of tagDefinitions) {\n const categoryId = `tag:${def.name}` as FilterCategory;\n categories.push({\n id: categoryId,\n label: def.label,\n options: def.options.map((o) => ({ value: o.value, label: o.label })),\n });\n }\n\n return categories;\n};\n\nexport const toBadges = (ticket: WorkspaceTicket, displayProperties: DisplayProperty[]): TicketCardBadge[] => {\n const badges: TicketCardBadge[] = [];\n const includes = (property: DisplayProperty) => displayProperties.includes(property);\n\n if (includes(\"status\") && ticket.status) {\n badges.push({ label: ticket.status, color: ticket.statusColor ?? \"gray\" });\n }\n\n if (includes(\"assignee\") && ticket.assignee) {\n badges.push({ label: ticket.assignee, color: \"blue\" });\n }\n\n if (includes(\"updated\") && ticket.updatedAt) {\n badges.push({ label: new Date(ticket.updatedAt).toLocaleDateString(), color: \"gray\" });\n }\n\n return badges;\n};\n\nexport const toTagBadges = (\n ticket: WorkspaceTicket,\n displayProperties: DisplayProperty[],\n tagDefinitions: WorkspaceTagDefinition[],\n): TicketCardTagBadge[] => {\n const tagBadges: TicketCardTagBadge[] = [];\n\n for (const def of tagDefinitions) {\n const displayKey = `tag:${def.name}` as DisplayProperty;\n if (!displayProperties.includes(displayKey)) continue;\n\n const tag = ticket.tags?.find((t) => t.name === def.name);\n const optionDef = tag ? def.options.find((o) => o.value === tag.value) : undefined;\n\n tagBadges.push({\n tagName: def.name,\n label: def.label,\n value: tag?.value ?? null,\n color: optionDef?.color ?? \"purple\",\n options: def.options,\n });\n }\n\n return tagBadges;\n};\n\nexport const buildTagOptions = (tagDefinitions: WorkspaceTagDefinition[]) => ({\n grouping: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<GroupingField>,\n ),\n ordering: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<OrderingField>,\n ),\n display: tagDefinitions.map(\n (def) => ({ value: `tag:${def.name}`, label: def.label }) as WorkspaceOption<DisplayProperty>,\n ),\n});\n\nexport const orderGroupingOptions = <TValue extends string>(options: WorkspaceOption<TValue>[]) => {\n const noGrouping = options.find((option) => option.value === \"none\");\n if (!noGrouping) {\n return options;\n }\n\n return [noGrouping, ...options.filter((option) => option.value !== \"none\")];\n};\n\nexport const resolveSubGroupingOptions = (options: WorkspaceOption<GroupingField>[], columnGrouping: GroupingField) => {\n if (columnGrouping === \"none\") {\n return options.filter((option) => option.value === \"none\");\n }\n\n return options.filter((option) => option.value === \"none\" || option.value !== columnGrouping);\n};\n\nexport const resolveListDropTargetColumnKey = (columnGrouping: GroupingField, placement?: { columnKey?: string }) => {\n if (columnGrouping === \"none\") {\n return \"all\";\n }\n\n return placement?.columnKey;\n};\n\nexport const resolveKnownColumnKeys = (\n columnGrouping: GroupingField,\n knownColumnKeys: string[] | undefined,\n categories: WorkspaceFilterCategory[],\n filters?: FilterState,\n) => {\n if (columnGrouping === \"none\") {\n return undefined;\n }\n\n const activeValues = filters?.[columnGrouping];\n if (activeValues && activeValues.length > 0) {\n return activeValues;\n }\n\n if (columnGrouping === \"status\") {\n if (knownColumnKeys) {\n return knownColumnKeys;\n }\n }\n\n return categories.find((category) => category.id === columnGrouping)?.options.map((option) => option.value);\n};\n\nexport const omitFilterCategory = (filters: FilterState, category: FilterCategory): FilterState => {\n const next = { ...filters } as Record<string, string[] | undefined>;\n delete next[category];\n return next as FilterState;\n};\n","import {\n Button,\n HStack,\n Icon,\n IconButton,\n Menu,\n Popover,\n Portal,\n SegmentGroup,\n Separator,\n Stack,\n Text,\n} from \"@chakra-ui/react\";\nimport { ArrowDownUp, ChevronDown, KanbanSquare, List, Settings2 } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nimport type { DisplayProperty, GroupingField, OrderingField, WorkspaceOption, WorkspaceSettings } from \"./types\";\nimport { orderGroupingOptions, resolveSubGroupingOptions } from \"./workspace-helpers\";\n\ninterface DisplayMenuProps {\n settings: WorkspaceSettings;\n groupingOptions: WorkspaceOption<GroupingField>[];\n orderingOptions: WorkspaceOption<OrderingField>[];\n displayPropertyOptions: WorkspaceOption<DisplayProperty>[];\n onViewModeChange: (value: WorkspaceSettings[\"viewMode\"]) => void;\n onColumnGroupingChange: (value: GroupingField) => void;\n onRowGroupingChange: (value: GroupingField) => void;\n onOrderingFieldChange: (value: OrderingField) => void;\n onSortDirectionToggle: () => void;\n onDisplayPropertyToggle: (property: DisplayProperty) => void;\n}\n\nconst SectionLabel = (props: { children: string }) => (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n {props.children}\n </Text>\n);\n\nconst Dropdown = <T extends string>(props: {\n label: string;\n value: T;\n options: WorkspaceOption<T>[];\n onSelect: (value: T) => void;\n}) => {\n const orderedOptions = orderGroupingOptions(props.options);\n const selectedLabel = orderedOptions.find((option) => option.value === props.value)?.label ?? props.label;\n const hasNoGrouping = orderedOptions[0]?.value === \"none\";\n\n return (\n <Stack gap=\"2xs\">\n <SectionLabel>{props.label}</SectionLabel>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"sm\" variant=\"outline\" width=\"full\" justifyContent=\"space-between\">\n {selectedLabel}\n <Icon as={ChevronDown} color=\"fg.muted\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"260px\" bg=\"bg\">\n {orderedOptions.map((option, index) => (\n <Fragment key={option.value}>\n {hasNoGrouping && index === 1 ? <Menu.Separator /> : null}\n <Menu.Item value={option.value} onClick={() => props.onSelect(option.value)}>\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n </Menu.Item>\n </Fragment>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Stack>\n );\n};\n\nexport const DisplayMenu = (props: DisplayMenuProps) => {\n const {\n settings,\n groupingOptions,\n orderingOptions,\n displayPropertyOptions,\n onViewModeChange,\n onColumnGroupingChange,\n onRowGroupingChange,\n onOrderingFieldChange,\n onSortDirectionToggle,\n onDisplayPropertyToggle,\n } = props;\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Display settings\" variant=\"ghost\" size=\"sm\">\n <Icon as={Settings2} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"320px\" p=\"sm\" bg=\"bg\">\n <Stack gap=\"sm\">\n <SectionLabel>View</SectionLabel>\n <SegmentGroup.Root\n size=\"sm\"\n value={settings.viewMode}\n onValueChange={(event) => {\n if (!event.value) return;\n onViewModeChange(event.value as WorkspaceSettings[\"viewMode\"]);\n }}\n >\n <SegmentGroup.Indicator />\n <SegmentGroup.Item value=\"list\">\n <SegmentGroup.ItemText>\n <HStack as=\"span\" gap=\"2xs\">\n <List size={14} />\n <span>List</span>\n </HStack>\n </SegmentGroup.ItemText>\n <SegmentGroup.ItemHiddenInput />\n </SegmentGroup.Item>\n <SegmentGroup.Item value=\"board\">\n <SegmentGroup.ItemText>\n <HStack as=\"span\" gap=\"2xs\">\n <KanbanSquare size={14} />\n <span>Board</span>\n </HStack>\n </SegmentGroup.ItemText>\n <SegmentGroup.ItemHiddenInput />\n </SegmentGroup.Item>\n </SegmentGroup.Root>\n\n <Separator />\n\n <Dropdown\n label=\"Grouping\"\n value={settings.columnGrouping}\n options={groupingOptions}\n onSelect={(value) => {\n onColumnGroupingChange(value);\n if (value === \"none\" || value === settings.rowGrouping) {\n onRowGroupingChange(\"none\");\n }\n }}\n />\n\n <Dropdown\n label=\"Sub-grouping\"\n value={settings.rowGrouping}\n options={resolveSubGroupingOptions(groupingOptions, settings.columnGrouping)}\n onSelect={onRowGroupingChange}\n />\n\n <Stack gap=\"2xs\">\n <SectionLabel>Ordering</SectionLabel>\n <HStack gap=\"2xs\">\n <Dropdown\n label=\"Sort by\"\n value={settings.ordering.field}\n options={orderingOptions}\n onSelect={onOrderingFieldChange}\n />\n <IconButton\n mt=\"lg\"\n aria-label=\"Toggle sort direction\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onSortDirectionToggle}\n data-direction={settings.ordering.direction}\n >\n <Icon\n as={ArrowDownUp}\n transform={settings.ordering.direction === \"asc\" ? \"rotate(0deg)\" : \"rotate(180deg)\"}\n />\n </IconButton>\n </HStack>\n </Stack>\n\n <Separator />\n <Stack gap=\"2xs\">\n <SectionLabel>Display properties</SectionLabel>\n <HStack flexWrap=\"wrap\" gap=\"2xs\">\n {displayPropertyOptions.map((option) => {\n const isActive = settings.displayProperties.includes(option.value);\n\n return (\n <Button\n key={option.value}\n size=\"2xs\"\n variant={isActive ? \"solid\" : \"outline\"}\n onClick={() => onDisplayPropertyToggle(option.value)}\n >\n {option.label}\n </Button>\n );\n })}\n </HStack>\n </Stack>\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, IconButton, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { Filter } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { Checkbox } from \"@/components/checkbox\";\n\nimport type { FilterState, WorkspaceFilterCategory } from \"./types\";\n\ninterface FilterMenuProps {\n categories: WorkspaceFilterCategory[];\n filters: FilterState;\n countsByCategory: Record<string, Record<string, number>>;\n onToggleFilterValue: (category: WorkspaceFilterCategory[\"id\"], value: string) => void;\n onClearFilter: (category: WorkspaceFilterCategory[\"id\"]) => void;\n onClearAll: () => void;\n}\n\nconst getActiveFilterCount = (filters: FilterState) =>\n Object.values(filters).reduce((sum, values) => sum + (values?.length ?? 0), 0);\n\nexport const FilterMenu = (props: FilterMenuProps) => {\n const { categories, filters, countsByCategory, onToggleFilterValue, onClearFilter, onClearAll } = props;\n const [activeCategoryId, setActiveCategoryId] = useState<WorkspaceFilterCategory[\"id\"]>(\n categories[0]?.id ?? \"status\",\n );\n\n const activeCategory = categories.find((category) => category.id === activeCategoryId) ?? categories[0];\n\n const activeFilterCount = getActiveFilterCount(filters);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Filter tickets\" variant={activeFilterCount > 0 ? \"outline\" : \"ghost\"} size=\"sm\">\n <HStack gap=\"2xs\">\n <Icon as={Filter} boxSize=\"14px\" />\n {activeFilterCount > 0 ? <Badge variant=\"solid\">{activeFilterCount}</Badge> : null}\n </HStack>\n </IconButton>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"560px\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <HStack align=\"stretch\" gap=\"0\" minH=\"320px\">\n <Stack width=\"220px\" borderRightWidth=\"1px\" borderColor=\"border.muted\" p=\"sm\" gap=\"2xs\">\n <HStack justifyContent=\"space-between\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\">\n Filters\n </Text>\n <Button size=\"2xs\" variant=\"ghost\" onClick={onClearAll}>\n Clear all\n </Button>\n </HStack>\n {categories.map((category) => {\n const selectedValues = filters[category.id] ?? [];\n return (\n <Button\n key={category.id}\n variant={activeCategoryId === category.id ? \"subtle\" : \"ghost\"}\n size=\"sm\"\n justifyContent=\"space-between\"\n onClick={() => setActiveCategoryId(category.id)}\n >\n <Text>{category.label}</Text>\n {selectedValues.length > 0 ? <Badge variant=\"subtle\">{selectedValues.length}</Badge> : null}\n </Button>\n );\n })}\n </Stack>\n\n <Stack flex=\"1\" p=\"sm\" gap=\"sm\">\n {activeCategory ? (\n <>\n <HStack justifyContent=\"space-between\">\n <Text textStyle=\"label/S/medium\">{activeCategory.label}</Text>\n <Button size=\"2xs\" variant=\"ghost\" onClick={() => onClearFilter(activeCategory.id)}>\n Clear\n </Button>\n </HStack>\n <Stack gap=\"2xs\">\n {activeCategory.options.map((option) => {\n const checked = (filters[activeCategory.id] ?? []).includes(option.value);\n const count = countsByCategory[activeCategory.id]?.[option.value] ?? 0;\n\n return (\n <Box key={option.value} px=\"xs\" py=\"2xs\" borderRadius=\"sm\" _hover={{ bg: \"bg.hover\" }}>\n <Checkbox\n checked={checked}\n onCheckedChange={() => onToggleFilterValue(activeCategory.id, option.value)}\n >\n <HStack gap=\"2xs\" justifyContent=\"space-between\" width=\"full\">\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\">\n {count}\n </Text>\n </HStack>\n </Checkbox>\n </Box>\n );\n })}\n </Stack>\n </>\n ) : null}\n </Stack>\n </HStack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, HStack, Icon, Spinner, Text } from \"@chakra-ui/react\";\nimport { ChevronDown, GitBranchIcon, GitCommitIcon } from \"lucide-react\";\nimport type { MouseEvent } from \"react\";\nimport { DiffBubble } from \"@/components/diff-bubble\";\nimport { type SessionCompletionStatus, SessionIndicator } from \"@/components/session-indicator\";\nimport { Tooltip } from \"@/components/tooltip\";\n\ninterface WorkspaceAttemptStatus {\n name: string;\n color: string;\n description?: string | null;\n}\n\nconst ATTEMPT_STATUS_COLOR_ALIASES: Record<string, string> = {\n amber: \"yellow\",\n};\n\nconst CHAKRA_COLOR_PALETTES = new Set([\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"teal\",\n \"blue\",\n \"cyan\",\n \"purple\",\n \"pink\",\n]);\n\nexport interface WorkspaceBadgeProps {\n workspaceType: \"worktree\" | \"current_branch\";\n initializing?: boolean;\n shorthand?: string;\n attemptStatus?: WorkspaceAttemptStatus;\n sessionStatus?: SessionCompletionStatus;\n showLeadingSessionIndicator?: boolean;\n diffAdditions?: number;\n diffDeletions?: number;\n hasMultipleWorkspaces?: boolean;\n onClick?: () => void;\n onDropdownClick?: () => void;\n onSessionIndicatorClick?: () => void;\n}\n\nconst resolveWorkspaceIcon = (workspaceType: WorkspaceBadgeProps[\"workspaceType\"]) => {\n if (workspaceType === \"current_branch\") {\n return GitCommitIcon;\n }\n\n return GitBranchIcon;\n};\n\nconst resolveAttemptStatusColor = (color: string) => {\n if (color.startsWith(\"#\") || color.startsWith(\"rgb\") || color.startsWith(\"hsl\") || color.startsWith(\"var(\")) {\n return color;\n }\n\n const resolvedColor = ATTEMPT_STATUS_COLOR_ALIASES[color] ?? color;\n if (CHAKRA_COLOR_PALETTES.has(resolvedColor)) {\n return `var(--chakra-colors-${resolvedColor}-500)`;\n }\n\n return resolvedColor;\n};\n\nconst buildAttemptStatusTooltip = (attemptStatus: WorkspaceAttemptStatus | undefined) => {\n if (!attemptStatus) return null;\n\n if (attemptStatus.description) {\n return `${attemptStatus.name}: ${attemptStatus.description}`;\n }\n\n return attemptStatus.name;\n};\n\nconst handleIconClick = (event: MouseEvent<SVGSVGElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst handleBadgeClick = (event: MouseEvent<HTMLSpanElement>, onClick: (() => void) | undefined) => {\n event.stopPropagation();\n onClick?.();\n};\n\nconst LeadingSessionIndicator = (props: {\n sessionStatus?: SessionCompletionStatus;\n onSessionIndicatorClick?: () => void;\n}) => {\n const { sessionStatus, onSessionIndicatorClick } = props;\n\n if (!sessionStatus) {\n return null;\n }\n\n const sessionTooltip = onSessionIndicatorClick ? \"Open latest session\" : \"Latest session status\";\n\n return (\n <Tooltip content={sessionTooltip}>\n <SessionIndicator\n status={sessionStatus}\n boxSize=\"12px\"\n ariaLabel={sessionTooltip}\n cursor=\"pointer\"\n onClick={onSessionIndicatorClick ? (event) => handleIconClick(event, onSessionIndicatorClick) : undefined}\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceTypeIndicator = (props: {\n workspaceType: WorkspaceBadgeProps[\"workspaceType\"];\n initializing: boolean;\n shorthand?: string;\n}) => {\n const { workspaceType, initializing, shorthand } = props;\n const WorkspaceTypeIcon = resolveWorkspaceIcon(workspaceType);\n\n return (\n <HStack as=\"span\" gap=\"0\" alignItems=\"center\" color=\"fg.muted\" flexShrink={0}>\n <Icon\n as={WorkspaceTypeIcon}\n boxSize=\"12px\"\n aria-label={workspaceType === \"worktree\" ? \"Worktree\" : \"Current branch\"}\n />\n {initializing ? <Spinner size=\"xs\" color=\"fg.muted\" /> : null}\n {shorthand ? (\n <Text as=\"span\" textStyle=\"label/XS/regular\" color=\"fg.muted\" flexShrink={0}>\n {shorthand}\n </Text>\n ) : null}\n </HStack>\n );\n};\n\nconst WorkspaceAttemptStatusIndicator = (props: { attemptStatus?: WorkspaceAttemptStatus }) => {\n const { attemptStatus } = props;\n\n if (!attemptStatus) {\n return null;\n }\n\n return (\n <Tooltip content={buildAttemptStatusTooltip(attemptStatus)}>\n <Box\n as=\"span\"\n boxSize=\"8px\"\n borderRadius=\"full\"\n backgroundColor={resolveAttemptStatusColor(attemptStatus.color)}\n flexShrink={0}\n aria-label={`Attempt status ${attemptStatus.name}`}\n data-testid=\"workspace-attempt-status\"\n />\n </Tooltip>\n );\n};\n\nconst WorkspaceDiffTotals = (props: { diffAdditions?: number; diffDeletions?: number }) => {\n const { diffAdditions, diffDeletions } = props;\n\n if (typeof diffAdditions !== \"number\" || typeof diffDeletions !== \"number\") {\n return null;\n }\n\n return (\n <DiffBubble additions={diffAdditions} deletions={diffDeletions} variant=\"ghost\" size=\"small\" fileName={undefined} />\n );\n};\n\nconst WorkspaceDropdownTrigger = (props: { hasMultipleWorkspaces: boolean; onDropdownClick?: () => void }) => {\n const { hasMultipleWorkspaces, onDropdownClick } = props;\n\n if (!hasMultipleWorkspaces) {\n return null;\n }\n\n return (\n <Icon\n as={ChevronDown}\n boxSize=\"12px\"\n color=\"fg.muted\"\n cursor={onDropdownClick ? \"pointer\" : \"default\"}\n aria-label=\"Workspace selector\"\n onClick={onDropdownClick ? (event) => handleIconClick(event, onDropdownClick) : undefined}\n />\n );\n};\n\nexport const WorkspaceBadge = (props: WorkspaceBadgeProps) => {\n const {\n workspaceType,\n initializing = false,\n shorthand,\n attemptStatus,\n sessionStatus,\n showLeadingSessionIndicator = true,\n diffAdditions,\n diffDeletions,\n hasMultipleWorkspaces = false,\n onClick,\n onDropdownClick,\n onSessionIndicatorClick,\n } = props;\n\n return (\n <HStack\n as=\"span\"\n display=\"inline-flex\"\n gap=\"2xs\"\n alignItems=\"center\"\n minW=\"0\"\n px=\"2px\"\n py=\"1px\"\n borderRadius=\"xs\"\n cursor=\"pointer\"\n transition=\"background-color 0.2s ease-in-out\"\n _hover={{ backgroundColor: \"bg.hover\" }}\n onClick={onClick ? (event) => handleBadgeClick(event, onClick) : undefined}\n data-testid=\"workspace-badge\"\n >\n {showLeadingSessionIndicator ? (\n <LeadingSessionIndicator sessionStatus={sessionStatus} onSessionIndicatorClick={onSessionIndicatorClick} />\n ) : null}\n <WorkspaceTypeIndicator workspaceType={workspaceType} initializing={initializing} shorthand={shorthand} />\n <WorkspaceAttemptStatusIndicator attemptStatus={attemptStatus} />\n <WorkspaceDiffTotals diffAdditions={diffAdditions} diffDeletions={diffDeletions} />\n <WorkspaceDropdownTrigger hasMultipleWorkspaces={hasMultipleWorkspaces} onDropdownClick={onDropdownClick} />\n </HStack>\n );\n};\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n AlertTriangle,\n BookOpen,\n Bug,\n CheckCircle,\n Circle,\n Clock,\n Eye,\n Flag,\n Flame,\n Gauge,\n Lightbulb,\n Shield,\n Sparkles,\n Star,\n Wrench,\n} from \"lucide-react\";\n\nconst TAG_OPTION_ICON_MAP: Record<string, LucideIcon> = {\n circle: Circle,\n bug: Bug,\n sparkles: Sparkles,\n \"book-open\": BookOpen,\n wrench: Wrench,\n gauge: Gauge,\n \"alert-triangle\": AlertTriangle,\n star: Star,\n flag: Flag,\n flame: Flame,\n lightbulb: Lightbulb,\n shield: Shield,\n eye: Eye,\n clock: Clock,\n \"check-circle\": CheckCircle,\n};\n\nexport const getTagOptionIcon = (icon: string | null | undefined) => {\n if (!icon) {\n return null;\n }\n\n return TAG_OPTION_ICON_MAP[icon] ?? null;\n};\n","import { Badge, HStack, Icon, Menu, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\n\nimport { getTagOptionIcon } from \"./tag-option-icon\";\nimport type { WorkspaceTagOption } from \"./types\";\n\ninterface TagBadgeProps {\n value: string | null;\n label?: string;\n color?: string;\n options: WorkspaceTagOption[];\n onValueChange?: (newValue: string) => void;\n}\n\nexport const TagBadge = (props: TagBadgeProps) => {\n const { value, label, color = \"purple\", options, onValueChange } = props;\n const selectedOption = value ? options.find((option) => option.value === value) : undefined;\n const selectedIcon = getTagOptionIcon(selectedOption?.icon);\n\n const displayLabel = value ? (selectedOption?.label ?? value) : (label ?? \"—\");\n\n if (!onValueChange || options.length === 0) {\n return (\n <Badge variant=\"subtle\" colorPalette={color} textStyle=\"label/XS/medium\">\n <HStack as=\"span\" gap=\"1\" alignItems=\"center\">\n {selectedIcon ? <Icon as={selectedIcon} boxSize=\"12px\" /> : null}\n <Text as=\"span\">{displayLabel}</Text>\n </HStack>\n </Badge>\n );\n }\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Badge\n variant=\"subtle\"\n colorPalette={color}\n textStyle=\"label/XS/medium\"\n cursor=\"pointer\"\n _hover={{ opacity: 0.8 }}\n onClick={(event) => event.stopPropagation()}\n >\n <HStack as=\"span\" gap=\"1\" alignItems=\"center\">\n {selectedIcon ? <Icon as={selectedIcon} boxSize=\"12px\" /> : null}\n <Text as=\"span\">{displayLabel}</Text>\n </HStack>\n </Badge>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"160px\" bg=\"bg\" onClick={(event) => event.stopPropagation()}>\n {options.map((option) => {\n const optionIcon = getTagOptionIcon(option.icon);\n\n return (\n <Menu.Item key={option.value} value={option.value} onClick={() => onValueChange(option.value)}>\n {optionIcon ? <Icon as={optionIcon} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n <Text textStyle=\"label/S/regular\" flex=\"1\">\n {option.label}\n </Text>\n {option.value === value && <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" />}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n","import { Badge, HStack, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport type { DragEventHandler } from \"react\";\nimport type { WorkspaceBadgeProps } from \"@/components/workspace-badge\";\nimport { WorkspaceBadge } from \"@/components/workspace-badge\";\nimport { TagBadge } from \"./tag-badge\";\nimport type { WorkspaceTagOption } from \"./types\";\n\nexport interface TicketCardBadge {\n label: string;\n color?: string;\n}\n\nexport interface TicketCardTagBadge {\n tagName: string;\n label: string;\n value: string | null;\n color?: string;\n options: WorkspaceTagOption[];\n}\n\ninterface TicketCardProps {\n ticketId: string;\n parentPath?: string[];\n title: string;\n badges?: TicketCardBadge[];\n tagBadges?: TicketCardTagBadge[];\n workspaceBadge?: WorkspaceBadgeProps;\n isSelected?: boolean;\n draggable?: boolean;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n onTagChange?: (tagName: string, newValue: string) => void;\n}\n\nexport const TicketCard = (props: TicketCardProps) => {\n const {\n ticketId,\n parentPath = [],\n title,\n badges = [],\n tagBadges = [],\n workspaceBadge,\n isSelected = false,\n draggable,\n onDragStart,\n onDragEnd,\n onClick,\n onTagChange,\n } = props;\n\n const hasBadges = badges.length > 0 || tagBadges.length > 0;\n\n return (\n <Stack\n gap=\"xs\"\n padding=\"sm\"\n borderRadius=\"sm\"\n borderWidth=\"1px\"\n width=\"100%\"\n background=\"bg\"\n transition=\"box-shadow 0.2s ease-in-out, border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.blue\",\n boxShadow: \"mid\",\n }}\n cursor={draggable ? \"grab\" : onClick ? \"pointer\" : \"default\"}\n draggable={draggable}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onClick={onClick}\n data-selected={isSelected ? \"true\" : undefined}\n data-testid=\"ticket-card\"\n >\n <HStack gap=\"2xs\" flexWrap=\"wrap\" alignItems=\"center\">\n <HStack gap=\"2xs\" flexShrink={0}>\n <Text textStyle=\"label/S/regular\" flexShrink={0}>\n {parentPath.length > 0 && (\n <Text as=\"span\" color=\"subtle\">\n {parentPath.join(\" / \")} /{\" \"}\n </Text>\n )}\n {ticketId}\n </Text>\n {workspaceBadge ? <WorkspaceBadge {...workspaceBadge} /> : null}\n </HStack>\n </HStack>\n\n <HStack align=\"start\" gap=\"2xs\" flexWrap=\"wrap\" minW=\"0\">\n <Text textStyle=\"label/S/regular\" flex=\"1\" minW=\"0\" overflowWrap=\"anywhere\">\n {title}\n </Text>\n </HStack>\n\n {hasBadges && (\n <Wrap gap=\"2xs\">\n {badges.map((badge) => (\n <Badge key={badge.label} variant=\"subtle\" colorPalette={badge.color ?? \"gray\"} textStyle=\"label/XS/medium\">\n {badge.label}\n </Badge>\n ))}\n {tagBadges.map((tag) => (\n <TagBadge\n key={tag.tagName}\n value={tag.value}\n label={tag.label}\n color={tag.value ? tag.color : \"gray\"}\n options={tag.options}\n onValueChange={onTagChange ? (newValue) => onTagChange(tag.tagName, newValue) : undefined}\n />\n ))}\n </Wrap>\n )}\n </Stack>\n );\n};\n","import { Badge, Box, HStack, Icon, IconButton, Menu, Spacer, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight, MoreHorizontal, Plus } from \"lucide-react\";\nimport { type ComponentProps, type ComponentType, type DragEvent, useState } from \"react\";\n\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport type { ResourceContextAction } from \"@/components/resource-context-menu\";\nimport { ResourceContextMenu } from \"@/components/resource-context-menu\";\nimport { ScrollArea } from \"@/components/scroll-area\";\nimport { Tooltip } from \"@/components/tooltip\";\n\nimport { TicketCard } from \"./ticket-card\";\n\ntype TicketCardProps = ComponentProps<typeof TicketCard>;\n\nexport interface TicketBoardItem {\n id: string;\n cardProps: Omit<TicketCardProps, \"draggable\" | \"onDragStart\" | \"onDragEnd\" | \"isSelected\">;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface TicketBoardColumnAction {\n id: string;\n label: string;\n icon: ComponentType<{ size?: number | string }>;\n}\n\nexport interface TicketBoardGroup {\n key: string;\n label: string;\n items: TicketBoardItem[];\n}\n\nexport interface TicketBoardColumn {\n id: string;\n label: string;\n color?: string;\n items: TicketBoardItem[];\n groups?: TicketBoardGroup[];\n canDragIn: boolean;\n canDragOut: boolean;\n canCreate: boolean;\n actions: TicketBoardColumnAction[];\n}\n\ninterface TicketBoardProps {\n columns: TicketBoardColumn[];\n selectedItemId?: string | null;\n onMoveItem?: (itemId: string, targetColumnId: string, context?: { beforeItemId?: string }) => void;\n onMoveToGroup?: (itemId: string, targetGroupKey: string, context?: { beforeItemId?: string }) => void;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\nexport const TicketBoard = (props: TicketBoardProps) => {\n const { columns, selectedItemId = null, onMoveItem, onMoveToGroup, onCreateStart, onColumnAction } = props;\n\n const [activeColumn, setActiveColumn] = useState<string | null>(null);\n const [activeGroup, setActiveGroup] = useState<string | null>(null);\n\n const handleDragStart = (itemId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.dataTransfer.setData(\"text/plain\", itemId);\n event.dataTransfer.effectAllowed = \"move\";\n };\n\n const handleDragEnd = () => {\n setActiveColumn(null);\n setActiveGroup(null);\n };\n\n const handleDragOver = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(columnId);\n };\n\n const handleDragLeave = (event: DragEvent<HTMLDivElement>) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveColumn(null);\n };\n\n const handleDrop = (columnId: string) => (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setActiveColumn(null);\n\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n\n onMoveItem?.(itemId, columnId);\n };\n\n return (\n <ScrollArea\n height=\"100%\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n contentProps={{ display: \"flex\", alignItems: \"stretch\", gap: \"0\", pb: \"2xs\", minH: \"100%\" }}\n >\n {columns.map((column) => (\n <Stack\n key={column.id}\n data-testid={`board-column-${column.id}`}\n gap=\"xs\"\n _notFirst={{ borderLeft: \"1px solid\", borderColor: \"border.muted\" }}\n background={activeColumn === column.id ? \"bg.subtle\" : \"bg\"}\n transition=\"background 150ms ease\"\n height=\"100%\"\n minH=\"240px\"\n overflow=\"hidden\"\n minW=\"260px\"\n flex=\"1 0 260px\"\n onDragOver={column.canDragIn ? handleDragOver(column.id) : undefined}\n onDragLeave={column.canDragIn ? handleDragLeave : undefined}\n onDrop={column.canDragIn ? handleDrop(column.id) : undefined}\n >\n <ColumnHeader column={column} onCreateStart={onCreateStart} onColumnAction={onColumnAction} />\n\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n verticalScrollbarProps={{ margin: \"0\" }}\n contentProps={{\n spaceY: \"sm\",\n ps: \"xs\",\n pe: \"xs\",\n }}\n >\n {column.groups && column.groups.length > 0\n ? column.groups.map((group) => {\n const groupId = `${column.id}::${group.key}`;\n return (\n <GroupSection\n key={group.key}\n columnId={column.id}\n group={group}\n selectedItemId={selectedItemId}\n canDragIn={column.canDragIn}\n canDragOut={column.canDragOut}\n isDropTarget={activeGroup === groupId}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onGroupDragOver={(event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveGroup(groupId);\n setActiveColumn(null);\n }}\n onGroupDragLeave={(event) => {\n if (event.currentTarget.contains(event.relatedTarget as Node)) return;\n setActiveGroup(null);\n }}\n onGroupDrop={(event, beforeItemId) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveGroup(null);\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId) return;\n onMoveItem?.(itemId, column.id, { beforeItemId });\n onMoveToGroup?.(itemId, group.key, { beforeItemId });\n }}\n />\n );\n })\n : column.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n setActiveColumn(column.id);\n }\n : undefined\n }\n onDrop={\n column.canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n setActiveColumn(null);\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onMoveItem?.(itemId, column.id, { beforeItemId: item.id });\n }\n : undefined\n }\n >\n <TicketCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={column.canDragOut}\n onDragStart={column.canDragOut ? handleDragStart(item.id) : undefined}\n onDragEnd={column.canDragOut ? handleDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </ScrollArea>\n </Stack>\n ))}\n </ScrollArea>\n );\n};\n\ninterface ColumnHeaderProps {\n column: TicketBoardColumn;\n onCreateStart?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n}\n\ninterface GroupSectionProps {\n columnId: string;\n group: TicketBoardGroup;\n selectedItemId: string | null;\n canDragIn: boolean;\n canDragOut: boolean;\n isDropTarget: boolean;\n onDragStart: (itemId: string) => (event: DragEvent<HTMLDivElement>) => void;\n onDragEnd: () => void;\n onGroupDragOver: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDragLeave: (event: DragEvent<HTMLDivElement>) => void;\n onGroupDrop: (event: DragEvent<HTMLDivElement>, beforeItemId?: string) => void;\n}\n\nconst GroupSection = (props: GroupSectionProps) => {\n const {\n columnId,\n group,\n selectedItemId,\n canDragIn,\n canDragOut,\n isDropTarget,\n onDragStart,\n onDragEnd,\n onGroupDragOver,\n onGroupDragLeave,\n onGroupDrop,\n } = props;\n const [expanded, setExpanded] = useState(true);\n\n return (\n <Stack\n data-column-id={columnId}\n data-group-key={group.key}\n gap=\"0\"\n borderRadius=\"sm\"\n background={isDropTarget ? \"bg.subtle\" : \"transparent\"}\n transition=\"background 150ms ease\"\n onDragOver={canDragIn ? onGroupDragOver : undefined}\n onDragLeave={canDragIn ? onGroupDragLeave : undefined}\n onDrop={canDragIn ? onGroupDrop : undefined}\n >\n <HStack\n px=\"xs\"\n py=\"2xs\"\n gap=\"2xs\"\n cursor=\"pointer\"\n _hover={{ bg: \"bg.hover\" }}\n borderRadius=\"sm\"\n onClick={() => setExpanded((v) => !v)}\n >\n <Box display=\"flex\" alignItems=\"center\" flexShrink={0}>\n <Icon\n as={ChevronRight}\n boxSize=\"14px\"\n color=\"fg.muted\"\n transform={expanded ? \"rotate(90deg)\" : \"rotate(0deg)\"}\n transition=\"transform 0.15s ease\"\n />\n </Box>\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {group.label}\n </Text>\n <Badge variant=\"subtle\" colorPalette=\"gray\" size=\"sm\">\n {group.items.length}\n </Badge>\n </HStack>\n {expanded && (\n <Stack gap=\"sm\" pt=\"xs\">\n {group.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box\n onDragOver={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n }\n : undefined\n }\n onDrop={\n canDragIn\n ? (event) => {\n event.preventDefault();\n event.stopPropagation();\n const itemId = event.dataTransfer.getData(\"text/plain\");\n if (!itemId || itemId === item.id) return;\n onGroupDrop(event, item.id);\n }\n : undefined\n }\n >\n <TicketCard\n {...item.cardProps}\n isSelected={item.id === selectedItemId}\n draggable={canDragOut}\n onDragStart={canDragOut ? onDragStart(item.id) : undefined}\n onDragEnd={canDragOut ? onDragEnd : undefined}\n />\n </Box>\n </ResourceContextMenu>\n ))}\n </Stack>\n )}\n </Stack>\n );\n};\n\nconst ColumnHeader = (props: ColumnHeaderProps) => {\n const { column, onCreateStart, onColumnAction } = props;\n\n return (\n <HStack padding=\"xs\" gap=\"xs\" alignItems=\"center\">\n <Text textStyle=\"label/L/medium\">{column.label}</Text>\n\n <Badge variant=\"subtle\" colorPalette={column.color ?? \"gray\"}>\n {column.items.length}\n </Badge>\n\n <Spacer />\n\n {column.canCreate && onCreateStart && (\n <Tooltip content=\"Create new ticket\">\n <IconButton size=\"2xs\" variant=\"outline\" onClick={() => onCreateStart(column.id)} aria-label=\"Create ticket\">\n <Icon as={Plus} boxSize=\"12px\" />\n </IconButton>\n </Tooltip>\n )}\n\n {column.actions.length > 0 && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={`Column actions for ${column.label}`}>\n <Icon as={MoreHorizontal} boxSize=\"12px\" />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"180px\" bg=\"bg\">\n {column.actions.map((action) => (\n <Menu.Item key={action.id} value={action.id} asChild>\n <ListRow\n asChild\n variant=\"compact\"\n label={action.label}\n icon={<Icon as={action.icon} boxSize=\"16px\" />}\n onActivate={() => onColumnAction?.(column.id, action.id)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n )}\n </HStack>\n );\n};\n","import { Badge, Box, HStack, Icon, Text, Wrap } from \"@chakra-ui/react\";\nimport {\n type ColumnDef,\n type ExpandedState,\n getCoreRowModel,\n getExpandedRowModel,\n type Row,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { type ComponentType, type ReactNode, useState } from \"react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowItem } from \"../list-row/list-row.types\";\nimport type { ResourceContextAction } from \"../resource-context-menu\";\nimport { TagBadge } from \"./tag-badge\";\nimport type { TicketCardBadge, TicketCardTagBadge } from \"./ticket-card\";\n\nexport interface TicketListItem {\n id: string;\n ticketId: string;\n title: string;\n countBadge?: number;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n badges?: TicketCardBadge[];\n tagBadges?: TicketCardTagBadge[];\n date?: string;\n assigneeIcon?: ReactNode;\n children?: TicketListItem[];\n onClick?: () => void;\n onTagChange?: (tagName: string, newValue: string) => void;\n contextMenuActions?: ResourceContextAction[];\n draggable?: boolean;\n onDropTicket?: (ticketId: string) => void;\n}\n\ninterface TicketListProps {\n items: TicketListItem[];\n selectedItemId?: string | null;\n onItemClick?: (item: TicketListItem) => void;\n}\n\nconst INDENT_STEP_PX = 12;\n\nexport const getTicketListIndentation = (depth: number) => {\n if (depth <= 0) return undefined;\n return `${depth * INDENT_STEP_PX}px`;\n};\n\nconst columns: ColumnDef<TicketListItem, unknown>[] = [{ id: \"ticket\" }];\n\nconst renderLabel = (item: TicketListItem) => {\n const hasTicketId = item.ticketId.trim().length > 0;\n return (\n <HStack gap=\"xs\" minW=\"0\" flex=\"1\">\n {hasTicketId ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0} minW=\"70px\">\n {item.ticketId}\n </Text>\n ) : null}\n <Text textStyle=\"label/S/regular\" flex=\"1\" truncate>\n {item.title}\n </Text>\n </HStack>\n );\n};\n\nconst renderEndContent = (item: TicketListItem) => {\n const hasBadges = (item.badges?.length ?? 0) > 0 || (item.tagBadges?.length ?? 0) > 0;\n const hasCount = typeof item.countBadge === \"number\";\n const hasAssignee = Boolean(item.assigneeIcon);\n const hasDate = Boolean(item.date);\n\n if (!hasBadges && !hasCount && !hasAssignee && !hasDate) return null;\n\n return (\n <HStack gap=\"xs\" flexShrink={0}>\n {hasCount ? (\n <Badge variant=\"subtle\" colorPalette=\"gray\" size=\"sm\" flexShrink={0}>\n {item.countBadge}\n </Badge>\n ) : null}\n {hasBadges ? (\n <Wrap gap=\"2xs\" flexShrink={0}>\n {item.badges?.map((badge) => (\n <Badge key={badge.label} variant=\"subtle\" colorPalette={badge.color ?? \"gray\"} textStyle=\"label/XS/medium\">\n {badge.label}\n </Badge>\n ))}\n {item.tagBadges?.map((tag) => (\n <TagBadge\n key={tag.tagName}\n value={tag.value}\n label={tag.label}\n color={tag.value ? tag.color : \"gray\"}\n options={tag.options}\n onValueChange={item.onTagChange ? (newValue) => item.onTagChange!(tag.tagName, newValue) : undefined}\n />\n ))}\n </Wrap>\n ) : null}\n {hasAssignee ? <Box flexShrink={0}>{item.assigneeIcon}</Box> : null}\n {hasDate ? (\n <Text textStyle=\"label/XS/regular\" color=\"fg.muted\" flexShrink={0}>\n {item.date}\n </Text>\n ) : null}\n </HStack>\n );\n};\n\nconst buildListRowItem = (item: TicketListItem, hasChildren: boolean): ListRowItem => ({\n id: item.id,\n label: renderLabel(item),\n icon: item.statusIcon ? <Icon as={item.statusIcon} boxSize=\"16px\" /> : undefined,\n iconColor: item.statusColor ?? \"fg.muted\",\n endContent: renderEndContent(item),\n isContainer: hasChildren,\n contextMenuItems: item.contextMenuActions?.map((action) => ({\n id: action.key,\n label: action.label,\n icon: action.icon ?? undefined,\n disabled: action.isDisabled,\n onAction: action.onClick,\n })),\n});\n\nexport const TicketList = (props: TicketListProps) => {\n const { items, selectedItemId = null, onItemClick } = props;\n const [expanded, setExpanded] = useState<ExpandedState>(true);\n\n const table = useReactTable({\n data: items,\n columns,\n state: { expanded },\n onExpandedChange: setExpanded,\n getSubRows: (row) => row.children,\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getRowId: (row) => row.id,\n });\n\n return (\n <Box>\n {table.getRowModel().rows.map((row) => (\n <TicketListRow key={row.id} row={row} selectedItemId={selectedItemId} onItemClick={onItemClick} />\n ))}\n </Box>\n );\n};\n\ninterface TicketListRowProps {\n row: Row<TicketListItem>;\n selectedItemId: string | null;\n onItemClick?: (item: TicketListItem) => void;\n}\n\nconst TicketListRow = (props: TicketListRowProps) => {\n const { row, selectedItemId, onItemClick } = props;\n const item = row.original;\n const canExpand = row.getCanExpand();\n const isSelected = item.id === selectedItemId;\n const rowItem = buildListRowItem(item, canExpand);\n\n const handleActivate = () => {\n if (canExpand) {\n row.toggleExpanded();\n return;\n }\n item.onClick?.();\n onItemClick?.(item);\n };\n\n return (\n <Box\n borderBottomWidth=\"1px\"\n borderColor=\"border.muted\"\n draggable={item.draggable}\n onDragStart={(event) => {\n if (!item.draggable) return;\n event.stopPropagation();\n event.dataTransfer.setData(\"text/plain\", item.id);\n event.dataTransfer.effectAllowed = \"move\";\n }}\n onDragOver={(event) => {\n if (!item.onDropTicket) return;\n event.preventDefault();\n event.stopPropagation();\n event.dataTransfer.dropEffect = \"move\";\n }}\n onDrop={(event) => {\n if (!item.onDropTicket) return;\n event.preventDefault();\n event.stopPropagation();\n const ticketId = event.dataTransfer.getData(\"text/plain\");\n if (!ticketId || ticketId === item.id) return;\n item.onDropTicket(ticketId);\n }}\n >\n <ListRow\n {...rowItem}\n variant=\"tree\"\n depth={row.depth}\n isSelected={isSelected}\n isExpanded={row.getIsExpanded()}\n showExpandToggle={canExpand}\n onActivate={handleActivate}\n onToggleExpand={() => row.toggleExpanded()}\n />\n </Box>\n );\n};\n","import {\n type FilterCategory,\n type FilterState,\n type GroupingField,\n isTagKey,\n toTagName,\n type WorkspaceOrdering,\n type WorkspaceTagDefinition,\n type WorkspaceTicket,\n} from \"./types\";\n\ninterface GroupingOptions {\n columnGrouping: GroupingField;\n rowGrouping: GroupingField;\n knownColumnKeys?: string[];\n}\n\ninterface TicketRowGroup {\n key: string;\n label: string;\n tickets: WorkspaceTicket[];\n}\n\ninterface TicketColumnGroup {\n key: string;\n label: string;\n tickets: WorkspaceTicket[];\n rows: TicketRowGroup[];\n}\n\nconst FALLBACK_LABELS: Record<string, string> = {\n status: \"No status\",\n assignee: \"Unassigned\",\n};\n\nconst normalize = (value: string | null | undefined, fallback: string) => {\n if (!value || value.trim() === \"\") {\n return fallback;\n }\n\n return value;\n};\n\nconst getTagValue = (ticket: WorkspaceTicket, tagName: string) =>\n ticket.tags?.find((tag) => tag.name === tagName)?.value ?? null;\n\nconst getGroupingValue = (ticket: WorkspaceTicket, grouping: GroupingField) => {\n if (grouping === \"none\") {\n return \"All\";\n }\n\n if (grouping === \"status\") {\n return normalize(ticket.status, FALLBACK_LABELS.status!);\n }\n\n if (grouping === \"assignee\") {\n return normalize(ticket.assignee, FALLBACK_LABELS.assignee!);\n }\n\n if (isTagKey(grouping)) {\n const tagName = toTagName(grouping);\n const fallback = FALLBACK_LABELS[grouping] ?? `No ${tagName}`;\n return normalize(getTagValue(ticket, tagName), fallback);\n }\n\n return \"All\";\n};\n\nconst compareGroupKey = (a: string, b: string) => a.localeCompare(b, undefined, { numeric: true });\n\nconst orderByDirection = (value: number, direction: WorkspaceOrdering[\"direction\"]) =>\n direction === \"asc\" ? value : value * -1;\n\nexport const orderTickets = (\n tickets: WorkspaceTicket[],\n ordering: WorkspaceOrdering,\n tagDefinitions: WorkspaceTagDefinition[] = [],\n) => {\n if (ordering.field === \"manual\") {\n return tickets;\n }\n\n return [...tickets].sort((a, b) => {\n if (ordering.field === \"updated\") {\n const left = new Date(a.updatedAt ?? 0).getTime();\n const right = new Date(b.updatedAt ?? 0).getTime();\n return orderByDirection(left - right, ordering.direction);\n }\n\n if (ordering.field === \"title\") {\n return orderByDirection(a.title.localeCompare(b.title), ordering.direction);\n }\n\n if (isTagKey(ordering.field)) {\n const tagName = toTagName(ordering.field);\n const def = tagDefinitions.find((d) => d.name === tagName);\n const leftVal = getTagValue(a, tagName);\n const rightVal = getTagValue(b, tagName);\n\n if (def) {\n const toOptionIndex = (value: string | null) => {\n if (value === null) {\n return def.options.length;\n }\n\n const index = def.options.findIndex((o) => o.value === value);\n return index === -1 ? def.options.length + 1 : index;\n };\n\n const leftIndex = toOptionIndex(leftVal);\n const rightIndex = toOptionIndex(rightVal);\n return orderByDirection(leftIndex - rightIndex, ordering.direction);\n }\n\n return orderByDirection(\n (leftVal ?? \"\").localeCompare(rightVal ?? \"\", undefined, { numeric: true }),\n ordering.direction,\n );\n }\n\n return orderByDirection(a.ticketId.localeCompare(b.ticketId, undefined, { numeric: true }), ordering.direction);\n });\n};\n\nexport const groupTickets = (tickets: WorkspaceTicket[], options: GroupingOptions): TicketColumnGroup[] => {\n const { columnGrouping, rowGrouping, knownColumnKeys } = options;\n const groupedByColumn = new Map<string, WorkspaceTicket[]>();\n\n // Seed with known keys so empty columns are preserved\n if (knownColumnKeys) {\n for (const key of knownColumnKeys) {\n groupedByColumn.set(key, []);\n }\n }\n\n for (const ticket of tickets) {\n const key = getGroupingValue(ticket, columnGrouping);\n groupedByColumn.set(key, [...(groupedByColumn.get(key) ?? []), ticket]);\n }\n\n const columnEntries = [...groupedByColumn.entries()].sort(([left], [right]) => compareGroupKey(left, right));\n\n return columnEntries.map(([columnKey, columnTickets]) => {\n if (rowGrouping === \"none\") {\n return {\n key: columnKey,\n label: columnKey,\n tickets: columnTickets,\n rows: [],\n };\n }\n\n const groupedByRow = new Map<string, WorkspaceTicket[]>();\n\n for (const ticket of columnTickets) {\n const rowKey = getGroupingValue(ticket, rowGrouping);\n groupedByRow.set(rowKey, [...(groupedByRow.get(rowKey) ?? []), ticket]);\n }\n\n const rows = [...groupedByRow.entries()]\n .sort(([left], [right]) => compareGroupKey(left, right))\n .map(([rowKey, rowTickets]) => ({\n key: rowKey,\n label: rowKey,\n tickets: rowTickets,\n }));\n\n return {\n key: columnKey,\n label: columnKey,\n tickets: columnTickets,\n rows,\n };\n });\n};\n\nconst getTicketFilterValues = (ticket: WorkspaceTicket, category: FilterCategory): string[] => {\n if (category === \"status\") {\n return [normalize(ticket.status, FALLBACK_LABELS.status!)];\n }\n\n if (category === \"assignee\") {\n return [normalize(ticket.assignee, FALLBACK_LABELS.assignee!)];\n }\n\n if (isTagKey(category)) {\n const tagName = toTagName(category);\n const value = getTagValue(ticket, tagName);\n return value ? [value] : [];\n }\n\n return [];\n};\n\nexport const filterTickets = (tickets: WorkspaceTicket[], filters: FilterState) => {\n const activeFilters = Object.entries(filters).filter(([, values]) => values && values.length > 0);\n\n if (activeFilters.length === 0) {\n return tickets;\n }\n\n return tickets.filter((ticket) =>\n activeFilters.every(([category, values]) => {\n const ticketValues = getTicketFilterValues(ticket, category as FilterCategory);\n return ticketValues.some((value) => values?.includes(value));\n }),\n );\n};\n\nexport const countFilterValues = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const counts: Record<string, number> = {};\n\n for (const ticket of tickets) {\n for (const value of getTicketFilterValues(ticket, category)) {\n counts[value] = (counts[value] ?? 0) + 1;\n }\n }\n\n return counts;\n};\n\nexport type { TicketColumnGroup, TicketRowGroup };\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\n\nimport {\n DEFAULT_WORKSPACE_SETTINGS,\n type DisplayProperty,\n type FilterCategory,\n type FilterState,\n type WorkspaceSettings,\n} from \"./types\";\nimport { omitFilterCategory } from \"./workspace-helpers\";\n\ninterface WorkspaceSnapshot {\n settings: WorkspaceSettings;\n filters: FilterState;\n}\n\ninterface WorkspaceState extends WorkspaceSnapshot {\n setViewMode: (viewMode: WorkspaceSettings[\"viewMode\"]) => void;\n setColumnGrouping: (columnGrouping: WorkspaceSettings[\"columnGrouping\"]) => void;\n setRowGrouping: (rowGrouping: WorkspaceSettings[\"rowGrouping\"]) => void;\n setOrdering: (ordering: WorkspaceSettings[\"ordering\"]) => void;\n setOrderingField: (field: WorkspaceSettings[\"ordering\"][\"field\"]) => void;\n toggleSortDirection: () => void;\n toggleDisplayProperty: (property: WorkspaceSettings[\"displayProperties\"][number]) => void;\n setFilter: (category: FilterCategory, values: string[]) => void;\n toggleFilterValue: (category: FilterCategory, value: string) => void;\n clearFilter: (category: FilterCategory) => void;\n clearAllFilters: () => void;\n reset: () => void;\n}\n\ninterface CreateTicketsWorkspaceStoreOptions {\n storageKey: string;\n initialState?: Partial<WorkspaceSnapshot>;\n}\n\nconst WORKSPACE_STORE_NAMESPACE = \"pstdio/ui/tickets-workspace\";\n\nconst toStorageName = (storageKey: string) => `${WORKSPACE_STORE_NAMESPACE}/${storageKey}`;\n\nconst DEFAULT_SNAPSHOT: WorkspaceSnapshot = {\n settings: DEFAULT_WORKSPACE_SETTINGS,\n filters: {},\n};\n\nconst createNoopStorage = () => ({\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n});\n\nconst toggleValue = (values: string[], value: string) =>\n values.includes(value) ? values.filter((entry) => entry !== value) : [...values, value];\n\nexport const createTicketsWorkspaceStore = (options: CreateTicketsWorkspaceStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = {\n settings: { ...DEFAULT_SNAPSHOT.settings, ...(initialState?.settings ?? {}) },\n filters: initialState?.filters ?? DEFAULT_SNAPSHOT.filters,\n };\n\n return createStore<WorkspaceState>()(\n persist(\n (set) => ({\n ...snapshot,\n setViewMode: (viewMode) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, viewMode },\n })),\n setColumnGrouping: (columnGrouping) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, columnGrouping },\n })),\n setRowGrouping: (rowGrouping) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, rowGrouping },\n })),\n setOrdering: (ordering) =>\n set((state) => ({\n ...state,\n settings: { ...state.settings, ordering },\n })),\n setOrderingField: (field) =>\n set((state) => ({\n ...state,\n settings: {\n ...state.settings,\n ordering: {\n ...state.settings.ordering,\n field,\n },\n },\n })),\n toggleSortDirection: () =>\n set((state) => ({\n ...state,\n settings: {\n ...state.settings,\n ordering: {\n ...state.settings.ordering,\n direction: state.settings.ordering.direction === \"asc\" ? \"desc\" : \"asc\",\n },\n },\n })),\n toggleDisplayProperty: (property) =>\n set((state) => {\n const displayProperties = state.settings.displayProperties.includes(property)\n ? state.settings.displayProperties.filter((value) => value !== property)\n : [...state.settings.displayProperties, property];\n\n return {\n ...state,\n settings: {\n ...state.settings,\n displayProperties,\n },\n };\n }),\n setFilter: (category, values) =>\n set((state) => ({\n ...state,\n filters: {\n ...state.filters,\n [category]: values,\n },\n })),\n toggleFilterValue: (category, value) =>\n set((state) => {\n const currentValues = state.filters[category] ?? [];\n const nextValues = toggleValue(currentValues, value);\n const nextFilters =\n nextValues.length === 0\n ? omitFilterCategory(state.filters, category)\n : { ...state.filters, [category]: nextValues };\n\n return { ...state, filters: nextFilters };\n }),\n clearFilter: (category) =>\n set((state) => {\n return {\n ...state,\n filters: omitFilterCategory(state.filters, category),\n };\n }),\n clearAllFilters: () => set((state) => ({ ...state, filters: {} })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n version: 1,\n migrate: (persisted, version) => {\n if (version === 0) {\n const state = persisted as WorkspaceSnapshot;\n // Remove legacy \"labels\" filter category\n const filters = { ...state.filters };\n delete (filters as Record<string, unknown>).labels;\n\n // Remove legacy \"labels\" display property\n const displayProperties = state.settings.displayProperties.filter(\n (p) => p !== (\"labels\" as DisplayProperty),\n );\n\n return {\n ...state,\n settings: { ...state.settings, displayProperties },\n filters,\n };\n }\n return persisted as WorkspaceSnapshot;\n },\n storage: createJSONStorage(() => {\n if (typeof globalThis.localStorage === \"undefined\") {\n return createNoopStorage();\n }\n\n return globalThis.localStorage;\n }),\n partialize: (state) => ({\n settings: state.settings,\n filters: state.filters,\n }),\n },\n ),\n );\n};\n\nconst workspaceStoreRegistry = new Map<string, ReturnType<typeof createTicketsWorkspaceStore>>();\n\nexport const getTicketsWorkspaceStore = (storageKey: string) => {\n const existingStore = workspaceStoreRegistry.get(storageKey);\n if (existingStore) {\n return existingStore;\n }\n\n const store = createTicketsWorkspaceStore({ storageKey });\n workspaceStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useTicketsWorkspaceStore = <T>(storageKey: string, selector: (state: WorkspaceState) => T) => {\n const store = getTicketsWorkspaceStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { WorkspaceState };\n","import { Box, HStack, Stack } from \"@chakra-ui/react\";\n\nimport { EmptyState } from \"@/components/empty-state\";\n\nimport { DisplayMenu } from \"./display-menu\";\nimport { FilterMenu } from \"./filter-menu\";\nimport {\n TicketBoard,\n type TicketBoardColumn,\n type TicketBoardColumnAction,\n type TicketBoardGroup,\n} from \"./ticket-board\";\nimport {\n countFilterValues,\n filterTickets,\n groupTickets,\n orderTickets,\n type TicketColumnGroup,\n} from \"./ticket-grouping\";\nimport { TicketList, type TicketListItem } from \"./ticket-list\";\nimport {\n DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n DEFAULT_GROUPING_OPTIONS,\n DEFAULT_ORDERING_OPTIONS,\n type DisplayProperty,\n type GroupingField,\n type OrderingField,\n type WorkspaceFilterCategory,\n type WorkspaceOption,\n type WorkspaceSettings,\n type WorkspaceTagDefinition,\n type WorkspaceTicket,\n} from \"./types\";\nimport { useTicketsWorkspaceStore } from \"./use-workspace-store\";\nimport {\n buildDefaultFilterCategories,\n buildTagOptions,\n resolveKnownColumnKeys,\n resolveListDropTargetColumnKey,\n toBadges,\n toTagBadges,\n toTitleCase,\n} from \"./workspace-helpers\";\n\ninterface BoardColumnConfig {\n color?: string;\n canDragIn?: boolean;\n canDragOut?: boolean;\n canCreate?: boolean;\n actions?: TicketBoardColumnAction[];\n}\n\ninterface TicketsWorkspaceProps<TTicket extends WorkspaceTicket = WorkspaceTicket> {\n tickets: TTicket[];\n storageKey: string;\n tagDefinitions?: WorkspaceTagDefinition[];\n selectedTicketId?: string | null;\n groupingOptions?: WorkspaceOption<GroupingField>[];\n orderingOptions?: WorkspaceOption<OrderingField>[];\n displayPropertyOptions?: WorkspaceOption<DisplayProperty>[];\n filterCategories?: WorkspaceFilterCategory[];\n knownColumnKeys?: string[];\n emptyTitle?: string;\n emptyDescription?: string;\n hideToolbar?: boolean;\n onTicketClick?: (ticket: TTicket) => void;\n onTagChange?: (ticketId: string, tagName: string, newValue: string) => void;\n onMoveTicket?: (\n ticketId: string,\n targetColumnId: string,\n context?: { columnGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onMoveToGroup?: (\n ticketId: string,\n targetGroupKey: string,\n context?: { rowGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onCreateTicket?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n}\n\ninterface BuildListItemsInput<TTicket extends WorkspaceTicket> {\n settings: WorkspaceSettings;\n visibleTickets: TTicket[];\n grouped: TicketColumnGroup[];\n tagDefinitions: WorkspaceTagDefinition[];\n onTicketClick?: (ticket: TTicket) => void;\n onTagChange?: (ticketId: string, tagName: string, newValue: string) => void;\n onMoveTicket?: (\n ticketId: string,\n targetColumnId: string,\n context?: { columnGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n onMoveToGroup?: (\n ticketId: string,\n targetGroupKey: string,\n context?: { rowGrouping: GroupingField; beforeTicketId?: string },\n ) => void;\n}\n\nconst buildListItems = <TTicket extends WorkspaceTicket>(input: BuildListItemsInput<TTicket>): TicketListItem[] => {\n const { settings, visibleTickets, grouped, tagDefinitions, onTicketClick, onTagChange, onMoveTicket, onMoveToGroup } =\n input;\n\n const toListItem = (ticket: TTicket, placement?: { columnKey?: string; rowKey?: string }): TicketListItem => ({\n id: ticket.id,\n ticketId: settings.displayProperties.includes(\"id\") ? ticket.ticketId : \"\",\n title: ticket.title,\n badges: toBadges(ticket, settings.displayProperties),\n tagBadges: toTagBadges(ticket, settings.displayProperties, tagDefinitions),\n onClick: () => onTicketClick?.(ticket),\n onTagChange: onTagChange ? (tagName, newValue) => onTagChange(ticket.id, tagName, newValue) : undefined,\n draggable: Boolean(onMoveTicket),\n onDropTicket:\n settings.ordering.field === \"manual\" && onMoveTicket\n ? (draggedTicketId) => {\n const targetColumnKey = resolveListDropTargetColumnKey(settings.columnGrouping, placement);\n if (!targetColumnKey) {\n return;\n }\n\n onMoveTicket(draggedTicketId, targetColumnKey, {\n columnGrouping: settings.columnGrouping,\n beforeTicketId: ticket.id,\n });\n\n const rowKey = placement?.rowKey;\n if (settings.rowGrouping !== \"none\" && onMoveToGroup && rowKey) {\n onMoveToGroup(draggedTicketId, rowKey, {\n rowGrouping: settings.rowGrouping,\n beforeTicketId: ticket.id,\n });\n }\n }\n : undefined,\n });\n\n const toGroupListItem = (\n group: { key: string; label: string; tickets: WorkspaceTicket[] },\n parent?: { columnKey: string },\n ): TicketListItem => ({\n id: parent ? `group::${parent.columnKey}::${group.key}` : `group::${group.key}`,\n ticketId: \"\",\n title: toTitleCase(group.label),\n countBadge: group.tickets.length,\n onDropTicket:\n onMoveTicket && settings.columnGrouping !== \"none\"\n ? (draggedTicketId) => {\n const columnKey = parent?.columnKey ?? group.key;\n onMoveTicket(draggedTicketId, columnKey, {\n columnGrouping: settings.columnGrouping,\n });\n\n if (settings.rowGrouping !== \"none\" && onMoveToGroup && parent) {\n onMoveToGroup(draggedTicketId, group.key, {\n rowGrouping: settings.rowGrouping,\n });\n }\n }\n : undefined,\n children: orderTickets(group.tickets, settings.ordering, tagDefinitions).map((ticket) =>\n toListItem(ticket as TTicket, {\n columnKey: parent?.columnKey ?? group.key,\n rowKey: parent ? group.key : undefined,\n }),\n ),\n });\n\n if (settings.columnGrouping === \"none\") {\n return orderTickets(visibleTickets, settings.ordering, tagDefinitions).map((ticket) =>\n toListItem(ticket as TTicket),\n );\n }\n\n return grouped.map((group) => {\n if (group.rows.length > 0) {\n return {\n id: `group::${group.key}`,\n ticketId: \"\",\n title: toTitleCase(group.label),\n countBadge: group.tickets.length,\n onDropTicket: onMoveTicket\n ? (draggedTicketId: string) => {\n onMoveTicket(draggedTicketId, group.key, {\n columnGrouping: settings.columnGrouping,\n });\n }\n : undefined,\n children: group.rows.map((row) => toGroupListItem(row, { columnKey: group.key })),\n } satisfies TicketListItem;\n }\n\n return toGroupListItem(group);\n });\n};\n\nexport const TicketsWorkspace = <TTicket extends WorkspaceTicket>(props: TicketsWorkspaceProps<TTicket>) => {\n const {\n tickets,\n storageKey,\n tagDefinitions = [],\n selectedTicketId = null,\n groupingOptions: groupingOptionsProp,\n orderingOptions: orderingOptionsProp,\n displayPropertyOptions: displayPropertyOptionsProp,\n filterCategories,\n knownColumnKeys: knownColumnKeysProp,\n emptyTitle = \"No tickets found\",\n emptyDescription = \"Try changing filters or display settings.\",\n onTicketClick,\n onTagChange,\n onMoveTicket,\n onMoveToGroup,\n onCreateTicket,\n onColumnAction,\n getBoardColumnConfig,\n hideToolbar = false,\n } = props;\n\n const tagOptions = buildTagOptions(tagDefinitions);\n\n const groupingOptions = groupingOptionsProp ?? [...DEFAULT_GROUPING_OPTIONS, ...tagOptions.grouping];\n const orderingOptions = orderingOptionsProp ?? [...DEFAULT_ORDERING_OPTIONS, ...tagOptions.ordering];\n const displayPropertyOptions = displayPropertyOptionsProp ?? [\n ...DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n ...tagOptions.display,\n ];\n\n const settings = useTicketsWorkspaceStore(storageKey, (state) => state.settings);\n const filters = useTicketsWorkspaceStore(storageKey, (state) => state.filters);\n const setViewMode = useTicketsWorkspaceStore(storageKey, (state) => state.setViewMode);\n const setColumnGrouping = useTicketsWorkspaceStore(storageKey, (state) => state.setColumnGrouping);\n const setRowGrouping = useTicketsWorkspaceStore(storageKey, (state) => state.setRowGrouping);\n const setOrderingField = useTicketsWorkspaceStore(storageKey, (state) => state.setOrderingField);\n const toggleSortDirection = useTicketsWorkspaceStore(storageKey, (state) => state.toggleSortDirection);\n const toggleDisplayProperty = useTicketsWorkspaceStore(storageKey, (state) => state.toggleDisplayProperty);\n const toggleFilterValue = useTicketsWorkspaceStore(storageKey, (state) => state.toggleFilterValue);\n const clearFilter = useTicketsWorkspaceStore(storageKey, (state) => state.clearFilter);\n const clearAllFilters = useTicketsWorkspaceStore(storageKey, (state) => state.clearAllFilters);\n\n const visibleTickets = filterTickets(tickets, filters) as TTicket[];\n\n const categoryOptions = filterCategories ?? buildDefaultFilterCategories(tickets, tagDefinitions);\n\n const countsByCategory = Object.fromEntries(\n categoryOptions.map((category) => [category.id, countFilterValues(tickets, category.id)]),\n );\n\n const knownColumnKeys = resolveKnownColumnKeys(\n settings.columnGrouping,\n knownColumnKeysProp,\n categoryOptions,\n filters,\n );\n\n const grouped = groupTickets(visibleTickets, {\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n knownColumnKeys,\n });\n\n const listItems = buildListItems({\n settings,\n visibleTickets,\n grouped,\n tagDefinitions,\n onTicketClick,\n onTagChange,\n onMoveTicket,\n onMoveToGroup,\n });\n\n const toBoardItems = (tickets: WorkspaceTicket[]) =>\n tickets.map((ticket) => ({\n id: ticket.id,\n cardProps: {\n ticketId: settings.displayProperties.includes(\"id\") ? ticket.ticketId : \"\",\n parentPath: ticket.parentPath,\n title: ticket.title,\n badges: toBadges(ticket, settings.displayProperties),\n tagBadges: toTagBadges(ticket, settings.displayProperties, tagDefinitions),\n onClick: () => onTicketClick?.(ticket as TTicket),\n onTagChange: onTagChange\n ? (tagName: string, newValue: string) => onTagChange(ticket.id, tagName, newValue)\n : undefined,\n },\n }));\n\n const boardColumns: TicketBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedTickets = orderTickets(column.tickets, settings.ordering, tagDefinitions);\n\n const groups: TicketBoardGroup[] | undefined =\n column.rows.length > 0\n ? column.rows.map((row) => ({\n key: row.key,\n label: toTitleCase(row.label),\n items: toBoardItems(orderTickets(row.tickets, settings.ordering, tagDefinitions)),\n }))\n : undefined;\n\n return {\n id: column.key,\n label: column.label,\n color: columnConfig.color,\n canDragIn: columnConfig.canDragIn ?? false,\n canDragOut: columnConfig.canDragOut ?? false,\n canCreate: columnConfig.canCreate ?? false,\n actions: columnConfig.actions ?? [],\n items: toBoardItems(orderedTickets),\n groups,\n } satisfies TicketBoardColumn;\n });\n\n return (\n <Stack gap=\"sm\" height=\"100%\" minH=\"0\">\n {hideToolbar ? null : (\n <HStack justifyContent=\"flex-end\" gap=\"2xs\">\n <FilterMenu\n categories={categoryOptions}\n filters={filters}\n countsByCategory={countsByCategory}\n onToggleFilterValue={toggleFilterValue}\n onClearFilter={clearFilter}\n onClearAll={clearAllFilters}\n />\n <DisplayMenu\n settings={settings}\n groupingOptions={groupingOptions}\n orderingOptions={orderingOptions}\n displayPropertyOptions={displayPropertyOptions}\n onViewModeChange={setViewMode}\n onColumnGroupingChange={setColumnGrouping}\n onRowGroupingChange={setRowGrouping}\n onOrderingFieldChange={setOrderingField}\n onSortDirectionToggle={toggleSortDirection}\n onDisplayPropertyToggle={toggleDisplayProperty}\n />\n </HStack>\n )}\n\n {settings.viewMode === \"board\" ? (\n <Box flex=\"1\" minH=\"0\">\n {boardColumns.length > 0 ? (\n <TicketBoard\n columns={boardColumns}\n selectedItemId={selectedTicketId}\n onMoveItem={(ticketId, targetColumnId, context) =>\n onMoveTicket?.(ticketId, targetColumnId, {\n columnGrouping: settings.columnGrouping,\n beforeTicketId: context?.beforeItemId,\n })\n }\n onMoveToGroup={(ticketId, targetGroupKey, context) =>\n onMoveToGroup?.(ticketId, targetGroupKey, {\n rowGrouping: settings.rowGrouping,\n beforeTicketId: context?.beforeItemId,\n })\n }\n onCreateStart={onCreateTicket}\n onColumnAction={onColumnAction}\n />\n ) : (\n <EmptyState\n title={emptyTitle}\n description={emptyDescription}\n height=\"100%\"\n borderWidth=\"1px\"\n borderRadius=\"md\"\n />\n )}\n </Box>\n ) : listItems.length > 0 ? (\n <TicketList items={listItems} selectedItemId={selectedTicketId} />\n ) : (\n <EmptyState title={emptyTitle} description={emptyDescription} borderWidth=\"1px\" borderRadius=\"md\" />\n )}\n </Stack>\n );\n};\n\nexport type { TicketsWorkspaceProps };\n","export type ThemePreference = string;\nexport type ThemePreferenceMode = \"light\" | \"dark\";\nexport type ThemePreferenceTokens = Record<string, string>;\n\nexport interface ThemePreferenceOption {\n id: ThemePreference;\n mode: ThemePreferenceMode;\n tokens?: ThemePreferenceTokens;\n}\n\nexport const defaultThemePreferences = [\n { id: \"pstdio-light\", mode: \"light\" },\n { id: \"pstdio-dark\", mode: \"dark\" },\n] satisfies ThemePreferenceOption[];\n\nexport const isThemePreference = (\n value: string | null,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n): value is ThemePreference => typeof value === \"string\" && themePreferences.some((theme) => theme.id === value);\n\nexport const getThemePreferenceMode = (\n theme: ThemePreference,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => themePreferences.find((preference) => preference.id === theme)?.mode ?? \"light\";\n\nexport const getThemePreferenceClassName = (theme: ThemePreference) => `theme-${theme}`;\n\nexport const getThemePreferenceClassNames = (\n theme: ThemePreference,\n mode: ThemePreferenceMode = getThemePreferenceMode(theme),\n) => [mode, getThemePreferenceClassName(theme)];\n\nconst getThemePreferenceCssVariableName = (tokenPath: string) => `--chakra-${tokenPath.replaceAll(\".\", \"-\")}`;\n\nconst removeThemeTokens = (el: HTMLElement, theme?: ThemePreferenceOption) => {\n if (!theme?.tokens) return;\n\n for (const tokenPath of Object.keys(theme.tokens)) {\n el.style.removeProperty(getThemePreferenceCssVariableName(tokenPath));\n }\n};\n\nconst applyThemeTokens = (el: HTMLElement, theme: ThemePreferenceOption) => {\n if (!theme.tokens) return;\n\n for (const [tokenPath, value] of Object.entries(theme.tokens)) {\n el.style.setProperty(getThemePreferenceCssVariableName(tokenPath), value);\n }\n};\n\nexport const applyThemePreference = (\n theme: ThemePreference,\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => {\n if (typeof document === \"undefined\") return;\n\n const root = document.documentElement;\n const body = document.body;\n const preference = themePreferences.find((option) => option.id === theme) ?? { id: theme, mode: \"light\" };\n const mode = getThemePreferenceMode(theme, themePreferences);\n\n for (const el of [root, body]) {\n if (!el) continue;\n const previousTheme = el.getAttribute(\"data-theme\");\n const previousPreference = themePreferences.find((option) => option.id === previousTheme);\n\n el.classList.remove(\"light\", \"dark\");\n if (previousTheme) {\n el.classList.remove(getThemePreferenceClassName(previousTheme));\n }\n removeThemeTokens(el, previousPreference);\n applyThemeTokens(el, preference);\n el.classList.add(...getThemePreferenceClassNames(theme, mode));\n el.setAttribute(\"data-theme\", theme);\n el.setAttribute(\"data-color-mode\", mode);\n el.style.colorScheme = mode;\n }\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyThemePreference,\n defaultThemePreferences,\n getThemePreferenceMode,\n isThemePreference,\n type ThemePreference,\n type ThemePreferenceMode,\n type ThemePreferenceOption,\n} from \"./apply-theme-preference\";\n\nconst STORAGE_KEY = \"theme-preference\";\n\nconst ThemePreferenceContext = createContext<ThemePreferenceContextValue | null>(null);\n\ninterface ThemePreferenceContextValue {\n themePreference: ThemePreference;\n themePreferences: readonly ThemePreferenceOption[];\n setThemePreference: (preference: ThemePreference) => void;\n toggleThemePreference: () => void;\n}\n\ninterface ThemePreferenceProviderProps {\n children: ReactNode;\n initialPreference?: ThemePreference;\n themePreferences?: readonly ThemePreferenceOption[];\n}\n\nconst getDefaultThemePreference = (themePreferences: readonly ThemePreferenceOption[], mode: ThemePreferenceMode) =>\n themePreferences.find((preference) => preference.mode === mode)?.id ??\n themePreferences[0]?.id ??\n defaultThemePreferences[0].id;\n\nexport const getInitialThemePreference = (\n themePreferences: readonly ThemePreferenceOption[] = defaultThemePreferences,\n) => {\n if (typeof window === \"undefined\") return getDefaultThemePreference(themePreferences, \"light\");\n\n const stored = window.localStorage.getItem(STORAGE_KEY);\n if (isThemePreference(stored, themePreferences)) return stored;\n\n const prefersDark =\n typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n return getDefaultThemePreference(themePreferences, prefersDark ? \"dark\" : \"light\");\n};\n\nexport const ThemePreferenceProvider = (props: ThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultThemePreferences } = props;\n const initialPreference = props.initialPreference ?? getInitialThemePreference(themePreferences);\n const [themePreference, setThemePreference] = useState<ThemePreference>(initialPreference);\n\n useEffect(() => {\n applyThemePreference(themePreference, themePreferences);\n if (typeof window !== \"undefined\") {\n window.localStorage.setItem(STORAGE_KEY, themePreference);\n }\n }, [themePreference, themePreferences]);\n\n const toggleThemePreference = () => {\n setThemePreference((prev) => {\n const nextMode = getThemePreferenceMode(prev, themePreferences) === \"dark\" ? \"light\" : \"dark\";\n\n return getDefaultThemePreference(themePreferences, nextMode);\n });\n };\n\n return (\n <ThemePreferenceContext value={{ themePreference, themePreferences, setThemePreference, toggleThemePreference }}>\n {children}\n </ThemePreferenceContext>\n );\n};\n\nexport const useThemePreference = () => {\n const context = useContext(ThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useThemePreference must be used within a ThemePreferenceProvider\");\n }\n\n return context;\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","boxShadow","Textarea","outline","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","clampAttachedPanelWidth","width","bounds","min","max","Math","DEFAULT_RESIZABLE_MIN_WIDTH","MIN_CONTENT_WIDTH","AttachedPanel","header","minWidth","rest","resizable","panelRef","useRef","cleanupDragRef","_temp","resizedWidth","setResizedWidth","resolvedMinWidth","resolvedWidth","current","useEffect","panel","startX","clientX","startWidth","getBoundingClientRect","computedStyle","window","getComputedStyle","minPanelWidth","Number","parseFloat","parentWidth","parentElement","innerWidth","maxPanelWidth","previousCursor","document","body","style","cursor","previousUserSelect","userSelect","handlePointerMove","moveEvent","deltaX","nextWidth","cleanup","removeEventListener","_temp2","addEventListener","once","handleResizeStart","Flex","Breadcrumb","React","forwardRef","ref","LinkComponent","items","separator","separatorGap","linkComponent","item","index","last","isInteractive","Boolean","url","onClick","itemContent","ChakraBreadcrumb","map","BubbleButton","containerProps","tooltip","isOpen","button","headerVariantStyles","main","h","px","narrow","input","BubblePanel","menu","onClose","closeLabel","onPopOut","popOutLabel","height","testId","ariaLabel","SquareArrowOutUpRight","Minus","t9","t10","t11","t12","Portal","customTheme","base","inherit","rules","colors","CodeEditor","defaultCode","code","showLineNumbers","isEditable","language","disableScroll","enabled","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","tabSize","minimap","fontSize","readOnly","lineNumbers","options","Editor","CodeDiffEditor","original","modified","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","DiffEditor","_temp3","_temp4","monaco","editor","defineTheme","monaco_0","setTheme","languages","typescript","typescriptDefaults","setCompilerOptions","JsxEmit","addCommand","KeyMod","CtrlCmd","KeyCode","KeyS","getAction","run","_","contentPlaceholderBackgroundImage","ContentPlaceholder","backgroundClip","backgroundImage","display","Label","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","buttonText","notificationText","onDelete","open","handleDelete","Dialog","CloseButton","Button","DiffCard","diff","isSelected","isExpanded","onToggleExpanded","filePath","newPath","oldPath","additions","deletions","bg","stopPropagation","ChevronDown","ChevronRight","t13","change","t14","t15","DiffBubble","t16","Grid","t17","newContent","oldContent","t18","getDiffPath","DiffDrawer","diffs","selectedDiffPath","scrollRef","collapsedPaths","setCollapsedPaths","Set","virtualizer","useVirtualizer","getScrollElement","estimateSize","overscan","findIndex","scrollToIndex","align","ScrollArea","p","spaceY","EmptyState","toggleCollapsed","path","prev","next","has","delete","add","getTotalSize","getVirtualItems","virtualItem","measureElement","transform","start","key","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","fallback","label","ErrorFallback","message","AbsoluteCenter","AlertMessage","ResourceContextMenu","contentMinWidth","contentBackground","positioning","placement","Menu","action","ListRow","isDisabled","filterSearchableMenuItems","query","normalizedQuery","toLowerCase","filter","searchText","join","includes","shouldResetSearchableMenuQuery","currentListId","nextListId","resolveActiveListConfig","isShowingParent","parentList","childConfig","filterItems","showSearch","searchPlaceholder","emptyState","contentTestId","closeOnSelect","listId","searchInputBorderProps","SearchableMenu","trigger","maxListHeight","lazyMount","onOpenChange","onFocusOutside","portalled","hasParentList","internalOpen","setInternalOpen","setQuery","activeList","setActiveList","inputRef","config","filteredItems","previousListIdRef","timeout","setTimeout","focus","clearTimeout","details","handleOpenChange","details_0","find","i","id","onSelect","handleMenuItemSelect","renderIcon","item_0","description","secondaryLabel","disabled","tooltipLabel","buildRowItem","event_0","selectedLabel","selectedIcon","resolvedHeader","shouldShowSeparator","searchInput","InputGroup","Search","Input","event_1","target","T0","t19","t20","t21","t22","T1","t23","overscrollBehavior","t24","t25","t26","item_1","t27","t28","Content","t29","Positioner","t30","t31","event_2","SearchableActionMenu","menuItems","emptyMenuLabel","onAction","RowActions","context","opacity","pointerEvents","RowContent","showChevron","tone","isDenseVariant","labelTextStyle","descriptionTextStyle","descriptionMarginLeft","bb0","labelColor","descriptionColor","transition","indicator","computePaddingLeft","depth","className","contextMenuItems","draggable","endContent","href","isContainer","isNavigable","navigationIntent","onActivate","onDragEnd","onDragOver","onDragStart","onDrop","onPointerMove","onToggleExpand","showExpandToggle","asChild","dragProps","hasChildren","handleActivate","defaultPrevented","handleClick","paddingLeft","verticalPadding","hasDescription","rowHeight","minHeight","role","maxWidth","alignItems","justifyContent","gap","py","pl","borderRadius","_hover","overflow","textAlign","textDecoration","rowProps","nodeId","content","children_0","contextActions","wrapWithContextMenu","children_1","wrapWithTooltip","children_2","wrap","entry","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FileText","FolderPickerListEntry","selectedPath","selectedPathSet","onEntryClick","isAlreadySelected","Badge","FolderPickerDialog","currentPath","entries","selectedPaths","isLoading","isSelectDisabled","onSelectHomeDirectory","onSelectParentDirectory","Home","ChevronUp","padding","HorizontalMenuStack","borderBottomWidth","ItemSection","defaultOpen","Collapsible","e","PANEL_HEADER_HEIGHT","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","type","Spinner","PanelLayout","sidebar","errorLabel","Outlet","PanelSectionLayout","minH","getNoticeKey","notice","version","getNoticeTitle","OpenSourceNoticesScreen","notices","productName","productVersion","generatedAt","emptyTitle","emptyDescription","Separator","license","copyright","homepageUrl","sourceUrl","Link","attribution","Properties","Info","resolveSessionIndicatorIcon","status","CircleCheck","CircleAlert","CircleStop","CirclePause","CircleDashed","resolveSessionIndicatorColor","SessionIndicator","boxSize","isInList","values","isActiveNode","activeNodeId","Array","isArray","isNavigableNode","node","getNodeChildren","hasExpandableChildren","TreeListNodeRow","sectionId","level","expandedNodeIds","rowVariant","nodeGap","onNavigate","onToggleNode","expanded","isActive","canLink","intent","rowItem","row","childNode","TreeListSectionActions","TreeListSectionHeader","section","collapsible","onToggle","TreeList","sections","expandedSectionIds","sectionGap","onToggleSection","sectionExpanded","nodes","DEFAULT_SNAPSHOT","expandedSections","expandedNodes","SIDEBAR_STORE_NAMESPACE","toStorageName","storageKey","createNoopStorage","getItem","setItem","removeItem","toggleId","setExpanded","getPersistedSnapshot","createSidebarStore","initialState","snapshot","createStore","persist","set","openSidebar","closeSidebar","toggleSidebar","toggleSection","toggleNode","setSectionExpanded","setNodeExpanded","setWidth","reset","storage","createJSONStorage","globalThis","localStorage","partialize","sidebarStoreRegistry","Map","getSidebarStore","existingStore","get","store","useSidebarStore","selector","useStore","SidebarFooter","SidebarHeader","PanelLeftClose","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","resolveInitialWidth","defaultWidth","parsed","parseInt","isNaN","Sidebar","footer","closable","emptyLabel","defaultExpandedSections","initialWidth","persistedWidth","_temp5","_temp6","_temp7","setStoreWidth","_temp8","cleanupRef","_temp9","effectiveWidth","widthCss","onMove","_temp0","handlePointerDown","overflowX","state_0","state_1","state_2","state_3","state_4","state_5","state_6","SidebarProjectMenu","projectsLabel","onSelectProjects","FolderIcon","Switch","inputProps","rootRef","thumbLabel","trackLabel","interactiveCursor","ChakraSwitch","off","on","DEFAULT_WORKSPACE_SETTINGS","viewMode","columnGrouping","rowGrouping","ordering","field","direction","displayProperties","DEFAULT_GROUPING_OPTIONS","DEFAULT_ORDERING_OPTIONS","DEFAULT_DISPLAY_PROPERTY_OPTIONS","isTagKey","startsWith","toTagName","slice","toTitleCase","replaceAll","split","chunk","toUpperCase","collectCategoryOptions","tickets","category","ticket","assignee","tagName","tag","tags","t","sort","a","b","localeCompare","numeric","buildDefaultFilterCategories","tagDefinitions","categories","def","categoryId","push","o","toBadges","badges","property","statusColor","updatedAt","Date","toLocaleDateString","toTagBadges","tagBadges","displayKey","optionDef","buildTagOptions","grouping","orderGroupingOptions","noGrouping","option","resolveSubGroupingOptions","resolveListDropTargetColumnKey","columnKey","resolveKnownColumnKeys","knownColumnKeys","filters","activeValues","omitFilterCategory","SectionLabel","Dropdown","T2","T3","orderedOptions","hasNoGrouping","option_0","DisplayMenu","settings","groupingOptions","orderingOptions","displayPropertyOptions","onViewModeChange","onColumnGroupingChange","onRowGroupingChange","onOrderingFieldChange","onSortDirectionToggle","onDisplayPropertyToggle","offset","mainAxis","Settings2","SegmentGroup","List","KanbanSquare","ArrowDownUp","Popover","getActiveFilterCount","Object","reduce","sum","FilterMenu","countsByCategory","onToggleFilterValue","onClearFilter","onClearAll","activeCategoryId","setActiveCategoryId","activeCategory","activeFilterCount","Filter","category_0","selectedValues","checked","Checkbox","ATTEMPT_STATUS_COLOR_ALIASES","amber","CHAKRA_COLOR_PALETTES","resolveWorkspaceIcon","workspaceType","GitCommitIcon","GitBranchIcon","resolveAttemptStatusColor","resolvedColor","buildAttemptStatusTooltip","attemptStatus","handleIconClick","handleBadgeClick","LeadingSessionIndicator","sessionStatus","onSessionIndicatorClick","sessionTooltip","WorkspaceTypeIndicator","initializing","shorthand","WorkspaceTypeIcon","WorkspaceAttemptStatusIndicator","WorkspaceDiffTotals","diffAdditions","diffDeletions","WorkspaceDropdownTrigger","hasMultipleWorkspaces","onDropdownClick","WorkspaceBadge","showLeadingSessionIndicator","backgroundColor","TAG_OPTION_ICON_MAP","circle","Circle","bug","Bug","sparkles","Sparkles","BookOpen","wrench","Wrench","gauge","Gauge","AlertTriangle","star","Star","flag","Flag","flame","Flame","lightbulb","Lightbulb","shield","Shield","eye","Eye","clock","Clock","CheckCircle","getTagOptionIcon","TagBadge","onValueChange","selectedOption","displayLabel","optionIcon","Check","TicketCard","ticketId","parentPath","workspaceBadge","onTagChange","hasBadges","Wrap","newValue","badge","TicketBoard","columns","selectedItemId","onMoveItem","onMoveToGroup","onCreateStart","onColumnAction","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","handleDragEnd","columnId","dataTransfer","dropEffect","handleDragOver","contains","relatedTarget","handleDragLeave","columnId_0","itemId_0","getData","itemId","handleDrop","pb","column","borderLeft","canDragIn","ColumnHeader","margin","ps","pe","groups","group","groupId","GroupSection","canDragOut","event_3","event_4","event_5","beforeItemId","itemId_1","contextMenuActions","event_6","event_7","itemId_2","cardProps","isDropTarget","onGroupDragOver","onGroupDragLeave","onGroupDrop","canCreate","Plus","MoreHorizontal","setData","effectAllowed","v","renderLabel","hasTicketId","renderEndContent","hasCount","countBadge","hasAssignee","assigneeIcon","hasDate","date","buildListRowItem","statusIcon","TicketList","onItemClick","table","useReactTable","data","onExpandedChange","getSubRows","getCoreRowModel","getExpandedRowModel","getRowId","getRowModel","rows","TicketListRow","canExpand","getCanExpand","toggleExpanded","onDropTicket","getIsExpanded","FALLBACK_LABELS","normalize","getTagValue","getGroupingValue","compareGroupKey","orderByDirection","orderTickets","left","getTime","right","d","leftVal","rightVal","toOptionIndex","leftIndex","rightIndex","groupTickets","groupedByColumn","columnTickets","groupedByRow","rowKey","rowTickets","getTicketFilterValues","filterTickets","activeFilters","every","some","countFilterValues","counts","WORKSPACE_STORE_NAMESPACE","toggleValue","createTicketsWorkspaceStore","setViewMode","setColumnGrouping","setRowGrouping","setOrdering","setOrderingField","toggleSortDirection","toggleDisplayProperty","setFilter","toggleFilterValue","currentValues","nextValues","nextFilters","clearFilter","clearAllFilters","migrate","persisted","labels","workspaceStoreRegistry","getTicketsWorkspaceStore","useTicketsWorkspaceStore","buildListItems","visibleTickets","grouped","onTicketClick","onMoveTicket","toListItem","draggedTicketId","targetColumnKey","beforeTicketId","toGroupListItem","parent","TicketsWorkspace","selectedTicketId","groupingOptionsProp","orderingOptionsProp","displayPropertyOptionsProp","filterCategories","knownColumnKeysProp","onCreateTicket","getBoardColumnConfig","hideToolbar","tagOptions","_temp1","categoryOptions","fromEntries","listItems","toBoardItems","tickets_0","boardColumns","columnConfig","orderedTickets","targetColumnId","ticketId_0","targetGroupKey","context_0","state_7","state_8","state_9","defaultThemePreferences","mode","isThemePreference","themePreferences","theme","getThemePreferenceMode","preference","getThemePreferenceClassName","getThemePreferenceClassNames","getThemePreferenceCssVariableName","tokenPath","removeThemeTokens","el","tokens","keys","removeProperty","applyThemeTokens","setProperty","applyThemePreference","root","documentElement","previousTheme","getAttribute","previousPreference","classList","remove","setAttribute","colorScheme","STORAGE_KEY","ThemePreferenceContext","createContext","getDefaultThemePreference","getInitialThemePreference","stored","prefersDark","matchMedia","matches","ThemePreferenceProvider","initialPreference","themePreference","setThemePreference","nextMode","toggleThemePreference","useThemePreference","useContext","Error"],"mappings":"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"}