@pstdio/ui 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/chat-ui.js +12 -11
  2. package/dist/chat-ui.js.map +1 -1
  3. package/dist/components/attached-panel.d.ts +9 -0
  4. package/dist/components/attached-panel.utils.d.ts +6 -0
  5. package/dist/components/bubble-button.d.ts +10 -0
  6. package/dist/components/bubble-panel.d.ts +18 -0
  7. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +1 -1
  8. package/dist/components/diff-card.d.ts +3 -0
  9. package/dist/components/diff-drawer.d.ts +1 -0
  10. package/dist/components/layout.d.ts +1 -2
  11. package/dist/components/layout.stories.d.ts +3 -3
  12. package/dist/components/panel-header.constants.d.ts +1 -0
  13. package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +1 -0
  14. package/dist/components/rich-text/shared/components/content-editable.d.ts +2 -1
  15. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +17 -0
  16. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +1 -0
  17. package/dist/components/searchable-menu.d.ts +35 -2
  18. package/dist/components/searchable-menu.stories.d.ts +2 -0
  19. package/dist/components/session-indicator.d.ts +2 -2
  20. package/dist/components/session-indicator.stories.d.ts +1 -0
  21. package/dist/components/sidebar/sidebar-footer.d.ts +6 -0
  22. package/dist/components/sidebar/sidebar-header.d.ts +7 -0
  23. package/dist/components/sidebar/sidebar-project-menu.d.ts +10 -0
  24. package/dist/components/sidebar/sidebar.d.ts +2 -0
  25. package/dist/components/sidebar/sidebar.store.d.ts +47 -0
  26. package/dist/components/{sidebar-next/sidebar-next.stories.d.ts → sidebar/sidebar.stories.d.ts} +4 -3
  27. package/dist/components/{sidebar-next/sidebar-next.types.d.ts → sidebar/sidebar.types.d.ts} +3 -2
  28. package/dist/components/sidebar-tree/sidebar-node-content.d.ts +9 -0
  29. package/dist/components/sidebar-tree/sidebar-tree.d.ts +1 -1
  30. package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +10 -2
  31. package/dist/components/style-guide.stories.d.ts +6 -11
  32. package/dist/components/tickets/ticket-card.d.ts +2 -7
  33. package/dist/components/workspace-badge.d.ts +22 -0
  34. package/dist/components/workspace-badge.stories.d.ts +13 -0
  35. package/dist/get-file-type-icon-CirIyuE8.js +92 -0
  36. package/dist/get-file-type-icon-CirIyuE8.js.map +1 -0
  37. package/dist/index.d.ts +18 -19
  38. package/dist/index.js +1849 -1743
  39. package/dist/index.js.map +1 -1
  40. package/dist/{rich-message-ZT2CEiwt.js → rich-message-Bad4GxH2.js} +520 -503
  41. package/dist/rich-message-Bad4GxH2.js.map +1 -0
  42. package/dist/rich-text.js +276 -272
  43. package/dist/rich-text.js.map +1 -1
  44. package/dist/style.css +1 -1
  45. package/dist/test-utils/local-storage.d.ts +1 -0
  46. package/dist/theme/global.d.ts +3 -0
  47. package/dist/theme/primitives/colors.d.ts +116 -0
  48. package/dist/theme/recipes/button.d.ts +13 -13
  49. package/dist/theme/recipes/dialog.d.ts +1 -1
  50. package/dist/theme/recipes/drawer.d.ts +1 -1
  51. package/dist/theme/recipes/menu.d.ts +1 -1
  52. package/dist/theme/recipes/popover.d.ts +1 -1
  53. package/dist/theme/recipes/tooltip.d.ts +1 -1
  54. package/dist/theme/tokens/colors.d.ts +162 -8
  55. package/dist/{theme-BFV2Q048.js → theme-D0VvFB1Y.js} +292 -154
  56. package/dist/theme-D0VvFB1Y.js.map +1 -0
  57. package/dist/theme.js +1 -1
  58. package/package.json +2 -2
  59. package/dist/components/documentation/docs-changelog.d.ts +0 -20
  60. package/dist/components/documentation/docs-changelog.stories.d.ts +0 -15
  61. package/dist/components/documentation/docs-outline.d.ts +0 -13
  62. package/dist/components/documentation/docs-outline.stories.d.ts +0 -16
  63. package/dist/components/documentation/docs-pagination.d.ts +0 -10
  64. package/dist/components/documentation/docs-pagination.stories.d.ts +0 -14
  65. package/dist/components/documentation/docs-sidebar.d.ts +0 -14
  66. package/dist/components/documentation/docs-sidebar.stories.d.ts +0 -7
  67. package/dist/components/panel-menu.d.ts +0 -9
  68. package/dist/components/panel-menu.stories.d.ts +0 -8
  69. package/dist/components/sidebar-next/sidebar-next-footer.d.ts +0 -6
  70. package/dist/components/sidebar-next/sidebar-next-header.d.ts +0 -7
  71. package/dist/components/sidebar-next/sidebar-next.d.ts +0 -2
  72. package/dist/components/sidebar-next/sidebar-next.store.d.ts +0 -47
  73. package/dist/components/sidebar-next/sidebar-next.store.test.d.ts +0 -1
  74. package/dist/rich-message-ZT2CEiwt.js.map +0 -1
  75. package/dist/theme-BFV2Q048.js.map +0 -1
  76. package/dist/tooltip-Dze4WXVl.js +0 -86
  77. package/dist/tooltip-Dze4WXVl.js.map +0 -1
  78. /package/dist/components/{chat-ui/components/ai-conversation.test.d.ts → attached-panel.utils.test.d.ts} +0 -0
  79. /package/dist/components/{chat-ui/components/chat-panel.sticky-user-message.test.d.ts → rich-text/shared/transformers/markdown-transformers.test.d.ts} +0 -0
  80. /package/dist/components/{searchable-menu.test.d.ts → sidebar/sidebar.store.test.d.ts} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/breadcrumb.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/documentation/docs-changelog.tsx","../src/components/documentation/docs-outline.tsx","../src/components/documentation/docs-pagination.tsx","../src/components/item-section.tsx","../src/components/menu-item.tsx","../src/components/panel-menu.tsx","../src/components/documentation/docs-sidebar.tsx","../src/components/error-boundary.tsx","../src/components/folder-picker-dialog.tsx","../src/components/horizontal-menu-stack.tsx","../src/components/open-source-notices-screen.tsx","../src/components/properties.tsx","../src/components/searchable-menu.tsx","../src/components/session-indicator.tsx","../src/components/sidebar-tree/searchable-action-menu.tsx","../src/components/sidebar-tree/sidebar-tree.tsx","../src/components/sidebar-next/sidebar-next.store.ts","../src/components/sidebar-next/sidebar-next-footer.tsx","../src/components/sidebar-next/sidebar-next-header.tsx","../src/components/sidebar-next/sidebar-next.tsx","../src/components/switch.tsx","../src/components/tickets/display-menu.tsx","../src/components/tickets/filter-menu.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/types.ts","../src/components/tickets/use-workspace-store.ts","../src/components/tickets/tickets-workspace.tsx","../src/components/toaster.tsx","../src/utils/apply-theme-preference.ts","../src/utils/theme-preference.tsx"],"sourcesContent":["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 { 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 { useState } from \"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}\n\nexport const DiffCard = (props: DiffCardProps) => {\n const { diff } = props;\n const [isExpanded, setIsExpanded] = useState(true);\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=\"border.muted\"\n borderRadius=\"xs\"\n overflow=\"hidden\"\n bg=\"bg\"\n width=\"100%\"\n maxW=\"100%\"\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 onClick={() => setIsExpanded(!isExpanded)}\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 setIsExpanded(!isExpanded);\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 { useRef } 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}\n\nexport type { Diff };\n\nexport function DiffDrawer(props: DiffDrawerProps) {\n const { diffs } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const virtualizer = useVirtualizer({\n count: diffs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => 42,\n overscan: 5,\n });\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 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 <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 diff={diffs[virtualItem.index]} />\n </Box>\n ))}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n );\n}\n","import {\n Badge,\n Box,\n Flex,\n Heading,\n HStack,\n Image,\n Link,\n List,\n Stack,\n type StackProps,\n Text,\n Timeline,\n} from \"@chakra-ui/react\";\n\nexport interface DocsChangelogChange {\n title: string;\n description?: string;\n link?: string;\n}\n\nexport interface DocsChangelogEntry {\n version: string;\n date: string;\n tags?: string[];\n title: string;\n image?: string;\n description?: string;\n changes?: DocsChangelogChange[];\n}\n\nexport interface DocsChangelogProps {\n entries: DocsChangelogEntry[];\n title: string;\n description?: string;\n}\n\ninterface ChangelogDateProps extends StackProps {\n date: string;\n version: string;\n}\n\nconst getEntryKey = (entry: DocsChangelogEntry, index: number) => {\n return `${entry.version}-${entry.date}-${index}`;\n};\n\nconst getChangeKey = (change: DocsChangelogChange, index: number) => {\n return `${change.title}-${index}`;\n};\n\nconst ChangelogDate = (props: ChangelogDateProps) => {\n const { date, version, ...rest } = props;\n\n return (\n <Stack {...rest}>\n <Timeline.Title textStyle=\"sm\" color=\"fg.muted\">\n {date}\n </Timeline.Title>\n <Flex\n px=\"3\"\n py=\"2\"\n rounded=\"l3\"\n align=\"center\"\n justify=\"center\"\n borderWidth=\"1px\"\n textAlign=\"center\"\n alignSelf=\"flex-start\"\n >\n <Timeline.Title textStyle=\"md\" fontWeight=\"semibold\">\n {version}\n </Timeline.Title>\n </Flex>\n </Stack>\n );\n};\n\nexport const DocsChangelog = (props: DocsChangelogProps) => {\n const { entries, title, description } = props;\n\n return (\n <Stack gap=\"20\">\n <Stack textAlign=\"center\">\n <Heading size=\"4xl\">{title}</Heading>\n {description ? (\n <Text color=\"fg.muted\" textStyle=\"lg\">\n {description}\n </Text>\n ) : null}\n </Stack>\n\n <Box position=\"relative\">\n <Timeline.Root size=\"sm\" variant=\"solid\">\n {entries.map((entry, entryIndex) => (\n <Timeline.Item key={getEntryKey(entry, entryIndex)}>\n <Timeline.Content\n top=\"6\"\n width=\"48\"\n flexShrink=\"0\"\n hideBelow=\"md\"\n position={{ base: \"static\", md: \"sticky\" }}\n >\n <ChangelogDate hideBelow=\"md\" date={entry.date} version={entry.version} />\n </Timeline.Content>\n\n <Timeline.Connector>\n <Timeline.Separator />\n <Timeline.Indicator />\n </Timeline.Connector>\n\n <Timeline.Content>\n <Stack gap=\"4\">\n <ChangelogDate hideFrom=\"md\" date={entry.date} version={entry.version} />\n\n <Stack gap=\"2\">\n <Timeline.Title fontSize=\"lg\" fontWeight=\"medium\">\n {entry.title}\n </Timeline.Title>\n {entry.description ? (\n <Text color=\"fg.muted\" textStyle=\"sm\">\n {entry.description}\n </Text>\n ) : null}\n </Stack>\n\n {entry.tags && entry.tags.length > 0 ? (\n <HStack>\n {entry.tags.map((tag) => (\n <Badge\n key={tag}\n size=\"md\"\n rounded=\"l2\"\n variant=\"subtle\"\n colorPalette=\"gray\"\n textTransform=\"capitalize\"\n >\n {tag}\n </Badge>\n ))}\n </HStack>\n ) : null}\n\n {entry.image ? <Image rounded=\"l2\" src={entry.image} alt={entry.title} /> : null}\n\n {entry.changes && entry.changes.length > 0 ? (\n <List.Root pl=\"4\" gap=\"4\">\n {entry.changes.map((change, changeIndex) => (\n <List.Item key={getChangeKey(change, changeIndex)}>\n <Stack gap=\"1\">\n <Text color=\"fg.muted\" fontWeight=\"normal\" textStyle=\"sm\">\n {change.title}\n </Text>\n {change.description ? (\n <Text color=\"fg.subtle\" textStyle=\"xs\">\n {change.description}\n </Text>\n ) : null}\n {change.link ? (\n <Link href={change.link} textStyle=\"xs\" width=\"fit-content\">\n Learn more\n </Link>\n ) : null}\n </Stack>\n </List.Item>\n ))}\n </List.Root>\n ) : null}\n </Stack>\n </Timeline.Content>\n </Timeline.Item>\n ))}\n </Timeline.Root>\n </Box>\n </Stack>\n );\n};\n","import { Box, Collapsible, HStack, Icon, Stack, Text, useEnvironmentContext } from \"@chakra-ui/react\";\nimport { ChevronDown, ChevronRight, FileText } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { ScrollArea } from \"../scroll-area\";\n\ninterface DocHeading {\n id: string;\n level: number;\n text: string;\n}\n\ninterface HeadingElementsMatch {\n elementsByHeadingId: Map<string, HTMLElement>;\n headingIdByElement: Map<HTMLElement, string>;\n}\n\nexport interface DocsOutlineProps {\n markdown: string;\n title?: string;\n rootMargin?: string;\n}\n\ninterface DocsOutlineItemProps {\n heading: DocHeading;\n isActive: boolean;\n emphasized: boolean;\n variant: \"line\" | \"minimal\";\n onSelect: (headingId: string) => void;\n}\n\nconst HEADING_REGEX = /^(#{1,3})\\s+(.+)$/gm;\nconst HEADING_SELECTOR = \".rich-text__h1, .rich-text__h2, .rich-text__h3\";\n\nconst isHeadingLevelMatch = (element: Element, level: number) => {\n return element.classList.contains(`rich-text__h${level}`);\n};\n\nconst slugifyHeading = (value: string) => {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n};\n\nexport const extractHeadings = (markdown: string) => {\n const headings: DocHeading[] = [];\n let headingIndex = 0;\n\n for (const match of markdown.matchAll(HEADING_REGEX)) {\n const level = match[1]!.length;\n const text = match[2]!.trim();\n const slug = slugifyHeading(text);\n const id = `${slug || \"heading\"}-${headingIndex}`;\n\n headings.push({ id, level, text });\n headingIndex += 1;\n }\n\n return headings;\n};\n\nconst matchHeadingElements = (headings: DocHeading[], doc: Document) => {\n const elements = Array.from(doc.querySelectorAll(HEADING_SELECTOR));\n const elementsByHeadingId = new Map<string, HTMLElement>();\n const headingIdByElement = new Map<HTMLElement, string>();\n let nextElementIndex = 0;\n\n for (const heading of headings) {\n for (let elementIndex = nextElementIndex; elementIndex < elements.length; elementIndex += 1) {\n const element = elements[elementIndex] as HTMLElement;\n const elementText = element.textContent?.trim();\n\n if (!elementText || elementText !== heading.text) {\n continue;\n }\n\n if (!isHeadingLevelMatch(element, heading.level)) {\n continue;\n }\n\n elementsByHeadingId.set(heading.id, element);\n headingIdByElement.set(element, heading.id);\n nextElementIndex = elementIndex + 1;\n break;\n }\n }\n\n return { elementsByHeadingId, headingIdByElement };\n};\n\nconst DocsOutlineItem = (props: DocsOutlineItemProps) => {\n const { heading, isActive, emphasized, variant, onSelect } = props;\n const isLine = variant === \"line\";\n\n return (\n <Box\n as=\"button\"\n py=\"1.5\"\n px=\"0\"\n width=\"full\"\n display=\"flex\"\n textAlign=\"left\"\n textStyle=\"sm\"\n cursor=\"pointer\"\n textDecoration=\"none\"\n transition=\"all 0.15s ease\"\n paddingInlineStart={`calc(${heading.level} * 0.75rem)`}\n color={isActive ? \"fg\" : \"fg.muted\"}\n fontWeight={isActive || emphasized ? \"medium\" : \"normal\"}\n borderStartWidth={isLine ? \"1px\" : \"0px\"}\n borderStartColor={isLine ? (isActive ? \"fg\" : \"bg.muted\") : \"transparent\"}\n _hover={isLine ? { borderStartColor: \"bg.emphasized\" } : { color: \"fg\" }}\n onClick={() => onSelect(heading.id)}\n >\n {heading.text}\n </Box>\n );\n};\n\nexport const DocsOutline = (props: DocsOutlineProps) => {\n const { markdown, title = \"On this page\", rootMargin = \"-20% 0% -35% 0%\" } = props;\n const headings = extractHeadings(markdown);\n const env = useEnvironmentContext();\n const [activeHeadingId, setActiveHeadingId] = useState(headings[0]?.id ?? \"\");\n const [isMobileOpen, setIsMobileOpen] = useState(false);\n const headingElementsMatchRef = useRef<HeadingElementsMatch>({\n elementsByHeadingId: new Map(),\n headingIdByElement: new Map(),\n });\n\n useEffect(() => {\n const extractedHeadings = extractHeadings(markdown);\n setActiveHeadingId(extractedHeadings[0]?.id ?? \"\");\n }, [markdown]);\n\n useEffect(() => {\n const headingsForObserver = extractHeadings(markdown);\n const doc = env.getDocument();\n const win = env.getWindow();\n const nextMatch = matchHeadingElements(headingsForObserver, doc);\n\n headingElementsMatchRef.current = nextMatch;\n\n if (nextMatch.headingIdByElement.size === 0) {\n return;\n }\n\n const observer = new win.IntersectionObserver(\n (entries) => {\n const visibleEntries = entries\n .filter((entry) => entry.isIntersecting)\n .sort((first, second) => first.boundingClientRect.top - second.boundingClientRect.top);\n\n if (visibleEntries.length === 0) {\n return;\n }\n\n const target = visibleEntries[0]!.target as HTMLElement;\n const nextActiveHeadingId = nextMatch.headingIdByElement.get(target);\n\n if (nextActiveHeadingId) {\n setActiveHeadingId(nextActiveHeadingId);\n }\n },\n { rootMargin },\n );\n\n for (const element of nextMatch.headingIdByElement.keys()) {\n observer.observe(element);\n }\n\n return () => {\n observer.disconnect();\n };\n }, [env, markdown, rootMargin]);\n\n if (headings.length === 0) {\n return null;\n }\n\n const activeHeading = headings.find((heading) => heading.id === activeHeadingId);\n\n const handleHeadingSelect = (headingId: string) => {\n const headingElement = headingElementsMatchRef.current.elementsByHeadingId.get(headingId);\n setActiveHeadingId(headingId);\n setIsMobileOpen(false);\n headingElement?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n };\n\n return (\n <Stack gap=\"0\" width=\"full\">\n <Box hideFrom=\"md\" px=\"4\" py=\"2\" w=\"full\" bg=\"bg.subtle\" borderWidth=\"1px\">\n <Collapsible.Root open={isMobileOpen} onOpenChange={(details) => setIsMobileOpen(details.open)}>\n <Collapsible.Trigger width=\"full\" display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\n <HStack>\n <Icon as={FileText} color=\"fg.subtle\" />\n <Text textStyle=\"sm\" fontWeight=\"medium\" color=\"fg\">\n {title}\n </Text>\n {!isMobileOpen ? (\n <>\n <Icon as={ChevronRight} color=\"fg.subtle\" />\n <Text textStyle=\"sm\" color=\"fg.muted\">\n {activeHeading?.text}\n </Text>\n </>\n ) : null}\n </HStack>\n <Box transition=\"transform 0.2s\" transform={isMobileOpen ? \"rotate(180deg)\" : \"rotate(0deg)\"}>\n <Icon as={ChevronDown} color=\"fg.subtle\" />\n </Box>\n </Collapsible.Trigger>\n\n <Collapsible.Content>\n <ScrollArea mt=\"3\" maxH=\"30vh\">\n <Stack gap=\"0\">\n {headings.map((heading) => (\n <DocsOutlineItem\n key={heading.id}\n heading={heading}\n variant=\"minimal\"\n emphasized={false}\n isActive={activeHeadingId === heading.id}\n onSelect={handleHeadingSelect}\n />\n ))}\n </Stack>\n </ScrollArea>\n </Collapsible.Content>\n </Collapsible.Root>\n </Box>\n\n <ScrollArea hideBelow=\"md\" top=\"6\" width=\"xs\" position=\"sticky\" maxH=\"calc(100vh - 3rem)\">\n <HStack mb=\"4\">\n <Icon as={FileText} color=\"fg.subtle\" />\n <Text fontWeight=\"medium\" textStyle=\"sm\">\n {title}\n </Text>\n </HStack>\n\n <Stack gap=\"0\">\n {headings.map((heading) => (\n <DocsOutlineItem\n key={heading.id}\n heading={heading}\n variant=\"line\"\n emphasized={heading.level === 1}\n isActive={activeHeadingId === heading.id}\n onSelect={handleHeadingSelect}\n />\n ))}\n </Stack>\n </ScrollArea>\n </Stack>\n );\n};\n","import { Box, Button, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nexport interface DocsPaginationItem {\n href: string;\n title: string;\n description?: string;\n}\n\nexport interface DocsPaginationProps {\n previous?: DocsPaginationItem;\n next?: DocsPaginationItem;\n}\n\ninterface DocsPaginationLinkProps {\n item: DocsPaginationItem;\n direction: \"prev\" | \"next\";\n}\n\nconst DocsPaginationLink = (props: DocsPaginationLinkProps) => {\n const { item, direction } = props;\n const isPrevious = direction === \"prev\";\n const directionText = isPrevious ? \"Previous\" : \"Next\";\n\n return (\n <Button\n asChild\n variant=\"ghost\"\n colorPalette=\"gray\"\n gap=\"3\"\n size=\"sm\"\n h=\"auto\"\n py=\"2\"\n textAlign={isPrevious ? \"start\" : \"end\"}\n justifyContent={isPrevious ? \"flex-start\" : \"flex-end\"}\n flex=\"1\"\n >\n <a href={item.href}>\n {isPrevious ? <ChevronLeft size={16} /> : null}\n <Stack gap=\"0\" alignItems={isPrevious ? \"flex-start\" : \"flex-end\"}>\n <Text textStyle=\"sm\" color=\"fg.muted\" fontWeight=\"normal\">\n {directionText}\n </Text>\n <Text textStyle=\"sm\" fontWeight=\"medium\">\n {item.title}\n </Text>\n {item.description ? (\n <Text textStyle=\"xs\" color=\"fg.subtle\" fontWeight=\"normal\">\n {item.description}\n </Text>\n ) : null}\n </Stack>\n {isPrevious ? null : <ChevronRight size={16} />}\n </a>\n </Button>\n );\n};\n\nexport const DocsPagination = (props: DocsPaginationProps) => {\n const { previous, next } = props;\n\n if (!previous && !next) {\n return null;\n }\n\n return (\n <HStack justify=\"space-between\" gap=\"4\">\n <Box flex=\"1\">{previous ? <DocsPaginationLink item={previous} direction=\"prev\" /> : null}</Box>\n <Box flex=\"1\">{next ? <DocsPaginationLink item={next} direction=\"next\" /> : null}</Box>\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.muted\",\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","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\"];\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 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 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 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 {leftIcon ? <Icon as={leftIcon} boxSize={leftIconSize} color={leftIconColor} /> : null}\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\" color=\"fg.menu-item.default\">\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 <Icon as={rightIcon} boxSize={rightIconSize} color={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 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 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 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 { Flex, Stack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { ScrollArea } from \"./scroll-area\";\n\ntype PanelMenuVariant = \"default\" | \"compact\";\n\nconst panelMenuVariantStyles = {\n default: {\n width: \"64\" as const,\n headerHeight: \"49px\",\n headerPadding: \"xs\" as const,\n headerTextStyle: \"label/L/medium\",\n contentPadding: \"xs\" as const,\n contentGap: \"xs\" as const,\n },\n compact: {\n width: \"64\" as const,\n headerHeight: \"49px\",\n headerPadding: \"xs\" as const,\n headerTextStyle: \"label/L/medium\",\n contentPadding: \"2xs\" as const,\n contentGap: \"2xs\" as const,\n },\n} as const;\n\ninterface PanelMenuProps {\n title: string;\n children?: ReactNode;\n variant?: PanelMenuVariant;\n}\n\nexport function PanelMenu(props: PanelMenuProps) {\n const { title, children, variant = \"default\" } = props;\n const styles = panelMenuVariantStyles[variant];\n\n return (\n <Stack borderRightWidth=\"1px\" width={styles.width} gap=\"0\" minH=\"0\">\n {title && (\n <Flex height={styles.headerHeight} p={styles.headerPadding} borderBottomWidth=\"1px\" alignItems=\"center\">\n <Text pb=\"0\" textStyle={styles.headerTextStyle} color=\"fg.muted\">\n {title}\n </Text>\n </Flex>\n )}\n\n {children && (\n <ScrollArea flex=\"1\" minH=\"0\" contentProps={{ p: styles.contentPadding, spaceY: styles.contentGap }}>\n {children}\n </ScrollArea>\n )}\n </Stack>\n );\n}\n","import { Menu, Text } from \"@chakra-ui/react\";\nimport { ItemSection } from \"../item-section\";\nimport { MenuItem } from \"../menu-item\";\nimport { PanelMenu } from \"../panel-menu\";\n\nexport interface DocsSidebarItem {\n text: string;\n link?: string;\n items?: DocsSidebarItem[];\n}\n\ninterface DocsSidebarEntryProps {\n item: DocsSidebarItem;\n activeLink: string | null;\n onSelectLink: (link: string) => void;\n shouldStartOpen?: (item: DocsSidebarItem) => boolean;\n}\n\nexport interface DocsSidebarProps {\n title: string;\n emptyMessage?: string;\n menuItems: DocsSidebarItem[];\n activeLink: string | null;\n onSelectLink: (link: string) => void;\n shouldStartOpen?: (item: DocsSidebarItem) => boolean;\n}\n\nconst DocsSidebarEntry = (props: DocsSidebarEntryProps) => {\n const { item, activeLink, onSelectLink, shouldStartOpen } = props;\n const children = item.items ?? [];\n const hasChildren = children.length > 0;\n\n if (!hasChildren && item.link) {\n const link = item.link;\n const isActive = item.link === activeLink;\n return (\n <Menu.Root>\n <MenuItem primaryLabel={item.text} isSelected={isActive} variant=\"compact\" onClick={() => onSelectLink(link)} />\n </Menu.Root>\n );\n }\n\n if (!hasChildren) {\n return (\n <Menu.Root>\n <MenuItem primaryLabel={item.text} isDisabled variant=\"compact\" />\n </Menu.Root>\n );\n }\n\n const defaultOpen = shouldStartOpen?.(item) ?? false;\n\n return (\n <ItemSection title={item.text} defaultOpen={defaultOpen}>\n {children.map((child, index) => (\n <DocsSidebarEntry\n key={`${child.text}-${child.link ?? index}`}\n item={child}\n activeLink={activeLink}\n onSelectLink={onSelectLink}\n shouldStartOpen={shouldStartOpen}\n />\n ))}\n </ItemSection>\n );\n};\n\nexport const DocsSidebar = (props: DocsSidebarProps) => {\n const { title, emptyMessage, menuItems, activeLink, onSelectLink, shouldStartOpen } = props;\n\n return (\n <PanelMenu title={title} variant=\"compact\">\n {menuItems.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"xs\">\n {emptyMessage ?? \"No files found\"}\n </Text>\n ) : (\n menuItems.map((item, index) => (\n <DocsSidebarEntry\n key={`${item.text}-${item.link ?? index}`}\n item={item}\n activeLink={activeLink}\n onSelectLink={onSelectLink}\n shouldStartOpen={shouldStartOpen}\n />\n ))\n )}\n </PanelMenu>\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 { 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, ...rest } = props;\n\n return (\n <HStack {...rest} minH=\"49px\" justify=\"space-between\" align=\"center\" borderBottomWidth=\"1px\" p=\"xs\">\n {children}\n </HStack>\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=\"md\" alignItems=\"center\">\n <Box width=\"140px\" 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 { Input, InputGroup, Menu, Portal } from \"@chakra-ui/react\";\nimport { Search } from \"lucide-react\";\nimport { Fragment, type ReactNode, useEffect, useRef, useState } from \"react\";\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}\n\ninterface SearchableMenuProps<T extends SearchableMenuItem> {\n trigger: ReactNode;\n items: T[];\n searchPlaceholder: string;\n emptyState: ReactNode;\n renderItem: (item: T) => ReactNode;\n filterItems?: (items: T[], query: string) => T[];\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}\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 SearchableMenu = <T extends SearchableMenuItem>(props: SearchableMenuProps<T>) => {\n const {\n trigger,\n items,\n searchPlaceholder,\n emptyState,\n renderItem,\n filterItems = filterSearchableMenuItems,\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 } = props;\n const [internalOpen, setInternalOpen] = useState(false);\n const [query, setQuery] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n const isOpen = open ?? internalOpen;\n const filteredItems = filterItems(items, query);\n\n useEffect(() => {\n if (!isOpen || !showSearch) {\n return;\n }\n\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [isOpen, showSearch]);\n\n const handleOpenChange: NonNullable<MenuRootProps[\"onOpenChange\"]> = (details) => {\n if (open === undefined) {\n setInternalOpen(details.open);\n }\n\n setQuery(\"\");\n onOpenChange?.(details);\n };\n\n const shouldShowSeparator = Boolean(header && !showSearch);\n\n return (\n <Menu.Root\n lazyMount={lazyMount}\n closeOnSelect={closeOnSelect}\n open={open}\n positioning={positioning}\n onOpenChange={handleOpenChange}\n onFocusOutside={onFocusOutside}\n >\n <Menu.Trigger asChild>{trigger}</Menu.Trigger>\n <Portal disabled={!portalled}>\n <Menu.Positioner>\n <Menu.Content w={width} bg=\"bg\" p=\"0\" zIndex=\"popover\">\n {header}\n {showSearch ? (\n <InputGroup startElement={<Search size={14} />}>\n <Input\n ref={inputRef}\n borderRight={0}\n borderLeft={0}\n borderRadius=\"0\"\n value={query}\n placeholder={searchPlaceholder}\n aria-label={searchPlaceholder}\n autoComplete=\"off\"\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={(event) => event.stopPropagation()}\n />\n </InputGroup>\n ) : null}\n {shouldShowSeparator ? <Menu.Separator margin=\"0\" /> : null}\n <ScrollArea\n maxH={maxListHeight}\n data-testid={contentTestId}\n viewportProps={{ overscrollBehavior: \"contain\" }}\n >\n {filteredItems.length > 0\n ? filteredItems.map((item) => <Fragment key={item.id}>{renderItem(item)}</Fragment>)\n : 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 } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type SessionCompletionStatus = \"in_progress\" | \"awaiting_input\" | \"completed\" | \"failed\";\n\nexport const resolveSessionIndicatorIcon = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return CircleCheck;\n if (status === \"failed\") return CircleAlert;\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 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 ...item,\n searchText: [item.label, item.description].filter(Boolean).join(\" \"),\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 renderItem={(item) => (\n <MenuItem\n id={item.id}\n primaryLabel={item.label}\n tooltipLabel={item.description}\n variant=\"compact\"\n onClick={() => item.onAction?.()}\n />\n )}\n onFocusOutside={(event) => event.preventDefault()}\n />\n );\n};\n","import { Box, HStack, IconButton, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Tooltip } from \"../tooltip\";\nimport { SearchableActionMenu } from \"./searchable-action-menu\";\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 | 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 | 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 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} onClick={() => item.onAction?.()}>\n {item.icon ? <Box mr=\"2\">{item.icon}</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 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 = 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 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\n const rowContent = (\n <HStack gap=\"2\" minW=\"0\" flex=\"1\" overflow=\"hidden\">\n {node.icon ? (\n <Box color=\"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 <Text textStyle=\"paragraph/S/regular\" color={isDisabled ? \"fg.muted\" : \"fg\"} truncate>\n {node.label}\n </Text>\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 <Text textStyle=\"paragraph/XS/regular\" color=\"fg.muted\" truncate>\n {node.description}\n </Text>\n ) : null}\n </Stack>\n </HStack>\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 borderRadius: \"xs\",\n px: \"1\",\n py: \"2xs\",\n pl: paddingLeft,\n bg: isActive ? \"bg.muted\" : \"transparent\",\n _hover: { bg: isActive ? \"bg.muted\" : \"bg.subtle\" },\n cursor: isDisabled ? (\"default\" as const) : (\"pointer\" as const),\n overflow: \"hidden\" as const,\n };\n\n return (\n <Stack gap={!node.children ? \"2xs\" : \"0\"}>\n {canLink && LinkComponent && node.href ? (\n <LinkComponent to={node.href}>\n <HStack {...rowStyles} onClick={handleClick}>\n {rowContent}\n <SidebarRowActions sectionId={sectionId} nodeId={node.id} actions={node.actions ?? []} />\n </HStack>\n </LinkComponent>\n ) : (\n <HStack {...rowStyles} onClick={handleClick}>\n {rowContent}\n <SidebarRowActions sectionId={sectionId} nodeId={node.id} actions={node.actions ?? []} />\n </HStack>\n )}\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\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\" p=\"md\">\n {sections.map((section) => {\n const sectionExpanded = section.label ? isExpanded(section.id, expandedSections) : true;\n\n return (\n <Stack key={section.id} gap=\"0\" data-testid={`sidebar-section-${section.id}`}>\n {section.label ? (\n <HStack\n className=\"group\"\n justify=\"space-between\"\n align=\"center\"\n px=\"1\"\n py=\"2xs\"\n minH=\"7\"\n cursor=\"pointer\"\n borderRadius=\"xs\"\n _hover={{ bg: \"bg.subtle\" }}\n onClick={() => onToggleSection(section.id)}\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 <Box color=\"fg.muted\" flexShrink={0}>\n <ChevronRight\n size={14}\n style={{ transform: sectionExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\", transition: \"120ms\" }}\n />\n </Box>\n </HStack>\n <SidebarRowActions sectionId={section.id} actions={section.actions ?? []} />\n </HStack>\n ) : null}\n\n {sectionExpanded\n ? section.nodes.length > 0\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 : (section.emptyState ?? null)\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 SidebarNextSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n}\n\ninterface SidebarNextState extends SidebarNextSnapshot {\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 CreateSidebarNextStoreOptions {\n storageKey: string;\n initialState?: Partial<SidebarNextSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n} satisfies SidebarNextSnapshot;\n\nconst SIDEBAR_STORE_NAMESPACE = \"pstdio/ui/sidebar-next\";\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: SidebarNextState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n});\n\nexport const createSidebarNextStore = (options: CreateSidebarNextStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidebarNextState>()(\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 createSidebarNextStore>>();\n\nexport const getSidebarNextStore = (storageKey: string) => {\n const existingStore = sidebarStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidebarNextStore({ storageKey });\n sidebarStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidebarNextStore = <T>(storageKey: string, selector: (state: SidebarNextState) => T) => {\n const store = getSidebarNextStore(storageKey);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidebarNextFooterProps {\n children?: ReactNode;\n}\n\nexport const SidebarNextFooter = (props: SidebarNextFooterProps) => {\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\";\n\ninterface SidebarNextHeaderProps {\n children?: ReactNode;\n onClose?: () => void;\n}\n\nexport const SidebarNextHeader = (props: SidebarNextHeaderProps) => {\n const { children, onClose } = props;\n\n return (\n <HStack justify=\"space-between\" align=\"center\" px=\"4\" py=\"3\" bg=\"bg\" position=\"sticky\" top=\"0\" zIndex=\"1\">\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 { Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect } from \"react\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { SidebarTree } from \"../sidebar-tree/sidebar-tree\";\nimport { useSidebarNextStore } from \"./sidebar-next.store\";\nimport type { SidebarNextProps } from \"./sidebar-next.types\";\nimport { SidebarNextFooter } from \"./sidebar-next-footer\";\nimport { SidebarNextHeader } from \"./sidebar-next-header\";\n\nexport const SidebarNext = (props: SidebarNextProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n header,\n footer,\n width = \"240px\",\n closable = true,\n emptyLabel = \"No items available.\",\n linkComponent,\n onNavigate,\n onOpenChange,\n } = props;\n\n const open = useSidebarNextStore(storageKey, (state) => state.open);\n const expandedSections = useSidebarNextStore(storageKey, (state) => state.expandedSections);\n const expandedNodes = useSidebarNextStore(storageKey, (state) => state.expandedNodes);\n const closeSidebar = useSidebarNextStore(storageKey, (state) => state.closeSidebar);\n const toggleSection = useSidebarNextStore(storageKey, (state) => state.toggleSection);\n const toggleNode = useSidebarNextStore(storageKey, (state) => state.toggleNode);\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 <SidebarNextHeader onClose={closable ? closeSidebar : undefined}>{header}</SidebarNextHeader>\n\n <ScrollArea flex=\"1\">\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 </ScrollArea>\n\n <SidebarNextFooter>{footer}</SidebarNextFooter>\n </Flex>\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.subtle\" }}>\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 { Badge, HStack, Stack, Text, Wrap } from \"@chakra-ui/react\";\nimport { GitBranchIcon } from \"lucide-react\";\nimport type { DragEventHandler, MouseEvent } from \"react\";\nimport { DiffBubble } from \"@/components/diff-bubble\";\nimport { Tooltip } from \"@/components/tooltip\";\nimport { type SessionCompletionStatus, SessionIndicator } from \"../session-indicator\";\n\nexport interface TicketCardBadge {\n label: string;\n color?: string;\n}\n\ninterface TicketCardProps {\n ticketId: string;\n parentPath?: string[];\n sessionIndicatorLabel?: string;\n sessionIndicatorStatus?: SessionCompletionStatus;\n title: string;\n badges?: TicketCardBadge[];\n diffAdditions?: number;\n diffDeletions?: number;\n isSelected?: boolean;\n draggable?: boolean;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n onDiffBadgeClick?: () => void;\n onSessionIndicatorClick?: () => void;\n}\n\nexport const TicketCard = (props: TicketCardProps) => {\n const {\n ticketId,\n parentPath = [],\n sessionIndicatorLabel,\n sessionIndicatorStatus,\n title,\n badges = [],\n diffAdditions,\n diffDeletions,\n isSelected = false,\n draggable,\n onDragStart,\n onDragEnd,\n onClick,\n onDiffBadgeClick,\n onSessionIndicatorClick,\n } = props;\n\n const handleDiffBadgeClick = (event: MouseEvent<HTMLSpanElement>) => {\n event.stopPropagation();\n onDiffBadgeClick?.();\n };\n\n const handleSessionIndicatorClick = (event: MouseEvent<SVGSVGElement>) => {\n event.stopPropagation();\n onSessionIndicatorClick?.();\n };\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 >\n <HStack justifyContent={\"space-between\"} gap=\"2xs\" flexWrap=\"wrap\">\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 {sessionIndicatorLabel ? (\n <Tooltip content={`Session ${sessionIndicatorLabel}`}>\n <SessionIndicator\n status={sessionIndicatorStatus}\n boxSize=\"12px\"\n aria-label={`Session ${sessionIndicatorLabel}`}\n cursor={onSessionIndicatorClick ? \"pointer\" : \"default\"}\n onClick={onSessionIndicatorClick ? handleSessionIndicatorClick : undefined}\n />\n </Tooltip>\n ) : null}\n </HStack>\n {typeof diffAdditions === \"number\" && typeof diffDeletions === \"number\" ? (\n <DiffBubble\n additions={diffAdditions}\n deletions={diffDeletions}\n variant=\"ghost\"\n size=\"small\"\n label={<GitBranchIcon size=\"12\" />}\n onClick={handleDiffBadgeClick}\n data-testid=\"ticket-diff-badge\"\n />\n ) : null}\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 {badges.length > 0 && (\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 </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 { 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}\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 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 <TicketCard\n key={item.id}\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 ))}\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 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 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 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.muted\" }}\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 <TicketCard\n key={item.id}\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 ))}\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\";\n\nimport type { TicketCardBadge } from \"./ticket-card\";\n\nexport interface TicketListItem {\n id: string;\n ticketId: string;\n title: string;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n badges?: TicketCardBadge[];\n date?: string;\n assigneeIcon?: ReactNode;\n children?: TicketListItem[];\n onClick?: () => void;\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 <HStack\n key={row.id}\n paddingX=\"sm\"\n paddingY=\"xs\"\n gap=\"sm\"\n cursor=\"pointer\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.muted\"\n background={isSelected ? \"bg.muted\" : \"transparent\"}\n _hover={{ background: \"bg.muted\" }}\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 );\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\n return (\n <HStack gap=\"sm\" 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 <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0} minW=\"70px\">\n {item.ticketId}\n </Text>\n\n <Text textStyle=\"label/S/regular\" flex=\"1\" truncate>\n {item.title}\n </Text>\n\n {item.badges && item.badges.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 </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 <ChevronRight\n size={14}\n style={{\n color: \"var(--chakra-colors-fg-muted)\",\n transform: isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.15s ease\",\n }}\n />\n </Box>\n );\n};\n\nconst TreeConnector = () => (\n <Box width=\"16px\" height=\"16px\" position=\"relative\" flexShrink={0}>\n <Box position=\"absolute\" left=\"7px\" top=\"0\" bottom=\"50%\" borderLeftWidth=\"1px\" borderColor=\"border.muted\" />\n <Box position=\"absolute\" left=\"7px\" top=\"50%\" width=\"8px\" borderBottomWidth=\"1px\" borderColor=\"border.muted\" />\n </Box>\n);\n","import type { FilterCategory, FilterState, GroupingField, WorkspaceOrdering, WorkspaceTicket } 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<Exclude<GroupingField, \"none\">, 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 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 return normalize(ticket.assignee, FALLBACK_LABELS.assignee);\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 = (tickets: WorkspaceTicket[], ordering: WorkspaceOrdering) => {\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 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) => {\n if (category === \"labels\") {\n return ticket.labels ?? [];\n }\n\n if (category === \"status\") {\n return [normalize(ticket.status, FALLBACK_LABELS.status)];\n }\n\n return [normalize(ticket.assignee, FALLBACK_LABELS.assignee)];\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","export type ViewMode = \"board\" | \"list\";\n\nexport type GroupingField = \"status\" | \"assignee\" | \"none\";\n\nexport type OrderingField = \"manual\" | \"updated\" | \"title\" | \"ticketId\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport type DisplayProperty = \"id\" | \"status\" | \"assignee\" | \"labels\" | \"updated\";\n\nexport type FilterCategory = \"status\" | \"assignee\" | \"labels\";\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 WorkspaceTicket {\n id: string;\n ticketId: string;\n title: string;\n status?: string | null;\n statusColor?: string;\n assignee?: string | null;\n labels?: string[];\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: [\"labels\"],\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: \"assignee\", label: \"Assignee\" },\n { value: \"labels\", label: \"Labels\" },\n { value: \"updated\", label: \"Updated\" },\n];\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\n\nimport { DEFAULT_WORKSPACE_SETTINGS, type FilterCategory, type FilterState, type WorkspaceSettings } from \"./types\";\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 = { ...state.filters, [category]: nextValues };\n\n if (nextValues.length === 0) {\n delete nextFilters[category];\n }\n\n return { ...state, filters: nextFilters };\n }),\n clearFilter: (category) =>\n set((state) => {\n const nextFilters = { ...state.filters };\n delete nextFilters[category];\n\n return {\n ...state,\n filters: nextFilters,\n };\n }),\n clearAllFilters: () => set((state) => ({ ...state, filters: {} })),\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: (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 type { TicketCardBadge } from \"./ticket-card\";\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 FilterCategory,\n type GroupingField,\n type OrderingField,\n type WorkspaceFilterCategory,\n type WorkspaceOption,\n type WorkspaceTicket,\n} from \"./types\";\nimport { useTicketsWorkspaceStore } from \"./use-workspace-store\";\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 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 onMoveTicket?: (ticketId: string, targetColumnId: string) => void;\n onMoveToGroup?: (ticketId: string, targetGroupKey: string) => void;\n onCreateTicket?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n}\n\nconst 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 filterValueGetters: Record<FilterCategory, (ticket: WorkspaceTicket) => string[]> = {\n status: (ticket) => (ticket.status ? [ticket.status] : []),\n assignee: (ticket) => (ticket.assignee ? [ticket.assignee] : []),\n labels: (ticket) => ticket.labels ?? [],\n};\n\nconst collectCategoryOptions = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const values = new Set<string>();\n\n for (const ticket of tickets) {\n const ticketValues = filterValueGetters[category](ticket);\n for (const value of ticketValues) {\n values.add(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\nconst buildDefaultFilterCategories = (tickets: WorkspaceTicket[]): WorkspaceFilterCategory[] => {\n return [\n { id: \"status\", label: \"Status\", options: collectCategoryOptions(tickets, \"status\") },\n { id: \"assignee\", label: \"Assignee\", options: collectCategoryOptions(tickets, \"assignee\") },\n { id: \"labels\", label: \"Labels\", options: collectCategoryOptions(tickets, \"labels\") },\n ];\n};\n\nconst 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 if (includes(\"labels\")) {\n for (const label of ticket.labels ?? []) {\n badges.push({ label, color: \"purple\" });\n }\n }\n\n return badges;\n};\n\nexport const TicketsWorkspace = <TTicket extends WorkspaceTicket>(props: TicketsWorkspaceProps<TTicket>) => {\n const {\n tickets,\n storageKey,\n selectedTicketId = null,\n groupingOptions = DEFAULT_GROUPING_OPTIONS,\n orderingOptions = DEFAULT_ORDERING_OPTIONS,\n displayPropertyOptions = DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n filterCategories,\n knownColumnKeys: knownColumnKeysProp,\n emptyTitle = \"No tickets found\",\n emptyDescription = \"Try changing filters or display settings.\",\n onTicketClick,\n onMoveTicket,\n onMoveToGroup,\n onCreateTicket,\n onColumnAction,\n getBoardColumnConfig,\n } = props;\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);\n\n const countsByCategory = Object.fromEntries(\n categoryOptions.map((category) => [category.id, countFilterValues(tickets, category.id)]),\n );\n\n const knownColumnKeys =\n knownColumnKeysProp ??\n (settings.columnGrouping !== \"none\"\n ? categoryOptions.find((c) => c.id === settings.columnGrouping)?.options.map((o) => o.value)\n : undefined);\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 onClick: () => onTicketClick?.(ticket),\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)} (${group.tickets.length})`,\n children: orderTickets(group.tickets, settings.ordering).map((ticket) => toListItem(ticket as TTicket)),\n });\n\n const listItems: TicketListItem[] =\n settings.columnGrouping === \"none\"\n ? orderTickets(visibleTickets, settings.ordering).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)} (${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 onClick: () => onTicketClick?.(ticket as TTicket),\n },\n }));\n\n const boardColumns: TicketBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedTickets = orderTickets(column.tickets, settings.ordering);\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)),\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={onMoveTicket}\n onMoveToGroup={onMoveToGroup}\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","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});\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }}>\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"1\" flex=\"1\" maxWidth=\"100%\">\n {toast.title && <Toast.Title>{toast.title}</Toast.Title>}\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\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","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":["Breadcrumb","React","forwardRef","props","ref","$","_c","LinkComponent","items","rest","separator","separatorGap","linkComponent","t0","t1","length","item","index","last","isInteractive","Boolean","url","onClick","itemContent","title","jsx","ChakraBreadcrumb","jsxs","map","t2","Checkbox","children","icon","inputProps","rootRef","disabled","undefined","interactiveCursor","ChakraCheckbox","t3","t4","t5","customTheme","base","inherit","rules","colors","CodeEditor","defaultCode","code","showLineNumbers","isEditable","language","onChange","disableScroll","Symbol","for","enabled","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","tabSize","minimap","fontSize","readOnly","lineNumbers","options","t6","value","t7","Editor","_temp","_temp2","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","width","Box","Label","Text","DeleteConfirmationModal","isDeleting","setIsDeleting","useState","headline","buttonText","notificationText","onDelete","open","onClose","handleDelete","Dialog","CloseButton","Stack","Button","DiffCard","diff","isExpanded","setIsExpanded","filePath","newPath","oldPath","additions","deletions","event","stopPropagation","ChevronDown","ChevronRight","IconButton","change","t8","DiffBubble","t9","Grid","t10","newContent","oldContent","t11","DiffDrawer","diffs","scrollRef","useRef","virtualizer","useVirtualizer","count","getScrollElement","current","estimateSize","overscan","ScrollArea","p","spaceY","EmptyState","height","getTotalSize","getVirtualItems","virtualItem","measureElement","transform","start","key","getEntryKey","entry","version","date","getChangeKey","ChangelogDate","Timeline","Flex","DocsChangelog","entries","description","Heading","tag","Badge","changeIndex","List","link","Link","entryIndex","md","tags","HStack","image","Image","changes","HEADING_REGEX","HEADING_SELECTOR","isHeadingLevelMatch","element","level","classList","contains","slugifyHeading","toLowerCase","replace","extractHeadings","markdown","headings","headingIndex","match","matchAll","text","trim","id","push","matchHeadingElements","doc","elements","Array","from","querySelectorAll","elementsByHeadingId","Map","headingIdByElement","nextElementIndex","heading","elementIndex","elementText","textContent","set","DocsOutlineItem","isActive","emphasized","variant","onSelect","isLine","borderStartColor","color","DocsOutline","rootMargin","env","useEnvironmentContext","activeHeadingId","setActiveHeadingId","isMobileOpen","setIsMobileOpen","headingElementsMatchRef","extractedHeadings","useEffect","headingsForObserver","getDocument","win","getWindow","nextMatch","size","observer","IntersectionObserver","visibleEntries","filter","sort","target","nextActiveHeadingId","get","keys","observe","disconnect","activeHeading","find","headingId","headingElement","scrollIntoView","behavior","block","handleHeadingSelect","details","Icon","FileText","t12","Fragment","t13","t14","t15","t16","t17","Collapsible","t18","heading_0","T0","t19","t20","t21","t22","t23","t24","t25","T1","t26","t27","heading_1","t28","t29","t30","isIntersecting","first","second","boundingClientRect","top","DocsPaginationLink","direction","isPrevious","directionText","ChevronLeft","href","DocsPagination","previous","next","ItemSection","defaultOpen","action","background","e","menuItemVariantStyles","default","paddingX","paddingY","minHeight","iconSize","primaryTextStyle","secondaryMarginLeft","secondaryTextStyle","compact","MenuItemContent","primaryLabel","tooltipLabel","secondaryLabel","leftIcon","rightIcon","leftIconColor","rightIconColor","leftIconSize","rightIconSize","rightIconAriaLabel","rightTooltipLabel","onRightIconClick","tagLabel","tagColorPalette","tagVariant","variantStyles","isRightIconInteractive","preventDefault","handleRightIconMouseDown","event_0","handleRightIconClick","placement","Tooltip","MenuItem","asChild","isDisabled","isSelected","tabIndex","maxWidth","setRefElement","onMouseDown","onMouseEnter","backgroundColor","resolvedLeftIconSize","resolvedRightIconSize","contentProps","bg","role","overflow","position","cursor","_hover","_focus","textDecoration","commonProps","bb0","child","Children","only","isValidElement","ChakraMenuItem","cloneElement","panelMenuVariantStyles","headerHeight","headerPadding","headerTextStyle","contentPadding","contentGap","PanelMenu","styles","DocsSidebarEntry","activeLink","onSelectLink","shouldStartOpen","hasChildren","Menu","DocsSidebar","emptyMessage","menuItems","ErrorBoundary","Component","state","error","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","fallback","label","ErrorFallback","message","AbsoluteCenter","AlertMessage","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FolderPickerListEntry","selectedPath","selectedPathSet","onEntryClick","path","has","isAlreadySelected","handleClick","name","FolderPickerDialog","currentPath","selectedPaths","isLoading","isSelectDisabled","onSelectHomeDirectory","onSelectParentDirectory","Set","Home","ChevronUp","padding","HorizontalMenuStack","getNoticeKey","notice","getNoticeTitle","OpenSourceNoticesScreen","notices","productName","productVersion","generatedAt","emptyTitle","emptyDescription","Separator","license","copyright","homepageUrl","sourceUrl","attribution","Properties","Info","filterSearchableMenuItems","query","normalizedQuery","searchText","join","includes","SearchableMenu","trigger","searchPlaceholder","emptyState","renderItem","filterItems","header","maxListHeight","showSearch","closeOnSelect","lazyMount","positioning","onOpenChange","onFocusOutside","contentTestId","portalled","internalOpen","setInternalOpen","setQuery","inputRef","isOpen","filteredItems","timeout","setTimeout","focus","clearTimeout","handleOpenChange","shouldShowSeparator","Portal","InputGroup","Search","Input","overscrollBehavior","Content","Positioner","Root","resolveSessionIndicatorIcon","status","CircleCheck","CircleAlert","CircleDashed","resolveSessionIndicatorColor","SessionIndicator","boxSize","ariaLabel","SearchableActionMenu","emptyMenuLabel","item_0","onAction","values","SidebarActionButton","sectionId","nodeId","SidebarRowActions","actions","opacity","pointerEvents","SidebarNodeRow","node","expandedNodes","activeNodeId","onNavigate","onToggleNode","expanded","isNavigable","navigationIntent","paddingLeft","canLink","intent","transition","rowContent","className","justify","align","borderRadius","px","py","pl","rowStyles","childNode","SidebarTree","sections","expandedSections","onToggleSection","section","sectionExpanded","nodes","DEFAULT_SNAPSHOT","SIDEBAR_STORE_NAMESPACE","toStorageName","storageKey","createNoopStorage","getItem","setItem","removeItem","toggleId","setExpanded","getPersistedSnapshot","createSidebarNextStore","initialState","snapshot","createStore","persist","openSidebar","closeSidebar","toggleSidebar","toggleSection","toggleNode","setSectionExpanded","setNodeExpanded","reset","storage","createJSONStorage","globalThis","localStorage","partialize","sidebarStoreRegistry","getSidebarNextStore","existingStore","store","useSidebarNextStore","selector","useStore","SidebarNextFooter","SidebarNextHeader","PanelLeftClose","SidebarNext","footer","closable","emptyLabel","_temp5","_temp6","state_0","state_1","state_2","state_3","state_4","Switch","thumbLabel","trackLabel","ChakraSwitch","off","on","SectionLabel","Dropdown","option","selectedLabel","option_0","DisplayMenu","settings","groupingOptions","orderingOptions","displayPropertyOptions","onViewModeChange","onColumnGroupingChange","onRowGroupingChange","onOrderingFieldChange","onSortDirectionToggle","onDisplayPropertyToggle","offset","mainAxis","Settings2","SegmentGroup","KanbanSquare","viewMode","rowGrouping","columnGrouping","o","ordering","field","ArrowDownUp","displayProperties","Popover","getActiveFilterCount","filters","Object","reduce","sum","FilterMenu","categories","countsByCategory","onToggleFilterValue","onClearFilter","onClearAll","activeCategoryId","setActiveCategoryId","category","activeCategory","activeFilterCount","Filter","category_0","selectedValues","checked","TicketCard","ticketId","parentPath","sessionIndicatorLabel","sessionIndicatorStatus","badges","diffAdditions","diffDeletions","draggable","onDragStart","onDragEnd","onDiffBadgeClick","onSessionIndicatorClick","handleDiffBadgeClick","handleSessionIndicatorClick","borderColor","boxShadow","GitBranchIcon","Wrap","badge","TicketBoard","columns","selectedItemId","onMoveItem","onMoveToGroup","onCreateStart","onColumnAction","activeColumn","setActiveColumn","activeGroup","setActiveGroup","handleDragStart","handleDragEnd","columnId","dataTransfer","dropEffect","handleDragOver","event_1","currentTarget","relatedTarget","handleDragLeave","columnId_0","event_2","itemId_0","getData","itemId","handleDrop","alignItems","gap","pb","minH","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","Spacer","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","ExpandToggle","TreeConnector","statusColor","statusIcon","assigneeIcon","getIsExpanded","FALLBACK_LABELS","assignee","normalize","getGroupingValue","ticket","grouping","compareGroupKey","a","b","localeCompare","numeric","orderByDirection","orderTickets","tickets","left","Date","updatedAt","getTime","right","groupTickets","knownColumnKeys","groupedByColumn","columnKey","columnTickets","groupedByRow","rowKey","rowTickets","getTicketFilterValues","labels","filterTickets","activeFilters","every","some","countFilterValues","counts","DEFAULT_WORKSPACE_SETTINGS","DEFAULT_GROUPING_OPTIONS","DEFAULT_ORDERING_OPTIONS","DEFAULT_DISPLAY_PROPERTY_OPTIONS","WORKSPACE_STORE_NAMESPACE","toggleValue","createTicketsWorkspaceStore","setViewMode","setColumnGrouping","setRowGrouping","setOrdering","setOrderingField","toggleSortDirection","toggleDisplayProperty","property","setFilter","toggleFilterValue","currentValues","nextValues","nextFilters","clearFilter","clearAllFilters","workspaceStoreRegistry","getTicketsWorkspaceStore","useTicketsWorkspaceStore","toTitleCase","replaceAll","split","chunk","toUpperCase","slice","filterValueGetters","collectCategoryOptions","ticketValues","add","buildDefaultFilterCategories","toBadges","toLocaleDateString","TicketsWorkspace","selectedTicketId","filterCategories","knownColumnKeysProp","onTicketClick","onMoveTicket","onCreateTicket","getBoardColumnConfig","_temp7","_temp8","_temp9","_temp0","_temp1","categoryOptions","listItems","visibleTickets","fromEntries","c","_temp10","grouped","toListItem","ticket_0","toGroupListItem","ticket_1","group_0","tickets_0","ticket_2","toBoardItems","columnConfig","orderedTickets","row_0","boardColumns","state_5","state_6","state_7","state_8","state_9","toaster","createToaster","pauseOnPageIdle","Toaster","ChakraToaster","mdDown","toast","Toast","type","Spinner","applyThemePreference","theme","document","root","documentElement","body","opposite","el","remove","setAttribute","style","colorScheme","STORAGE_KEY","ThemePreferenceContext","createContext","getInitialThemePreference","window","stored","matchMedia","matches","ThemePreferenceProvider","initialPreference","themePreference","setThemePreference","toggleThemePreference","useThemePreference","context","useContext","Error","prev"],"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/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/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/ticket-card.tsx","../src/components/tickets/ticket-board.tsx","../src/components/tickets/ticket-list.tsx","../src/components/tickets/ticket-grouping.ts","../src/components/tickets/types.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\"];\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 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 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 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 {leftIcon ? <Icon as={leftIcon} boxSize={leftIconSize} color={leftIconColor} /> : null}\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\" color=\"fg.menu-item.default\">\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 <Icon as={rightIcon} boxSize={rightIconSize} color={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 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 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 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 { 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 } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type SessionCompletionStatus = \"in_progress\" | \"awaiting_input\" | \"completed\" | \"failed\" | \"disconnected\";\n\nexport const resolveSessionIndicatorIcon = (status: SessionCompletionStatus | undefined) => {\n if (status === \"completed\") return CircleCheck;\n if (status === \"failed\") return CircleAlert;\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 === \"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, IconButton, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\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 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} onClick={() => item.onAction?.()}>\n {item.icon ? <Box mr=\"2\">{item.icon}</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 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 return (\n <Stack gap=\"1px\" w=\"full\" minW=\"0\" maxW=\"full\">\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\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 { 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\";\n\nexport interface TicketCardBadge {\n label: string;\n color?: string;\n}\n\ninterface TicketCardProps {\n ticketId: string;\n parentPath?: string[];\n title: string;\n badges?: TicketCardBadge[];\n workspaceBadge?: WorkspaceBadgeProps;\n isSelected?: boolean;\n draggable?: boolean;\n onDragStart?: DragEventHandler<HTMLDivElement>;\n onDragEnd?: DragEventHandler<HTMLDivElement>;\n onClick?: () => void;\n}\n\nexport const TicketCard = (props: TicketCardProps) => {\n const {\n ticketId,\n parentPath = [],\n title,\n badges = [],\n workspaceBadge,\n isSelected = false,\n draggable,\n onDragStart,\n onDragEnd,\n onClick,\n } = props;\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 {badges.length > 0 && (\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 </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 { 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}\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 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 <TicketCard\n key={item.id}\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 ))}\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 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 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 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 <TicketCard\n key={item.id}\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 ))}\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\";\n\nimport type { TicketCardBadge } from \"./ticket-card\";\n\nexport interface TicketListItem {\n id: string;\n ticketId: string;\n title: string;\n statusIcon?: ComponentType<{ size?: number | string }>;\n statusColor?: string;\n badges?: TicketCardBadge[];\n date?: string;\n assigneeIcon?: ReactNode;\n children?: TicketListItem[];\n onClick?: () => void;\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 <HStack\n key={row.id}\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 );\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\n return (\n <HStack gap=\"sm\" 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 <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0} minW=\"70px\">\n {item.ticketId}\n </Text>\n\n <Text textStyle=\"label/S/regular\" flex=\"1\" truncate>\n {item.title}\n </Text>\n\n {item.badges && item.badges.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 </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 <ChevronRight\n size={14}\n style={{\n color: \"var(--chakra-colors-fg-muted)\",\n transform: isExpanded ? \"rotate(90deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.15s ease\",\n }}\n />\n </Box>\n );\n};\n\nconst TreeConnector = () => (\n <Box width=\"16px\" height=\"16px\" position=\"relative\" flexShrink={0}>\n <Box position=\"absolute\" left=\"7px\" top=\"0\" bottom=\"50%\" borderLeftWidth=\"1px\" borderColor=\"border.muted\" />\n <Box position=\"absolute\" left=\"7px\" top=\"50%\" width=\"8px\" borderBottomWidth=\"1px\" borderColor=\"border.muted\" />\n </Box>\n);\n","import type { FilterCategory, FilterState, GroupingField, WorkspaceOrdering, WorkspaceTicket } 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<Exclude<GroupingField, \"none\">, 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 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 return normalize(ticket.assignee, FALLBACK_LABELS.assignee);\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 = (tickets: WorkspaceTicket[], ordering: WorkspaceOrdering) => {\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 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) => {\n if (category === \"labels\") {\n return ticket.labels ?? [];\n }\n\n if (category === \"status\") {\n return [normalize(ticket.status, FALLBACK_LABELS.status)];\n }\n\n return [normalize(ticket.assignee, FALLBACK_LABELS.assignee)];\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","export type ViewMode = \"board\" | \"list\";\n\nexport type GroupingField = \"status\" | \"assignee\" | \"none\";\n\nexport type OrderingField = \"manual\" | \"updated\" | \"title\" | \"ticketId\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport type DisplayProperty = \"id\" | \"status\" | \"assignee\" | \"labels\" | \"updated\";\n\nexport type FilterCategory = \"status\" | \"assignee\" | \"labels\";\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 WorkspaceTicket {\n id: string;\n ticketId: string;\n title: string;\n status?: string | null;\n statusColor?: string;\n assignee?: string | null;\n labels?: string[];\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: [\"labels\"],\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: \"assignee\", label: \"Assignee\" },\n { value: \"labels\", label: \"Labels\" },\n { value: \"updated\", label: \"Updated\" },\n];\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\n\nimport { DEFAULT_WORKSPACE_SETTINGS, type FilterCategory, type FilterState, type WorkspaceSettings } from \"./types\";\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 = { ...state.filters, [category]: nextValues };\n\n if (nextValues.length === 0) {\n delete nextFilters[category];\n }\n\n return { ...state, filters: nextFilters };\n }),\n clearFilter: (category) =>\n set((state) => {\n const nextFilters = { ...state.filters };\n delete nextFilters[category];\n\n return {\n ...state,\n filters: nextFilters,\n };\n }),\n clearAllFilters: () => set((state) => ({ ...state, filters: {} })),\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: (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 type { TicketCardBadge } from \"./ticket-card\";\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 FilterCategory,\n type GroupingField,\n type OrderingField,\n type WorkspaceFilterCategory,\n type WorkspaceOption,\n type WorkspaceTicket,\n} from \"./types\";\nimport { useTicketsWorkspaceStore } from \"./use-workspace-store\";\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 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 onMoveTicket?: (ticketId: string, targetColumnId: string) => void;\n onMoveToGroup?: (ticketId: string, targetGroupKey: string) => void;\n onCreateTicket?: (columnId: string) => void;\n onColumnAction?: (columnId: string, actionId: string) => Promise<void> | void;\n getBoardColumnConfig?: (groupKey: string) => BoardColumnConfig;\n}\n\nconst 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 filterValueGetters: Record<FilterCategory, (ticket: WorkspaceTicket) => string[]> = {\n status: (ticket) => (ticket.status ? [ticket.status] : []),\n assignee: (ticket) => (ticket.assignee ? [ticket.assignee] : []),\n labels: (ticket) => ticket.labels ?? [],\n};\n\nconst collectCategoryOptions = (tickets: WorkspaceTicket[], category: FilterCategory) => {\n const values = new Set<string>();\n\n for (const ticket of tickets) {\n const ticketValues = filterValueGetters[category](ticket);\n for (const value of ticketValues) {\n values.add(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\nconst buildDefaultFilterCategories = (tickets: WorkspaceTicket[]): WorkspaceFilterCategory[] => {\n return [\n { id: \"status\", label: \"Status\", options: collectCategoryOptions(tickets, \"status\") },\n { id: \"assignee\", label: \"Assignee\", options: collectCategoryOptions(tickets, \"assignee\") },\n { id: \"labels\", label: \"Labels\", options: collectCategoryOptions(tickets, \"labels\") },\n ];\n};\n\nconst 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 if (includes(\"labels\")) {\n for (const label of ticket.labels ?? []) {\n badges.push({ label, color: \"purple\" });\n }\n }\n\n return badges;\n};\n\nexport const TicketsWorkspace = <TTicket extends WorkspaceTicket>(props: TicketsWorkspaceProps<TTicket>) => {\n const {\n tickets,\n storageKey,\n selectedTicketId = null,\n groupingOptions = DEFAULT_GROUPING_OPTIONS,\n orderingOptions = DEFAULT_ORDERING_OPTIONS,\n displayPropertyOptions = DEFAULT_DISPLAY_PROPERTY_OPTIONS,\n filterCategories,\n knownColumnKeys: knownColumnKeysProp,\n emptyTitle = \"No tickets found\",\n emptyDescription = \"Try changing filters or display settings.\",\n onTicketClick,\n onMoveTicket,\n onMoveToGroup,\n onCreateTicket,\n onColumnAction,\n getBoardColumnConfig,\n } = props;\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);\n\n const countsByCategory = Object.fromEntries(\n categoryOptions.map((category) => [category.id, countFilterValues(tickets, category.id)]),\n );\n\n const knownColumnKeys =\n knownColumnKeysProp ??\n (settings.columnGrouping !== \"none\"\n ? categoryOptions.find((c) => c.id === settings.columnGrouping)?.options.map((o) => o.value)\n : undefined);\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 onClick: () => onTicketClick?.(ticket),\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)} (${group.tickets.length})`,\n children: orderTickets(group.tickets, settings.ordering).map((ticket) => toListItem(ticket as TTicket)),\n });\n\n const listItems: TicketListItem[] =\n settings.columnGrouping === \"none\"\n ? orderTickets(visibleTickets, settings.ordering).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)} (${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 onClick: () => onTicketClick?.(ticket as TTicket),\n },\n }));\n\n const boardColumns: TicketBoardColumn[] = grouped.map((column) => {\n const columnConfig = getBoardColumnConfig?.(column.key) ?? {};\n const orderedTickets = orderTickets(column.tickets, settings.ordering);\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)),\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={onMoveTicket}\n onMoveToGroup={onMoveToGroup}\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","leftIcon","rightIcon","leftIconColor","rightIconColor","leftIconSize","rightIconSize","rightIconAriaLabel","rightTooltipLabel","onRightIconClick","tagLabel","tagColorPalette","tagVariant","variant","variantStyles","isRightIconInteractive","handleRightIconMouseDown","event_0","handleRightIconClick","placement","Icon","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","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","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","positioning","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","CirclePause","CircleDashed","resolveSessionIndicatorColor","SessionIndicator","boxSize","SearchableActionMenu","menuItems","emptyMenuLabel","onAction","SidebarNodeContent","node","expanded","hasChildren","iconColor","indicator","transition","values","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","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","TicketCard","ticketId","parentPath","badges","workspaceBadge","draggable","onDragStart","onDragEnd","Wrap","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","ExpandToggle","TreeConnector","statusColor","statusIcon","assigneeIcon","date","getIsExpanded","FALLBACK_LABELS","assignee","normalize","getGroupingValue","ticket","grouping","compareGroupKey","a","b","localeCompare","numeric","orderByDirection","orderTickets","tickets","sort","left","Date","updatedAt","getTime","right","groupTickets","knownColumnKeys","groupedByColumn","columnKey","columnTickets","groupedByRow","rowKey","rowTickets","getTicketFilterValues","labels","filterTickets","activeFilters","every","some","countFilterValues","counts","DEFAULT_WORKSPACE_SETTINGS","DEFAULT_GROUPING_OPTIONS","DEFAULT_ORDERING_OPTIONS","DEFAULT_DISPLAY_PROPERTY_OPTIONS","WORKSPACE_STORE_NAMESPACE","toggleValue","createTicketsWorkspaceStore","setViewMode","setColumnGrouping","setRowGrouping","setOrdering","setOrderingField","toggleSortDirection","toggleDisplayProperty","property","setFilter","toggleFilterValue","currentValues","nextValues","nextFilters","clearFilter","clearAllFilters","workspaceStoreRegistry","getTicketsWorkspaceStore","useTicketsWorkspaceStore","toTitleCase","replaceAll","split","chunk","toUpperCase","slice","filterValueGetters","collectCategoryOptions","ticketValues","buildDefaultFilterCategories","toBadges","push","toLocaleDateString","TicketsWorkspace","selectedTicketId","filterCategories","knownColumnKeysProp","onTicketClick","onMoveTicket","onCreateTicket","getBoardColumnConfig","_temp7","_temp8","_temp9","_temp0","_temp1","categoryOptions","listItems","visibleTickets","fromEntries","c","_temp10","grouped","toListItem","ticket_0","toGroupListItem","ticket_1","group_0","tickets_0","ticket_2","toBoardItems","columnConfig","orderedTickets","row_0","boardColumns","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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"}