@pstdio/ui 0.5.0 → 0.5.2
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.
- package/dist/{MermaidComponent-DwEDwpo2.js → MermaidComponent-DDCxR-Gs.js} +2 -2
- package/dist/{MermaidComponent-DwEDwpo2.js.map → MermaidComponent-DDCxR-Gs.js.map} +1 -1
- package/dist/chat-ui.js +1358 -877
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/app-shell/app-shell.d.ts +1 -0
- package/dist/components/app-shell/command-palette.d.ts +16 -0
- package/dist/components/app-shell/file-tree.d.ts +7 -0
- package/dist/components/app-shell/mock-chat.d.ts +2 -0
- package/dist/components/app-shell/mock-data.d.ts +37 -0
- package/dist/components/app-shell/pages/project-list-page.d.ts +7 -0
- package/dist/components/app-shell/pages/sessions-page.d.ts +6 -0
- package/dist/components/app-shell/pages/settings-page.d.ts +5 -0
- package/dist/components/app-shell/pages/ticket-details-page.d.ts +7 -0
- package/dist/components/app-shell/pages/tickets-page.d.ts +7 -0
- package/dist/components/app-shell/pages/workspace-page.d.ts +1 -0
- package/dist/components/app-shell/resizable-panel.d.ts +13 -0
- package/dist/components/chat-ui/agent-types.d.ts +4 -0
- package/dist/components/chat-ui/components/ai-message.d.ts +7 -5
- package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +33 -0
- package/dist/components/chat-ui/components/chat-input.d.ts +4 -1
- package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +9 -0
- package/dist/components/chat-ui/components/chat-panel.d.ts +4 -1
- package/dist/components/chat-ui/components/message-parts-renderer.d.ts +1 -0
- package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +14 -0
- package/dist/components/chat-ui/components/timeline.d.ts +22 -0
- package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +2 -1
- package/dist/components/chat-ui/index.d.ts +1 -0
- package/dist/components/chat-ui/mocks/library/index.d.ts +10 -0
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +2 -0
- package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +10 -0
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
- package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +10 -0
- package/dist/components/chat-ui/utils/get-icon.d.ts +2 -0
- package/dist/components/chat-ui/utils/tool-name.d.ts +2 -0
- package/dist/components/content-placeholder.d.ts +1 -0
- package/dist/components/header.d.ts +7 -0
- package/dist/components/list-row/list-row-actions.d.ts +10 -0
- package/dist/components/list-row/list-row.d.ts +2 -0
- package/dist/components/list-row/list-row.types.d.ts +85 -0
- package/dist/components/{sidebar-tree → list-row}/searchable-action-menu.d.ts +2 -2
- package/dist/components/panel-header.constants.d.ts +1 -1
- package/dist/components/radio.d.ts +8 -0
- package/dist/components/resource-context-menu.d.ts +1 -2
- package/dist/components/sidebar/sidebar-project-menu.d.ts +0 -3
- package/dist/components/sidebar/sidebar.store.d.ts +2 -0
- package/dist/components/sidebar/sidebar.types.d.ts +10 -4
- package/dist/components/tickets/ticket-board.d.ts +6 -2
- package/dist/components/tickets/ticket-list.d.ts +3 -0
- package/dist/components/tickets/tickets-workspace.d.ts +3 -0
- package/dist/components/tickets/workspace-helpers.d.ts +6 -1
- package/dist/components/tree-list/tree-list.d.ts +18 -0
- package/dist/components/tree-list/tree-list.types.d.ts +29 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.js +2621 -2459
- package/dist/index.js.map +1 -1
- package/dist/radio-C42qncrD.js +236 -0
- package/dist/radio-C42qncrD.js.map +1 -0
- package/dist/{rich-message-BVRk9BSD.js → rich-message-DeJwzVeV.js} +364 -355
- package/dist/rich-message-DeJwzVeV.js.map +1 -0
- package/dist/rich-text.js +2 -2
- package/dist/style.css +1 -1
- package/dist/theme/custom/index.d.ts +3 -0
- package/dist/theme/custom/monokai.json.d.ts +80 -0
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/primitives/colors.d.ts +6 -0
- package/dist/theme/recipes/button.d.ts +34 -0
- package/dist/theme/recipes/kbd.d.ts +41 -0
- package/dist/theme/tokens/colors.d.ts +18 -6
- package/dist/{theme-D0VvFB1Y.js → theme-Dq4r3aRE.js} +247 -135
- package/dist/theme-Dq4r3aRE.js.map +1 -0
- package/dist/theme.js +4 -2
- package/dist/utils/apply-theme-preference.d.ts +20 -2
- package/dist/utils/theme-preference.d.ts +4 -2
- package/package.json +1 -2
- package/dist/components/chat-ui/tool-rendering/todo-write-renderer.d.ts +0 -2
- package/dist/components/drawer-inline.d.ts +0 -24
- package/dist/components/file-selector.d.ts +0 -12
- package/dist/components/menu-item.d.ts +0 -42
- package/dist/components/pstdio-logo.d.ts +0 -2
- package/dist/components/sidebar-tree/sidebar-node-content.d.ts +0 -9
- package/dist/components/sidebar-tree/sidebar-tree.d.ts +0 -13
- package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +0 -68
- package/dist/empty-state-yGspgiPl.js +0 -185
- package/dist/empty-state-yGspgiPl.js.map +0 -1
- package/dist/rich-message-BVRk9BSD.js.map +0 -1
- package/dist/theme-D0VvFB1Y.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/checkbox.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/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/types.ts","../src/components/tickets/ticket-grouping.ts","../src/components/tickets/workspace-helpers.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 { Checkbox as ChakraCheckbox } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface CheckboxProps extends ChakraCheckbox.RootProps {\n icon?: React.ReactNode;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n rootRef?: React.RefObject<HTMLLabelElement | null>;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(props, ref) {\n const { icon, children, inputProps, rootRef, disabled = false, ...rest } = props;\n const interactiveCursor = disabled ? \"not-allowed\" : \"pointer\";\n\n return (\n <ChakraCheckbox.Root ref={rootRef} disabled={disabled} cursor={interactiveCursor} {...rest}>\n <ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />\n <ChakraCheckbox.Control borderRadius=\"xs\" cursor={interactiveCursor}>\n {icon || <ChakraCheckbox.Indicator />}\n </ChakraCheckbox.Control>\n {children != null && <ChakraCheckbox.Label cursor={interactiveCursor}>{children}</ChakraCheckbox.Label>}\n </ChakraCheckbox.Root>\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 <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 {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 {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","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\";\n\nimport type { DisplayProperty, GroupingField, OrderingField, WorkspaceOption, WorkspaceSettings } from \"./types\";\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 selectedLabel = props.options.find((option) => option.value === props.value)?.label ?? props.label;\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 {props.options.map((option) => (\n <Menu.Item key={option.value} value={option.value} onClick={() => props.onSelect(option.value)}>\n <Text textStyle=\"label/S/regular\">{option.label}</Text>\n </Menu.Item>\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={groupingOptions.filter((o) => o.value === \"none\" || o.value !== 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) => void;\n onMoveToGroup?: (itemId: string, targetGroupKey: 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) => {\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);\n onMoveToGroup?.(itemId, group.key);\n }}\n />\n );\n })\n : column.items.map((item) => (\n <ResourceContextMenu key={item.id} actions={item.contextMenuActions ?? []}>\n <Box>\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>) => 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 <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}\n\ninterface TicketListProps {\n items: TicketListItem[];\n selectedItemId?: string | null;\n onItemClick?: (item: TicketListItem) => void;\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 >\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={depth > 0 ? `${depth * 24}px` : undefined}>\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","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 {\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 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 resolveKnownColumnKeys = (\n columnGrouping: GroupingField,\n knownColumnKeys: string[] | undefined,\n categories: WorkspaceFilterCategory[],\n) => {\n if (columnGrouping === \"none\") {\n return undefined;\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 { 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 { countFilterValues, filterTickets, groupTickets, orderTickets } 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 WorkspaceTagDefinition,\n type WorkspaceTicket,\n} from \"./types\";\nimport { useTicketsWorkspaceStore } from \"./use-workspace-store\";\nimport {\n buildDefaultFilterCategories,\n buildTagOptions,\n resolveKnownColumnKeys,\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?: (ticketId: string, targetColumnId: string, context?: { columnGrouping: GroupingField }) => void;\n onMoveToGroup?: (ticketId: string, targetGroupKey: string, context?: { rowGrouping: GroupingField }) => void;\n onCreateTicket?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\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(settings.columnGrouping, knownColumnKeysProp, categoryOptions);\n\n const grouped = groupTickets(visibleTickets, {\n columnGrouping: settings.columnGrouping,\n rowGrouping: settings.rowGrouping,\n knownColumnKeys,\n });\n\n const toListItem = (ticket: TTicket): 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 });\n\n const toGroupListItem = (group: { key: string; label: string; tickets: WorkspaceTicket[] }): TicketListItem => ({\n id: `group::${group.key}`,\n ticketId: \"\",\n title: toTitleCase(group.label),\n countBadge: group.tickets.length,\n children: orderTickets(group.tickets, settings.ordering, tagDefinitions).map((ticket) =>\n toListItem(ticket as TTicket),\n ),\n });\n\n const listItems: TicketListItem[] =\n settings.columnGrouping === \"none\"\n ? orderTickets(visibleTickets, settings.ordering, tagDefinitions).map((ticket) => toListItem(ticket as TTicket))\n : 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 children: group.rows.map((row) => ({\n ...toGroupListItem(row),\n id: `group::${group.key}::${row.key}`,\n })),\n };\n }\n return toGroupListItem(group);\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) =>\n onMoveTicket?.(ticketId, targetColumnId, { columnGrouping: settings.columnGrouping })\n }\n onMoveToGroup={(ticketId, targetGroupKey) =>\n onMoveToGroup?.(ticketId, targetGroupKey, { rowGrouping: settings.rowGrouping })\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","Checkbox","icon","inputProps","rootRef","disabled","interactiveCursor","ChakraCheckbox","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","role","overflow","position","_hover","_focus","textDecoration","color","commonProps","bb0","child","Children","only","isValidElement","ChakraMenuItem","cloneElement","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","thumbLabel","trackLabel","ChakraSwitch","off","on","SectionLabel","Dropdown","option","option_0","DisplayMenu","settings","groupingOptions","orderingOptions","displayPropertyOptions","onViewModeChange","onColumnGroupingChange","onRowGroupingChange","onOrderingFieldChange","onSortDirectionToggle","onDisplayPropertyToggle","offset","mainAxis","Settings2","SegmentGroup","List","KanbanSquare","viewMode","rowGrouping","columnGrouping","o","ordering","field","direction","ArrowDownUp","displayProperties","Popover","getActiveFilterCount","filters","Object","reduce","sum","FilterMenu","categories","countsByCategory","onToggleFilterValue","onClearFilter","onClearAll","activeCategoryId","setActiveCategoryId","category","activeCategory","activeFilterCount","Filter","category_0","selectedValues","checked","ATTEMPT_STATUS_COLOR_ALIASES","amber","CHAKRA_COLOR_PALETTES","resolveWorkspaceIcon","workspaceType","GitCommitIcon","GitBranchIcon","resolveAttemptStatusColor","startsWith","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","badges","tagBadges","workspaceBadge","draggable","onDragStart","onDragEnd","onTagChange","hasBadges","Wrap","tag","newValue","tagName","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","itemId_1","cardProps","isDropTarget","onGroupDragOver","onGroupDragLeave","onGroupDrop","canCreate","Plus","MoreHorizontal","setData","effectAllowed","v","cell","row","TicketCell","TicketList","onItemClick","table","useReactTable","data","onExpandedChange","getSubRows","getCoreRowModel","getExpandedRowModel","getRowId","getRowModel","rows","canExpand","getCanExpand","toggleExpanded","flexRender","getVisibleCells","columnDef","getContext","depth","hasTicketId","ExpandToggle","TreeConnector","statusColor","statusIcon","countBadge","assigneeIcon","date","getIsExpanded","DEFAULT_WORKSPACE_SETTINGS","DEFAULT_GROUPING_OPTIONS","DEFAULT_ORDERING_OPTIONS","DEFAULT_DISPLAY_PROPERTY_OPTIONS","isTagKey","toTagName","slice","FALLBACK_LABELS","assignee","normalize","getTagValue","ticket","tags","getGroupingValue","grouping","compareGroupKey","a","b","localeCompare","numeric","orderByDirection","orderTickets","tickets","tagDefinitions","sort","left","Date","updatedAt","getTime","right","def","d","leftVal","rightVal","toOptionIndex","leftIndex","rightIndex","groupTickets","knownColumnKeys","groupedByColumn","columnKey","columnTickets","groupedByRow","rowKey","rowTickets","getTicketFilterValues","filterTickets","activeFilters","every","some","countFilterValues","counts","toTitleCase","replaceAll","split","chunk","toUpperCase","collectCategoryOptions","t","buildDefaultFilterCategories","categoryId","push","toBadges","property","toLocaleDateString","toTagBadges","displayKey","optionDef","buildTagOptions","resolveKnownColumnKeys","omitFilterCategory","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","TicketsWorkspace","selectedTicketId","groupingOptionsProp","orderingOptionsProp","displayPropertyOptionsProp","filterCategories","knownColumnKeysProp","onTicketClick","onMoveTicket","onCreateTicket","getBoardColumnConfig","tagOptions","_temp7","_temp8","_temp9","_temp0","_temp1","visibleTickets","categoryOptions","fromEntries","grouped","toListItem","toGroupListItem","ticket_0","listItems","ticket_1","group_0","toBoardItems","tickets_0","ticket_2","tagName_0","newValue_0","boardColumns","columnConfig","orderedTickets","row_0","targetColumnId","ticketId_0","targetGroupKey","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","context","useContext","Error"],"mappings":"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"}
|
|
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/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":["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":["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","headerVariantStyles","main","h","px","narrow","input","Header","variant","HStack","BubblePanel","menu","onClose","closeLabel","onPopOut","popOutLabel","height","testId","ariaLabel","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","_","contentPlaceholderBackgroundImage","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","ResourceContextMenu","actions","contentMinWidth","contentBackground","positioning","placement","Menu","action","ListRow","icon","isDisabled","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","details","handleOpenChange","details_0","find","i","id","onSelect","handleMenuItemSelect","renderIcon","item_0","description","secondaryLabel","disabled","tooltipLabel","buildRowItem","event_0","selectedLabel","selectedIcon","Icon","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","Root","event_2","SearchableActionMenu","menuItems","emptyMenuLabel","onAction","RowActions","context","opacity","pointerEvents","RowContent","showChevron","tone","isDenseVariant","labelTextStyle","descriptionTextStyle","descriptionMarginLeft","bb0","labelColor","iconColor","descriptionColor","transition","indicator","color","computePaddingLeft","depth","className","contextMenuItems","draggable","endContent","href","isContainer","isNavigable","navigationIntent","onActivate","onDragEnd","onDragOver","onDragStart","onDrop","onPointerMove","onToggleExpand","rootProps","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","Fragment","content","children_0","contextActions","wrapWithContextMenu","children_1","wrapWithTooltip","children_2","wrap","entry","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FileText","FolderPickerListEntry","selectedPath","selectedPathSet","onEntryClick","isAlreadySelected","name","Badge","FolderPickerDialog","currentPath","entries","selectedPaths","isLoading","isSelectDisabled","onSelectHomeDirectory","onSelectParentDirectory","Home","ChevronUp","padding","HorizontalMenuStack","borderBottomWidth","ItemSection","defaultOpen","background","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","Avatar","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","currentTarget","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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"}
|