@pstdio/ui 0.24.1 → 0.25.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 (65) hide show
  1. package/dist/{MermaidComponent-BTgLnpLA.js → MermaidComponent-BVdDqDRU.js} +2 -2
  2. package/dist/{MermaidComponent-BTgLnpLA.js.map → MermaidComponent-BVdDqDRU.js.map} +1 -1
  3. package/dist/chat-ui.js +1326 -1414
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/activity/activity-comment.d.ts +10 -2
  6. package/dist/components/activity/index.d.ts +3 -1
  7. package/dist/components/activity/resource-activity-feed.d.ts +58 -0
  8. package/dist/components/chat-ui/components/chat-input.d.ts +1 -1
  9. package/dist/components/chat-ui/components/chat-panel.d.ts +1 -1
  10. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +1 -1
  11. package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
  12. package/dist/components/tab-strip/window-tabs.d.ts +1 -0
  13. package/dist/data-table.js +5 -5
  14. package/dist/diff.js +2 -2
  15. package/dist/{edit-mode-data-table-BrydKuMM.js → edit-mode-data-table-B8UpWb7i.js} +4 -4
  16. package/dist/{edit-mode-data-table-BrydKuMM.js.map → edit-mode-data-table-B8UpWb7i.js.map} +1 -1
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.js +2047 -1735
  19. package/dist/index.js.map +1 -1
  20. package/dist/{kanban-renderer-toolbar-ebqlG13w.js → kanban-renderer-toolbar-DzY6THJY.js} +3 -3
  21. package/dist/{kanban-renderer-toolbar-ebqlG13w.js.map → kanban-renderer-toolbar-DzY6THJY.js.map} +1 -1
  22. package/dist/kanban-renderer.js +5 -5
  23. package/dist/{lazy-markdown-editor-Obb0M8xc.js → lazy-markdown-editor-ClZPZuaU.js} +2 -2
  24. package/dist/{lazy-markdown-editor-Obb0M8xc.js.map → lazy-markdown-editor-ClZPZuaU.js.map} +1 -1
  25. package/dist/{list-row-CRi3Luog.js → list-row-BDoV_iMV.js} +3 -3
  26. package/dist/list-row-BDoV_iMV.js.map +1 -0
  27. package/dist/{markdown-editor-Bj_QX4oN.js → markdown-editor-CAVqJ9yR.js} +2 -2
  28. package/dist/{markdown-editor-Bj_QX4oN.js.map → markdown-editor-CAVqJ9yR.js.map} +1 -1
  29. package/dist/{markdown-kuU19Oh3.js → markdown-gNucAjnF.js} +9 -9
  30. package/dist/{markdown-kuU19Oh3.js.map → markdown-gNucAjnF.js.map} +1 -1
  31. package/dist/{param-editor-DhoxgwGd.js → param-editor-CTx3mDxQ.js} +2 -2
  32. package/dist/{param-editor-DhoxgwGd.js.map → param-editor-CTx3mDxQ.js.map} +1 -1
  33. package/dist/{param-editor-field-DurcyLuw.js → param-editor-field-DteDEyeU.js} +3 -3
  34. package/dist/{param-editor-field-DurcyLuw.js.map → param-editor-field-DteDEyeU.js.map} +1 -1
  35. package/dist/prompt-input-DNpRL5tI.js +564 -0
  36. package/dist/prompt-input-DNpRL5tI.js.map +1 -0
  37. package/dist/rich-message-CuPiKxKX.js +78 -0
  38. package/dist/rich-message-CuPiKxKX.js.map +1 -0
  39. package/dist/rich-text.js +24 -23
  40. package/dist/rich-text.js.map +1 -1
  41. package/dist/theme/primitives/colors.d.ts +0 -23
  42. package/dist/theme/recipes/activity-comment.d.ts +36 -0
  43. package/dist/theme/recipes/alert.d.ts +1 -1
  44. package/dist/theme/recipes/dialog.d.ts +1 -1
  45. package/dist/theme/recipes/drawer.d.ts +1 -1
  46. package/dist/theme/recipes/menu.d.ts +1 -1
  47. package/dist/theme/recipes/popover.d.ts +1 -1
  48. package/dist/theme/recipes/progress-circle.d.ts +3 -3
  49. package/dist/theme/recipes/switch.d.ts +1 -1
  50. package/dist/theme/recipes/timeline.d.ts +1 -1
  51. package/dist/theme/recipes/tooltip.d.ts +1 -1
  52. package/dist/theme/recipes/window-title-bar.d.ts +4 -1
  53. package/dist/{theme-Ca-KyNoi.js → theme-Dc7hVvMC.js} +120 -801
  54. package/dist/theme-Dc7hVvMC.js.map +1 -0
  55. package/dist/theme.js +1 -1
  56. package/dist/{tree-list-DXwHWodb.js → tree-list-CZvcg3_6.js} +2 -2
  57. package/dist/{tree-list-DXwHWodb.js.map → tree-list-CZvcg3_6.js.map} +1 -1
  58. package/package.json +2 -2
  59. package/dist/list-row-CRi3Luog.js.map +0 -1
  60. package/dist/rich-message-dNYvLDd4.js +0 -628
  61. package/dist/rich-message-dNYvLDd4.js.map +0 -1
  62. package/dist/theme/recipes/landing-story.d.ts +0 -10
  63. package/dist/theme/recipes/landing-tool-demo.d.ts +0 -1
  64. package/dist/theme/recipes/landing.d.ts +0 -23
  65. package/dist/theme-Ca-KyNoi.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/activity/activity-avatar.tsx","../src/components/activity/activity-comment.tsx","../src/components/activity/activity-composer.tsx","../src/components/activity/activity-event.tsx","../src/components/activity/activity-root.tsx","../src/components/activity/activity-timeline.tsx","../src/components/activity/index.ts","../src/components/command-palette/palette-filter.ts","../src/components/command-palette/palette-list.tsx","../src/components/overlays/search-modal-content.tsx","../src/components/command-palette/palette.tsx","../src/components/command-palette/palette-shortcut.tsx","../src/components/layout/horizontal-menu-stack.tsx","../src/components/layout/item-section.tsx","../src/components/layout/panel-header.constants.ts","../src/components/notification-center/notification-center.tsx","../src/components/overlays/attached-menu.tsx","../src/components/overlays/attached-panel.tsx","../src/components/overlays/bubble-button.tsx","../src/components/overlays/bubble-panel.tsx","../src/components/overlays/delete-confirmation-modal.tsx","../src/components/overlays/repo-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/error-boundary.tsx","../src/components/primitives/tag-swatch.tsx","../src/components/primitives/icon-color-picker.tsx","../src/components/primitives/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/theme/recipes/segmented-control.ts","../src/components/primitives/segmented-control.tsx","../src/components/primitives/toaster.tsx","../src/components/param-editor/param-editor-control-list.tsx","../src/components/sidenav/sidenav.store.ts","../src/components/sidenav/sidenav-footer.tsx","../src/components/sidenav/sidenav-header.tsx","../src/components/sidenav/sidenav.tsx","../src/components/tab-strip/tab-visibility.store.ts","../src/components/tree-list/tree-list-visibility-filter.ts","../src/components/tab-strip/tab-visibility-filter.ts","../src/components/tab-strip/window-tabs.tsx","../src/components/tab-strip/window-title-bar.tsx","../src/components/tag-editor/tag-editor-heading.tsx","../src/components/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.tsx","../src/components/tag-editor/tag-editor-save-bar.tsx","../src/components/tag-editor/tag-settings-panel.tsx","../src/components/tree-list/tree-list-order.store.ts","../src/components/tree-list/tree-list-order-filter.ts","../src/components/tree-list/tree-list-visibility.store.ts","../src/utils/apply-file-icon-theme-preference.ts","../src/utils/file-icon-theme-preference.tsx","../src/utils/resolve-file-icon-element.tsx"],"sourcesContent":["import { Avatar, Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\n\nexport interface ActivityAvatarProps {\n actor?: ActivityActor;\n icon?: ReactNode;\n color?: string;\n background?: string;\n}\n\nexport const ActivityAvatar = (props: ActivityAvatarProps) => {\n const { actor, icon, color = \"fg.muted\", background = \"bg.muted\" } = props;\n\n if (icon) {\n return (\n <Box\n boxSize=\"18px\"\n borderRadius=\"full\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n color={color}\n background={background}\n >\n {icon}\n </Box>\n );\n }\n\n return (\n <Avatar.Root size=\"2xs\" flexShrink={0}>\n <Avatar.Image src={actor?.avatarSrc} alt={actor?.avatarAlt ?? actor?.name} />\n <Avatar.Fallback name={actor?.name} background={background} color={color} />\n </Avatar.Root>\n );\n};\n","import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { Children, type ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\ninterface ActivityCommentHeaderProps {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityCommentProps extends Omit<HTMLChakraProps<\"article\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n replies?: ReactNode;\n composer?: ReactNode;\n children: ReactNode;\n}\n\nexport interface ActivityReplyProps extends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n}\n\nconst TimestampSeparator = () => (\n <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />\n);\n\nconst ActivityCommentHeader = (props: ActivityCommentHeaderProps) => {\n const { actor, timestamp, actions } = props;\n\n return (\n <HStack gap=\"xs\" alignItems=\"center\" minW=\"0\">\n <ActivityAvatar actor={actor} />\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {actor.name}\n </Text>\n {timestamp ? (\n <>\n <TimestampSeparator />\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n <Box marginLeft=\"auto\" flexShrink={0}>\n {actions}\n </Box>\n </HStack>\n );\n};\n\nexport const ActivityReply = (props: ActivityReplyProps) => {\n const { actor, timestamp, actions, children, ...rootProps } = props;\n\n return (\n <Box paddingX=\"md\" paddingY=\"sm\" {...rootProps}>\n <Stack gap=\"xs\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Box paddingLeft=\"32px\">\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\">\n {children}\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n};\n\nexport const ActivityComment = (props: ActivityCommentProps) => {\n const { actor, timestamp, actions, replies, composer, children, ...rootProps } = props;\n const hasReplies = Children.count(replies) > 0;\n\n return (\n <Box\n as=\"article\"\n width=\"full\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n borderRadius=\"xs\"\n background=\"bg\"\n overflow=\"hidden\"\n {...rootProps}\n >\n <Stack gap=\"sm\" padding=\"md\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\" whiteSpace=\"pre-wrap\">\n {children}\n </Text>\n </Stack>\n {hasReplies ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {replies}\n </Box>\n ) : null}\n {composer ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {composer}\n </Box>\n ) : null}\n </Box>\n );\n};\n","import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, chakra, HStack, Icon, IconButton, Spacer, Textarea } from \"@chakra-ui/react\";\nimport { ArrowUp, Paperclip } from \"lucide-react\";\nimport type { FormEvent, ReactNode } from \"react\";\nimport { useState } from \"react\";\n\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityComposerProps extends Omit<HTMLChakraProps<\"form\">, \"onChange\" | \"onSubmit\"> {\n actor?: ActivityActor;\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n variant?: \"standalone\" | \"inline\";\n minRows?: number;\n attachLabel?: string;\n submitLabel?: string;\n actions?: ReactNode;\n onAttach?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (value: string) => void;\n}\n\nexport const ActivityComposer = (props: ActivityComposerProps) => {\n const {\n actor,\n value,\n defaultValue = \"\",\n placeholder = \"Leave a comment...\",\n variant = \"standalone\",\n minRows = variant === \"standalone\" ? 3 : 1,\n attachLabel = \"Attach file\",\n submitLabel = \"Submit comment\",\n actions,\n onAttach,\n onChange,\n onSubmit,\n ...rootProps\n } = props;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = value ?? internalValue;\n const isInline = variant === \"inline\";\n const canSubmit = currentValue.trim().length > 0;\n\n const handleChange = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n };\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (!canSubmit) return;\n\n onSubmit?.(currentValue.trim());\n\n if (value === undefined) {\n setInternalValue(\"\");\n }\n };\n\n return (\n <chakra.form\n width=\"full\"\n background=\"bg\"\n borderWidth={isInline ? \"0\" : \"1px\"}\n borderColor=\"border\"\n borderRadius={isInline ? \"0\" : \"sm\"}\n transition=\"border-color 0.12s ease\"\n _hover={isInline ? undefined : { borderColor: \"border\" }}\n _focusWithin={isInline ? undefined : { borderColor: \"border.accent\" }}\n onSubmit={handleSubmit}\n {...rootProps}\n >\n <HStack alignItems=\"flex-start\" gap=\"xs\" padding={isInline ? \"sm\" : \"md\"}>\n {actor ? <ActivityAvatar actor={actor} /> : null}\n <Box flex=\"1\" minW=\"0\">\n <Textarea\n value={currentValue}\n rows={minRows}\n resize=\"none\"\n border=\"0\"\n padding=\"0\"\n minH={isInline ? \"1.5rem\" : \"4rem\"}\n background=\"transparent\"\n color=\"fg\"\n textStyle=\"label/S/regular\"\n placeholder={placeholder}\n _placeholder={{ color: \"fg.subtle\" }}\n onChange={(event) => handleChange(event.currentTarget.value)}\n />\n <HStack gap=\"2xs\" marginTop={isInline ? \"0\" : \"sm\"}>\n {actions}\n <Spacer />\n <Tooltip content={attachLabel}>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={attachLabel} type=\"button\" onClick={onAttach}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content={submitLabel}>\n <IconButton size=\"2xs\" variant=\"subtle\" aria-label={submitLabel} type=\"submit\" disabled={!canSubmit}>\n <Icon as={ArrowUp} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </HStack>\n </Box>\n </HStack>\n </chakra.form>\n );\n};\n","import type { TimelineItemProps } from \"@chakra-ui/react\";\nimport { Box, Text, Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityEventProps extends Omit<TimelineItemProps, \"title\"> {\n actor?: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n children: ReactNode;\n}\n\nconst EventSeparator = () => <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />;\n\nexport const ActivityEvent = (props: ActivityEventProps) => {\n const { actor, icon, iconColor = \"fg\", iconBackground = \"transparent\", timestamp, children, ...rootProps } = props;\n\n return (\n <Timeline.Item gap=\"xs\" minH=\"24px\" paddingX=\"md\" {...rootProps}>\n <Timeline.Connector>\n <Timeline.Separator borderColor=\"border\" />\n <Timeline.Indicator outline=\"none\" border=\"none\" background=\"bg\">\n <ActivityAvatar actor={actor} icon={icon} color={iconColor} background={iconBackground} />\n </Timeline.Indicator>\n </Timeline.Connector>\n <Timeline.Content gap=\"0\" minW=\"0\">\n <Timeline.Title\n marginTop=\"0\"\n gap=\"xs\"\n minW=\"0\"\n fontWeight=\"normal\"\n textStyle=\"label/S/regular\"\n color=\"fg.muted\"\n >\n {actor ? (\n <Text as=\"span\" color=\"fg\" fontWeight=\"500\" flexShrink={0}>\n {actor.name}\n </Text>\n ) : null}\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" gap=\"2xs\" minW=\"0\" flexWrap=\"wrap\">\n {children}\n </Box>\n {timestamp ? (\n <>\n <EventSeparator />\n <Text as=\"span\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n </Timeline.Title>\n </Timeline.Content>\n </Timeline.Item>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { HStack, Stack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityRootProps extends StackProps {\n children: ReactNode;\n}\n\nexport interface ActivityHeaderProps extends Omit<StackProps, \"title\"> {\n title?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityFeedProps extends StackProps {\n children: ReactNode;\n}\n\nexport const ActivityRoot = (props: ActivityRootProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack width=\"full\" gap=\"md\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n\nexport const ActivityHeader = (props: ActivityHeaderProps) => {\n const { title = \"Activity\", actions, ...rootProps } = props;\n\n return (\n <HStack alignItems=\"center\" justifyContent=\"space-between\" gap=\"md\" {...rootProps}>\n <Text textStyle=\"label/M/medium\" color=\"fg\">\n {title}\n </Text>\n {actions ? <HStack gap=\"xs\">{actions}</HStack> : null}\n </HStack>\n );\n};\n\nexport const ActivityFeed = (props: ActivityFeedProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack gap=\"md\" width=\"full\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n","import type { TimelineRootProps } from \"@chakra-ui/react\";\nimport { Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityTimelineProps extends TimelineRootProps {\n children: ReactNode;\n}\n\nexport const ActivityTimeline = (props: ActivityTimelineProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Timeline.Root size=\"sm\" variant=\"plain\" width=\"full\" css={{ \"--timeline-indicator-size\": \"18px\" }} {...rootProps}>\n {children}\n </Timeline.Root>\n );\n};\n","import { ActivityAvatar } from \"./activity-avatar\";\nimport { ActivityComment, ActivityReply } from \"./activity-comment\";\nimport { ActivityComposer } from \"./activity-composer\";\nimport { ActivityEvent } from \"./activity-event\";\nimport { ActivityFeed, ActivityHeader, ActivityRoot } from \"./activity-root\";\nimport { ActivityTimeline } from \"./activity-timeline\";\n\nexport type { ActivityActor } from \"./activity.types\";\nexport type { ActivityAvatarProps } from \"./activity-avatar\";\nexport type { ActivityCommentProps, ActivityReplyProps } from \"./activity-comment\";\nexport type { ActivityComposerProps } from \"./activity-composer\";\nexport type { ActivityEventProps } from \"./activity-event\";\nexport type { ActivityFeedProps, ActivityHeaderProps, ActivityRootProps } from \"./activity-root\";\nexport type { ActivityTimelineProps } from \"./activity-timeline\";\n\nexport {\n ActivityAvatar,\n ActivityComment,\n ActivityComposer,\n ActivityEvent,\n ActivityFeed,\n ActivityHeader,\n ActivityReply,\n ActivityRoot,\n ActivityTimeline,\n};\n\nexport const Activity = {\n Root: ActivityRoot,\n Header: ActivityHeader,\n Feed: ActivityFeed,\n Timeline: ActivityTimeline,\n Event: ActivityEvent,\n Comment: ActivityComment,\n Reply: ActivityReply,\n Composer: ActivityComposer,\n Avatar: ActivityAvatar,\n};\n","import type { ReactNode } from \"react\";\n\nexport const DEFAULT_PALETTE_ASSET_LIMIT = 48;\n\nexport interface PaletteSearchEntry {\n id: string;\n mode?: string;\n label: ReactNode;\n searchText?: string;\n secondaryLabel?: ReactNode;\n assetType?: string;\n}\n\nexport interface PaletteMode {\n id: string;\n inputPrefix?: string;\n}\n\nexport interface FilterPaletteEntriesOptions {\n query: string;\n mode?: string;\n getEffectiveQuery?: (query: string) => string;\n defaultAssetLimit?: number;\n}\n\nconst getSearchableText = (entry: PaletteSearchEntry) => {\n const label = typeof entry.label === \"string\" ? entry.label : \"\";\n const secondaryLabel = typeof entry.secondaryLabel === \"string\" ? entry.secondaryLabel : \"\";\n\n return `${label} ${entry.searchText ?? \"\"} ${secondaryLabel}`;\n};\n\nconst hasInputPrefix = (query: string, inputPrefix: string) => query.trimStart().startsWith(inputPrefix);\n\nexport const resolvePaletteMode = (query: string, modes: readonly PaletteMode[] = [], fallbackMode?: string) => {\n const prefixedMode = modes.find((mode) => mode.inputPrefix && hasInputPrefix(query, mode.inputPrefix));\n\n return prefixedMode?.id ?? fallbackMode ?? modes.find((mode) => !mode.inputPrefix)?.id ?? modes[0]?.id;\n};\n\nexport const getPaletteEffectiveQuery = (query: string, modes: readonly PaletteMode[] = [], modeId?: string) => {\n const mode = modes.find(\n (candidate) => candidate.id === modeId && candidate.inputPrefix && hasInputPrefix(query, candidate.inputPrefix),\n );\n\n if (!mode?.inputPrefix) return query.trim();\n\n return query.trimStart().slice(mode.inputPrefix.length).trim();\n};\n\nconst limitDefaultAssetEntries = <T extends PaletteSearchEntry>(entries: T[], limit: number) => {\n const counts: Record<string, number> = {};\n\n return entries.filter((entry) => {\n const assetType = entry.assetType;\n if (!assetType) return true;\n\n const count = counts[assetType] ?? 0;\n if (count >= limit) return false;\n\n counts[assetType] = count + 1;\n return true;\n });\n};\n\nexport const filterPaletteEntries = <T extends PaletteSearchEntry>(\n entries: T[],\n options: FilterPaletteEntriesOptions,\n) => {\n const effectiveQuery = (options.getEffectiveQuery?.(options.query) ?? options.query.trim()).toLowerCase();\n\n const filteredEntries = entries.filter((entry) => {\n if (options.mode && entry.mode !== options.mode) return false;\n if (!effectiveQuery) return true;\n\n return getSearchableText(entry).toLowerCase().includes(effectiveQuery);\n });\n\n if (effectiveQuery || options.defaultAssetLimit === undefined) {\n return filteredEntries;\n }\n\n return limitDefaultAssetEntries(filteredEntries, options.defaultAssetLimit);\n};\n","import { Box, HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Check } from \"lucide-react\";\nimport { type RefObject, useEffect } from \"react\";\nimport type { PaletteEntry } from \"@/components/command-palette/palette\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport type { ListRowItem } from \"@/components/list-row/list-row.types\";\n\ntype PaletteRow<T extends PaletteEntry> =\n | { type: \"group\"; id: string; label: string }\n | { type: \"entry\"; id: string; entry: T; entryIndex: number };\n\nconst GROUP_ROW_HEIGHT = 24;\nconst ENTRY_ROW_HEIGHT = 40;\nconst INITIAL_VIEWPORT_HEIGHT = 384;\n\nconst buildEntryItem = (entry: PaletteEntry): ListRowItem => ({\n id: entry.id,\n label: entry.label,\n description: entry.description ?? entry.secondaryLabel,\n icon: entry.icon,\n endContent:\n entry.endContent ??\n (entry.shortcut || entry.isSelected ? (\n <HStack gap=\"2\">\n {entry.shortcut}\n {entry.isSelected ? <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n </HStack>\n ) : undefined),\n onActivate: entry.onActivate,\n});\n\nconst buildRows = <T extends PaletteEntry>(entries: T[]) => {\n const rows: PaletteRow<T>[] = [];\n\n entries.forEach((entry, index) => {\n const previousEntry = entries[index - 1];\n if (entry.group && entry.group !== previousEntry?.group) {\n rows.push({ type: \"group\", id: `group:${entry.group}:${entry.id}`, label: entry.group });\n }\n\n rows.push({ type: \"entry\", id: entry.id, entry, entryIndex: index });\n });\n\n return rows;\n};\n\nconst getActiveRowIndex = <T extends PaletteEntry>(rows: PaletteRow<T>[], activeIndex: number) =>\n rows.findIndex((row) => row.type === \"entry\" && row.entryIndex === activeIndex);\n\ninterface PaletteListProps<T extends PaletteEntry> {\n entries: T[];\n activeIndex: number;\n emptyLabel: string;\n onHover: (index: number) => void;\n scrollRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const PaletteList = <T extends PaletteEntry>(props: PaletteListProps<T>) => {\n const { entries, activeIndex, emptyLabel, onHover, scrollRef } = props;\n const rows = buildRows(entries);\n const activeRowIndex = getActiveRowIndex(rows, activeIndex);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => (rows[index]?.type === \"group\" ? GROUP_ROW_HEIGHT : ENTRY_ROW_HEIGHT),\n getItemKey: (index) => rows[index]?.id ?? index,\n initialRect: { width: 0, height: INITIAL_VIEWPORT_HEIGHT },\n overscan: 6,\n });\n\n useEffect(() => {\n if (activeRowIndex < 0) return;\n\n virtualizer.scrollToIndex(activeRowIndex, { align: \"auto\", behavior: \"auto\" });\n }, [activeRowIndex, virtualizer]);\n\n if (entries.length === 0) {\n return (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n );\n }\n\n return (\n <Box role=\"listbox\" position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n if (!row) return null;\n\n return (\n <Box\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n style={{ top: virtualRow.start }}\n >\n {row.type === \"group\" ? (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\" pb=\"2xs\">\n {row.label}\n </Text>\n ) : (\n <ListRow\n variant=\"full-width\"\n {...buildEntryItem(row.entry)}\n isSelected={row.entryIndex === activeIndex}\n tabIndex={-1}\n onPointerMove={() => onHover(row.entryIndex)}\n />\n )}\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { Box, CloseButton, Dialog, Input, InputGroup } from \"@chakra-ui/react\";\nimport type { KeyboardEventHandler, ReactNode, Ref } from \"react\";\nimport { ScrollArea, type ScrollAreaProps } from \"@/components/primitives/scroll-area\";\n\nexport interface SearchModalContentProps {\n children: ReactNode;\n searchValue: string;\n searchPlaceholder: string;\n searchAriaLabel?: string;\n searchIcon?: ReactNode;\n searchInputRef?: Ref<HTMLInputElement>;\n searchAutoFocus?: boolean;\n showCloseButton?: boolean;\n closeButtonLabel?: string;\n bodyBefore?: ReactNode;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n scrollAreaProps?: Omit<ScrollAreaProps, \"children\">;\n onSearchChange: (value: string) => void;\n onSearchKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n}\n\nconst hasContent = (value: ReactNode) => value !== undefined && value !== null;\n\nconst footerJustifyContent = (hasFooterStart: boolean, hasFooterEnd: boolean) => {\n if (hasFooterStart && hasFooterEnd) return \"space-between\";\n if (hasFooterEnd) return \"flex-end\";\n return \"flex-start\";\n};\n\nexport const SearchModalContent = (props: SearchModalContentProps) => {\n const {\n children,\n searchValue,\n searchPlaceholder,\n searchAriaLabel = searchPlaceholder,\n searchIcon,\n searchInputRef,\n searchAutoFocus,\n showCloseButton = false,\n closeButtonLabel = \"Close\",\n bodyBefore,\n footerStart,\n footerEnd,\n scrollAreaProps,\n onSearchChange,\n onSearchKeyDown,\n } = props;\n const hasFooterStart = hasContent(footerStart);\n const hasFooterEnd = hasContent(footerEnd);\n const { maxH = \"24rem\", showHorizontalScrollbar = false, ...restScrollAreaProps } = scrollAreaProps ?? {};\n\n return (\n <>\n <Dialog.Header px=\"0\" py=\"0\" borderBottomWidth=\"1px\" borderBottomColor=\"border.subtle\">\n <InputGroup startElement={searchIcon} width=\"full\">\n <Input\n ref={searchInputRef}\n value={searchValue}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n autoComplete=\"off\"\n autoFocus={searchAutoFocus}\n mx=\"xs\"\n h=\"3rem\"\n variant=\"borderless\"\n onChange={(event) => onSearchChange(event.target.value)}\n onKeyDown={onSearchKeyDown}\n />\n </InputGroup>\n {showCloseButton ? (\n <Dialog.CloseTrigger asChild>\n <CloseButton aria-label={closeButtonLabel} size=\"sm\" mr=\"2\" />\n </Dialog.CloseTrigger>\n ) : null}\n </Dialog.Header>\n <Dialog.Body p=\"0\">\n {bodyBefore}\n <ScrollArea maxH={maxH} showHorizontalScrollbar={showHorizontalScrollbar} {...restScrollAreaProps}>\n {children}\n </ScrollArea>\n </Dialog.Body>\n {hasFooterStart || hasFooterEnd ? (\n <Dialog.Footer\n justifyContent={footerJustifyContent(hasFooterStart, hasFooterEnd)}\n px=\"sm\"\n py=\"xs\"\n borderTopWidth=\"1px\"\n borderTopColor=\"border.subtle\"\n >\n {hasFooterStart ? <Box minW=\"0\">{footerStart}</Box> : null}\n {hasFooterEnd ? <Box flexShrink={0}>{footerEnd}</Box> : null}\n </Dialog.Footer>\n ) : null}\n </>\n );\n};\n","import { Dialog } from \"@chakra-ui/react\";\nimport type { KeyboardEvent, ReactNode, SetStateAction } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n DEFAULT_PALETTE_ASSET_LIMIT,\n type FilterPaletteEntriesOptions,\n filterPaletteEntries,\n getPaletteEffectiveQuery,\n type PaletteMode,\n type PaletteSearchEntry,\n resolvePaletteMode,\n} from \"@/components/command-palette/palette-filter\";\nimport { PaletteList } from \"@/components/command-palette/palette-list\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\n\nexport type { FilterPaletteEntriesOptions, PaletteMode, PaletteSearchEntry };\nexport { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries };\n\nexport interface PaletteEntry extends PaletteSearchEntry {\n description?: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n endContent?: ReactNode;\n group?: string;\n isSelected?: boolean;\n onActivate: () => void;\n}\n\nexport interface PaletteState<T extends PaletteEntry> {\n query: string;\n mode?: string;\n activeIndex: number;\n entries: T[];\n}\n\nexport interface PaletteEscapeContext<T extends PaletteEntry> extends PaletteState<T> {\n activeEntry: T | null;\n entryCount: number;\n setQuery: (query: string) => void;\n setActiveIndex: (index: SetStateAction<number>) => void;\n runActiveEntry: () => void;\n closePalette: () => void;\n}\n\nexport type PaletteStateValue<T extends PaletteEntry, TValue> = TValue | ((state: PaletteState<T>) => TValue);\n\nexport interface PaletteProps<T extends PaletteEntry = PaletteEntry> {\n open: boolean;\n entries: T[];\n initialQuery?: string;\n initialActiveIndex?: number;\n mode?: string;\n modes?: PaletteMode[];\n resetKey?: string;\n inputIcon?: PaletteStateValue<T, ReactNode>;\n placeholder?: PaletteStateValue<T, string>;\n emptyLabel?: string;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n filterEntries?: (entries: T[], query: string, mode?: string) => T[];\n onActiveEntryChange?: (entry: T | null, index: number) => void;\n onQueryChange?: (query: string) => void;\n onClose: () => void;\n onEscape?: (ctx: PaletteEscapeContext<T>) => boolean | undefined;\n}\n\nconst resolveStateValue = <T extends PaletteEntry, TValue>(\n value: PaletteStateValue<T, TValue> | undefined,\n state: PaletteState<T>,\n fallback: TValue,\n) => {\n if (typeof value === \"function\") {\n return (value as (state: PaletteState<T>) => TValue)(state);\n }\n\n return value ?? fallback;\n};\n\nexport const Palette = <T extends PaletteEntry>(props: PaletteProps<T>) => {\n const {\n open,\n entries,\n initialQuery = \"\",\n initialActiveIndex = 0,\n mode,\n modes,\n resetKey = \"default\",\n inputIcon,\n placeholder,\n emptyLabel = \"No results.\",\n footerStart,\n footerEnd,\n filterEntries,\n onActiveEntryChange,\n onQueryChange,\n onClose,\n onEscape,\n } = props;\n const [query, setQueryState] = useState(initialQuery);\n const [activeIndex, setActiveIndex] = useState(initialActiveIndex);\n const inputRef = useRef<HTMLInputElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef({ open: false, resetKey });\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = filterEntries\n ? filterEntries(entries, query, activeMode)\n : filterPaletteEntries(entries, {\n query,\n mode: activeMode,\n getEffectiveQuery: (value) => getPaletteEffectiveQuery(value, modes, activeMode),\n });\n const activeEntry = filteredEntries[activeIndex] ?? null;\n const state: PaletteState<T> = { query, mode: activeMode, activeIndex, entries: filteredEntries };\n const resolvedInputIcon = resolveStateValue(inputIcon, state, null);\n const resolvedPlaceholder = resolveStateValue(placeholder, state, \"Search\");\n\n const setQuery = (nextQuery: string) => {\n setQueryState(nextQuery);\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n const previousSetup = setupRef.current;\n setupRef.current = { open, resetKey };\n if (!open) return;\n\n const shouldInitialize = !previousSetup.open || previousSetup.resetKey !== resetKey;\n if (!shouldInitialize) return;\n\n setQueryState(initialQuery);\n setActiveIndex(initialActiveIndex);\n\n const timeout = setTimeout(() => {\n const input = inputRef.current;\n if (!input) return;\n input.focus();\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }, 0);\n return () => clearTimeout(timeout);\n }, [initialActiveIndex, initialQuery, open, resetKey]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(filteredEntries.length - 1, 0)));\n }, [filteredEntries.length]);\n\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntry, activeIndex, onActiveEntryChange]);\n\n const handleEscape = () => {\n const handled = onEscape?.({\n ...state,\n activeEntry,\n entryCount: filteredEntries.length,\n setQuery,\n setActiveIndex,\n runActiveEntry,\n closePalette,\n });\n if (handled) return;\n\n if (query.length > 0) {\n setQuery(\"\");\n setActiveIndex(0);\n return;\n }\n\n closePalette();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(filteredEntries.length - 1, 0)));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n runActiveEntry();\n return;\n }\n\n if (event.key !== \"Escape\") return;\n\n event.preventDefault();\n event.stopPropagation();\n handleEscape();\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={(details) => !details.open && closePalette()}>\n <Dialog.Backdrop />\n <Dialog.Positioner alignItems=\"center\" justifyContent=\"center\" p=\"md\">\n <Dialog.Content maxW=\"44rem\" w=\"full\" p=\"0\" overflow=\"hidden\" borderWidth=\"1px\" borderColor=\"border.subtle\">\n <SearchModalContent\n searchValue={query}\n searchPlaceholder={resolvedPlaceholder}\n searchIcon={resolvedInputIcon}\n searchInputRef={inputRef}\n showCloseButton\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{\n maxH: \"24rem\",\n showHorizontalScrollbar: false,\n viewportRef: scrollRef,\n viewportProps: { style: { overflowAnchor: \"none\" } },\n }}\n onSearchChange={(nextQuery) => {\n setQuery(nextQuery);\n setActiveIndex(0);\n }}\n onSearchKeyDown={handleKeyDown}\n >\n <PaletteList\n entries={filteredEntries}\n activeIndex={activeIndex}\n emptyLabel={emptyLabel}\n onHover={setActiveIndex}\n scrollRef={scrollRef}\n />\n </SearchModalContent>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nexport type PaletteShortcutBinding = string | string[];\ntype ShortcutPlatform = \"linux\" | \"mac\" | \"win\";\n\ninterface ShortcutDisplayPart {\n label: string;\n Icon?: LucideIcon;\n}\n\nconst nonMacModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Alt\" },\n control: { label: \"Ctrl\" },\n ctrl: { label: \"Ctrl\" },\n mod: { label: \"Ctrl\" },\n shift: { label: \"Shift\" },\n};\n\nconst macModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Option\", Icon: Option },\n cmd: { label: \"Command\", Icon: Command },\n command: { label: \"Command\", Icon: Command },\n meta: { label: \"Command\", Icon: Command },\n mod: { label: \"Command\", Icon: Command },\n option: { label: \"Option\", Icon: Option },\n shift: { label: \"Shift\" },\n};\n\nconst keyLabels: Record<string, ShortcutDisplayPart> = {\n arrowleft: { label: \"Arrow Left\", Icon: ArrowLeft },\n arrowright: { label: \"Arrow Right\", Icon: ArrowRight },\n};\n\nconst getShortcutPlatform = (): ShortcutPlatform => {\n if (typeof navigator === \"undefined\") return \"linux\";\n\n const platform = navigator.platform?.toLowerCase() ?? \"\";\n if (platform.includes(\"mac\")) return \"mac\";\n if (platform.includes(\"win\")) return \"win\";\n return \"linux\";\n};\n\nexport const resolveShortcutDisplayPart = (label: string, platform = getShortcutPlatform()): ShortcutDisplayPart => {\n const normalized = label.toLowerCase();\n const modifierLabels = platform === \"mac\" ? macModifierLabels : nonMacModifierLabels;\n return keyLabels[normalized] ?? modifierLabels[normalized] ?? { label };\n};\n\nconst splitShortcutStep = (step: string) => {\n return step\n .split(\"+\")\n .map((part) => part.trim())\n .filter(Boolean);\n};\n\nconst getShortcutDisplayParts = (binding: PaletteShortcutBinding) => {\n const steps = Array.isArray(binding) ? binding.map(splitShortcutStep) : [splitShortcutStep(binding)];\n\n return steps.map((step) => step.map((label) => resolveShortcutDisplayPart(label)));\n};\n\nexport const PaletteShortcut = (props: { binding: PaletteShortcutBinding }) => {\n const { binding } = props;\n const steps = getShortcutDisplayParts(binding);\n\n return (\n <>\n {steps.map((step, stepIndex) => (\n <Fragment key={`${step.map((part) => part.label).join(\"+\")}-${stepIndex}`}>\n {step.map((part, partIndex) => (\n <Fragment key={`${part.label}-${partIndex}`}>\n <Kbd\n fontSize=\"xs\"\n borderRadius=\"0\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n aria-label={part.label}\n >\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n {partIndex < step.length - 1 ? \" \" : null}\n </Fragment>\n ))}\n {stepIndex < steps.length - 1 ? \" then \" : null}\n </Fragment>\n ))}\n </>\n );\n};\n","import { HStack, type StackProps } from \"@chakra-ui/react\";\n\ninterface HorizontalMenuStackProps extends StackProps {\n children?: StackProps[\"children\"];\n}\n\nexport function HorizontalMenuStack(props: HorizontalMenuStackProps) {\n const { children, h = \"41px\", px = \"xs\", py = \"xs\", borderBottomWidth = \"1px\", ...rest } = props;\n\n return (\n <HStack\n {...rest}\n h={h}\n justify=\"space-between\"\n align=\"center\"\n borderBottomWidth={borderBottomWidth}\n borderColor={\"border.subtle\"}\n px={px}\n py={py}\n >\n {children}\n </HStack>\n );\n}\n","import { Box, Collapsible, Flex, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ItemSectionProps {\n children: ReactNode;\n title?: string;\n defaultOpen?: boolean;\n action?: ReactNode;\n}\n\n/**\n * A collapsible section wrapper with a title trigger and optional action.\n */\nexport const ItemSection = (props: ItemSectionProps) => {\n const { children, title, defaultOpen = true, action } = props;\n\n return (\n <Collapsible.Root defaultOpen={defaultOpen} width=\"full\">\n <Flex>\n <Collapsible.Trigger\n _hover={{\n background: \"bg.hover\",\n }}\n padding=\"sm\"\n height=\"2rem\"\n display=\"flex\"\n width=\"full\"\n gap=\"2\"\n alignItems=\"center\"\n cursor=\"pointer\"\n justifyContent=\"space-between\"\n >\n {title && (\n <Text fontWeight=\"600\" textStyle=\"label/S/medium\">\n {title}\n </Text>\n )}\n <Collapsible.Indicator transition=\"transform 0.2s\" _open={{ transform: \"rotate(90deg)\" }}>\n <ChevronRight size={16} />\n </Collapsible.Indicator>\n </Collapsible.Trigger>\n {action && (\n <Box marginLeft=\"auto\" onClick={(e) => e.stopPropagation()}>\n {action}\n </Box>\n )}\n </Flex>\n <Collapsible.Content>{children}</Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","export const PANEL_HEADER_HEIGHT = \"2.5rem\";\nexport const PANEL_HEADER_CONTROL_SIZE = \"2xs\" as const;\nexport const PANEL_HEADER_TAB_SIZE = \"sm\" as const;\n","import { Badge, Box, Button, HStack, Icon, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { Bell, Search, X } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowAction } from \"../list-row/list-row.types\";\nimport type {\n NotificationCenterAction,\n NotificationCenterItem,\n NotificationCenterProps,\n} from \"./notification-center.types\";\n\nconst priorityColorPalette = (priority: NotificationCenterItem[\"priority\"]) => {\n if (priority === \"urgent\") return \"red\";\n if (priority === \"high\") return \"orange\";\n if (priority === \"low\") return \"gray\";\n return \"blue\";\n};\n\nconst shouldShowPriorityBadge = (priority: NotificationCenterItem[\"priority\"]) => priority !== \"normal\";\n\nconst itemSearchText = (item: NotificationCenterItem) =>\n [\n item.title,\n item.body,\n item.kind,\n item.priority,\n item.status,\n item.sourceLabel,\n item.targetLabel,\n item.searchText,\n ...(item.actions ?? []).map((action) => action.label),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\nconst filterItems = (items: NotificationCenterItem[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n if (!normalizedQuery) return items;\n return items.filter((item) => itemSearchText(item).includes(normalizedQuery));\n};\n\nconst groupItems = (items: NotificationCenterItem[]) => {\n const needsInput = items.filter((item) => item.kind === \"blocked\");\n const urgent = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"urgent\" || item.priority === \"high\"),\n );\n const normal = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"normal\" || item.priority === \"low\"),\n );\n return [\n { id: \"needs-input\", label: \"Needs input\", items: needsInput },\n { id: \"attention\", label: \"Needs attention\", items: urgent },\n { id: \"other\", label: \"Other\", items: normal },\n ].filter((group) => group.items.length > 0);\n};\n\nconst orderItemsForDisplay = (items: NotificationCenterItem[]) => groupItems(items).flatMap((group) => group.items);\n\nconst metadataDescription = (item: NotificationCenterItem) => {\n const parts = [item.body, item.targetLabel, item.sourceLabel, item.timeLabel].filter(Boolean);\n return parts.join(\" · \");\n};\n\nconst getActionButtons = (item: NotificationCenterItem, props: Pick<NotificationCenterProps, \"onDismiss\">) => {\n const actions: ListRowAction[] = [];\n\n if (props.onDismiss) {\n actions.push({\n id: \"dismiss\",\n label: \"Dismiss\",\n icon: <X size={14} />,\n tooltip: \"Dismiss\",\n onAction: () => props.onDismiss?.(item),\n });\n }\n\n return actions;\n};\n\nconst NotificationEndContent = (props: {\n actions: NotificationCenterAction[];\n item: NotificationCenterItem;\n onRunAction?: NotificationCenterProps[\"onRunAction\"];\n}) => {\n const { actions, item, onRunAction } = props;\n return (\n <HStack gap=\"2\" minW=\"0\" flexWrap=\"wrap\" justify=\"flex-end\">\n {shouldShowPriorityBadge(item.priority) ? (\n <Badge size=\"sm\" colorPalette={priorityColorPalette(item.priority)} textTransform=\"capitalize\" flexShrink={0}>\n {item.priority}\n </Badge>\n ) : null}\n {item.status === \"open\" ? (\n <Badge size=\"sm\" colorPalette=\"blue\" variant=\"solid\" flexShrink={0}>\n New\n </Badge>\n ) : null}\n {actions.map((action) => (\n <Button\n key={action.id}\n size=\"2xs\"\n variant=\"outline\"\n colorPalette={action.destructive ? \"red\" : \"gray\"}\n maxW=\"9rem\"\n onClick={(event) => {\n event.stopPropagation();\n onRunAction?.(item, action);\n }}\n >\n <Text truncate>{action.label}</Text>\n </Button>\n ))}\n </HStack>\n );\n};\n\nconst NotificationRows = (\n props: {\n activeIndex: number;\n items: NotificationCenterItem[];\n onActiveIndexChange: (index: number) => void;\n } & Pick<NotificationCenterProps, \"onActivateItem\" | \"onDismiss\" | \"onRunAction\">,\n) => {\n const { activeIndex, items, onActivateItem, onActiveIndexChange, onRunAction } = props;\n const groups = groupItems(items);\n let rowIndex = 0;\n\n return (\n <Stack gap=\"2xs\" py=\"xs\">\n {groups.map((group) => (\n <Stack key={group.id} gap=\"2xs\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\">\n {group.label}\n </Text>\n {group.items.map((item) => {\n const currentIndex = rowIndex;\n rowIndex += 1;\n return (\n <ListRow\n key={item.id}\n id={item.id}\n label={item.title}\n description={metadataDescription(item)}\n icon={<Icon as={Bell} boxSize=\"14px\" />}\n iconColor={`${priorityColorPalette(item.priority)}.500`}\n variant=\"compact\"\n isSelected={currentIndex === activeIndex}\n endContent={\n <NotificationEndContent item={item} actions={item.actions ?? []} onRunAction={onRunAction} />\n }\n actions={getActionButtons(item, props)}\n tabIndex={-1}\n onActivate={() => onActivateItem?.(item)}\n onPointerMove={() => onActiveIndexChange(currentIndex)}\n />\n );\n })}\n </Stack>\n ))}\n </Stack>\n );\n};\n\nconst LoadingRows = () => (\n <Stack gap=\"2\" p=\"sm\">\n {[0, 1, 2, 3].map((row) => (\n <Stack key={row} gap=\"2xs\">\n <Skeleton h=\"4\" w={row % 2 === 0 ? \"68%\" : \"52%\"} borderRadius=\"xs\" />\n <Skeleton h=\"3\" w=\"88%\" borderRadius=\"xs\" />\n </Stack>\n ))}\n </Stack>\n);\n\nexport const NotificationCenter = (props: NotificationCenterProps) => {\n const {\n autoFocus = false,\n emptyLabel = \"No notifications.\",\n error,\n footerEnd,\n footerStart,\n items,\n loading = false,\n onActivateItem,\n onEscape,\n onQueryChange,\n query,\n } = props;\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const activeQuery = query ?? internalQuery;\n const filteredItems = filterItems(items, activeQuery);\n const displayItems = orderItemsForDisplay(filteredItems);\n const activeItem = displayItems[activeIndex] ?? null;\n\n useEffect(() => {\n if (!autoFocus) return;\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [autoFocus]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(displayItems.length - 1, 0)));\n }, [displayItems.length]);\n\n const updateQuery = (nextQuery: string) => {\n if (query === undefined) setInternalQuery(nextQuery);\n onQueryChange?.(nextQuery);\n setActiveIndex(0);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(displayItems.length - 1, 0)));\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeItem) onActivateItem?.(activeItem);\n return;\n }\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (activeQuery.length > 0) {\n updateQuery(\"\");\n return;\n }\n onEscape?.();\n };\n\n return (\n <SearchModalContent\n searchValue={activeQuery}\n searchPlaceholder=\"Search notifications\"\n searchIcon={<Search size={14} />}\n searchInputRef={inputRef}\n searchAutoFocus={autoFocus}\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{ maxH: \"24rem\", showHorizontalScrollbar: false }}\n onSearchChange={updateQuery}\n onSearchKeyDown={handleKeyDown}\n >\n {error ? (\n <Box p=\"sm\">\n <AlertMessage status=\"error\" colorPalette=\"red\" title=\"Notifications unavailable\" size=\"sm\">\n {error}\n </AlertMessage>\n </Box>\n ) : loading ? (\n <LoadingRows />\n ) : filteredItems.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n ) : (\n <NotificationRows\n {...props}\n items={filteredItems}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n />\n )}\n </SearchModalContent>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface AttachedMenuProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n}\n\nexport const AttachedMenu = (props: AttachedMenuProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex as=\"aside\" direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" overflow=\"hidden\" bg=\"bg\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\n\ninterface AttachedPanelProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n header?: ReactNode;\n resizable?: boolean;\n}\n\nexport const AttachedPanel = (props: AttachedPanelProps) => {\n const { children, header, width = \"28rem\", minWidth, resizable = false, ...rest } = props;\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizable ? \"full\" : width;\n\n return (\n <Flex\n direction=\"column\"\n position=\"relative\"\n flexShrink={0}\n w={resolvedWidth}\n minW={resolvedMinWidth}\n h=\"100%\"\n bg=\"bg\"\n overflow=\"hidden\"\n {...rest}\n >\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ntype BubbleButtonStyleProps = \"transition\" | \"_hover\" | \"_active\" | \"borderColor\" | \"borderWidth\";\n\nexport interface BubbleButtonProps extends Omit<IconButtonProps, BubbleButtonStyleProps> {\n containerProps?: HTMLChakraProps<\"div\">;\n isOpen?: boolean;\n tooltip?: ReactNode;\n}\n\nexport const BubbleButton = forwardRef<HTMLButtonElement, BubbleButtonProps>(function BubbleButton(props, ref) {\n const { children, containerProps, isOpen = false, tooltip, ...rest } = props;\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor={isOpen ? \"border.accent\" : \"border\"}\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n }}\n _active={{ borderColor: \"border.accent\" }}\n {...rest}\n >\n {children}\n </IconButton>\n );\n\n return (\n <chakra.div position=\"fixed\" bottom=\"6\" right=\"6\" zIndex=\"docked\" {...containerProps}>\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import { Box, chakra, Flex, HStack, type HTMLChakraProps, IconButton, Portal, Spacer } from \"@chakra-ui/react\";\nimport { Minus, SquareArrowOutUpRight } from \"lucide-react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { PANEL_HEADER_CONTROL_SIZE } from \"@/components/layout/panel-header.constants\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\nexport interface BubblePanelProps {\n isOpen?: boolean;\n title?: string;\n menu?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n onPopOut?: (() => void) | null;\n popOutLabel?: string;\n width?: string;\n height?: string;\n containerProps?: HTMLChakraProps<\"section\">;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n}\n\nexport const BubblePanel = forwardRef<HTMLDivElement, BubblePanelProps>(function BubblePanel(props, ref) {\n const {\n isOpen = false,\n title,\n menu,\n onClose,\n closeLabel,\n onPopOut,\n popOutLabel,\n width = \"28rem\",\n height = \"38rem\",\n containerProps,\n testId,\n \"aria-label\": ariaLabel,\n children,\n } = props;\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <chakra.section\n ref={ref}\n role=\"dialog\"\n data-testid={testId}\n aria-label={ariaLabel ?? title}\n position=\"fixed\"\n bottom=\"3\"\n right=\"3\"\n w={width}\n maxW=\"calc(100vw - 2rem)\"\n h={height}\n maxH=\"calc(100vh - 2rem)\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n overflow=\"hidden\"\n zIndex=\"dropdown\"\n {...containerProps}\n >\n <Flex direction=\"column\" h=\"full\">\n <Header variant=\"main\" gap=\"sm\" flexShrink={0}>\n <HStack gap=\"1\" minW=\"0\">\n {menu}\n </HStack>\n <Spacer />\n <HStack gap=\"1\">\n {onPopOut ? (\n <Tooltip content={popOutLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={popOutLabel}\n onClick={onPopOut}\n >\n <SquareArrowOutUpRight size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n {onClose ? (\n <Tooltip content={closeLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={closeLabel}\n onClick={onClose}\n >\n <Minus size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n </HStack>\n </Header>\n <Box flex=\"1\" minH={0} display=\"flex\" flexDirection=\"column\" gap=\"sm\">\n {children}\n </Box>\n </Flex>\n </chakra.section>\n </Portal>\n );\n});\n","import { Button, CloseButton, Dialog, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\n\ninterface DeleteConfirmationModalProps {\n open: boolean;\n onClose: () => void;\n onDelete: () => void | Promise<void>;\n headline?: string;\n notificationText?: string;\n buttonText?: string;\n /** Extra controls rendered below the message, e.g. an opt-in checkbox. */\n children?: ReactNode;\n}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose, children } = props;\n\n const handleDelete = async () => {\n setIsDeleting(true);\n\n try {\n await onDelete();\n onClose();\n } catch {\n // Errors surface through parent state.\n } finally {\n setIsDeleting(false);\n }\n };\n\n return (\n // Destructive confirmations dismiss only through their explicit controls —\n // outside interactions must never cancel them, and when nested inside another\n // overlay (e.g. the settings dialog) a portal keeps the layers cooperating.\n <Dialog.Root\n open={open}\n onOpenChange={(details) => {\n if (!details.open) onClose();\n }}\n closeOnInteractOutside={false}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Text textStyle=\"heading/M\">{headline}</Text>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"3\">\n {notificationText ? <Text>{notificationText}</Text> : null}\n {children}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"destructive\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Badge, Button, Dialog, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home, Search } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface RepoPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface RepoPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: RepoPickerDialogEntry[];\n selectedPath?: string | null;\n selectedPaths?: string[];\n isLoading?: boolean;\n error?: string;\n isSelectDisabled?: boolean;\n onClose: () => void;\n onSelect: () => void;\n onSelectHomeDirectory: () => void;\n onSelectParentDirectory: () => void;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n}\n\nexport type { RepoPickerDialogProps };\n\nconst getEntryIcon = (entry: RepoPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\nconst filterEntries = (entries: RepoPickerDialogEntry[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return entries;\n }\n\n return entries.filter((entry) => `${entry.name} ${entry.path}`.toLowerCase().includes(normalizedQuery));\n};\n\ntype RepoPickerListEntryProps = {\n entry: RepoPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n};\n\nconst RepoPickerListEntry = (props: RepoPickerListEntryProps) => {\n const { entry, selectedPath, selectedPathSet, onEntryClick } = props;\n const isAlreadySelected = entry.isGitRepo && selectedPathSet.has(entry.path);\n const isDisabled = !entry.isDirectory || isAlreadySelected;\n\n const handleClick = () => {\n if (isAlreadySelected) {\n return;\n }\n\n onEntryClick(entry);\n };\n\n return (\n <ListRow\n variant=\"compact\"\n isSelected={selectedPath === entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Icon as={getEntryIcon(entry)} boxSize=\"16px\" />}\n endContent={\n entry.isGitRepo ? (\n <Badge\n textStyle=\"label/XS/medium\"\n px=\"xs\"\n py=\"2px\"\n colorPalette=\"green\"\n variant=\"subtle\"\n pointerEvents=\"none\"\n >\n Git repo\n </Badge>\n ) : undefined\n }\n disabled={isDisabled}\n onActivate={handleClick}\n />\n );\n};\n\nconst focusInlinePickerOption = (event: KeyboardEvent<HTMLDivElement>) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n const options = Array.from(\n event.currentTarget.querySelectorAll<HTMLButtonElement>('button[role=\"option\"]:not(:disabled)'),\n );\n\n if (options.length === 0) {\n return;\n }\n\n const currentIndex = options.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex = (() => {\n if (event.key === \"Home\") return 0;\n if (event.key === \"End\") return options.length - 1;\n if (event.key === \"ArrowUp\") return currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n return currentIndex < 0 || currentIndex === options.length - 1 ? 0 : currentIndex + 1;\n })();\n\n event.preventDefault();\n options[nextIndex]?.focus();\n};\n\nexport const RepoPickerDialog = (props: RepoPickerDialogProps) => {\n const {\n open,\n title = \"Select folder\",\n description,\n currentPath = \"\",\n entries,\n selectedPath = null,\n selectedPaths = [],\n isLoading = false,\n error = \"\",\n isSelectDisabled = false,\n onClose,\n onSelect,\n onSelectHomeDirectory,\n onSelectParentDirectory,\n onEntryClick,\n } = props;\n\n const [query, setQuery] = useState(\"\");\n const selectedPathSet = new Set(selectedPaths);\n const filteredEntries = filterEntries(entries, query);\n const searchScope = currentPath || \"Home\";\n\n useEffect(() => {\n if (!open || !searchScope) return;\n setQuery(\"\");\n }, [open, searchScope]);\n\n return (\n <Dialog.Root\n lazyMount\n unmountOnExit\n closeOnInteractOutside={false}\n open={open}\n onOpenChange={(details) => !details.open && onClose()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/M\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n <Stack direction=\"row\" gap=\"sm\" align=\"center\">\n <Button aria-label=\"Go to home directory\" variant=\"outline\" size=\"sm\" onClick={onSelectHomeDirectory}>\n <Home size={16} />\n </Button>\n <Button\n aria-label=\"Go to parent directory\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onSelectParentDirectory}\n disabled={!currentPath || currentPath === \"/\"}\n >\n <ChevronUp size={16} />\n </Button>\n <Text\n data-testid=\"folder-picker-path\"\n textStyle=\"paragraph/S/regular\"\n color=\"fg.muted\"\n flex=\"1\"\n lineClamp={1}\n >\n {searchScope}\n </Text>\n </Stack>\n\n <Stack gap=\"0\" borderWidth=\"1px\" borderRadius=\"md\" borderColor=\"border.subtle\" overflow=\"hidden\">\n <InputGroup\n startElement={<Search size={14} />}\n width=\"full\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Input\n mx=\"xs\"\n value={query}\n placeholder=\"Search repositories\"\n aria-label=\"Search repositories\"\n autoComplete=\"off\"\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\" p=\"sm\">\n {error}\n </Text>\n ) : filteredEntries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n No entries found.\n </Text>\n ) : (\n <ScrollArea maxHeight=\"320px\" contentProps={{ padding: \"sm\" }}>\n <Stack gap=\"xs\" role=\"listbox\" aria-label=\"Repository folders\" onKeyDown={focusInlinePickerOption}>\n {filteredEntries.map((entry) => (\n <RepoPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n </ScrollArea>\n )}\n </Stack>\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"sm\">\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button onClick={onSelect} disabled={isSelectDisabled}>\n Select repository\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface BreadcrumbLinkProps {\n to: string;\n children: React.ReactNode;\n}\n\nexport interface BreadcrumbProps extends ChakraBreadcrumb.RootProps {\n separator?: React.ReactNode;\n separatorGap?: SystemStyleObject[\"gap\"];\n items: BreadcrumbItem[];\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\nconst linkProps = {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"2xs\",\n minW: \"0\",\n maxW: \"100%\",\n overflow: \"hidden\",\n outline: \"none\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n _active: { outline: \"none\" },\n _focus: { outline: \"none\" },\n _focusVisible: { outline: \"none\" },\n} as const;\n\nconst staticProps = {\n ...linkProps,\n color: \"fg\",\n cursor: \"default\",\n textDecoration: \"none\",\n _hover: { textDecoration: \"none\" },\n} as const;\n\ninterface BreadcrumbItemContentProps {\n item: BreadcrumbItem;\n isCurrent: boolean;\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\ninterface BreadcrumbSeparatorProps {\n separator?: React.ReactNode;\n}\n\nconst isInteractiveItem = (item: BreadcrumbItem) => Boolean(item.url || item.onClick);\n\nconst BreadcrumbItemLink = (props: BreadcrumbItemContentProps) => {\n const { item, isCurrent, linkComponent: LinkComponent } = props;\n\n if (isCurrent && !isInteractiveItem(item)) {\n return <ChakraBreadcrumb.CurrentLink {...staticProps}>{item.title}</ChakraBreadcrumb.CurrentLink>;\n }\n\n if (item.url && LinkComponent) {\n return (\n <ChakraBreadcrumb.Link asChild {...linkProps}>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.url) {\n return (\n <ChakraBreadcrumb.Link href={item.url} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.onClick) {\n return (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n return (\n <ChakraBreadcrumb.Link as=\"span\" {...staticProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n};\n\nconst BreadcrumbItemContent = (props: BreadcrumbItemContentProps) => {\n const { item } = props;\n const content = <BreadcrumbItemLink {...props} />;\n\n if (!item.contextMenuActions?.length) return content;\n\n return (\n <ResourceContextMenu actions={item.contextMenuActions} positioning={{ placement: \"bottom-start\" }}>\n {content}\n </ResourceContextMenu>\n );\n};\n\nconst BreadcrumbSeparator = (props: BreadcrumbSeparatorProps) => {\n const { separator } = props;\n\n if (separator === undefined) {\n return <ChakraBreadcrumb.Separator flexShrink={0} />;\n }\n\n return <ChakraBreadcrumb.Separator flexShrink={0}>{separator}</ChakraBreadcrumb.Separator>;\n};\n\nexport const Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(function BreadcrumbRoot(props, ref) {\n const { separator, separatorGap, items, linkComponent: LinkComponent, ...rest } = props;\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...rest}>\n <ChakraBreadcrumb.List gap={separatorGap} flexWrap=\"nowrap\" minW=\"0\" maxW=\"100%\" overflow=\"hidden\">\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item minW=\"0\" flexShrink={isCurrent ? 1 : 0} overflow=\"hidden\">\n <BreadcrumbItemContent item={item} isCurrent={isCurrent} linkComponent={LinkComponent} />\n </ChakraBreadcrumb.Item>\n {isCurrent ? null : <BreadcrumbSeparator separator={separator} />}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { Box, type BoxProps, Text, type TextProps } from \"@chakra-ui/react\";\n\nexport interface ContentPlaceholderProps extends BoxProps {}\n\nexport const contentPlaceholderBackgroundImage = `url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.2' fillRule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\")`;\n\nexport const ContentPlaceholder = (props: ContentPlaceholderProps) => (\n <Box\n {...props}\n css={{\n backgroundClip: \"padding-box\",\n backgroundImage: contentPlaceholderBackgroundImage,\n display: \"flex\",\n width: \"100%\",\n }}\n />\n);\n\nexport const Label = (props: TextProps) => (\n <Box p=\"2\">\n <Text color=\"fg.muted\" fontWeight=\"medium\" textStyle=\"sm\" whiteSpace=\"nowrap\" {...props} />\n </Box>\n);\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ContentPlaceholder } from \"@/components/primitives/content-placeholder\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n label?: string;\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Dashboard error boundary caught an error\", error, info);\n }\n\n handleReset = () => {\n this.setState({ error: null });\n this.props.onReset?.();\n };\n\n render() {\n const { children, fallback, label } = this.props;\n const { error } = this.state;\n\n if (error) {\n if (fallback) {\n return fallback;\n }\n\n return <ErrorFallback error={error} label={label} onReset={this.handleReset} />;\n }\n\n return children;\n }\n}\n\ninterface ErrorFallbackProps {\n error: Error;\n label?: string;\n onReset?: () => void;\n}\n\nexport const ErrorFallback = (props: ErrorFallbackProps) => {\n const { error, label, onReset } = props;\n\n return (\n <ContentPlaceholder height=\"100%\" width=\"100%\">\n <AbsoluteCenter>\n <AlertMessage\n status=\"error\"\n title={<Text textStyle=\"paragraph/M/medium\">{label ?? \"Something went wrong\"}</Text>}\n >\n <Stack gap=\"sm\">\n <Text textStyle=\"paragraph/S/regular\">\n {error.message || \"An unexpected error occurred while rendering this section.\"}\n </Text>\n {onReset ? (\n <Button size=\"sm\" variant=\"primary\" onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import { Box, Center, type CenterProps, Icon } from \"@chakra-ui/react\";\nimport { getIconComponent, type IconColorPickerIconOption } from \"./icon-options\";\n\nexport interface TagSwatchProps extends Omit<CenterProps, \"color\"> {\n color: string;\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n /** Renders the icon glyph instead of a plain colour dot when the value carries an icon. */\n showIcon?: boolean;\n}\n\n// The planner writes \"circle\" as its no-icon default, so both it and a missing\n// icon render as the design's plain colour dot instead of a lucide ring.\nconst hasGlyph = (icon?: string | null) => Boolean(icon) && icon !== \"circle\";\n\nexport const TagSwatch = (props: TagSwatchProps) => {\n const { color, icon, iconOptions, showIcon = true, ...rest } = props;\n const IconComponent = getIconComponent(icon, iconOptions);\n\n return (\n <Center boxSize=\"tag-swatch\" flexShrink={0} borderRadius=\"compact\" bg={`${color}.500/15`} {...rest}>\n {showIcon && hasGlyph(icon) ? (\n <Icon as={IconComponent} boxSize=\"icon-xs\" color={`${color}.500`} />\n ) : (\n <Box boxSize=\"tag-swatch-dot\" borderRadius=\"full\" bg={`${color}.500`} />\n )}\n </Center>\n );\n};\n","import { Box, chakra, Grid, Icon, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type IconColorPickerIconOption, optionColors, optionIcons } from \"./icon-options\";\nimport { TagSwatch } from \"./tag-swatch\";\n\nconst SwatchTrigger = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n focusVisibleRing: \"outside\",\n _disabled: { cursor: \"not-allowed\", opacity: 0.5 },\n },\n});\n\nconst ColorDot = chakra(\"button\", {\n base: {\n boxSize: \"tag-color-dot\",\n borderRadius: \"full\",\n cursor: \"pointer\",\n outlineStyle: \"solid\",\n outlineWidth: \"selection\",\n outlineOffset: \"3xs\",\n outlineColor: \"transparent\",\n _selected: { outlineColor: \"fg\" },\n },\n});\n\nconst IconCell = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSize: \"tag-icon-cell\",\n borderRadius: \"compact\",\n color: \"fg.muted\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.hover\" },\n },\n});\n\nexport interface IconColorPickerProps {\n color: string;\n colorOptions?: readonly string[];\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n onColorChange: (color: string) => void;\n onIconChange?: (icon: string | null) => void;\n disabled?: boolean;\n showIcons?: boolean;\n colorLabel?: string;\n iconLabel?: string;\n \"aria-label\"?: string;\n}\n\nexport const IconColorPicker = (props: IconColorPickerProps) => {\n const {\n color,\n colorOptions = optionColors,\n icon,\n iconOptions = optionIcons,\n onColorChange,\n onIconChange,\n disabled,\n showIcons = true,\n colorLabel = \"Color\",\n iconLabel = \"Icon\",\n \"aria-label\": ariaLabel = \"Pick color and icon\",\n } = props;\n const selectedIcon = icon === \"circle\" ? null : (icon ?? null);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\" }}>\n <Popover.Trigger asChild>\n <SwatchTrigger type=\"button\" disabled={disabled} aria-label={ariaLabel}>\n <TagSwatch color={color} icon={icon} iconOptions={iconOptions} showIcon={showIcons} />\n </SwatchTrigger>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width={showIcons ? \"tag-picker\" : \"tag-picker-color-only\"} bg=\"bg.elevated\">\n <Stack gap=\"compact\" p=\"sm\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {colorLabel}\n </Text>\n <Grid templateColumns={`repeat(${showIcons ? 10 : 5}, 1fr)`} gap=\"2xs\" justifyItems=\"center\">\n {colorOptions.map((optionColor) => (\n <ColorDot\n key={optionColor}\n type=\"button\"\n bg={`${optionColor}.500`}\n aria-label={optionColor}\n aria-pressed={optionColor === color}\n data-selected={optionColor === color ? \"\" : undefined}\n onClick={() => onColorChange(optionColor)}\n />\n ))}\n </Grid>\n {showIcons ? (\n <>\n <Box borderTop=\"subtle\" />\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {iconLabel}\n </Text>\n <Grid templateColumns=\"repeat(8, 1fr)\" gap=\"3xs\" justifyItems=\"center\">\n {iconOptions.map((entry) => {\n const selected = entry.value === selectedIcon;\n return (\n <IconCell\n key={entry.value ?? \"none\"}\n type=\"button\"\n color={selected ? `${color}.500` : undefined}\n bg={selected ? `${color}.500/15` : undefined}\n _hover={selected ? { bg: `${color}.500/15` } : undefined}\n aria-label={entry.label}\n aria-pressed={selected}\n onClick={() => onIconChange?.(entry.value)}\n >\n <Icon as={entry.icon} boxSize=\"icon-xs\" />\n </IconCell>\n );\n })}\n </Grid>\n </>\n ) : null}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\n\nexport type SimpleCardProps = BoxProps;\n\nexport const SimpleCard = (props: SimpleCardProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.subtle\" borderRadius=\"xs\" bg=\"bg\" {...rest}>\n {children}\n </Box>\n );\n};\n\nexport type SimpleCardBodyProps = BoxProps;\n\nexport const SimpleCardBody = (props: SimpleCardBodyProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box p=\"md\" {...rest}>\n {children}\n </Box>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { SimpleCard, SimpleCardBody } from \"@/components/primitives/simple-card\";\n\nexport interface IntegrationCardProps {\n icon: ReactNode;\n name: string;\n description: string;\n id: string;\n version?: string;\n category?: string;\n active?: boolean;\n actionLabel?: string;\n}\n\nexport const IntegrationCard = (props: IntegrationCardProps) => {\n const { icon, name, description, id, version, category, active = false, actionLabel } = props;\n\n return (\n <SimpleCard>\n <SimpleCardBody>\n <HStack gap=\"4\" alignItems=\"flex-start\">\n <Icon boxSize=\"1em\" fontSize=\"2xl\" flexShrink=\"0\" color=\"fg.muted\">\n {icon}\n </Icon>\n <Box flex=\"1\" minW=\"0\">\n <Stack gap=\"1\">\n <HStack gap=\"2\" flexWrap=\"wrap\">\n <Text textStyle=\"sm\" fontWeight=\"semibold\">\n {name}\n </Text>\n <Badge size=\"sm\" variant=\"outline\">\n {id}\n </Badge>\n {version && (\n <Badge size=\"sm\" variant=\"outline\">\n v{version}\n </Badge>\n )}\n {category && (\n <Badge size=\"sm\" variant=\"outline\">\n {category}\n </Badge>\n )}\n </HStack>\n <Text color=\"fg.muted\">{description}</Text>\n </Stack>\n </Box>\n <Button\n type=\"button\"\n disabled={active}\n size=\"sm\"\n variant=\"outline\"\n colorPalette=\"gray\"\n bg=\"bg\"\n flexShrink=\"0\"\n >\n {active && (\n <Icon color=\"fg.success\">\n <Check />\n </Icon>\n )}\n {actionLabel ?? (active ? \"Active\" : \"Connect\")}\n </Button>\n </HStack>\n </SimpleCardBody>\n </SimpleCard>\n );\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const segmentedControlSlotRecipe = defineSlotRecipe({\n className: \"ps-segmented-control\",\n slots: [\"root\", \"item\"],\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"3xs\",\n padding: \"3xs\",\n bg: \"bg.subtle\",\n borderRadius: \"compact\",\n borderWidth: \"1px\",\n borderColor: \"border\",\n },\n item: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n whiteSpace: \"nowrap\",\n textStyle: \"label/S/medium\",\n color: \"fg.muted\",\n bg: \"transparent\",\n borderRadius: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"background-color, color\",\n transitionDuration: \"fast\",\n focusVisibleRing: \"outside\",\n _hover: { color: \"fg\" },\n _selected: { bg: \"bg.inverted\", color: \"fg.inverted\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { color: \"fg.muted\" } },\n },\n },\n variants: {\n size: {\n sm: {\n root: { height: \"segmented-control-sm\" },\n item: { height: \"segmented-control-item-sm\", paddingInline: \"compact\" },\n },\n xs: {\n root: { height: \"segmented-control-xs\" },\n item: { height: \"segmented-control-item-xs\", paddingInline: \"xs\" },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport { segmentedControlSlotRecipe as recipe } from \"@/theme/recipes/segmented-control\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\n\ntype VariantProps = RecipeVariantProps<typeof recipe>;\n\nexport interface SegmentedControlRootProps extends HTMLChakraProps<\"div\">, VariantProps {}\nconst SegmentedControlRoot = withProvider<HTMLDivElement, SegmentedControlRootProps>(\"div\", \"root\");\n\nexport interface SegmentedControlItemProps extends HTMLChakraProps<\"button\"> {}\nconst SegmentedControlItem = withContext<HTMLButtonElement, SegmentedControlItemProps>(\"button\", \"item\");\n\nexport interface SegmentedControlOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<SegmentedControlRootProps, \"onChange\"> {\n options: SegmentedControlOption[];\n value: string;\n onValueChange: (value: string) => void;\n disabled?: boolean;\n \"aria-label\"?: string;\n}\n\nexport const SegmentedControl = (props: SegmentedControlProps) => {\n const { options, value, onValueChange, disabled, \"aria-label\": ariaLabel, ...rootProps } = props;\n\n return (\n <SegmentedControlRoot role=\"group\" aria-label={ariaLabel} {...rootProps}>\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <SegmentedControlItem\n key={option.value}\n type=\"button\"\n aria-pressed={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={disabled}\n onClick={() => onValueChange(option.value)}\n >\n {option.label}\n </SegmentedControlItem>\n );\n })}\n </SegmentedControlRoot>\n );\n};\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const toaster: ReturnType<typeof createToaster> = createToaster({\n placement: \"top\",\n pauseOnPageIdle: true,\n duration: 10000,\n});\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} alignItems=\"start\" borderRadius=\"xs\" gap=\"xs\" px=\"sm\" py=\"xs\" minH=\"auto\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"0\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title textStyle=\"label/S/medium\">{toast.title}</Toast.Title>}\n {toast.description && (\n <ScrollArea maxHeight=\"12rem\" contentProps={{ paddingEnd: \"1\" }}>\n <Toast.Description textStyle=\"paragraph/S/regular\" whiteSpace=\"pre-wrap\" wordBreak=\"break-word\">\n {toast.description}\n </Toast.Description>\n </ScrollArea>\n )}\n </Stack>\n {toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}\n <Toast.CloseTrigger />\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n","import { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface SidenavSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n width: number | null;\n}\n\ninterface SidenavState extends SidenavSnapshot {\n openSidenav: () => void;\n closeSidenav: () => void;\n toggleSidenav: () => void;\n toggleSection: (sectionId: string) => void;\n toggleNode: (nodeId: string) => void;\n setSectionExpanded: (sectionId: string, expanded: boolean) => void;\n setNodeExpanded: (nodeId: string, expanded: boolean) => void;\n setWidth: (width: number) => void;\n reset: () => void;\n}\n\ninterface CreateSidenavStoreOptions {\n storageKey: string;\n initialState?: Partial<SidenavSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n width: null,\n} satisfies SidenavSnapshot;\n\nconst SIDENAV_STORE_NAMESPACE = \"pstdio/ui/sidenav\";\n\nconst toStorageName = (storageKey: string) => `${SIDENAV_STORE_NAMESPACE}/${storageKey}`;\n\nconst toggleId = (values: string[], id: string) =>\n values.includes(id) ? values.filter((value) => value !== id) : [...values, id];\n\nconst setExpanded = (values: string[], id: string, expanded: boolean) => {\n if (expanded) {\n return values.includes(id) ? values : [...values, id];\n }\n\n return values.filter((value) => value !== id);\n};\n\nconst getPersistedSnapshot = (state: SidenavState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n width: state.width,\n});\n\nexport const createSidenavStore = (options: CreateSidenavStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidenavState>()(\n persist(\n (set) => ({\n ...snapshot,\n openSidenav: () => set((state) => ({ ...state, open: true })),\n closeSidenav: () => set((state) => ({ ...state, open: false })),\n toggleSidenav: () => set((state) => ({ ...state, open: !state.open })),\n toggleSection: (sectionId) =>\n set((state) => ({\n ...state,\n expandedSections: toggleId(state.expandedSections, sectionId),\n })),\n toggleNode: (nodeId) =>\n set((state) => ({\n ...state,\n expandedNodes: toggleId(state.expandedNodes, nodeId),\n })),\n setSectionExpanded: (sectionId, expanded) =>\n set((state) => ({\n ...state,\n expandedSections: setExpanded(state.expandedSections, sectionId, expanded),\n })),\n setNodeExpanded: (nodeId, expanded) =>\n set((state) => ({\n ...state,\n expandedNodes: setExpanded(state.expandedNodes, nodeId, expanded),\n })),\n setWidth: (width) => set((state) => ({ ...state, width })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n};\n\nconst sidenavStoreRegistry = new Map<string, ReturnType<typeof createSidenavStore>>();\n\nexport const getSidenavStore = (storageKey: string, initialState?: Partial<SidenavSnapshot>) => {\n const existingStore = sidenavStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidenavStore({ storageKey, initialState });\n sidenavStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidenavStore = <T>(\n storageKey: string,\n selector: (state: SidenavState) => T,\n initialState?: Partial<SidenavSnapshot>,\n) => {\n const store = getSidenavStore(storageKey, initialState);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidenavFooterProps {\n children?: ReactNode;\n}\n\nexport const SidenavFooter = (props: SidenavFooterProps) => {\n const { children } = props;\n\n if (!children) {\n return null;\n }\n\n return (\n <Box bg=\"bg\" position=\"sticky\" bottom=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n","import { HStack } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/layout/panel-header.constants\";\n\ninterface SidenavHeaderProps {\n children?: ReactNode;\n}\n\nexport const SidenavHeader = (props: SidenavHeaderProps) => {\n const { children } = props;\n\n return (\n <HStack\n data-testid=\"sidenav-header\"\n justify=\"space-between\"\n align=\"center\"\n minH={PANEL_HEADER_HEIGHT}\n bg=\"bg\"\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n gap=\"0\"\n >\n <HStack minW=\"0\" flex=\"1\">\n {children}\n </HStack>\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport { useSidenavStore } from \"./sidenav.store\";\nimport type { SidenavProps } from \"./sidenav.types\";\nimport { SidenavFooter } from \"./sidenav-footer\";\nimport { SidenavHeader } from \"./sidenav-header\";\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_MIN_WIDTH = 200;\nconst DEFAULT_MAX_WIDTH = 480;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveInitialWidth = (width?: string | number, defaultWidth = DEFAULT_WIDTH) => {\n if (typeof width === \"number\") return width;\n if (typeof width === \"string\") {\n const parsed = parseInt(width, 10);\n if (!Number.isNaN(parsed)) return parsed;\n }\n return defaultWidth;\n};\n\nexport const Sidenav = (props: SidenavProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n contextActions = [],\n header,\n footer,\n width,\n closable = true,\n emptyLabel = \"No items available.\",\n defaultExpandedSections,\n linkComponent,\n onNavigate,\n onOpenChange,\n resizable = true,\n defaultWidth,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n virtualize = false,\n } = props;\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n\n const initialWidth = resolveInitialWidth(width, defaultWidth);\n const initialState = {\n ...(defaultExpandedSections ? { expandedSections: defaultExpandedSections } : {}),\n width: initialWidth,\n };\n\n const open = useSidenavStore(storageKey, (state) => state.open, initialState);\n const persistedWidth = useSidenavStore(storageKey, (state) => state.width, initialState);\n const expandedSections = useSidenavStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidenavStore(storageKey, (state) => state.expandedNodes, initialState);\n const toggleSection = useSidenavStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidenavStore(storageKey, (state) => state.toggleNode, initialState);\n\n useEffect(() => {\n onOpenChange?.(open);\n }, [onOpenChange, open]);\n\n const effectiveWidth = clamp(persistedWidth ?? initialWidth, minWidth, maxWidth);\n if (!open && closable) {\n return null;\n }\n\n const widthCss = resizable ? `${effectiveWidth}px` : (width ?? `${initialWidth}px`);\n\n const content = (\n <Flex\n as=\"aside\"\n data-testid=\"sidenav\"\n direction=\"column\"\n position=\"relative\"\n h=\"100%\"\n w={widthCss}\n minW={widthCss}\n maxW={widthCss}\n flexShrink={0}\n borderRightWidth=\"1px\"\n borderRightColor=\"border.subtle\"\n bg=\"bg\"\n >\n <SidenavHeader>{header}</SidenavHeader>\n\n <ScrollArea\n flex=\"1\"\n mt=\"lg\"\n viewportRef={viewportRef}\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{\n style: { minWidth: \"100%\", width: \"100%\", minHeight: \"100%\", display: \"flex\", flexDirection: \"column\" },\n }}\n >\n <Box w=\"full\" minW=\"0\" flex=\"1 0 auto\" display=\"flex\" flexDirection=\"column\">\n {sections.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"3\">\n {emptyLabel}\n </Text>\n ) : (\n <TreeList\n sections={sections}\n expandedSectionIds={expandedSections}\n expandedNodeIds={expandedNodes}\n activeNodeId={activeNodeId}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n virtualize={virtualize}\n scrollRef={viewportRef}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidenavFooter>{footer}</SidenavFooter>\n </Flex>\n );\n\n return (\n <ResourceContextMenu actions={contextActions} closeOnSelect={false}>\n {content}\n </ResourceContextMenu>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\n\ninterface TabVisibilitySnapshot {\n tabOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TabVisibilityState extends TabVisibilitySnapshot {\n setTab: (key: string, value: VisibilityOverride | undefined) => void;\n toggleTab: (key: string, hiddenByDefault: boolean) => void;\n clearTab: (key: string) => void;\n reset: () => void;\n}\n\ninterface CreateTabVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TabVisibilitySnapshot = { tabOverrides: {} };\n\nconst STORE_NAMESPACE = \"pstdio/ui/tab-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n key: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(key in overrides)) return overrides;\n const { [key]: _removed, ...rest } = overrides;\n return rest;\n }\n if (overrides[key] === value) return overrides;\n return { ...overrides, [key]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, key: string, hiddenByDefault: boolean) => {\n const current = resolveEffective(overrides[key], hiddenByDefault);\n return setOverride(overrides, key, current === \"hidden\" ? \"shown\" : \"hidden\");\n};\n\nconst getPersistedSnapshot = (state: TabVisibilityState) => ({ tabOverrides: state.tabOverrides });\n\nexport const createTabVisibilityStore = (options: CreateTabVisibilityStoreOptions) =>\n createStore<TabVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setTab: (key, value) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, value) })),\n toggleTab: (key, hiddenByDefault) =>\n set((state) => ({ ...state, tabOverrides: toggleOverride(state.tabOverrides, key, hiddenByDefault) })),\n clearTab: (key) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTabVisibilityStore>>();\n\nexport const getTabVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n const store = createTabVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTabVisibilityStore = <T>(storageKey: string, selector: (state: TabVisibilityState) => T) => {\n const store = getTabVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TabVisibilitySnapshot, TabVisibilityState };\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { TreeListNode, TreeListSection } from \"./tree-list.types\";\nimport type { VisibilityOverride } from \"./tree-list-visibility.store\";\n\nconst toStringLabel = (label: ReactNode, fallback: string) => (typeof label === \"string\" ? label : fallback);\n\nexport const resolveVisibility = (\n override: VisibilityOverride | undefined,\n hiddenByDefault: boolean | undefined,\n): VisibilityOverride => override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\n// A section or node is \"customizable\": it opts in to the hide/show menu and may be toggled.\n// Hideability is explicit — items are non-hideable unless they set canHide (or start hidden by\n// default, which would otherwise be unrecoverable). Body sub-items never opt in, so only\n// categories (sections) and header/footer rows ever appear in the customize menu.\nconst isCustomizable = (item: { canHide?: boolean; hiddenByDefault?: boolean }) =>\n item.canHide === true || item.hiddenByDefault === true;\n\nconst isNodeVisible = (node: TreeListNode, nodeOverrides: Record<string, VisibilityOverride>) =>\n resolveVisibility(nodeOverrides[node.id], node.hiddenByDefault) === \"shown\";\n\nconst filterNodes = (nodes: TreeListNode[], nodeOverrides: Record<string, VisibilityOverride>): TreeListNode[] => {\n let changed = false;\n const next: TreeListNode[] = [];\n for (const node of nodes) {\n if (!isNodeVisible(node, nodeOverrides)) {\n changed = true;\n continue;\n }\n if (node.children && node.children.length > 0) {\n const filteredChildren = filterNodes(node.children, nodeOverrides);\n if (filteredChildren !== node.children) {\n changed = true;\n next.push({ ...node, children: filteredChildren });\n continue;\n }\n }\n next.push(node);\n }\n return changed ? next : nodes;\n};\n\n// Header/footer rows are flat lists, filtered by their own node overrides (mirrors the body's\n// per-node filtering, minus section nesting).\nexport const filterVisibleNodes = (\n nodes: TreeListNode[],\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListNode[] => filterNodes(nodes, nodeOverrides);\n\nexport const filterVisibleSections = (\n sections: TreeListSection[],\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListSection[] => {\n let changed = false;\n const next: TreeListSection[] = [];\n for (const section of sections) {\n if (resolveVisibility(sectionOverrides[section.id], section.hiddenByDefault) === \"hidden\") {\n changed = true;\n continue;\n }\n const filteredNodes = filterNodes(section.nodes, nodeOverrides);\n if (filteredNodes.length === 0 && !section.emptyState) {\n changed = true;\n continue;\n }\n if (filteredNodes !== section.nodes) {\n changed = true;\n next.push({ ...section, nodes: filteredNodes });\n continue;\n }\n next.push(section);\n }\n return changed ? next : sections;\n};\n\nexport interface TreeVisibilityMenuActions {\n onToggleSection: (id: string, hiddenByDefault: boolean) => void;\n onToggleNode: (id: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildMenuOptions {\n // Trailing toggle indicator: an eye when the entry is shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n // Leading icon for the reset rows, kept separate from the toggle list above.\n resetIcon?: ReactNode;\n}\n\nconst visibilityEndContent = (effective: VisibilityOverride, options: BuildMenuOptions) =>\n effective === \"shown\" ? options.visibleIcon : options.hiddenIcon;\n\nconst buildSectionAction = (\n section: TreeListSection,\n sectionOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = section.hiddenByDefault === true;\n const effective = resolveVisibility(sectionOverrides[section.id], hiddenByDefault);\n return {\n key: `section:${section.id}`,\n label: section.label ?? section.id,\n onClick: () => actions.onToggleSection(section.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nconst buildNodeAction = (\n node: TreeListNode,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = node.hiddenByDefault === true;\n const effective = resolveVisibility(nodeOverrides[node.id], hiddenByDefault);\n return {\n key: `node:${node.id}`,\n label: toStringLabel(node.label, node.id),\n icon: node.icon,\n onClick: () => actions.onToggleNode(node.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nexport interface TreeVisibilityMenuItems {\n headerSections?: TreeListSection[];\n sections: TreeListSection[];\n footerSections?: TreeListSection[];\n}\n\n// Builds the back-of-tree hide/show menu. Every slot uses sections, so the same rules apply to\n// pinned and scrolling content. Hideability is explicit per item.\nexport const buildTreeVisibilityMenuActions = (\n items: TreeVisibilityMenuItems,\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n const appendGroup = (group: ResourceContextAction[]) => {\n if (group.length === 0) return;\n if (result.length > 0) group[0] = { ...group[0], separatorBefore: true };\n result.push(...group);\n };\n\n const actionsForSections = (sections: TreeListSection[]) => {\n const sectionActions: ResourceContextAction[] = [];\n for (const section of sections) {\n if (isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, sectionOverrides, actions, options));\n }\n // Top-level rows that opt in (e.g. a \"Tickets\" nav entry) are hideable too; their leaf\n // children are not visited, so files/sessions inside a category stay non-hideable.\n for (const node of section.nodes) {\n if (isCustomizable(node)) sectionActions.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n return sectionActions;\n };\n\n appendGroup(actionsForSections(items.headerSections ?? []));\n appendGroup(actionsForSections(items.sections));\n appendGroup(actionsForSections(items.footerSections ?? []));\n\n if (result.length === 0) return result;\n\n // A separator splits the visibility toggles above from the reset actions below.\n result.push({\n key: \"__reset-visibility\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n\n return result;\n};\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\nimport { resolveVisibility } from \"../tree-list/tree-list-visibility-filter\";\n\nexport interface TabVisibilityPlacement {\n closable?: boolean;\n hiddenByDefault?: boolean;\n pinned?: boolean;\n title?: string;\n contributionId: string;\n}\n\nexport const filterVisibleTabs = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n getKey: (placement: T) => string,\n): T[] => {\n let changed = false;\n const next: T[] = [];\n for (const placement of placements) {\n if (placement.closable === true) {\n next.push(placement);\n continue;\n }\n if (placement.pinned === true && placement.hiddenByDefault === true) {\n changed = true;\n continue;\n }\n const effective = resolveVisibility(tabOverrides[getKey(placement)], placement.hiddenByDefault);\n if (effective === \"hidden\") {\n changed = true;\n continue;\n }\n next.push(placement);\n }\n return changed ? next : placements;\n};\n\nexport interface TabVisibilityMenuActions {\n onToggleTab: (key: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildTabMenuOptions {\n // Trailing toggle indicator, mirroring the tree menu: eye when shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n resetIcon?: ReactNode;\n}\n\nexport const buildTabVisibilityMenuActions = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n actions: TabVisibilityMenuActions,\n getKey: (placement: T) => string,\n options: BuildTabMenuOptions,\n getIcon?: (placement: T) => ReactNode,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n let nonCloseableCount = 0;\n\n for (const placement of placements) {\n if (placement.pinned === true) continue;\n if (placement.closable === true) continue;\n nonCloseableCount += 1;\n const key = getKey(placement);\n const hiddenByDefault = placement.hiddenByDefault === true;\n const effective = resolveVisibility(tabOverrides[key], hiddenByDefault);\n result.push({\n key: `tab:${key}`,\n label: placement.title ?? placement.contributionId,\n icon: getIcon?.(placement),\n onClick: () => actions.onToggleTab(key, hiddenByDefault),\n endContent: effective === \"shown\" ? options.visibleIcon : options.hiddenIcon,\n });\n }\n\n if (nonCloseableCount === 0) return result;\n\n result.push({\n key: \"__reset-tabs\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n return result;\n};\n","import { createSlotRecipeContext, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { type KeyboardEvent, type ReactNode, useEffect, useRef } from \"react\";\nimport { windowTabsRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\nconst List = withProvider<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"list\");\nconst Tab = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"tab\");\nconst Trigger = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"trigger\");\nconst Label = withContext<HTMLSpanElement, HTMLChakraProps<\"span\">>(\"span\", \"label\");\nconst Close = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"close\");\n\nexport interface WindowTab {\n id: string;\n label: string;\n icon?: ReactNode;\n}\n\nexport interface WindowTabsProps {\n tabs: WindowTab[];\n selectedId?: string;\n onSelect: (id: string) => void;\n onClose: (id: string) => void;\n \"aria-label\": string;\n}\n\nexport const WindowTabs = (props: WindowTabsProps) => {\n const { tabs, selectedId, onSelect, onClose, \"aria-label\": label } = props;\n const listRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (!selectedId) return;\n listRef.current?.querySelector('[aria-selected=\"true\"]')?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }, [selectedId]);\n\n const closeTab = (index: number) => {\n const triggers = listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n const neighbor = triggers?.[index + 1] ?? triggers?.[index - 1];\n onClose(tabs[index].id);\n neighbor?.focus();\n };\n\n const handleKey = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n let next = index;\n if (event.key === \"ArrowRight\") next = (index + 1) % tabs.length;\n else if (event.key === \"ArrowLeft\") next = (index - 1 + tabs.length) % tabs.length;\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = tabs.length - 1;\n else if (event.key === \"Delete\") {\n event.preventDefault();\n closeTab(index);\n return;\n } else return;\n event.preventDefault();\n listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')[next]?.focus();\n onSelect(tabs[next].id);\n };\n\n return (\n <List ref={listRef} role=\"tablist\" aria-label={label}>\n {tabs.map((tab, index) => (\n <Tab key={tab.id} role=\"presentation\" data-selected={tab.id === selectedId ? \"\" : undefined}>\n <Trigger\n type=\"button\"\n role=\"tab\"\n aria-selected={tab.id === selectedId}\n aria-label={tab.label}\n tabIndex={tab.id === (selectedId ?? tabs[0]?.id) ? 0 : -1}\n title={tab.label}\n onClick={() => onSelect(tab.id)}\n onKeyDown={(event) => handleKey(event, index)}\n >\n {tab.icon}\n <Label>{tab.label}</Label>\n </Trigger>\n <Close\n type=\"button\"\n aria-label={`Close ${tab.label}`}\n title={`Close ${tab.label}`}\n onClick={() => closeTab(index)}\n >\n <X aria-hidden=\"true\" />\n </Close>\n </Tab>\n ))}\n </List>\n );\n};\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { windowTitleBarRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\ninterface RootProps extends HTMLChakraProps<\"div\">, RecipeVariantProps<typeof recipe> {}\nconst Root = withProvider<HTMLDivElement, RootProps>(\"div\", \"root\");\nconst Content = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"content\");\n\nexport interface WindowTitleBarProps {\n platform: string;\n children?: ReactNode;\n}\n\nexport const WindowTitleBar = (props: WindowTitleBarProps) => {\n const { platform, children } = props;\n return (\n <Root controls={platform === \"darwin\" ? \"mac\" : \"overlay\"} data-window-title-bar=\"\">\n <Content>{children}</Content>\n </Root>\n );\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface TagEditorHeadingProps {\n children: ReactNode;\n /** Appends the unsaved-changes marker. */\n hasChanges?: boolean;\n}\n\n/**\n * Screen heading for a tag settings panel. The asterisk stays quiet on purpose —\n * the enabled Save button in the same header is the loud signal.\n */\nexport const TagEditorHeading = (props: TagEditorHeadingProps) => {\n const { children, hasChanges } = props;\n\n return (\n <HStack gap=\"3xs\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" truncate>\n {children}\n </Text>\n {hasChanges ? (\n <Text textStyle=\"label/L/medium\" color=\"fg.muted\" aria-label=\"Unsaved changes\">\n *\n </Text>\n ) : null}\n </HStack>\n );\n};\n","import { Badge, Button, Editable, Flex, Icon, IconButton, Menu } from \"@chakra-ui/react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, ChevronDown, GripVertical, Trash2 } from \"lucide-react\";\n\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { IconColorPickerIconOption } from \"@/components/primitives/icon-options\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n actionsLabel?: string;\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: boolean;\n readOnly?: boolean;\n showDefault?: boolean;\n showIcons?: boolean;\n onActionsChange: (actions: string[]) => void;\n onColorChange: (color: string) => void;\n onDelete: () => void;\n onIconChange: (icon: string | null) => void;\n onNameChange: (name: string) => void;\n}\n\n/** Reads out the selected names rather than a count: a number says nothing about what is on. */\nconst selectionLabel = (selected: TagEditorAction[]) => {\n if (selected.length === 0) return \"None\";\n if (selected.length === 1) return selected[0].label;\n return `${selected[0].label} +${selected.length - 1}`;\n};\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n label: string;\n options: TagEditorAction[];\n optionName: string;\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, label, options, optionName, onChange } = props;\n\n const selected = options.filter((option) => actions.includes(option.value));\n\n const toggleAction = (action: string) => {\n onChange(actions.includes(action) ? actions.filter((item) => item !== action) : [...actions, action]);\n };\n\n return (\n <Menu.Root closeOnSelect={false}>\n <Menu.Trigger asChild>\n <Button\n size=\"2xs\"\n variant=\"ghost\"\n gap=\"xs\"\n color={selected.length === 0 ? \"fg.subtle\" : \"fg\"}\n disabled={disabled}\n aria-label={`${label} for ${optionName}`}\n >\n {selected[0]?.icon}\n {selectionLabel(selected)}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {options.map((option) => (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={option.icon}\n isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => toggleAction(option.value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const TagEditorRow = (props: TagEditorRowProps) => {\n const {\n actionOptions,\n actionsLabel = \"Actions\",\n colorOptions,\n iconOptions,\n value,\n isSaving,\n readOnly,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n } = props;\n const disabled = isSaving || readOnly;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: value.id,\n disabled,\n });\n\n return (\n <Flex\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"group\"\n height=\"tag-editor-row\"\n alignItems=\"center\"\n gap=\"compact\"\n px=\"xs\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n // Lifted out of the list while dragging, so the row carries the drag chrome.\n bg={isDragging ? \"bg.elevated\" : \"transparent\"}\n borderRadius={isDragging ? \"compact\" : \"none\"}\n borderWidth={isDragging ? \"1px\" : undefined}\n boxShadow={isDragging ? \"lg\" : undefined}\n _hover={{ bg: isDragging ? \"bg.elevated\" : \"bg.muted\" }}\n >\n <Flex\n cursor={readOnly ? \"default\" : \"grab\"}\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.muted\" }}\n aria-label={`Reorder ${value.name}`}\n {...attributes}\n {...listeners}\n >\n <Icon as={GripVertical} boxSize=\"icon-xs\" />\n </Flex>\n <IconColorPicker\n color={value.color}\n colorOptions={colorOptions}\n icon={value.icon}\n iconOptions={iconOptions}\n showIcons={showIcons}\n onColorChange={onColorChange}\n onIconChange={onIconChange}\n disabled={disabled}\n aria-label={`Change ${value.name} appearance`}\n />\n {/* The default marker belongs to the name, so it sits beside it rather than drifting right. */}\n <Flex flex=\"1\" minWidth=\"0\" alignItems=\"center\" gap=\"xs\">\n <Editable.Root\n // Editable owns its draft text, so a changed source name must remount it for Cancel/reset flows.\n key={value.name}\n minWidth=\"0\"\n defaultValue={value.name}\n // A freshly added option opens straight into its rename input.\n defaultEdit={value.isNew}\n selectOnFocus\n disabled={disabled}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"paragraph/S/regular\" />\n <Editable.Input textStyle=\"paragraph/S/regular\" />\n </Editable.Root>\n {showDefault && value.isDefault ? (\n <Badge size=\"sm\" variant=\"subtle\" colorPalette=\"blue\">\n Default\n </Badge>\n ) : null}\n </Flex>\n {actionOptions ? (\n <Flex width=\"tag-editor-commands\" justifyContent=\"flex-end\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={disabled}\n label={actionsLabel}\n optionName={value.name}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Flex>\n ) : null}\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.error\", bg: \"bg.error\" }}\n onClick={onDelete}\n disabled={disabled || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Icon as={Trash2} boxSize=\"icon-xs\" />\n </IconButton>\n </Flex>\n );\n};\n","import { Button, chakra, Editable, Flex, Icon, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { Check, ChevronDown, Plus } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorHeading } from \"./tag-editor-heading\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\nconst nextSortOrder = (values: TagEditorValue[]) =>\n values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) + 1 : 0;\n\ninterface TagEditorTitleProps {\n title: string;\n hasChanges?: boolean;\n isSaving?: boolean;\n onTitleChange?: (title: string) => void;\n}\n\n/** Renames the tag definition inline, matching how its options are renamed. */\nconst TagEditorTitle = (props: TagEditorTitleProps) => {\n const { title, hasChanges, isSaving, onTitleChange } = props;\n\n if (!onTitleChange) return <TagEditorHeading hasChanges={hasChanges}>{title}</TagEditorHeading>;\n\n return (\n <Editable.Root\n key={title}\n defaultValue={title}\n disabled={isSaving}\n selectOnFocus\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== title) onTitleChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"label/L/medium\" />\n <Editable.Input textStyle=\"label/L/medium\" />\n </Editable.Root>\n );\n};\n\nconst AddOptionRow = chakra(\"button\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"xs\",\n height: \"tag-editor-add-row\",\n paddingInline: \"xs\",\n color: \"fg.muted\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.muted\", color: \"fg\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { bg: \"transparent\", color: \"fg.muted\" } },\n },\n});\n\ninterface ColumnHeadersProps {\n valueLabel: string;\n actionsLabel?: string;\n}\n\n/** Names each column once, so a row reads as data instead of repeating its own labels. */\nconst ColumnHeaders = (props: ColumnHeadersProps) => {\n const { valueLabel, actionsLabel } = props;\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"compact\"\n paddingInline=\"xs\"\n height=\"tag-editor-add-row\"\n bg=\"bg.subtle\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Flex width=\"tag-editor-lead\" flexShrink=\"0\" />\n <Text flex=\"1\" minWidth=\"0\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {valueLabel}\n </Text>\n {actionsLabel ? (\n <Text width=\"tag-editor-commands\" textAlign=\"right\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {actionsLabel}\n </Text>\n ) : null}\n <Flex width=\"tag-editor-trailing\" flexShrink=\"0\" />\n </Flex>\n );\n};\n\ninterface DefaultValueSelectProps {\n label: string;\n values: TagEditorValue[];\n disabled?: boolean;\n onSelect: (value: TagEditorValue) => void;\n}\n\n/**\n * Exactly one option is the default, so it reads as one select rather than a\n * per-row toggle. A select cannot hold two values, which is the rule itself.\n */\nconst DefaultValueSelect = (props: DefaultValueSelectProps) => {\n const { label, values, disabled, onSelect } = props;\n const current = values.find((value) => value.isDefault);\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"sm\"\n paddingInline=\"xs\"\n paddingBlock=\"xs\"\n bg=\"bg.subtle\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {label}\n </Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"2xs\" variant=\"ghost\" gap=\"xs\" disabled={disabled} aria-label={label}>\n {current?.name ?? \"None\"}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {values.map((value) => (\n <Menu.Item key={value.id} value={value.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={value.id}\n label={value.name}\n isSelected={value.isDefault}\n endContent={value.isDefault ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => onSelect(value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Flex>\n );\n};\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n headerActions,\n values,\n onValuesChange,\n onDeleteValue,\n onSetDefault,\n onTitleChange,\n hasChanges,\n isSaving,\n readOnly,\n addLabel = \"Add option\",\n addName = \"New option\",\n actionOptions,\n actionsLabel,\n defaultValueLabel = \"Default value\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n showDefault,\n showIcons = true,\n framed,\n showColumnHeaders,\n valueColumnLabel = \"Name\",\n } = props;\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const updateValue = (index: number, patch: Partial<TagEditorValue>) => {\n const next = [...values];\n next[index] = { ...next[index], ...patch };\n onValuesChange(next);\n };\n\n const handleAddOption = () => {\n onValuesChange([\n ...values,\n {\n id: `new-${crypto.randomUUID()}`,\n name: addName,\n color: defaultAddColor,\n icon: defaultAddIcon,\n sortOrder: nextSortOrder(values),\n isNew: true,\n },\n ]);\n };\n\n const handleDeleteOption = () => {\n if (!valueToDelete) return;\n if (onDeleteValue) {\n onDeleteValue(valueToDelete);\n } else {\n onValuesChange(values.filter((value) => value.id !== valueToDelete.id));\n }\n setValueToDelete(null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = values.findIndex((value) => value.id === active.id);\n const newIndex = values.findIndex((value) => value.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return;\n\n onValuesChange(arrayMove(values, oldIndex, newIndex).map((value, index) => ({ ...value, sortOrder: index })));\n };\n\n return (\n <>\n <Stack gap=\"2xs\">\n {title || headerActions ? (\n <Flex minHeight=\"tag-editor-row\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Stack gap=\"3xs\" minWidth=\"0\">\n {title ? (\n <TagEditorTitle\n title={title}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onTitleChange={onTitleChange}\n />\n ) : null}\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n {headerActions}\n </Flex>\n ) : null}\n\n <Stack\n gap=\"none\"\n borderWidth={framed ? \"1px\" : undefined}\n borderColor={framed ? \"border.subtle\" : undefined}\n borderRadius={framed ? \"md\" : undefined}\n overflow={framed ? \"hidden\" : undefined}\n >\n {showColumnHeaders ? (\n <ColumnHeaders valueLabel={valueColumnLabel} actionsLabel={actionOptions ? actionsLabel : undefined} />\n ) : null}\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={readOnly ? undefined : handleDragEnd}\n >\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n readOnly={readOnly}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\n actionsLabel={actionsLabel}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onNameChange={(name) => updateValue(index, { name })}\n onColorChange={(color) => updateValue(index, { color })}\n onIconChange={(icon) => updateValue(index, { icon })}\n onActionsChange={(actions) => updateValue(index, { actions })}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n </SortableContext>\n </DndContext>\n\n {readOnly ? null : (\n <AddOptionRow type=\"button\" disabled={isSaving} onClick={handleAddOption}>\n <Icon as={Plus} boxSize=\"icon-xs\" />\n <Text textStyle=\"paragraph/S/regular\">{addLabel}</Text>\n </AddOptionRow>\n )}\n\n {showDefault && values.length > 0 ? (\n <DefaultValueSelect\n label={defaultValueLabel}\n values={values}\n disabled={isSaving || readOnly}\n onSelect={(value) => onSetDefault?.(value)}\n />\n ) : null}\n </Stack>\n </Stack>\n\n <DeleteConfirmationModal\n open={Boolean(valueToDelete)}\n onClose={() => setValueToDelete(null)}\n onDelete={handleDeleteOption}\n headline={deleteHeadline}\n notificationText={valueToDelete ? deleteNotificationText(valueToDelete) : \"\"}\n buttonText={deleteButtonText}\n />\n </>\n );\n};\n","import { Button, HStack } from \"@chakra-ui/react\";\n\nexport interface TagEditorSaveBarProps {\n onSave: () => void;\n onReset: () => void;\n hasChanges?: boolean;\n isSaving?: boolean;\n resetLabel?: string;\n saveLabel?: string;\n}\n\n/**\n * The single commit point for a tag settings screen, anchored in its header.\n * Reset only appears while edits are pending, so the resting state stays quiet.\n */\nexport const TagEditorSaveBar = (props: TagEditorSaveBarProps) => {\n const { onSave, onReset, hasChanges, isSaving, resetLabel = \"Reset\", saveLabel = \"Save\" } = props;\n\n return (\n <HStack gap=\"xs\">\n {hasChanges ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={onReset} disabled={isSaving}>\n {resetLabel}\n </Button>\n ) : null}\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n );\n};\n","import { HStack, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { TagEditor } from \"./tag-editor\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorSaveBar } from \"./tag-editor-save-bar\";\n\nexport interface SaveTagSettingsInput<TValue> {\n deletedIds: Set<string>;\n drafts: TagEditorValue[];\n values: TValue[];\n}\n\ntype EditorLabels = Pick<\n TagEditorProps,\n | \"actionOptions\"\n | \"actionsLabel\"\n | \"addLabel\"\n | \"addName\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"defaultValueLabel\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"framed\"\n | \"iconOptions\"\n | \"readOnly\"\n | \"showDefault\"\n | \"onSetDefault\"\n | \"showColumnHeaders\"\n | \"showIcons\"\n | \"title\"\n | \"valueColumnLabel\"\n>;\n\ntype SortableValue = { id: string; sortOrder: number };\n\nexport interface TagSettingsPanelProps<TValue extends SortableValue> extends EditorLabels {\n errorTitle: string;\n loadingText?: string;\n resetLabel?: string;\n saveLabel?: string;\n /** Loaded values; pass undefined while the initial load is pending. */\n values: TValue[] | undefined;\n /** Load/save error surfaced by the host's data layer. */\n loadError?: unknown;\n /**\n * Persists the pending edits. The host owns fetching and cache invalidation;\n * the panel resets its delete tracking once the returned promise resolves.\n */\n onSave: (input: SaveTagSettingsInput<TValue>) => Promise<void>;\n toEditorValue: (value: TValue) => TagEditorValue;\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean;\n}\n\nconst bySortOrder = (left: TagEditorValue, right: TagEditorValue) =>\n left.sortOrder - right.sortOrder || left.name.localeCompare(right.name);\n\nconst toEditorValues = <TValue extends SortableValue>(\n values: TValue[],\n toEditorValue: (value: TValue) => TagEditorValue,\n) => values.map(toEditorValue).sort(bySortOrder);\n\nconst findOriginalValue = <TValue extends SortableValue>(values: TValue[], draft: TagEditorValue) =>\n values.find((value) => value.id === draft.id);\n\nconst hasTagValueChanges = <TValue extends SortableValue>(\n values: TValue[],\n drafts: TagEditorValue[],\n deletedIds: Set<string>,\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean,\n) => {\n if (deletedIds.size > 0) return true;\n\n return drafts.some((draft) => {\n if (draft.isNew) return true;\n const original = findOriginalValue(values, draft);\n if (!original) return true;\n return valueNeedsUpdate(original, draft) || draft.sortOrder !== original.sortOrder;\n });\n};\n\nconst errorMessage = (error: unknown) => (error instanceof Error ? error.message : error ? String(error) : null);\n\nexport const TagSettingsPanel = <TValue extends SortableValue>(props: TagSettingsPanelProps<TValue>) => {\n const {\n errorTitle,\n loadingText = \"Loading...\",\n resetLabel,\n saveLabel,\n values: loadedValues,\n loadError,\n onSave,\n readOnly,\n toEditorValue,\n valueNeedsUpdate,\n ...editorProps\n } = props;\n const [drafts, setDrafts] = useState<TagEditorValue[]>([]);\n const [deletedIds, setDeletedIds] = useState<Set<string>>(new Set());\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState<unknown>(null);\n\n const values = loadedValues ?? [];\n\n // Edits never refetch in the background, so loaded values only change on\n // initial load and after a save invalidates the host's cache — keeping local\n // drafts in sync.\n useEffect(() => {\n if (loadedValues) setDrafts(toEditorValues(loadedValues, toEditorValue));\n }, [loadedValues, toEditorValue]);\n\n const handleSave = async () => {\n setIsSaving(true);\n setSaveError(null);\n try {\n await onSave({ deletedIds, drafts, values });\n setDeletedIds(new Set());\n } catch (error) {\n setSaveError(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const hasChanges = hasTagValueChanges(values, drafts, deletedIds, valueNeedsUpdate);\n const error = errorMessage(loadError) ?? errorMessage(saveError);\n\n const handleDeleteValue = (value: TagEditorValue) => {\n if (!value.isNew) setDeletedIds(new Set([...deletedIds, value.id]));\n setDrafts(drafts.filter((draft) => draft.id !== value.id));\n };\n\n const handleReset = () => {\n setDrafts(toEditorValues(values, toEditorValue));\n setDeletedIds(new Set());\n setSaveError(null);\n };\n\n return (\n <Stack boxSizing=\"border-box\" minH=\"100%\" p=\"lg\" gap=\"lg\" bg=\"bg\" color=\"fg\">\n {error ? (\n <AlertMessage status=\"error\" colorPalette=\"red\" title={errorTitle} size=\"sm\">\n {error}\n </AlertMessage>\n ) : null}\n {loadedValues === undefined ? (\n <HStack gap=\"sm\" color=\"fg.muted\">\n <Spinner size=\"sm\" />\n <Text textStyle=\"paragraph/S/regular\">{loadingText}</Text>\n </HStack>\n ) : (\n <TagEditor\n {...editorProps}\n readOnly={readOnly}\n values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n onSetDefault={\n editorProps.showDefault\n ? (value) => setDrafts(drafts.map((draft) => ({ ...draft, isDefault: draft.id === value.id })))\n : editorProps.onSetDefault\n }\n hasChanges={hasChanges}\n isSaving={isSaving}\n headerActions={\n readOnly ? undefined : (\n <TagEditorSaveBar\n hasChanges={hasChanges}\n isSaving={isSaving}\n resetLabel={resetLabel}\n saveLabel={saveLabel}\n onSave={() => void handleSave()}\n onReset={handleReset}\n />\n )\n }\n />\n )}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => void;\n setSectionSlot: (sectionId: string, slot: TreeListOrderSlot) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-order\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst dedupe = (ids: string[]) => {\n const seen = new Set<string>();\n const result: string[] = [];\n for (const id of ids) {\n if (seen.has(id)) continue;\n seen.add(id);\n result.push(id);\n }\n return result;\n};\n\nconst getPersistedSnapshot = (state: TreeListOrderState) => ({\n sectionOrder: state.sectionOrder,\n nodeOrderBySection: state.nodeOrderBySection,\n sectionSlotById: state.sectionSlotById,\n});\n\nexport const createTreeListOrderStore = (options: CreateTreeListOrderStoreOptions) =>\n createStore<TreeListOrderState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSectionOrder: (nextSectionIds) => set((state) => ({ ...state, sectionOrder: dedupe(nextSectionIds) })),\n setNodeOrder: (sectionId, nextNodeIds) =>\n set((state) => ({\n ...state,\n nodeOrderBySection: { ...state.nodeOrderBySection, [sectionId]: dedupe(nextNodeIds) },\n })),\n setSectionSlot: (sectionId, slot) =>\n set((state) => ({ ...state, sectionSlotById: { ...state.sectionSlotById, [sectionId]: slot } })),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListOrderStore>>();\n\nexport const getTreeListOrderStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListOrderStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\n\nconst reorderBy = <T extends { id: string }>(items: T[], order: string[]): T[] => {\n if (order.length === 0) return items;\n\n const indexById = new Map(items.map((item, index) => [item.id, index]));\n const placed = new Set<number>();\n const next: T[] = [];\n\n for (const id of order) {\n const index = indexById.get(id);\n if (index === undefined || placed.has(index)) continue;\n placed.add(index);\n next.push(items[index]);\n }\n\n let changed = next.length > 0 && next.length !== items.length;\n for (let i = 0; i < items.length; i += 1) {\n if (placed.has(i)) continue;\n if (next.length !== i && !changed) changed = true;\n next.push(items[i]);\n }\n\n if (!changed) {\n for (let i = 0; i < items.length; i += 1) {\n if (items[i] !== next[i]) {\n changed = true;\n break;\n }\n }\n }\n\n return changed ? next : items;\n};\n\nexport const applyTreeListOrder = (\n sections: TreeListSection[],\n sectionOrder: string[],\n nodeOrderBySection: Record<string, string[]>,\n): TreeListSection[] => {\n let changed = false;\n const reorderedSections = reorderBy(sections, sectionOrder);\n if (reorderedSections !== sections) changed = true;\n\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => sections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) => nodeIds.filter((nodeId) => nodesById.has(nodeId))),\n );\n\n const next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!(section.id in nodeOrderBySection)) {\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n if (remainingNodes.length === section.nodes.length) next.push(section);\n else {\n changed = true;\n next.push({ ...section, nodes: remainingNodes });\n }\n continue;\n }\n\n const orderedNodes = (nodeOrder ?? []).flatMap((nodeId) => {\n const node = nodesById.get(nodeId);\n return node ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = [...orderedNodes, ...remainingNodes];\n if (\n reorderedNodes.length !== section.nodes.length ||\n reorderedNodes.some((node, index) => node !== section.nodes[index])\n ) {\n changed = true;\n next.push({ ...section, nodes: reorderedNodes });\n } else {\n next.push(section);\n }\n }\n\n return changed ? next : sections;\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\nexport type VisibilityOverride = \"hidden\" | \"shown\";\n\ninterface TreeListVisibilitySnapshot {\n sectionOverrides: Record<string, VisibilityOverride>;\n nodeOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TreeListVisibilityState extends TreeListVisibilitySnapshot {\n setSection: (id: string, value: VisibilityOverride | undefined) => void;\n setNode: (id: string, value: VisibilityOverride | undefined) => void;\n toggleSection: (id: string, hiddenByDefault: boolean) => void;\n toggleNode: (id: string, hiddenByDefault: boolean) => void;\n clearSection: (id: string) => void;\n clearNode: (id: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListVisibilitySnapshot = {\n sectionOverrides: {},\n nodeOverrides: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst flipOverride = (current: VisibilityOverride): VisibilityOverride => (current === \"hidden\" ? \"shown\" : \"hidden\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n id: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(id in overrides)) return overrides;\n const { [id]: _removed, ...rest } = overrides;\n return rest;\n }\n\n if (overrides[id] === value) return overrides;\n return { ...overrides, [id]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, id: string, hiddenByDefault: boolean) => {\n const next = flipOverride(resolveEffective(overrides[id], hiddenByDefault));\n return setOverride(overrides, id, next);\n};\n\nconst getPersistedSnapshot = (state: TreeListVisibilityState) => ({\n sectionOverrides: state.sectionOverrides,\n nodeOverrides: state.nodeOverrides,\n});\n\nexport const createTreeListVisibilityStore = (options: CreateTreeListVisibilityStoreOptions) =>\n createStore<TreeListVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSection: (id, value) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, value) })),\n setNode: (id, value) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, value) })),\n toggleSection: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n sectionOverrides: toggleOverride(state.sectionOverrides, id, hiddenByDefault),\n })),\n toggleNode: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n nodeOverrides: toggleOverride(state.nodeOverrides, id, hiddenByDefault),\n })),\n clearSection: (id) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, undefined) })),\n clearNode: (id) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListVisibilityStore>>();\n\nexport const getTreeListVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListVisibilitySnapshot, TreeListVisibilityState };\n","export interface FileIconThemeFont {\n fontFamily: string;\n src: { url: string; format?: string }[];\n weight?: string;\n style?: string;\n}\n\nexport interface FileIconThemeDefinition {\n fontCharacter?: string;\n fontColor?: string;\n fontId?: string;\n}\n\nexport interface FileIconThemePreferenceOption {\n id: string;\n title?: string;\n definitions: Record<string, unknown>;\n fileExtensions: Record<string, string>;\n fileNames: Record<string, string>;\n defaults: { file?: string; folder?: string };\n fonts: FileIconThemeFont[];\n}\n\nexport const defaultFileIconThemePreferences: FileIconThemePreferenceOption[] = [];\n\nexport const isFileIconThemePreference = (\n value: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n): value is string => typeof value === \"string\" && themes.some((theme) => theme.id === value);\n\n// VS Code matches the longest compound extension first (\"d.ts\" before \"ts\").\nconst extensionCandidates = (filename: string) => {\n const parts = filename.toLowerCase().split(\".\");\n const candidates: string[] = [];\n for (let i = 1; i < parts.length; i += 1) candidates.push(parts.slice(i).join(\".\"));\n return candidates;\n};\n\nconst resolveDefinitionKey = (theme: FileIconThemePreferenceOption, filename: string, isDirectory: boolean) => {\n if (isDirectory) return theme.defaults.folder;\n\n const named = theme.fileNames[filename.toLowerCase()];\n if (named) return named;\n\n for (const candidate of extensionCandidates(filename)) {\n const match = theme.fileExtensions[candidate];\n if (match) return match;\n }\n\n return theme.defaults.file;\n};\n\nconst fontFamilyForDefinition = (theme: FileIconThemePreferenceOption, definition: FileIconThemeDefinition) => {\n if (definition.fontId) {\n const matched = theme.fonts.find((font) => font.fontFamily === `${theme.id}-${definition.fontId}`);\n if (matched) return matched.fontFamily;\n }\n return theme.fonts[0]?.fontFamily;\n};\n\nexport interface ResolvedFileIconGlyph {\n fontFamily: string;\n fontCharacter: string;\n fontColor?: string;\n}\n\n// VS Code icon themes store the glyph as a CSS escape (\"\\\\E023\"); decode it to the real code point.\nconst decodeFontCharacter = (value: string) => {\n const match = /^\\\\([0-9a-fA-F]+)$/.exec(value);\n return match ? String.fromCodePoint(Number.parseInt(match[1], 16)) : value;\n};\n\nexport const resolveFileIconGlyph = (\n theme: FileIconThemePreferenceOption | undefined,\n filename: string,\n isDirectory = false,\n): ResolvedFileIconGlyph | undefined => {\n if (!theme) return undefined;\n\n const key = resolveDefinitionKey(theme, filename, isDirectory);\n if (!key) return undefined;\n\n const definition = theme.definitions[key] as FileIconThemeDefinition | undefined;\n if (!definition?.fontCharacter) return undefined;\n\n const fontFamily = fontFamilyForDefinition(theme, definition);\n if (!fontFamily) return undefined;\n\n return {\n fontFamily,\n fontCharacter: decodeFontCharacter(definition.fontCharacter),\n fontColor: definition.fontColor,\n };\n};\n\nconst FONT_STYLE_ATTRIBUTE = \"data-pstdio-file-icon-fonts\";\n\nconst fontFaceRule = (font: FileIconThemeFont) => {\n const src = font.src\n .map((entry) => `url(\"${entry.url}\")${entry.format ? ` format(\"${entry.format}\")` : \"\"}`)\n .join(\", \");\n return [\n \"@font-face {\",\n ` font-family: \"${font.fontFamily}\";`,\n ` src: ${src};`,\n ` font-weight: ${font.weight ?? \"normal\"};`,\n ` font-style: ${font.style ?? \"normal\"};`,\n \"}\",\n ].join(\"\\n\");\n};\n\nexport const applyFileIconThemePreference = (\n themeId: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n) => {\n if (typeof document === \"undefined\") return;\n\n let style = document.querySelector<HTMLStyleElement>(`style[${FONT_STYLE_ATTRIBUTE}]`);\n if (!style) {\n style = document.createElement(\"style\");\n style.setAttribute(FONT_STYLE_ATTRIBUTE, \"\");\n document.head.appendChild(style);\n }\n\n const theme = themes.find((option) => option.id === themeId);\n style.textContent = (theme?.fonts ?? []).map(fontFaceRule).join(\"\\n\\n\");\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyFileIconThemePreference,\n defaultFileIconThemePreferences,\n type FileIconThemePreferenceOption,\n isFileIconThemePreference,\n} from \"./apply-file-icon-theme-preference\";\nimport { createBrowserStorage } from \"./browser-storage\";\n\nconst STORAGE_KEY = \"file-icon-theme-preference\";\n\n// The bundled Seti theme is the preferred default; fall back to whatever is registered first.\nconst getDefaultFileIconThemePreference = (themes: readonly FileIconThemePreferenceOption[]) =>\n themes.find((theme) => theme.id.endsWith(\".seti\"))?.id ?? themes[0]?.id ?? null;\n\ninterface FileIconThemePreferenceContextValue {\n fileIconThemePreference: string | null;\n fileIconThemePreferences: readonly FileIconThemePreferenceOption[];\n activeFileIconTheme: FileIconThemePreferenceOption | undefined;\n setFileIconThemePreference: (preference: string) => void;\n}\n\nconst FileIconThemePreferenceContext = createContext<FileIconThemePreferenceContextValue | null>(null);\n\ninterface FileIconThemePreferenceProviderProps {\n children: ReactNode;\n themePreferences?: readonly FileIconThemePreferenceOption[];\n}\n\nconst getInitialPreference = (themes: readonly FileIconThemePreferenceOption[]) => {\n if (typeof window === \"undefined\") return getDefaultFileIconThemePreference(themes);\n\n const stored = createBrowserStorage().getItem(STORAGE_KEY);\n if (isFileIconThemePreference(stored, themes)) return stored;\n\n return getDefaultFileIconThemePreference(themes);\n};\n\nexport const FileIconThemePreferenceProvider = (props: FileIconThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultFileIconThemePreferences } = props;\n const [fileIconThemePreference, setFileIconThemePreference] = useState<string | null>(() =>\n getInitialPreference(themePreferences),\n );\n\n useEffect(() => {\n const resolved = isFileIconThemePreference(fileIconThemePreference, themePreferences)\n ? fileIconThemePreference\n : getDefaultFileIconThemePreference(themePreferences);\n\n if (resolved !== fileIconThemePreference) {\n setFileIconThemePreference(resolved);\n return;\n }\n\n applyFileIconThemePreference(resolved, themePreferences);\n if (typeof window !== \"undefined\" && resolved) createBrowserStorage().setItem(STORAGE_KEY, resolved);\n }, [fileIconThemePreference, themePreferences]);\n\n const activeFileIconTheme = themePreferences.find((theme) => theme.id === fileIconThemePreference);\n\n return (\n <FileIconThemePreferenceContext\n value={{\n fileIconThemePreference,\n fileIconThemePreferences: themePreferences,\n activeFileIconTheme,\n setFileIconThemePreference,\n }}\n >\n {children}\n </FileIconThemePreferenceContext>\n );\n};\n\nexport const useFileIconThemePreference = () => {\n const context = useContext(FileIconThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useFileIconThemePreference must be used within a FileIconThemePreferenceProvider\");\n }\n\n return context;\n};\n","import { Folder } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\n\nimport { type FileIconThemePreferenceOption, resolveFileIconGlyph } from \"./apply-file-icon-theme-preference\";\nimport { getFileTypeIcon } from \"./get-file-type-icon\";\n\ninterface ResolveFileIconElementOptions {\n isDirectory?: boolean;\n theme?: FileIconThemePreferenceOption;\n size?: number;\n}\n\n// Renders a contributed icon-font glyph when the active theme matches; otherwise falls back to Lucide icons.\nexport const resolveFileIconElement = (filename: string, options: ResolveFileIconElementOptions = {}) => {\n const { isDirectory = false, theme, size = 16 } = options;\n\n const glyph = resolveFileIconGlyph(theme, filename, isDirectory);\n if (glyph) {\n const style: CSSProperties = {\n fontFamily: `\"${glyph.fontFamily}\"`,\n color: glyph.fontColor,\n fontSize: size,\n lineHeight: 1,\n display: \"inline-flex\",\n };\n return (\n <span aria-hidden=\"true\" style={style}>\n {glyph.fontCharacter}\n </span>\n );\n }\n\n if (isDirectory) return <Folder size={size} />;\n\n const Icon = getFileTypeIcon(filename);\n return <Icon size={size} />;\n};\n"],"names":["ActivityAvatar","props","$","_c","actor","icon","color","t0","background","t1","undefined","t2","Box","avatarSrc","t3","avatarAlt","name","t4","Avatar","t5","t6","t7","TimestampSeparator","Symbol","for","jsx","ActivityCommentHeader","timestamp","actions","Text","jsxs","Fragment","HStack","ActivityReply","children","rootProps","Stack","ActivityComment","composer","replies","hasReplies","Children","count","ActivityComposer","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","onAttach","onChange","onSubmit","internalValue","setInternalValue","useState","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","handleSubmit","event","preventDefault","chakra","borderColor","Textarea","currentTarget","Spacer","Tooltip","IconButton","Icon","Paperclip","ArrowUp","EventSeparator","ActivityEvent","iconColor","iconBackground","Timeline","t8","ActivityRoot","ActivityHeader","title","ActivityFeed","ActivityTimeline","Activity","Root","Header","Feed","Event","Comment","Reply","Composer","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","entry","label","secondaryLabel","searchText","hasInputPrefix","query","inputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","find","mode","id","getPaletteEffectiveQuery","modeId","candidate","slice","limitDefaultAssetEntries","entries","limit","counts","filter","assetType","filterPaletteEntries","options","effectiveQuery","getEffectiveQuery","toLowerCase","filteredEntries","includes","defaultAssetLimit","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","endContent","shortcut","isSelected","Check","onActivate","buildRows","rows","forEach","index","previousEntry","group","push","type","entryIndex","getActiveRowIndex","activeIndex","findIndex","row","PaletteList","emptyLabel","onHover","scrollRef","activeRowIndex","virtualizer","useVirtualizer","getScrollElement","current","estimateSize","getItemKey","initialRect","width","height","overscan","useEffect","scrollToIndex","align","behavior","getTotalSize","getVirtualItems","map","virtualRow","measureElement","top","start","ListRow","key","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","onSearchChange","onSearchKeyDown","restScrollAreaProps","maxH","showHorizontalScrollbar","target","Input","t9","InputGroup","t10","Dialog","CloseButton","t11","t12","ScrollArea","t13","resolveStateValue","state","fallback","Palette","open","initialQuery","initialActiveIndex","resetKey","inputIcon","filterEntries","onActiveEntryChange","onQueryChange","onClose","onEscape","setQueryState","setActiveIndex","inputRef","useRef","setupRef","activeEntry","resolvedInputIcon","activeMode","resolvedPlaceholder","nextQuery","setQuery","runActiveEntry","closePalette","previousSetup","timeout","setTimeout","input","focus","setSelectionRange","clearTimeout","Math","min","max","t14","t15","entryCount","handleEscape","t16","current_0","_temp","stopPropagation","handleKeyDown","t17","details","t18","t19","viewportRef","viewportProps","style","overflowAnchor","t20","nextQuery_0","t21","t22","t23","current_1","nonMacModifierLabels","alt","control","ctrl","mod","shift","macModifierLabels","Option","cmd","Command","command","meta","option","keyLabels","arrowleft","ArrowLeft","arrowright","ArrowRight","getShortcutPlatform","navigator","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","part","Boolean","getShortcutDisplayParts","binding","Array","isArray","PaletteShortcut","steps","stepIndex","part_0","partIndex","Kbd","join","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","action","transform","ChevronRight","Collapsible","Flex","e","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","body","kind","status","sourceLabel","targetLabel","filterItems","items","normalizedQuery","groupItems","needsInput","urgent","normal","orderItemsForDisplay","flatMap","metadataDescription","timeLabel","getActionButtons","onDismiss","X","tooltip","onAction","NotificationEndContent","onRunAction","Badge","Button","destructive","NotificationRows","onActivateItem","onActiveIndexChange","groups","rowIndex","currentIndex","Bell","LoadingRows","NotificationCenter","autoFocus","error","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2","Search","AlertMessage","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","ref","containerProps","isOpen","button","BubblePanel","menu","closeLabel","onPopOut","popOutLabel","testId","ariaLabel","SquareArrowOutUpRight","Minus","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","buttonText","notificationText","onDelete","handleDelete","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FileText","path","RepoPickerListEntry","selectedPath","selectedPathSet","onEntryClick","has","isAlreadySelected","isDisabled","handleClick","focusInlinePickerOption","from","querySelectorAll","indexOf","document","activeElement","nextIndex","RepoPickerDialog","currentPath","selectedPaths","isLoading","isSelectDisabled","onSelect","onSelectHomeDirectory","onSelectParentDirectory","Set","searchScope","T0","t24","Home","t25","t26","t27","ChevronUp","t28","t29","t30","T1","t31","t32","t33","t34","t35","t36","t37","t38","t39","padding","t40","t41","t42","Body","t43","t44","t45","t46","Content","t47","Positioner","t48","linkProps","alignItems","display","gap","minW","maxW","overflow","outline","textOverflow","whiteSpace","_active","_focus","_focusVisible","staticProps","cursor","textDecoration","_hover","isInteractiveItem","url","onClick","BreadcrumbItemLink","isCurrent","linkComponent","LinkComponent","ChakraBreadcrumb","BreadcrumbItemContent","content","contextMenuActions","placement","ResourceContextMenu","BreadcrumbSeparator","separator","Breadcrumb","React","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","backgroundClip","backgroundImage","Label","ErrorBoundary","Component","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","onReset","render","ErrorFallback","message","AbsoluteCenter","hasGlyph","TagSwatch","iconOptions","showIcon","getIconComponent","IconComponent","Center","SwatchTrigger","base","borderRadius","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","justifyContent","bg","IconColorPicker","colorOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","optionColors","optionIcons","selectedIcon","Popover","optionColor","Grid","selected","SimpleCard","SimpleCardBody","IntegrationCard","version","category","active","actionLabel","segmentedControlSlotRecipe","defineSlotRecipe","className","slots","root","borderWidth","textStyle","transitionProperty","transitionDuration","variants","size","sm","paddingInline","xs","defaultVariants","withProvider","withContext","createSlotRecipeContext","recipe","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","Spinner","paddingEnd","ParamEditorControlList","DEFAULT_SNAPSHOT","expandedSections","expandedNodes","SIDENAV_STORE_NAMESPACE","toStorageName","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot","createSidenavStore","initialState","snapshot","createStore","persist","set","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","setNodeExpanded","setWidth","reset","storage","createJSONStorage","createBrowserStorage","partialize","sidenavStoreRegistry","Map","getSidenavStore","existingStore","get","store","useSidenavStore","selector","useStore","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","resolveInitialWidth","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","sections","activeNodeId","contextActions","footer","closable","defaultExpandedSections","onNavigate","onOpenChange","maxWidth","virtualize","initialWidth","persistedWidth","_temp3","_temp4","_temp5","_temp6","effectiveWidth","widthCss","overflowX","minHeight","flexDirection","TreeList","state_0","state_1","state_2","state_3","state_4","tabOverrides","STORE_NAMESPACE","resolveEffective","override","hiddenByDefault","setOverride","overrides","_removed","toggleOverride","createTabVisibilityStore","setTab","toggleTab","clearTab","storeRegistry","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","canHide","isNodeVisible","node","nodeOverrides","filterNodes","nodes","changed","next","filteredChildren","filterVisibleNodes","filterVisibleSections","sectionOverrides","section","filteredNodes","emptyState","visibilityEndContent","effective","visibleIcon","hiddenIcon","buildSectionAction","onToggleSection","buildNodeAction","onToggleNode","buildTreeVisibilityMenuActions","result","appendGroup","separatorBefore","actionsForSections","sectionActions","headerSections","footerSections","resetIcon","onResetAll","filterVisibleTabs","placements","getKey","pinned","buildTabVisibilityMenuActions","getIcon","nonCloseableCount","contributionId","onToggleTab","List","Tab","Trigger","Close","WindowTabs","tabs","selectedId","listRef","querySelector","scrollIntoView","block","inline","closeTab","triggers","neighbor","handleKey","index_0","tab","index_1","event_0","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","optionName","T2","toggleAction","Menu","ChevronDown","option_0","TagEditorRow","actionOptions","actionsLabel","isSaving","readOnly","showDefault","onActionsChange","onNameChange","attributes","listeners","setNodeRef","transition","isDragging","useSortable","CSS","Transform","toString","GripVertical","trimmed","Editable","isNew","isDefault","Trash2","nextSortOrder","sortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","value_0","TagEditor","headerActions","onValuesChange","onDeleteValue","onSetDefault","addLabel","addName","defaultValueLabel","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","sensors","useSensors","useSensor","PointerSensor","activationConstraint","distance","updateValue","patch","handleAddOption","crypto","randomUUID","handleDeleteOption","DndContext","closestCenter","handleDragEnd","over","oldIndex","newIndex","arrayMove","SortableContext","verticalListSortingStrategy","Plus","TagEditorSaveBar","onSave","resetLabel","saveLabel","bySortOrder","left","right","localeCompare","toEditorValues","toEditorValue","sort","findOriginalValue","draft","hasTagValueChanges","drafts","deletedIds","valueNeedsUpdate","some","original","errorMessage","Error","String","TagSettingsPanel","errorTitle","loadingText","loadedValues","loadError","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","handleDeleteValue","sectionOrder","nodeOrderBySection","sectionSlotById","dedupe","ids","seen","add","createTreeListOrderStore","setSectionOrder","nextSectionIds","setNodeOrder","nextNodeIds","setSectionSlot","slot","resetSectionOrder","resetNodeOrder","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","nodesById","assignedNodeIds","Object","nodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","flipOverride","createTreeListVisibilityStore","setSection","setNode","clearSection","clearNode","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","filename","parts","candidates","resolveDefinitionKey","defaults","folder","named","fileNames","match","fileExtensions","file","fontFamilyForDefinition","definition","fontId","matched","fonts","font","fontFamily","decodeFontCharacter","exec","fromCodePoint","resolveFileIconGlyph","definitions","fontCharacter","fontColor","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","format","weight","applyFileIconThemePreference","themeId","createElement","setAttribute","head","appendChild","textContent","STORAGE_KEY","getDefaultFileIconThemePreference","endsWith","FileIconThemePreferenceContext","createContext","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","setItem","activeFileIconTheme","fileIconThemePreferences","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","fontSize","lineHeight","getFileTypeIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/activity/activity-avatar.tsx","../src/theme/recipes/activity-comment.ts","../src/components/activity/activity-comment.tsx","../src/components/activity/activity-composer.tsx","../src/components/activity/activity-event.tsx","../src/components/activity/activity-root.tsx","../src/components/activity/activity-timeline.tsx","../src/components/activity/resource-activity-feed.tsx","../src/components/activity/index.ts","../src/components/command-palette/palette-filter.ts","../src/components/command-palette/palette-list.tsx","../src/components/overlays/search-modal-content.tsx","../src/components/command-palette/palette.tsx","../src/components/command-palette/palette-shortcut.tsx","../src/components/layout/horizontal-menu-stack.tsx","../src/components/layout/item-section.tsx","../src/components/layout/panel-header.constants.ts","../src/components/notification-center/notification-center.tsx","../src/components/overlays/attached-menu.tsx","../src/components/overlays/attached-panel.tsx","../src/components/overlays/bubble-button.tsx","../src/components/overlays/bubble-panel.tsx","../src/components/overlays/delete-confirmation-modal.tsx","../src/components/overlays/repo-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/error-boundary.tsx","../src/components/primitives/tag-swatch.tsx","../src/components/primitives/icon-color-picker.tsx","../src/components/primitives/simple-card.tsx","../src/components/primitives/integration-card.tsx","../src/theme/recipes/segmented-control.ts","../src/components/primitives/segmented-control.tsx","../src/components/primitives/toaster.tsx","../src/components/param-editor/param-editor-control-list.tsx","../src/components/sidenav/sidenav.store.ts","../src/components/sidenav/sidenav-footer.tsx","../src/components/sidenav/sidenav-header.tsx","../src/components/sidenav/sidenav.tsx","../src/components/tab-strip/tab-visibility.store.ts","../src/components/tree-list/tree-list-visibility-filter.ts","../src/components/tab-strip/tab-visibility-filter.ts","../src/components/tab-strip/window-tabs.tsx","../src/components/tab-strip/window-title-bar.tsx","../src/components/tag-editor/tag-editor-heading.tsx","../src/components/tag-editor/tag-editor-row.tsx","../src/components/tag-editor/tag-editor.tsx","../src/components/tag-editor/tag-editor-save-bar.tsx","../src/components/tag-editor/tag-settings-panel.tsx","../src/components/tree-list/tree-list-order.store.ts","../src/components/tree-list/tree-list-order-filter.ts","../src/components/tree-list/tree-list-visibility.store.ts","../src/utils/apply-file-icon-theme-preference.ts","../src/utils/file-icon-theme-preference.tsx","../src/utils/resolve-file-icon-element.tsx"],"sourcesContent":["import { Avatar, Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\n\nexport interface ActivityAvatarProps {\n actor?: ActivityActor;\n icon?: ReactNode;\n color?: string;\n background?: string;\n}\n\nexport const ActivityAvatar = (props: ActivityAvatarProps) => {\n const { actor, icon, color = \"fg.muted\", background = \"bg.muted\" } = props;\n\n if (icon) {\n return (\n <Box\n boxSize=\"18px\"\n borderRadius=\"full\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexShrink={0}\n color={color}\n background={background}\n >\n {icon}\n </Box>\n );\n }\n\n return (\n <Avatar.Root size=\"2xs\" flexShrink={0}>\n <Avatar.Image src={actor?.avatarSrc} alt={actor?.avatarAlt ?? actor?.name} />\n <Avatar.Fallback name={actor?.name} background={background} color={color} />\n </Avatar.Root>\n );\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const activityCommentSlotRecipe = defineSlotRecipe({\n className: \"activity-comment\",\n slots: [\"root\", \"body\", \"content\"],\n base: {\n root: {\n width: \"full\",\n borderWidth: \"1px\",\n borderRadius: \"xs\",\n overflow: \"hidden\",\n },\n body: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n content: {\n color: \"fg\",\n overflowWrap: \"anywhere\",\n whiteSpace: \"pre-wrap\",\n },\n },\n variants: {\n tone: {\n default: {\n root: {\n background: \"bg\",\n borderColor: \"border.subtle\",\n },\n },\n attention: {\n root: {\n background: \"bg.warning\",\n borderColor: \"border.warning\",\n },\n },\n },\n size: {\n comfortable: {\n body: {\n gap: \"sm\",\n padding: \"md\",\n },\n content: {\n textStyle: \"label/S/regular\",\n },\n },\n compact: {\n body: {\n gap: \"xs\",\n padding: \"sm\",\n },\n content: {\n textStyle: \"label/S/regular\",\n },\n },\n },\n },\n defaultVariants: {\n tone: \"default\",\n size: \"comfortable\",\n },\n});\n","import type { HTMLChakraProps, RecipeVariantProps } from \"@chakra-ui/react\";\nimport { Box, createSlotRecipeContext, HStack, Stack, Text } from \"@chakra-ui/react\";\nimport { Children, type ReactNode } from \"react\";\n\nimport { activityCommentSlotRecipe as recipe } from \"@/theme/recipes/activity-comment\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nconst { withContext, withProvider } = createSlotRecipeContext({ recipe });\n\ntype ActivityCommentVariantProps = RecipeVariantProps<typeof recipe>;\n\ninterface ActivityCommentHeaderProps {\n actor: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n actions?: ReactNode;\n}\n\ninterface ActivityCommentRootProps extends HTMLChakraProps<\"article\">, ActivityCommentVariantProps {}\n\nexport interface ActivityCommentProps extends Omit<ActivityCommentRootProps, \"title\"> {\n actor: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n actions?: ReactNode;\n replies?: ReactNode;\n composer?: ReactNode;\n children: ReactNode;\n}\n\nexport interface ActivityReplyProps extends Omit<HTMLChakraProps<\"div\">, \"title\"> {\n actor: ActivityActor;\n timestamp?: ReactNode;\n actions?: ReactNode;\n children: ReactNode;\n}\n\nconst TimestampSeparator = () => (\n <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />\n);\n\nconst ActivityCommentHeader = (props: ActivityCommentHeaderProps) => {\n const { actor, icon, iconColor, iconBackground, timestamp, actions } = props;\n\n return (\n <HStack gap=\"xs\" alignItems=\"center\" minW=\"0\">\n <ActivityAvatar actor={actor} icon={icon} color={iconColor} background={iconBackground} />\n <Text textStyle=\"label/S/medium\" color=\"fg\" truncate>\n {actor.name}\n </Text>\n {timestamp ? (\n <>\n <TimestampSeparator />\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n <Box marginLeft=\"auto\" flexShrink={0}>\n {actions}\n </Box>\n </HStack>\n );\n};\n\nconst ActivityCommentRoot = withProvider<HTMLDivElement, ActivityCommentRootProps>(\"article\", \"root\");\nconst ActivityCommentBody = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"body\");\nconst ActivityCommentContent = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"content\");\n\nexport const ActivityReply = (props: ActivityReplyProps) => {\n const { actor, timestamp, actions, children, ...rootProps } = props;\n\n return (\n <Box paddingX=\"md\" paddingY=\"sm\" {...rootProps}>\n <Stack gap=\"xs\">\n <ActivityCommentHeader actor={actor} timestamp={timestamp} actions={actions} />\n <Box paddingLeft=\"32px\">\n <Text as=\"div\" textStyle=\"label/S/regular\" color=\"fg\" overflowWrap=\"anywhere\">\n {children}\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n};\n\nexport const ActivityComment = (props: ActivityCommentProps) => {\n const { actor, icon, iconColor, iconBackground, timestamp, actions, replies, composer, children, ...rootProps } =\n props;\n const hasReplies = Children.count(replies) > 0;\n\n return (\n <ActivityCommentRoot {...rootProps}>\n <ActivityCommentBody>\n <ActivityCommentHeader\n actor={actor}\n icon={icon}\n iconColor={iconColor}\n iconBackground={iconBackground}\n timestamp={timestamp}\n actions={actions}\n />\n <ActivityCommentContent>{children}</ActivityCommentContent>\n </ActivityCommentBody>\n {hasReplies ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {replies}\n </Box>\n ) : null}\n {composer ? (\n <Box borderTopWidth=\"1px\" borderColor=\"border.subtle\">\n {composer}\n </Box>\n ) : null}\n </ActivityCommentRoot>\n );\n};\n","import type { HTMLChakraProps } from \"@chakra-ui/react\";\nimport { Box, chakra, HStack, Icon, IconButton, Spacer, Textarea } from \"@chakra-ui/react\";\nimport { ArrowUp, Paperclip } from \"lucide-react\";\nimport type { FormEvent, ReactNode } from \"react\";\nimport { useState } from \"react\";\n\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityComposerProps extends Omit<HTMLChakraProps<\"form\">, \"onChange\" | \"onSubmit\"> {\n actor?: ActivityActor;\n value?: string;\n defaultValue?: string;\n placeholder?: string;\n variant?: \"standalone\" | \"inline\";\n minRows?: number;\n attachLabel?: string;\n submitLabel?: string;\n actions?: ReactNode;\n onAttach?: () => void;\n onChange?: (value: string) => void;\n onSubmit?: (value: string) => void;\n}\n\nexport const ActivityComposer = (props: ActivityComposerProps) => {\n const {\n actor,\n value,\n defaultValue = \"\",\n placeholder = \"Leave a comment...\",\n variant = \"standalone\",\n minRows = variant === \"standalone\" ? 3 : 1,\n attachLabel = \"Attach file\",\n submitLabel = \"Submit comment\",\n actions,\n onAttach,\n onChange,\n onSubmit,\n ...rootProps\n } = props;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = value ?? internalValue;\n const isInline = variant === \"inline\";\n const canSubmit = currentValue.trim().length > 0;\n\n const handleChange = (nextValue: string) => {\n if (value === undefined) {\n setInternalValue(nextValue);\n }\n\n onChange?.(nextValue);\n };\n\n const handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (!canSubmit) return;\n\n onSubmit?.(currentValue.trim());\n\n if (value === undefined) {\n setInternalValue(\"\");\n }\n };\n\n return (\n <chakra.form\n width=\"full\"\n background=\"bg\"\n borderWidth={isInline ? \"0\" : \"1px\"}\n borderColor=\"border\"\n borderRadius={isInline ? \"0\" : \"sm\"}\n transition=\"border-color 0.12s ease\"\n _hover={isInline ? undefined : { borderColor: \"border\" }}\n _focusWithin={isInline ? undefined : { borderColor: \"border.accent\" }}\n onSubmit={handleSubmit}\n {...rootProps}\n >\n <HStack alignItems=\"flex-start\" gap=\"xs\" padding={isInline ? \"sm\" : \"md\"}>\n {actor ? <ActivityAvatar actor={actor} /> : null}\n <Box flex=\"1\" minW=\"0\">\n <Textarea\n value={currentValue}\n rows={minRows}\n resize=\"none\"\n border=\"0\"\n padding=\"0\"\n minH={isInline ? \"1.5rem\" : \"4rem\"}\n background=\"transparent\"\n color=\"fg\"\n textStyle=\"label/S/regular\"\n placeholder={placeholder}\n _placeholder={{ color: \"fg.subtle\" }}\n onChange={(event) => handleChange(event.currentTarget.value)}\n />\n <HStack gap=\"2xs\" marginTop={isInline ? \"0\" : \"sm\"}>\n {actions}\n <Spacer />\n <Tooltip content={attachLabel}>\n <IconButton size=\"2xs\" variant=\"ghost\" aria-label={attachLabel} type=\"button\" onClick={onAttach}>\n <Icon as={Paperclip} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n <Tooltip content={submitLabel}>\n <IconButton size=\"2xs\" variant=\"subtle\" aria-label={submitLabel} type=\"submit\" disabled={!canSubmit}>\n <Icon as={ArrowUp} boxSize=\"14px\" />\n </IconButton>\n </Tooltip>\n </HStack>\n </Box>\n </HStack>\n </chakra.form>\n );\n};\n","import type { TimelineItemProps } from \"@chakra-ui/react\";\nimport { Box, Text, Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityAvatar } from \"./activity-avatar\";\n\nexport interface ActivityEventProps extends Omit<TimelineItemProps, \"title\"> {\n actor?: ActivityActor;\n icon?: ReactNode;\n iconColor?: string;\n iconBackground?: string;\n timestamp?: ReactNode;\n children: ReactNode;\n}\n\nconst EventSeparator = () => <Box as=\"span\" boxSize=\"3px\" borderRadius=\"full\" background=\"fg.subtle\" flexShrink={0} />;\n\nexport const ActivityEvent = (props: ActivityEventProps) => {\n const { actor, icon, iconColor = \"fg\", iconBackground = \"transparent\", timestamp, children, ...rootProps } = props;\n\n return (\n <Timeline.Item gap=\"xs\" minH=\"24px\" paddingX=\"md\" {...rootProps}>\n <Timeline.Connector>\n <Timeline.Separator borderColor=\"border\" />\n <Timeline.Indicator outline=\"none\" border=\"none\" background=\"bg\">\n <ActivityAvatar actor={actor} icon={icon} color={iconColor} background={iconBackground} />\n </Timeline.Indicator>\n </Timeline.Connector>\n <Timeline.Content gap=\"0\" minW=\"0\">\n <Timeline.Title\n marginTop=\"0\"\n gap=\"xs\"\n minW=\"0\"\n fontWeight=\"normal\"\n textStyle=\"label/S/regular\"\n color=\"fg.muted\"\n >\n {actor ? (\n <Text as=\"span\" color=\"fg\" fontWeight=\"500\" flexShrink={0}>\n {actor.name}\n </Text>\n ) : null}\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" gap=\"2xs\" minW=\"0\" flexWrap=\"wrap\">\n {children}\n </Box>\n {timestamp ? (\n <>\n <EventSeparator />\n <Text as=\"span\" color=\"fg.muted\" flexShrink={0}>\n {timestamp}\n </Text>\n </>\n ) : null}\n </Timeline.Title>\n </Timeline.Content>\n </Timeline.Item>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { HStack, Stack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityRootProps extends StackProps {\n children: ReactNode;\n}\n\nexport interface ActivityHeaderProps extends Omit<StackProps, \"title\"> {\n title?: ReactNode;\n actions?: ReactNode;\n}\n\nexport interface ActivityFeedProps extends StackProps {\n children: ReactNode;\n}\n\nexport const ActivityRoot = (props: ActivityRootProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack width=\"full\" gap=\"md\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n\nexport const ActivityHeader = (props: ActivityHeaderProps) => {\n const { title = \"Activity\", actions, ...rootProps } = props;\n\n return (\n <HStack alignItems=\"center\" justifyContent=\"space-between\" gap=\"md\" {...rootProps}>\n <Text textStyle=\"label/M/medium\" color=\"fg\">\n {title}\n </Text>\n {actions ? <HStack gap=\"xs\">{actions}</HStack> : null}\n </HStack>\n );\n};\n\nexport const ActivityFeed = (props: ActivityFeedProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Stack gap=\"md\" width=\"full\" {...rootProps}>\n {children}\n </Stack>\n );\n};\n","import type { TimelineRootProps } from \"@chakra-ui/react\";\nimport { Timeline } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ActivityTimelineProps extends TimelineRootProps {\n children: ReactNode;\n}\n\nexport const ActivityTimeline = (props: ActivityTimelineProps) => {\n const { children, ...rootProps } = props;\n\n return (\n <Timeline.Root size=\"sm\" variant=\"plain\" width=\"full\" css={{ \"--timeline-indicator-size\": \"18px\" }} {...rootProps}>\n {children}\n </Timeline.Root>\n );\n};\n","import type { StackProps } from \"@chakra-ui/react\";\nimport { Button, HStack, Icon, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport {\n Activity,\n Bell,\n CircleAlert,\n Component,\n ExternalLink,\n GitBranch,\n Info,\n MessageCircle,\n ScanSearch,\n Sparkles,\n} from \"lucide-react\";\nimport { type ComponentType, lazy, type ReactNode, Suspense } from \"react\";\n\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport type { ActivityActor } from \"./activity.types\";\nimport { ActivityComment } from \"./activity-comment\";\nimport { ActivityEvent } from \"./activity-event\";\nimport { ActivityFeed } from \"./activity-root\";\nimport { ActivityTimeline } from \"./activity-timeline\";\n\nconst RichMessage = /* @__PURE__ */ lazy(() =>\n import(\"../rich-text/rich-message/rich-message\").then((module) => ({ default: module.RichMessage })),\n);\n\nexport type ResourceActivityFeedSize = \"comfortable\" | \"compact\";\n\nexport type ResourceActivityIconName =\n | \"activity\"\n | \"bell\"\n | \"circle-alert\"\n | \"component\"\n | \"external-link\"\n | \"git-branch\"\n | \"info\"\n | \"message-circle\"\n | \"scan-search\"\n | \"sparkles\";\n\nexport interface ResourceActivityRelatedResource {\n id: string;\n type: string;\n label: string;\n}\n\nexport interface ResourceActivityFeedAction {\n id: string;\n label: string;\n icon?: ResourceActivityIconName;\n}\n\nexport interface ResourceActivityFeedAttention {\n statusLabel?: string;\n icon?: ResourceActivityIconName;\n actions?: readonly ResourceActivityFeedAction[];\n}\n\ninterface ResourceActivityFeedItemBase {\n id: string;\n createdAt: string;\n timestampLabel?: string;\n actor?: ActivityActor;\n icon?: ResourceActivityIconName;\n relatedResources?: readonly ResourceActivityRelatedResource[];\n}\n\nexport interface ResourceActivityFeedEventItem extends ResourceActivityFeedItemBase {\n kind: \"event\";\n summary: string;\n}\n\nexport interface ResourceActivityFeedMessageItem extends ResourceActivityFeedItemBase {\n kind: \"message\";\n markdown: string;\n attention?: ResourceActivityFeedAttention;\n}\n\nexport type ResourceActivityFeedItem = ResourceActivityFeedEventItem | ResourceActivityFeedMessageItem;\n\nexport interface ResourceActivityFeedProps extends Omit<StackProps, \"children\"> {\n items: readonly ResourceActivityFeedItem[];\n size?: ResourceActivityFeedSize;\n isLoading?: boolean;\n error?: string | null;\n hasMore?: boolean;\n isLoadingMore?: boolean;\n emptyTitle?: string;\n emptyDescription?: string;\n errorTitle?: string;\n loadMoreLabel?: string;\n loadingLabel?: string;\n fallbackActorName?: string;\n formatTimestamp?: (createdAt: string, item: ResourceActivityFeedItem) => ReactNode;\n onActionSelect?: (action: ResourceActivityFeedAction, item: ResourceActivityFeedMessageItem) => void;\n onLoadMore?: () => void;\n onRelatedResourceSelect?: (resource: ResourceActivityRelatedResource, item: ResourceActivityFeedItem) => void;\n}\n\ninterface ItemActionsProps {\n item: ResourceActivityFeedItem;\n size: ResourceActivityFeedSize;\n onActionSelect?: ResourceActivityFeedProps[\"onActionSelect\"];\n onRelatedResourceSelect?: ResourceActivityFeedProps[\"onRelatedResourceSelect\"];\n}\n\ninterface ResourceActivityItemProps extends ItemActionsProps {\n fallbackActorName: string;\n formatTimestamp: NonNullable<ResourceActivityFeedProps[\"formatTimestamp\"]>;\n}\n\nconst iconComponents: Record<ResourceActivityIconName, ComponentType> = {\n activity: Activity,\n bell: Bell,\n \"circle-alert\": CircleAlert,\n component: Component,\n \"external-link\": ExternalLink,\n \"git-branch\": GitBranch,\n info: Info,\n \"message-circle\": MessageCircle,\n \"scan-search\": ScanSearch,\n sparkles: Sparkles,\n};\n\nconst ActivityIcon = (props: { name: ResourceActivityIconName }) => {\n const IconComponent = iconComponents[props.name];\n return <Icon as={IconComponent} boxSize=\"13px\" />;\n};\n\nconst ItemActions = (props: ItemActionsProps) => {\n const { item, size, onActionSelect, onRelatedResourceSelect } = props;\n const attentionActions = item.kind === \"message\" ? item.attention?.actions : undefined;\n if (!item.relatedResources?.length && !attentionActions?.length) return null;\n\n return (\n <HStack gap=\"2xs\" flexWrap=\"wrap\">\n {attentionActions?.map((action) => (\n <Button\n key={action.id}\n type=\"button\"\n size={size === \"compact\" ? \"2xs\" : \"xs\"}\n variant=\"outline\"\n disabled={!onActionSelect}\n onClick={() => onActionSelect?.(action, item as ResourceActivityFeedMessageItem)}\n >\n {action.icon ? <ActivityIcon name={action.icon} /> : null}\n {action.label}\n </Button>\n ))}\n {item.relatedResources?.map((resource) => (\n <Button\n key={`${resource.type}:${resource.id}`}\n type=\"button\"\n size={size === \"compact\" ? \"2xs\" : \"xs\"}\n variant=\"ghost\"\n disabled={!onRelatedResourceSelect}\n onClick={() => onRelatedResourceSelect?.(resource, item)}\n >\n {resource.label}\n </Button>\n ))}\n </HStack>\n );\n};\n\nconst AttentionStatus = (props: { attention: ResourceActivityFeedAttention }) => {\n const { attention } = props;\n if (!attention.statusLabel) return null;\n\n return (\n <HStack gap=\"2xs\" color=\"fg.warning\">\n <ActivityIcon name={attention.icon ?? \"bell\"} />\n <Text textStyle=\"label/XS/medium\">{attention.statusLabel}</Text>\n </HStack>\n );\n};\n\nconst ResourceActivityItem = (props: ResourceActivityItemProps) => {\n const { item, size, fallbackActorName, formatTimestamp, onActionSelect, onRelatedResourceSelect } = props;\n const actor = item.actor ?? { name: fallbackActorName };\n const timestamp = (\n <time dateTime={item.createdAt}>{item.timestampLabel ?? formatTimestamp(item.createdAt, item)}</time>\n );\n\n if (item.kind === \"event\") {\n return (\n <ActivityTimeline>\n <ActivityEvent\n actor={actor}\n icon={item.icon ? <ActivityIcon name={item.icon} /> : undefined}\n timestamp={timestamp}\n paddingX={size === \"compact\" ? \"sm\" : \"md\"}\n >\n <Text as=\"span\">{item.summary}</Text>\n <ItemActions item={item} size={size} onRelatedResourceSelect={onRelatedResourceSelect} />\n </ActivityEvent>\n </ActivityTimeline>\n );\n }\n\n const attentionIcon = item.attention?.icon ?? \"bell\";\n\n return (\n <ActivityComment\n actor={actor}\n icon={item.attention ? <ActivityIcon name={attentionIcon} /> : undefined}\n iconColor={item.attention ? \"fg.warning\" : undefined}\n iconBackground={item.attention ? \"bg.warning\" : undefined}\n timestamp={timestamp}\n actions={item.attention ? <AttentionStatus attention={item.attention} /> : undefined}\n tone={item.attention ? \"attention\" : \"default\"}\n size={size}\n >\n <Stack gap={size === \"compact\" ? \"xs\" : \"sm\"}>\n <Suspense fallback={<Text>{item.markdown}</Text>}>\n <RichMessage defaultState={item.markdown} fullWidth />\n </Suspense>\n <ItemActions\n item={item}\n size={size}\n onActionSelect={onActionSelect}\n onRelatedResourceSelect={onRelatedResourceSelect}\n />\n </Stack>\n </ActivityComment>\n );\n};\n\nconst defaultFormatTimestamp = (createdAt: string) => createdAt;\n\nexport const ResourceActivityFeed = (props: ResourceActivityFeedProps) => {\n const {\n items,\n size = \"comfortable\",\n isLoading = false,\n error,\n hasMore = false,\n isLoadingMore = false,\n emptyTitle = \"No activity yet\",\n emptyDescription = \"Events and messages will appear here.\",\n errorTitle = \"Activity unavailable\",\n loadMoreLabel = \"Load more\",\n loadingLabel = \"Loading activity\",\n fallbackActorName = \"System\",\n formatTimestamp = defaultFormatTimestamp,\n onActionSelect,\n onLoadMore,\n onRelatedResourceSelect,\n ...rootProps\n } = props;\n\n if (error) {\n return (\n <AlertMessage status=\"error\" colorPalette=\"red\" title={errorTitle} size=\"sm\" {...rootProps}>\n {error}\n </AlertMessage>\n );\n }\n\n if (isLoading && items.length === 0) {\n return (\n <HStack role=\"status\" aria-live=\"polite\" gap=\"xs\" color=\"fg.muted\" {...rootProps}>\n <Spinner size=\"sm\" />\n <Text textStyle=\"label/S/regular\">{loadingLabel}</Text>\n </HStack>\n );\n }\n\n if (items.length === 0) {\n return <EmptyState title={emptyTitle} description={emptyDescription} {...rootProps} />;\n }\n\n return (\n <ActivityFeed gap={size === \"compact\" ? \"sm\" : \"md\"} {...rootProps}>\n {items.map((item) => (\n <ResourceActivityItem\n key={item.id}\n item={item}\n size={size}\n fallbackActorName={fallbackActorName}\n formatTimestamp={formatTimestamp}\n onActionSelect={onActionSelect}\n onRelatedResourceSelect={onRelatedResourceSelect}\n />\n ))}\n {hasMore ? (\n <Button\n type=\"button\"\n width=\"full\"\n size={size === \"compact\" ? \"xs\" : \"sm\"}\n variant=\"ghost\"\n loading={isLoadingMore}\n onClick={onLoadMore}\n >\n {loadMoreLabel}\n </Button>\n ) : null}\n </ActivityFeed>\n );\n};\n","import { ActivityAvatar } from \"./activity-avatar\";\nimport { ActivityComment, ActivityReply } from \"./activity-comment\";\nimport { ActivityComposer } from \"./activity-composer\";\nimport { ActivityEvent } from \"./activity-event\";\nimport { ActivityFeed, ActivityHeader, ActivityRoot } from \"./activity-root\";\nimport { ActivityTimeline } from \"./activity-timeline\";\nimport { ResourceActivityFeed } from \"./resource-activity-feed\";\n\nexport type { ActivityActor } from \"./activity.types\";\nexport type { ActivityAvatarProps } from \"./activity-avatar\";\nexport type { ActivityCommentProps, ActivityReplyProps } from \"./activity-comment\";\nexport type { ActivityComposerProps } from \"./activity-composer\";\nexport type { ActivityEventProps } from \"./activity-event\";\nexport type { ActivityFeedProps, ActivityHeaderProps, ActivityRootProps } from \"./activity-root\";\nexport type { ActivityTimelineProps } from \"./activity-timeline\";\nexport type {\n ResourceActivityFeedAction,\n ResourceActivityFeedAttention,\n ResourceActivityFeedEventItem,\n ResourceActivityFeedItem,\n ResourceActivityFeedMessageItem,\n ResourceActivityFeedProps,\n ResourceActivityFeedSize,\n ResourceActivityIconName,\n ResourceActivityRelatedResource,\n} from \"./resource-activity-feed\";\n\nexport {\n ActivityAvatar,\n ActivityComment,\n ActivityComposer,\n ActivityEvent,\n ActivityFeed,\n ActivityHeader,\n ActivityReply,\n ActivityRoot,\n ActivityTimeline,\n ResourceActivityFeed,\n};\n\nexport const Activity = {\n Root: ActivityRoot,\n Header: ActivityHeader,\n Feed: ActivityFeed,\n Timeline: ActivityTimeline,\n Event: ActivityEvent,\n Comment: ActivityComment,\n Reply: ActivityReply,\n Composer: ActivityComposer,\n Avatar: ActivityAvatar,\n};\n","import type { ReactNode } from \"react\";\n\nexport const DEFAULT_PALETTE_ASSET_LIMIT = 48;\n\nexport interface PaletteSearchEntry {\n id: string;\n mode?: string;\n label: ReactNode;\n searchText?: string;\n secondaryLabel?: ReactNode;\n assetType?: string;\n}\n\nexport interface PaletteMode {\n id: string;\n inputPrefix?: string;\n}\n\nexport interface FilterPaletteEntriesOptions {\n query: string;\n mode?: string;\n getEffectiveQuery?: (query: string) => string;\n defaultAssetLimit?: number;\n}\n\nconst getSearchableText = (entry: PaletteSearchEntry) => {\n const label = typeof entry.label === \"string\" ? entry.label : \"\";\n const secondaryLabel = typeof entry.secondaryLabel === \"string\" ? entry.secondaryLabel : \"\";\n\n return `${label} ${entry.searchText ?? \"\"} ${secondaryLabel}`;\n};\n\nconst hasInputPrefix = (query: string, inputPrefix: string) => query.trimStart().startsWith(inputPrefix);\n\nexport const resolvePaletteMode = (query: string, modes: readonly PaletteMode[] = [], fallbackMode?: string) => {\n const prefixedMode = modes.find((mode) => mode.inputPrefix && hasInputPrefix(query, mode.inputPrefix));\n\n return prefixedMode?.id ?? fallbackMode ?? modes.find((mode) => !mode.inputPrefix)?.id ?? modes[0]?.id;\n};\n\nexport const getPaletteEffectiveQuery = (query: string, modes: readonly PaletteMode[] = [], modeId?: string) => {\n const mode = modes.find(\n (candidate) => candidate.id === modeId && candidate.inputPrefix && hasInputPrefix(query, candidate.inputPrefix),\n );\n\n if (!mode?.inputPrefix) return query.trim();\n\n return query.trimStart().slice(mode.inputPrefix.length).trim();\n};\n\nconst limitDefaultAssetEntries = <T extends PaletteSearchEntry>(entries: T[], limit: number) => {\n const counts: Record<string, number> = {};\n\n return entries.filter((entry) => {\n const assetType = entry.assetType;\n if (!assetType) return true;\n\n const count = counts[assetType] ?? 0;\n if (count >= limit) return false;\n\n counts[assetType] = count + 1;\n return true;\n });\n};\n\nexport const filterPaletteEntries = <T extends PaletteSearchEntry>(\n entries: T[],\n options: FilterPaletteEntriesOptions,\n) => {\n const effectiveQuery = (options.getEffectiveQuery?.(options.query) ?? options.query.trim()).toLowerCase();\n\n const filteredEntries = entries.filter((entry) => {\n if (options.mode && entry.mode !== options.mode) return false;\n if (!effectiveQuery) return true;\n\n return getSearchableText(entry).toLowerCase().includes(effectiveQuery);\n });\n\n if (effectiveQuery || options.defaultAssetLimit === undefined) {\n return filteredEntries;\n }\n\n return limitDefaultAssetEntries(filteredEntries, options.defaultAssetLimit);\n};\n","import { Box, HStack, Icon, Text } from \"@chakra-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { Check } from \"lucide-react\";\nimport { type RefObject, useEffect } from \"react\";\nimport type { PaletteEntry } from \"@/components/command-palette/palette\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport type { ListRowItem } from \"@/components/list-row/list-row.types\";\n\ntype PaletteRow<T extends PaletteEntry> =\n | { type: \"group\"; id: string; label: string }\n | { type: \"entry\"; id: string; entry: T; entryIndex: number };\n\nconst GROUP_ROW_HEIGHT = 24;\nconst ENTRY_ROW_HEIGHT = 40;\nconst INITIAL_VIEWPORT_HEIGHT = 384;\n\nconst buildEntryItem = (entry: PaletteEntry): ListRowItem => ({\n id: entry.id,\n label: entry.label,\n description: entry.description ?? entry.secondaryLabel,\n icon: entry.icon,\n endContent:\n entry.endContent ??\n (entry.shortcut || entry.isSelected ? (\n <HStack gap=\"2\">\n {entry.shortcut}\n {entry.isSelected ? <Icon as={Check} boxSize=\"14px\" color=\"fg.muted\" /> : null}\n </HStack>\n ) : undefined),\n onActivate: entry.onActivate,\n});\n\nconst buildRows = <T extends PaletteEntry>(entries: T[]) => {\n const rows: PaletteRow<T>[] = [];\n\n entries.forEach((entry, index) => {\n const previousEntry = entries[index - 1];\n if (entry.group && entry.group !== previousEntry?.group) {\n rows.push({ type: \"group\", id: `group:${entry.group}:${entry.id}`, label: entry.group });\n }\n\n rows.push({ type: \"entry\", id: entry.id, entry, entryIndex: index });\n });\n\n return rows;\n};\n\nconst getActiveRowIndex = <T extends PaletteEntry>(rows: PaletteRow<T>[], activeIndex: number) =>\n rows.findIndex((row) => row.type === \"entry\" && row.entryIndex === activeIndex);\n\ninterface PaletteListProps<T extends PaletteEntry> {\n entries: T[];\n activeIndex: number;\n emptyLabel: string;\n onHover: (index: number) => void;\n scrollRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const PaletteList = <T extends PaletteEntry>(props: PaletteListProps<T>) => {\n const { entries, activeIndex, emptyLabel, onHover, scrollRef } = props;\n const rows = buildRows(entries);\n const activeRowIndex = getActiveRowIndex(rows, activeIndex);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => (rows[index]?.type === \"group\" ? GROUP_ROW_HEIGHT : ENTRY_ROW_HEIGHT),\n getItemKey: (index) => rows[index]?.id ?? index,\n initialRect: { width: 0, height: INITIAL_VIEWPORT_HEIGHT },\n overscan: 6,\n });\n\n useEffect(() => {\n if (activeRowIndex < 0) return;\n\n virtualizer.scrollToIndex(activeRowIndex, { align: \"auto\", behavior: \"auto\" });\n }, [activeRowIndex, virtualizer]);\n\n if (entries.length === 0) {\n return (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n );\n }\n\n return (\n <Box role=\"listbox\" position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((virtualRow) => {\n const row = rows[virtualRow.index];\n if (!row) return null;\n\n return (\n <Box\n key={virtualRow.key}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n style={{ top: virtualRow.start }}\n >\n {row.type === \"group\" ? (\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\" pb=\"2xs\">\n {row.label}\n </Text>\n ) : (\n <ListRow\n variant=\"full-width\"\n {...buildEntryItem(row.entry)}\n isSelected={row.entryIndex === activeIndex}\n tabIndex={-1}\n onPointerMove={() => onHover(row.entryIndex)}\n />\n )}\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { Box, CloseButton, Dialog, Input, InputGroup } from \"@chakra-ui/react\";\nimport type { KeyboardEventHandler, ReactNode, Ref } from \"react\";\nimport { ScrollArea, type ScrollAreaProps } from \"@/components/primitives/scroll-area\";\n\nexport interface SearchModalContentProps {\n children: ReactNode;\n searchValue: string;\n searchPlaceholder: string;\n searchAriaLabel?: string;\n searchIcon?: ReactNode;\n searchInputRef?: Ref<HTMLInputElement>;\n searchAutoFocus?: boolean;\n showCloseButton?: boolean;\n closeButtonLabel?: string;\n bodyBefore?: ReactNode;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n scrollAreaProps?: Omit<ScrollAreaProps, \"children\">;\n onSearchChange: (value: string) => void;\n onSearchKeyDown?: KeyboardEventHandler<HTMLInputElement>;\n}\n\nconst hasContent = (value: ReactNode) => value !== undefined && value !== null;\n\nconst footerJustifyContent = (hasFooterStart: boolean, hasFooterEnd: boolean) => {\n if (hasFooterStart && hasFooterEnd) return \"space-between\";\n if (hasFooterEnd) return \"flex-end\";\n return \"flex-start\";\n};\n\nexport const SearchModalContent = (props: SearchModalContentProps) => {\n const {\n children,\n searchValue,\n searchPlaceholder,\n searchAriaLabel = searchPlaceholder,\n searchIcon,\n searchInputRef,\n searchAutoFocus,\n showCloseButton = false,\n closeButtonLabel = \"Close\",\n bodyBefore,\n footerStart,\n footerEnd,\n scrollAreaProps,\n onSearchChange,\n onSearchKeyDown,\n } = props;\n const hasFooterStart = hasContent(footerStart);\n const hasFooterEnd = hasContent(footerEnd);\n const { maxH = \"24rem\", showHorizontalScrollbar = false, ...restScrollAreaProps } = scrollAreaProps ?? {};\n\n return (\n <>\n <Dialog.Header px=\"0\" py=\"0\" borderBottomWidth=\"1px\" borderBottomColor=\"border.subtle\">\n <InputGroup startElement={searchIcon} width=\"full\">\n <Input\n ref={searchInputRef}\n value={searchValue}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n autoComplete=\"off\"\n autoFocus={searchAutoFocus}\n mx=\"xs\"\n h=\"3rem\"\n variant=\"borderless\"\n onChange={(event) => onSearchChange(event.target.value)}\n onKeyDown={onSearchKeyDown}\n />\n </InputGroup>\n {showCloseButton ? (\n <Dialog.CloseTrigger asChild>\n <CloseButton aria-label={closeButtonLabel} size=\"sm\" mr=\"2\" />\n </Dialog.CloseTrigger>\n ) : null}\n </Dialog.Header>\n <Dialog.Body p=\"0\">\n {bodyBefore}\n <ScrollArea maxH={maxH} showHorizontalScrollbar={showHorizontalScrollbar} {...restScrollAreaProps}>\n {children}\n </ScrollArea>\n </Dialog.Body>\n {hasFooterStart || hasFooterEnd ? (\n <Dialog.Footer\n justifyContent={footerJustifyContent(hasFooterStart, hasFooterEnd)}\n px=\"sm\"\n py=\"xs\"\n borderTopWidth=\"1px\"\n borderTopColor=\"border.subtle\"\n >\n {hasFooterStart ? <Box minW=\"0\">{footerStart}</Box> : null}\n {hasFooterEnd ? <Box flexShrink={0}>{footerEnd}</Box> : null}\n </Dialog.Footer>\n ) : null}\n </>\n );\n};\n","import { Dialog } from \"@chakra-ui/react\";\nimport type { KeyboardEvent, ReactNode, SetStateAction } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n DEFAULT_PALETTE_ASSET_LIMIT,\n type FilterPaletteEntriesOptions,\n filterPaletteEntries,\n getPaletteEffectiveQuery,\n type PaletteMode,\n type PaletteSearchEntry,\n resolvePaletteMode,\n} from \"@/components/command-palette/palette-filter\";\nimport { PaletteList } from \"@/components/command-palette/palette-list\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\n\nexport type { FilterPaletteEntriesOptions, PaletteMode, PaletteSearchEntry };\nexport { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries };\n\nexport interface PaletteEntry extends PaletteSearchEntry {\n description?: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n endContent?: ReactNode;\n group?: string;\n isSelected?: boolean;\n onActivate: () => void;\n}\n\nexport interface PaletteState<T extends PaletteEntry> {\n query: string;\n mode?: string;\n activeIndex: number;\n entries: T[];\n}\n\nexport interface PaletteEscapeContext<T extends PaletteEntry> extends PaletteState<T> {\n activeEntry: T | null;\n entryCount: number;\n setQuery: (query: string) => void;\n setActiveIndex: (index: SetStateAction<number>) => void;\n runActiveEntry: () => void;\n closePalette: () => void;\n}\n\nexport type PaletteStateValue<T extends PaletteEntry, TValue> = TValue | ((state: PaletteState<T>) => TValue);\n\nexport interface PaletteProps<T extends PaletteEntry = PaletteEntry> {\n open: boolean;\n entries: T[];\n initialQuery?: string;\n initialActiveIndex?: number;\n mode?: string;\n modes?: PaletteMode[];\n resetKey?: string;\n inputIcon?: PaletteStateValue<T, ReactNode>;\n placeholder?: PaletteStateValue<T, string>;\n emptyLabel?: string;\n footerStart?: ReactNode;\n footerEnd?: ReactNode;\n filterEntries?: (entries: T[], query: string, mode?: string) => T[];\n onActiveEntryChange?: (entry: T | null, index: number) => void;\n onQueryChange?: (query: string) => void;\n onClose: () => void;\n onEscape?: (ctx: PaletteEscapeContext<T>) => boolean | undefined;\n}\n\nconst resolveStateValue = <T extends PaletteEntry, TValue>(\n value: PaletteStateValue<T, TValue> | undefined,\n state: PaletteState<T>,\n fallback: TValue,\n) => {\n if (typeof value === \"function\") {\n return (value as (state: PaletteState<T>) => TValue)(state);\n }\n\n return value ?? fallback;\n};\n\nexport const Palette = <T extends PaletteEntry>(props: PaletteProps<T>) => {\n const {\n open,\n entries,\n initialQuery = \"\",\n initialActiveIndex = 0,\n mode,\n modes,\n resetKey = \"default\",\n inputIcon,\n placeholder,\n emptyLabel = \"No results.\",\n footerStart,\n footerEnd,\n filterEntries,\n onActiveEntryChange,\n onQueryChange,\n onClose,\n onEscape,\n } = props;\n const [query, setQueryState] = useState(initialQuery);\n const [activeIndex, setActiveIndex] = useState(initialActiveIndex);\n const inputRef = useRef<HTMLInputElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n const setupRef = useRef({ open: false, resetKey });\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = filterEntries\n ? filterEntries(entries, query, activeMode)\n : filterPaletteEntries(entries, {\n query,\n mode: activeMode,\n getEffectiveQuery: (value) => getPaletteEffectiveQuery(value, modes, activeMode),\n });\n const activeEntry = filteredEntries[activeIndex] ?? null;\n const state: PaletteState<T> = { query, mode: activeMode, activeIndex, entries: filteredEntries };\n const resolvedInputIcon = resolveStateValue(inputIcon, state, null);\n const resolvedPlaceholder = resolveStateValue(placeholder, state, \"Search\");\n\n const setQuery = (nextQuery: string) => {\n setQueryState(nextQuery);\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n const previousSetup = setupRef.current;\n setupRef.current = { open, resetKey };\n if (!open) return;\n\n const shouldInitialize = !previousSetup.open || previousSetup.resetKey !== resetKey;\n if (!shouldInitialize) return;\n\n setQueryState(initialQuery);\n setActiveIndex(initialActiveIndex);\n\n const timeout = setTimeout(() => {\n const input = inputRef.current;\n if (!input) return;\n input.focus();\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }, 0);\n return () => clearTimeout(timeout);\n }, [initialActiveIndex, initialQuery, open, resetKey]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(filteredEntries.length - 1, 0)));\n }, [filteredEntries.length]);\n\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntry, activeIndex, onActiveEntryChange]);\n\n const handleEscape = () => {\n const handled = onEscape?.({\n ...state,\n activeEntry,\n entryCount: filteredEntries.length,\n setQuery,\n setActiveIndex,\n runActiveEntry,\n closePalette,\n });\n if (handled) return;\n\n if (query.length > 0) {\n setQuery(\"\");\n setActiveIndex(0);\n return;\n }\n\n closePalette();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(filteredEntries.length - 1, 0)));\n return;\n }\n\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n\n if (event.key === \"Enter\") {\n event.preventDefault();\n runActiveEntry();\n return;\n }\n\n if (event.key !== \"Escape\") return;\n\n event.preventDefault();\n event.stopPropagation();\n handleEscape();\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={(details) => !details.open && closePalette()}>\n <Dialog.Backdrop />\n <Dialog.Positioner alignItems=\"center\" justifyContent=\"center\" p=\"md\">\n <Dialog.Content maxW=\"44rem\" w=\"full\" p=\"0\" overflow=\"hidden\" borderWidth=\"1px\" borderColor=\"border.subtle\">\n <SearchModalContent\n searchValue={query}\n searchPlaceholder={resolvedPlaceholder}\n searchIcon={resolvedInputIcon}\n searchInputRef={inputRef}\n showCloseButton\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{\n maxH: \"24rem\",\n showHorizontalScrollbar: false,\n viewportRef: scrollRef,\n viewportProps: { style: { overflowAnchor: \"none\" } },\n }}\n onSearchChange={(nextQuery) => {\n setQuery(nextQuery);\n setActiveIndex(0);\n }}\n onSearchKeyDown={handleKeyDown}\n >\n <PaletteList\n entries={filteredEntries}\n activeIndex={activeIndex}\n emptyLabel={emptyLabel}\n onHover={setActiveIndex}\n scrollRef={scrollRef}\n />\n </SearchModalContent>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\n\nexport type PaletteShortcutBinding = string | string[];\ntype ShortcutPlatform = \"linux\" | \"mac\" | \"win\";\n\ninterface ShortcutDisplayPart {\n label: string;\n Icon?: LucideIcon;\n}\n\nconst nonMacModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Alt\" },\n control: { label: \"Ctrl\" },\n ctrl: { label: \"Ctrl\" },\n mod: { label: \"Ctrl\" },\n shift: { label: \"Shift\" },\n};\n\nconst macModifierLabels: Record<string, ShortcutDisplayPart> = {\n alt: { label: \"Option\", Icon: Option },\n cmd: { label: \"Command\", Icon: Command },\n command: { label: \"Command\", Icon: Command },\n meta: { label: \"Command\", Icon: Command },\n mod: { label: \"Command\", Icon: Command },\n option: { label: \"Option\", Icon: Option },\n shift: { label: \"Shift\" },\n};\n\nconst keyLabels: Record<string, ShortcutDisplayPart> = {\n arrowleft: { label: \"Arrow Left\", Icon: ArrowLeft },\n arrowright: { label: \"Arrow Right\", Icon: ArrowRight },\n};\n\nconst getShortcutPlatform = (): ShortcutPlatform => {\n if (typeof navigator === \"undefined\") return \"linux\";\n\n const platform = navigator.platform?.toLowerCase() ?? \"\";\n if (platform.includes(\"mac\")) return \"mac\";\n if (platform.includes(\"win\")) return \"win\";\n return \"linux\";\n};\n\nexport const resolveShortcutDisplayPart = (label: string, platform = getShortcutPlatform()): ShortcutDisplayPart => {\n const normalized = label.toLowerCase();\n const modifierLabels = platform === \"mac\" ? macModifierLabels : nonMacModifierLabels;\n return keyLabels[normalized] ?? modifierLabels[normalized] ?? { label };\n};\n\nconst splitShortcutStep = (step: string) => {\n return step\n .split(\"+\")\n .map((part) => part.trim())\n .filter(Boolean);\n};\n\nconst getShortcutDisplayParts = (binding: PaletteShortcutBinding) => {\n const steps = Array.isArray(binding) ? binding.map(splitShortcutStep) : [splitShortcutStep(binding)];\n\n return steps.map((step) => step.map((label) => resolveShortcutDisplayPart(label)));\n};\n\nexport const PaletteShortcut = (props: { binding: PaletteShortcutBinding }) => {\n const { binding } = props;\n const steps = getShortcutDisplayParts(binding);\n\n return (\n <>\n {steps.map((step, stepIndex) => (\n <Fragment key={`${step.map((part) => part.label).join(\"+\")}-${stepIndex}`}>\n {step.map((part, partIndex) => (\n <Fragment key={`${part.label}-${partIndex}`}>\n <Kbd\n fontSize=\"xs\"\n borderRadius=\"0\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n aria-label={part.label}\n >\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n {partIndex < step.length - 1 ? \" \" : null}\n </Fragment>\n ))}\n {stepIndex < steps.length - 1 ? \" then \" : null}\n </Fragment>\n ))}\n </>\n );\n};\n","import { HStack, type StackProps } from \"@chakra-ui/react\";\n\ninterface HorizontalMenuStackProps extends StackProps {\n children?: StackProps[\"children\"];\n}\n\nexport function HorizontalMenuStack(props: HorizontalMenuStackProps) {\n const { children, h = \"41px\", px = \"xs\", py = \"xs\", borderBottomWidth = \"1px\", ...rest } = props;\n\n return (\n <HStack\n {...rest}\n h={h}\n justify=\"space-between\"\n align=\"center\"\n borderBottomWidth={borderBottomWidth}\n borderColor={\"border.subtle\"}\n px={px}\n py={py}\n >\n {children}\n </HStack>\n );\n}\n","import { Box, Collapsible, Flex, Text } from \"@chakra-ui/react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nexport interface ItemSectionProps {\n children: ReactNode;\n title?: string;\n defaultOpen?: boolean;\n action?: ReactNode;\n}\n\n/**\n * A collapsible section wrapper with a title trigger and optional action.\n */\nexport const ItemSection = (props: ItemSectionProps) => {\n const { children, title, defaultOpen = true, action } = props;\n\n return (\n <Collapsible.Root defaultOpen={defaultOpen} width=\"full\">\n <Flex>\n <Collapsible.Trigger\n _hover={{\n background: \"bg.hover\",\n }}\n padding=\"sm\"\n height=\"2rem\"\n display=\"flex\"\n width=\"full\"\n gap=\"2\"\n alignItems=\"center\"\n cursor=\"pointer\"\n justifyContent=\"space-between\"\n >\n {title && (\n <Text fontWeight=\"600\" textStyle=\"label/S/medium\">\n {title}\n </Text>\n )}\n <Collapsible.Indicator transition=\"transform 0.2s\" _open={{ transform: \"rotate(90deg)\" }}>\n <ChevronRight size={16} />\n </Collapsible.Indicator>\n </Collapsible.Trigger>\n {action && (\n <Box marginLeft=\"auto\" onClick={(e) => e.stopPropagation()}>\n {action}\n </Box>\n )}\n </Flex>\n <Collapsible.Content>{children}</Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","export const PANEL_HEADER_HEIGHT = \"2.5rem\";\nexport const PANEL_HEADER_CONTROL_SIZE = \"2xs\" as const;\nexport const PANEL_HEADER_TAB_SIZE = \"sm\" as const;\n","import { Badge, Box, Button, HStack, Icon, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { Bell, Search, X } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useRef, useState } from \"react\";\nimport { SearchModalContent } from \"@/components/overlays/search-modal-content\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ListRowAction } from \"../list-row/list-row.types\";\nimport type {\n NotificationCenterAction,\n NotificationCenterItem,\n NotificationCenterProps,\n} from \"./notification-center.types\";\n\nconst priorityColorPalette = (priority: NotificationCenterItem[\"priority\"]) => {\n if (priority === \"urgent\") return \"red\";\n if (priority === \"high\") return \"orange\";\n if (priority === \"low\") return \"gray\";\n return \"blue\";\n};\n\nconst shouldShowPriorityBadge = (priority: NotificationCenterItem[\"priority\"]) => priority !== \"normal\";\n\nconst itemSearchText = (item: NotificationCenterItem) =>\n [\n item.title,\n item.body,\n item.kind,\n item.priority,\n item.status,\n item.sourceLabel,\n item.targetLabel,\n item.searchText,\n ...(item.actions ?? []).map((action) => action.label),\n ]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n\nconst filterItems = (items: NotificationCenterItem[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n if (!normalizedQuery) return items;\n return items.filter((item) => itemSearchText(item).includes(normalizedQuery));\n};\n\nconst groupItems = (items: NotificationCenterItem[]) => {\n const needsInput = items.filter((item) => item.kind === \"blocked\");\n const urgent = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"urgent\" || item.priority === \"high\"),\n );\n const normal = items.filter(\n (item) => item.kind !== \"blocked\" && (item.priority === \"normal\" || item.priority === \"low\"),\n );\n return [\n { id: \"needs-input\", label: \"Needs input\", items: needsInput },\n { id: \"attention\", label: \"Needs attention\", items: urgent },\n { id: \"other\", label: \"Other\", items: normal },\n ].filter((group) => group.items.length > 0);\n};\n\nconst orderItemsForDisplay = (items: NotificationCenterItem[]) => groupItems(items).flatMap((group) => group.items);\n\nconst metadataDescription = (item: NotificationCenterItem) => {\n const parts = [item.body, item.targetLabel, item.sourceLabel, item.timeLabel].filter(Boolean);\n return parts.join(\" · \");\n};\n\nconst getActionButtons = (item: NotificationCenterItem, props: Pick<NotificationCenterProps, \"onDismiss\">) => {\n const actions: ListRowAction[] = [];\n\n if (props.onDismiss) {\n actions.push({\n id: \"dismiss\",\n label: \"Dismiss\",\n icon: <X size={14} />,\n tooltip: \"Dismiss\",\n onAction: () => props.onDismiss?.(item),\n });\n }\n\n return actions;\n};\n\nconst NotificationEndContent = (props: {\n actions: NotificationCenterAction[];\n item: NotificationCenterItem;\n onRunAction?: NotificationCenterProps[\"onRunAction\"];\n}) => {\n const { actions, item, onRunAction } = props;\n return (\n <HStack gap=\"2\" minW=\"0\" flexWrap=\"wrap\" justify=\"flex-end\">\n {shouldShowPriorityBadge(item.priority) ? (\n <Badge size=\"sm\" colorPalette={priorityColorPalette(item.priority)} textTransform=\"capitalize\" flexShrink={0}>\n {item.priority}\n </Badge>\n ) : null}\n {item.status === \"open\" ? (\n <Badge size=\"sm\" colorPalette=\"blue\" variant=\"solid\" flexShrink={0}>\n New\n </Badge>\n ) : null}\n {actions.map((action) => (\n <Button\n key={action.id}\n size=\"2xs\"\n variant=\"outline\"\n colorPalette={action.destructive ? \"red\" : \"gray\"}\n maxW=\"9rem\"\n onClick={(event) => {\n event.stopPropagation();\n onRunAction?.(item, action);\n }}\n >\n <Text truncate>{action.label}</Text>\n </Button>\n ))}\n </HStack>\n );\n};\n\nconst NotificationRows = (\n props: {\n activeIndex: number;\n items: NotificationCenterItem[];\n onActiveIndexChange: (index: number) => void;\n } & Pick<NotificationCenterProps, \"onActivateItem\" | \"onDismiss\" | \"onRunAction\">,\n) => {\n const { activeIndex, items, onActivateItem, onActiveIndexChange, onRunAction } = props;\n const groups = groupItems(items);\n let rowIndex = 0;\n\n return (\n <Stack gap=\"2xs\" py=\"xs\">\n {groups.map((group) => (\n <Stack key={group.id} gap=\"2xs\">\n <Text textStyle=\"label/XS/medium\" color=\"fg.muted\" px=\"sm\" pt=\"xs\">\n {group.label}\n </Text>\n {group.items.map((item) => {\n const currentIndex = rowIndex;\n rowIndex += 1;\n return (\n <ListRow\n key={item.id}\n id={item.id}\n label={item.title}\n description={metadataDescription(item)}\n icon={<Icon as={Bell} boxSize=\"14px\" />}\n iconColor={`${priorityColorPalette(item.priority)}.500`}\n variant=\"compact\"\n isSelected={currentIndex === activeIndex}\n endContent={\n <NotificationEndContent item={item} actions={item.actions ?? []} onRunAction={onRunAction} />\n }\n actions={getActionButtons(item, props)}\n tabIndex={-1}\n onActivate={() => onActivateItem?.(item)}\n onPointerMove={() => onActiveIndexChange(currentIndex)}\n />\n );\n })}\n </Stack>\n ))}\n </Stack>\n );\n};\n\nconst LoadingRows = () => (\n <Stack gap=\"2\" p=\"sm\">\n {[0, 1, 2, 3].map((row) => (\n <Stack key={row} gap=\"2xs\">\n <Skeleton h=\"4\" w={row % 2 === 0 ? \"68%\" : \"52%\"} borderRadius=\"xs\" />\n <Skeleton h=\"3\" w=\"88%\" borderRadius=\"xs\" />\n </Stack>\n ))}\n </Stack>\n);\n\nexport const NotificationCenter = (props: NotificationCenterProps) => {\n const {\n autoFocus = false,\n emptyLabel = \"No notifications.\",\n error,\n footerEnd,\n footerStart,\n items,\n loading = false,\n onActivateItem,\n onEscape,\n onQueryChange,\n query,\n } = props;\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const activeQuery = query ?? internalQuery;\n const filteredItems = filterItems(items, activeQuery);\n const displayItems = orderItemsForDisplay(filteredItems);\n const activeItem = displayItems[activeIndex] ?? null;\n\n useEffect(() => {\n if (!autoFocus) return;\n const timeout = setTimeout(() => inputRef.current?.focus(), 0);\n return () => clearTimeout(timeout);\n }, [autoFocus]);\n\n useEffect(() => {\n setActiveIndex((current) => Math.min(current, Math.max(displayItems.length - 1, 0)));\n }, [displayItems.length]);\n\n const updateQuery = (nextQuery: string) => {\n if (query === undefined) setInternalQuery(nextQuery);\n onQueryChange?.(nextQuery);\n setActiveIndex(0);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setActiveIndex((current) => Math.min(current + 1, Math.max(displayItems.length - 1, 0)));\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setActiveIndex((current) => Math.max(current - 1, 0));\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (activeItem) onActivateItem?.(activeItem);\n return;\n }\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n if (activeQuery.length > 0) {\n updateQuery(\"\");\n return;\n }\n onEscape?.();\n };\n\n return (\n <SearchModalContent\n searchValue={activeQuery}\n searchPlaceholder=\"Search notifications\"\n searchIcon={<Search size={14} />}\n searchInputRef={inputRef}\n searchAutoFocus={autoFocus}\n footerStart={footerStart}\n footerEnd={footerEnd}\n scrollAreaProps={{ maxH: \"24rem\", showHorizontalScrollbar: false }}\n onSearchChange={updateQuery}\n onSearchKeyDown={handleKeyDown}\n >\n {error ? (\n <Box p=\"sm\">\n <AlertMessage status=\"error\" colorPalette=\"red\" title=\"Notifications unavailable\" size=\"sm\">\n {error}\n </AlertMessage>\n </Box>\n ) : loading ? (\n <LoadingRows />\n ) : filteredItems.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n ) : (\n <NotificationRows\n {...props}\n items={filteredItems}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n />\n )}\n </SearchModalContent>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface AttachedMenuProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n}\n\nexport const AttachedMenu = (props: AttachedMenuProps) => {\n const { children, ...rest } = props;\n\n return (\n <Flex as=\"aside\" direction=\"column\" h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" overflow=\"hidden\" bg=\"bg\" {...rest}>\n {children}\n </Flex>\n );\n};\n","import { Flex, type FlexProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nconst DEFAULT_RESIZABLE_MIN_WIDTH = \"20rem\";\n\ninterface AttachedPanelProps extends Omit<FlexProps, \"children\"> {\n children?: ReactNode;\n header?: ReactNode;\n resizable?: boolean;\n}\n\nexport const AttachedPanel = (props: AttachedPanelProps) => {\n const { children, header, width = \"28rem\", minWidth, resizable = false, ...rest } = props;\n const resolvedMinWidth = minWidth ?? (resizable ? DEFAULT_RESIZABLE_MIN_WIDTH : width);\n const resolvedWidth = resizable ? \"full\" : width;\n\n return (\n <Flex\n direction=\"column\"\n position=\"relative\"\n flexShrink={0}\n w={resolvedWidth}\n minW={resolvedMinWidth}\n h=\"100%\"\n bg=\"bg\"\n overflow=\"hidden\"\n {...rest}\n >\n {header}\n <Flex flex=\"1\" minH={0} direction=\"column\">\n {children}\n </Flex>\n </Flex>\n );\n};\n","import { chakra, type HTMLChakraProps, IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\ntype BubbleButtonStyleProps = \"transition\" | \"_hover\" | \"_active\" | \"borderColor\" | \"borderWidth\";\n\nexport interface BubbleButtonProps extends Omit<IconButtonProps, BubbleButtonStyleProps> {\n containerProps?: HTMLChakraProps<\"div\">;\n isOpen?: boolean;\n tooltip?: ReactNode;\n}\n\nexport const BubbleButton = forwardRef<HTMLButtonElement, BubbleButtonProps>(function BubbleButton(props, ref) {\n const { children, containerProps, isOpen = false, tooltip, ...rest } = props;\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor={isOpen ? \"border.accent\" : \"border\"}\n transition=\"border-color 0.2s ease-in-out\"\n _hover={{\n borderColor: \"border.accent\",\n }}\n _active={{ borderColor: \"border.accent\" }}\n {...rest}\n >\n {children}\n </IconButton>\n );\n\n return (\n <chakra.div position=\"fixed\" bottom=\"6\" right=\"6\" zIndex=\"docked\" {...containerProps}>\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import { Box, chakra, Flex, HStack, type HTMLChakraProps, IconButton, Portal, Spacer } from \"@chakra-ui/react\";\nimport { Minus, SquareArrowOutUpRight } from \"lucide-react\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { PANEL_HEADER_CONTROL_SIZE } from \"@/components/layout/panel-header.constants\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\n\nexport interface BubblePanelProps {\n isOpen?: boolean;\n title?: string;\n menu?: ReactNode;\n onClose?: () => void;\n closeLabel?: string;\n onPopOut?: (() => void) | null;\n popOutLabel?: string;\n width?: string;\n height?: string;\n containerProps?: HTMLChakraProps<\"section\">;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n}\n\nexport const BubblePanel = forwardRef<HTMLDivElement, BubblePanelProps>(function BubblePanel(props, ref) {\n const {\n isOpen = false,\n title,\n menu,\n onClose,\n closeLabel,\n onPopOut,\n popOutLabel,\n width = \"28rem\",\n height = \"38rem\",\n containerProps,\n testId,\n \"aria-label\": ariaLabel,\n children,\n } = props;\n\n if (!isOpen) return null;\n\n return (\n <Portal>\n <chakra.section\n ref={ref}\n role=\"dialog\"\n data-testid={testId}\n aria-label={ariaLabel ?? title}\n position=\"fixed\"\n bottom=\"3\"\n right=\"3\"\n w={width}\n maxW=\"calc(100vw - 2rem)\"\n h={height}\n maxH=\"calc(100vh - 2rem)\"\n borderRadius=\"xs\"\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n overflow=\"hidden\"\n zIndex=\"dropdown\"\n {...containerProps}\n >\n <Flex direction=\"column\" h=\"full\">\n <Header variant=\"main\" gap=\"sm\" flexShrink={0}>\n <HStack gap=\"1\" minW=\"0\">\n {menu}\n </HStack>\n <Spacer />\n <HStack gap=\"1\">\n {onPopOut ? (\n <Tooltip content={popOutLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={popOutLabel}\n onClick={onPopOut}\n >\n <SquareArrowOutUpRight size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n {onClose ? (\n <Tooltip content={closeLabel}>\n <IconButton\n size={PANEL_HEADER_CONTROL_SIZE}\n variant=\"ghost\"\n aria-label={closeLabel}\n onClick={onClose}\n >\n <Minus size={16} />\n </IconButton>\n </Tooltip>\n ) : null}\n </HStack>\n </Header>\n <Box flex=\"1\" minH={0} display=\"flex\" flexDirection=\"column\" gap=\"sm\">\n {children}\n </Box>\n </Flex>\n </chakra.section>\n </Portal>\n );\n});\n","import { Button, CloseButton, Dialog, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type ReactNode, useState } from \"react\";\n\ninterface DeleteConfirmationModalProps {\n open: boolean;\n onClose: () => void;\n onDelete: () => void | Promise<void>;\n headline?: string;\n notificationText?: string;\n buttonText?: string;\n /** Extra controls rendered below the message, e.g. an opt-in checkbox. */\n children?: ReactNode;\n}\n\nexport type { DeleteConfirmationModalProps };\n\nexport const DeleteConfirmationModal = (props: DeleteConfirmationModalProps) => {\n const [isDeleting, setIsDeleting] = useState(false);\n const { headline, buttonText, notificationText, onDelete, open, onClose, children } = props;\n\n const handleDelete = async () => {\n setIsDeleting(true);\n\n try {\n await onDelete();\n onClose();\n } catch {\n // Errors surface through parent state.\n } finally {\n setIsDeleting(false);\n }\n };\n\n return (\n // Destructive confirmations dismiss only through their explicit controls —\n // outside interactions must never cancel them, and when nested inside another\n // overlay (e.g. the settings dialog) a portal keeps the layers cooperating.\n <Dialog.Root\n open={open}\n onOpenChange={(details) => {\n if (!details.open) onClose();\n }}\n closeOnInteractOutside={false}\n >\n <Portal>\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Text textStyle=\"heading/M\">{headline}</Text>\n <Dialog.CloseTrigger asChild>\n <CloseButton size=\"sm\" />\n </Dialog.CloseTrigger>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"3\">\n {notificationText ? <Text>{notificationText}</Text> : null}\n {children}\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"1\">\n <Button onClick={onClose}>Close</Button>\n <Button loading={isDeleting} variant=\"destructive\" onClick={handleDelete}>\n {buttonText}\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Dialog.Root>\n );\n};\n","import { Badge, Button, Dialog, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronUp, FileText, Folder, FolderOpen, Home, Search } from \"lucide-react\";\nimport { type KeyboardEvent, useEffect, useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface RepoPickerDialogEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n isGitRepo: boolean;\n}\n\ninterface RepoPickerDialogProps {\n open: boolean;\n title?: string;\n description?: string;\n currentPath?: string;\n entries: RepoPickerDialogEntry[];\n selectedPath?: string | null;\n selectedPaths?: string[];\n isLoading?: boolean;\n error?: string;\n isSelectDisabled?: boolean;\n onClose: () => void;\n onSelect: () => void;\n onSelectHomeDirectory: () => void;\n onSelectParentDirectory: () => void;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n}\n\nexport type { RepoPickerDialogProps };\n\nconst getEntryIcon = (entry: RepoPickerDialogEntry) => {\n if (!entry.isDirectory) return FileText;\n if (entry.isGitRepo) return FolderOpen;\n return Folder;\n};\n\nconst filterEntries = (entries: RepoPickerDialogEntry[], query: string) => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return entries;\n }\n\n return entries.filter((entry) => `${entry.name} ${entry.path}`.toLowerCase().includes(normalizedQuery));\n};\n\ntype RepoPickerListEntryProps = {\n entry: RepoPickerDialogEntry;\n selectedPath: string | null;\n selectedPathSet: Set<string>;\n onEntryClick: (entry: RepoPickerDialogEntry) => void;\n};\n\nconst RepoPickerListEntry = (props: RepoPickerListEntryProps) => {\n const { entry, selectedPath, selectedPathSet, onEntryClick } = props;\n const isAlreadySelected = entry.isGitRepo && selectedPathSet.has(entry.path);\n const isDisabled = !entry.isDirectory || isAlreadySelected;\n\n const handleClick = () => {\n if (isAlreadySelected) {\n return;\n }\n\n onEntryClick(entry);\n };\n\n return (\n <ListRow\n variant=\"compact\"\n isSelected={selectedPath === entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Icon as={getEntryIcon(entry)} boxSize=\"16px\" />}\n endContent={\n entry.isGitRepo ? (\n <Badge\n textStyle=\"label/XS/medium\"\n px=\"xs\"\n py=\"2px\"\n colorPalette=\"green\"\n variant=\"subtle\"\n pointerEvents=\"none\"\n >\n Git repo\n </Badge>\n ) : undefined\n }\n disabled={isDisabled}\n onActivate={handleClick}\n />\n );\n};\n\nconst focusInlinePickerOption = (event: KeyboardEvent<HTMLDivElement>) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n const options = Array.from(\n event.currentTarget.querySelectorAll<HTMLButtonElement>('button[role=\"option\"]:not(:disabled)'),\n );\n\n if (options.length === 0) {\n return;\n }\n\n const currentIndex = options.indexOf(document.activeElement as HTMLButtonElement);\n const nextIndex = (() => {\n if (event.key === \"Home\") return 0;\n if (event.key === \"End\") return options.length - 1;\n if (event.key === \"ArrowUp\") return currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n return currentIndex < 0 || currentIndex === options.length - 1 ? 0 : currentIndex + 1;\n })();\n\n event.preventDefault();\n options[nextIndex]?.focus();\n};\n\nexport const RepoPickerDialog = (props: RepoPickerDialogProps) => {\n const {\n open,\n title = \"Select folder\",\n description,\n currentPath = \"\",\n entries,\n selectedPath = null,\n selectedPaths = [],\n isLoading = false,\n error = \"\",\n isSelectDisabled = false,\n onClose,\n onSelect,\n onSelectHomeDirectory,\n onSelectParentDirectory,\n onEntryClick,\n } = props;\n\n const [query, setQuery] = useState(\"\");\n const selectedPathSet = new Set(selectedPaths);\n const filteredEntries = filterEntries(entries, query);\n const searchScope = currentPath || \"Home\";\n\n useEffect(() => {\n if (!open || !searchScope) return;\n setQuery(\"\");\n }, [open, searchScope]);\n\n return (\n <Dialog.Root\n lazyMount\n unmountOnExit\n closeOnInteractOutside={false}\n open={open}\n onOpenChange={(details) => !details.open && onClose()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content>\n <Dialog.Header>\n <Stack gap=\"xs\">\n <Text textStyle=\"heading/M\">{title}</Text>\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n </Dialog.Header>\n <Dialog.Body>\n <Stack gap=\"md\">\n <Stack direction=\"row\" gap=\"sm\" align=\"center\">\n <Button aria-label=\"Go to home directory\" variant=\"outline\" size=\"sm\" onClick={onSelectHomeDirectory}>\n <Home size={16} />\n </Button>\n <Button\n aria-label=\"Go to parent directory\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onSelectParentDirectory}\n disabled={!currentPath || currentPath === \"/\"}\n >\n <ChevronUp size={16} />\n </Button>\n <Text\n data-testid=\"folder-picker-path\"\n textStyle=\"paragraph/S/regular\"\n color=\"fg.muted\"\n flex=\"1\"\n lineClamp={1}\n >\n {searchScope}\n </Text>\n </Stack>\n\n <Stack gap=\"0\" borderWidth=\"1px\" borderRadius=\"md\" borderColor=\"border.subtle\" overflow=\"hidden\">\n <InputGroup\n startElement={<Search size={14} />}\n width=\"full\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Input\n mx=\"xs\"\n value={query}\n placeholder=\"Search repositories\"\n aria-label=\"Search repositories\"\n autoComplete=\"off\"\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n {isLoading ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n Loading...\n </Text>\n ) : error ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"red.500\" p=\"sm\">\n {error}\n </Text>\n ) : filteredEntries.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"sm\">\n No entries found.\n </Text>\n ) : (\n <ScrollArea maxHeight=\"320px\" contentProps={{ padding: \"sm\" }}>\n <Stack gap=\"xs\" role=\"listbox\" aria-label=\"Repository folders\" onKeyDown={focusInlinePickerOption}>\n {filteredEntries.map((entry) => (\n <RepoPickerListEntry\n key={entry.path}\n entry={entry}\n selectedPath={selectedPath}\n selectedPathSet={selectedPathSet}\n onEntryClick={onEntryClick}\n />\n ))}\n </Stack>\n </ScrollArea>\n )}\n </Stack>\n </Stack>\n </Dialog.Body>\n <Dialog.Footer>\n <Stack direction=\"row\" gap=\"sm\">\n <Button variant=\"outline\" onClick={onClose}>\n Cancel\n </Button>\n <Button onClick={onSelect} disabled={isSelectDisabled}>\n Select repository\n </Button>\n </Stack>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, type SystemStyleObject } from \"@chakra-ui/react\";\nimport * as React from \"react\";\nimport { type ResourceContextAction, ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\n\nexport interface BreadcrumbItem {\n title: React.ReactNode;\n url?: string;\n onClick?: () => void;\n contextMenuActions?: ResourceContextAction[];\n}\n\nexport interface BreadcrumbLinkProps {\n to: string;\n children: React.ReactNode;\n}\n\nexport interface BreadcrumbProps extends ChakraBreadcrumb.RootProps {\n separator?: React.ReactNode;\n separatorGap?: SystemStyleObject[\"gap\"];\n items: BreadcrumbItem[];\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\nconst linkProps = {\n alignItems: \"center\",\n display: \"inline-flex\",\n gap: \"2xs\",\n minW: \"0\",\n maxW: \"100%\",\n overflow: \"hidden\",\n outline: \"none\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n _active: { outline: \"none\" },\n _focus: { outline: \"none\" },\n _focusVisible: { outline: \"none\" },\n} as const;\n\nconst staticProps = {\n ...linkProps,\n color: \"fg\",\n cursor: \"default\",\n textDecoration: \"none\",\n _hover: { textDecoration: \"none\" },\n} as const;\n\ninterface BreadcrumbItemContentProps {\n item: BreadcrumbItem;\n isCurrent: boolean;\n linkComponent?: React.ComponentType<BreadcrumbLinkProps>;\n}\n\ninterface BreadcrumbSeparatorProps {\n separator?: React.ReactNode;\n}\n\nconst isInteractiveItem = (item: BreadcrumbItem) => Boolean(item.url || item.onClick);\n\nconst BreadcrumbItemLink = (props: BreadcrumbItemContentProps) => {\n const { item, isCurrent, linkComponent: LinkComponent } = props;\n\n if (isCurrent && !isInteractiveItem(item)) {\n return <ChakraBreadcrumb.CurrentLink {...staticProps}>{item.title}</ChakraBreadcrumb.CurrentLink>;\n }\n\n if (item.url && LinkComponent) {\n return (\n <ChakraBreadcrumb.Link asChild {...linkProps}>\n <LinkComponent to={item.url}>{item.title}</LinkComponent>\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.url) {\n return (\n <ChakraBreadcrumb.Link href={item.url} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n if (item.onClick) {\n return (\n <ChakraBreadcrumb.Link as=\"button\" type=\"button\" onClick={item.onClick} {...linkProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n }\n\n return (\n <ChakraBreadcrumb.Link as=\"span\" {...staticProps}>\n {item.title}\n </ChakraBreadcrumb.Link>\n );\n};\n\nconst BreadcrumbItemContent = (props: BreadcrumbItemContentProps) => {\n const { item } = props;\n const content = <BreadcrumbItemLink {...props} />;\n\n if (!item.contextMenuActions?.length) return content;\n\n return (\n <ResourceContextMenu actions={item.contextMenuActions} positioning={{ placement: \"bottom-start\" }}>\n {content}\n </ResourceContextMenu>\n );\n};\n\nconst BreadcrumbSeparator = (props: BreadcrumbSeparatorProps) => {\n const { separator } = props;\n\n if (separator === undefined) {\n return <ChakraBreadcrumb.Separator flexShrink={0} />;\n }\n\n return <ChakraBreadcrumb.Separator flexShrink={0}>{separator}</ChakraBreadcrumb.Separator>;\n};\n\nexport const Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(function BreadcrumbRoot(props, ref) {\n const { separator, separatorGap, items, linkComponent: LinkComponent, ...rest } = props;\n\n return (\n <ChakraBreadcrumb.Root ref={ref} {...rest}>\n <ChakraBreadcrumb.List gap={separatorGap} flexWrap=\"nowrap\" minW=\"0\" maxW=\"100%\" overflow=\"hidden\">\n {items.map((item, index) => {\n const isCurrent = index === items.length - 1;\n\n return (\n <React.Fragment key={index}>\n <ChakraBreadcrumb.Item minW=\"0\" flexShrink={isCurrent ? 1 : 0} overflow=\"hidden\">\n <BreadcrumbItemContent item={item} isCurrent={isCurrent} linkComponent={LinkComponent} />\n </ChakraBreadcrumb.Item>\n {isCurrent ? null : <BreadcrumbSeparator separator={separator} />}\n </React.Fragment>\n );\n })}\n </ChakraBreadcrumb.List>\n </ChakraBreadcrumb.Root>\n );\n});\n","import { Box, type BoxProps, Text, type TextProps } from \"@chakra-ui/react\";\n\nexport interface ContentPlaceholderProps extends BoxProps {}\n\nexport const contentPlaceholderBackgroundImage = `url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.2' fillRule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\")`;\n\nexport const ContentPlaceholder = (props: ContentPlaceholderProps) => (\n <Box\n {...props}\n css={{\n backgroundClip: \"padding-box\",\n backgroundImage: contentPlaceholderBackgroundImage,\n display: \"flex\",\n width: \"100%\",\n }}\n />\n);\n\nexport const Label = (props: TextProps) => (\n <Box p=\"2\">\n <Text color=\"fg.muted\" fontWeight=\"medium\" textStyle=\"sm\" whiteSpace=\"nowrap\" {...props} />\n </Box>\n);\n","import { AbsoluteCenter, Button, Stack, Text } from \"@chakra-ui/react\";\nimport { Component, type ErrorInfo, type ReactNode } from \"react\";\n\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { ContentPlaceholder } from \"@/components/primitives/content-placeholder\";\n\ninterface ErrorBoundaryProps {\n children: ReactNode;\n fallback?: ReactNode;\n label?: string;\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: ErrorInfo) {\n console.error(\"Dashboard error boundary caught an error\", error, info);\n }\n\n handleReset = () => {\n this.setState({ error: null });\n this.props.onReset?.();\n };\n\n render() {\n const { children, fallback, label } = this.props;\n const { error } = this.state;\n\n if (error) {\n if (fallback) {\n return fallback;\n }\n\n return <ErrorFallback error={error} label={label} onReset={this.handleReset} />;\n }\n\n return children;\n }\n}\n\ninterface ErrorFallbackProps {\n error: Error;\n label?: string;\n onReset?: () => void;\n}\n\nexport const ErrorFallback = (props: ErrorFallbackProps) => {\n const { error, label, onReset } = props;\n\n return (\n <ContentPlaceholder height=\"100%\" width=\"100%\">\n <AbsoluteCenter>\n <AlertMessage\n status=\"error\"\n title={<Text textStyle=\"paragraph/M/medium\">{label ?? \"Something went wrong\"}</Text>}\n >\n <Stack gap=\"sm\">\n <Text textStyle=\"paragraph/S/regular\">\n {error.message || \"An unexpected error occurred while rendering this section.\"}\n </Text>\n {onReset ? (\n <Button size=\"sm\" variant=\"primary\" onClick={onReset}>\n Try again\n </Button>\n ) : null}\n </Stack>\n </AlertMessage>\n </AbsoluteCenter>\n </ContentPlaceholder>\n );\n};\n","import { Box, Center, type CenterProps, Icon } from \"@chakra-ui/react\";\nimport { getIconComponent, type IconColorPickerIconOption } from \"./icon-options\";\n\nexport interface TagSwatchProps extends Omit<CenterProps, \"color\"> {\n color: string;\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n /** Renders the icon glyph instead of a plain colour dot when the value carries an icon. */\n showIcon?: boolean;\n}\n\n// The planner writes \"circle\" as its no-icon default, so both it and a missing\n// icon render as the design's plain colour dot instead of a lucide ring.\nconst hasGlyph = (icon?: string | null) => Boolean(icon) && icon !== \"circle\";\n\nexport const TagSwatch = (props: TagSwatchProps) => {\n const { color, icon, iconOptions, showIcon = true, ...rest } = props;\n const IconComponent = getIconComponent(icon, iconOptions);\n\n return (\n <Center boxSize=\"tag-swatch\" flexShrink={0} borderRadius=\"compact\" bg={`${color}.500/15`} {...rest}>\n {showIcon && hasGlyph(icon) ? (\n <Icon as={IconComponent} boxSize=\"icon-xs\" color={`${color}.500`} />\n ) : (\n <Box boxSize=\"tag-swatch-dot\" borderRadius=\"full\" bg={`${color}.500`} />\n )}\n </Center>\n );\n};\n","import { Box, chakra, Grid, Icon, Popover, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { type IconColorPickerIconOption, optionColors, optionIcons } from \"./icon-options\";\nimport { TagSwatch } from \"./tag-swatch\";\n\nconst SwatchTrigger = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n focusVisibleRing: \"outside\",\n _disabled: { cursor: \"not-allowed\", opacity: 0.5 },\n },\n});\n\nconst ColorDot = chakra(\"button\", {\n base: {\n boxSize: \"tag-color-dot\",\n borderRadius: \"full\",\n cursor: \"pointer\",\n outlineStyle: \"solid\",\n outlineWidth: \"selection\",\n outlineOffset: \"3xs\",\n outlineColor: \"transparent\",\n _selected: { outlineColor: \"fg\" },\n },\n});\n\nconst IconCell = chakra(\"button\", {\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSize: \"tag-icon-cell\",\n borderRadius: \"compact\",\n color: \"fg.muted\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.hover\" },\n },\n});\n\nexport interface IconColorPickerProps {\n color: string;\n colorOptions?: readonly string[];\n icon?: string | null;\n iconOptions?: readonly IconColorPickerIconOption[];\n onColorChange: (color: string) => void;\n onIconChange?: (icon: string | null) => void;\n disabled?: boolean;\n showIcons?: boolean;\n colorLabel?: string;\n iconLabel?: string;\n \"aria-label\"?: string;\n}\n\nexport const IconColorPicker = (props: IconColorPickerProps) => {\n const {\n color,\n colorOptions = optionColors,\n icon,\n iconOptions = optionIcons,\n onColorChange,\n onIconChange,\n disabled,\n showIcons = true,\n colorLabel = \"Color\",\n iconLabel = \"Icon\",\n \"aria-label\": ariaLabel = \"Pick color and icon\",\n } = props;\n const selectedIcon = icon === \"circle\" ? null : (icon ?? null);\n\n return (\n <Popover.Root positioning={{ placement: \"bottom-start\" }}>\n <Popover.Trigger asChild>\n <SwatchTrigger type=\"button\" disabled={disabled} aria-label={ariaLabel}>\n <TagSwatch color={color} icon={icon} iconOptions={iconOptions} showIcon={showIcons} />\n </SwatchTrigger>\n </Popover.Trigger>\n <Portal>\n <Popover.Positioner>\n <Popover.Content width={showIcons ? \"tag-picker\" : \"tag-picker-color-only\"} bg=\"bg.elevated\">\n <Stack gap=\"compact\" p=\"sm\">\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {colorLabel}\n </Text>\n <Grid templateColumns={`repeat(${showIcons ? 10 : 5}, 1fr)`} gap=\"2xs\" justifyItems=\"center\">\n {colorOptions.map((optionColor) => (\n <ColorDot\n key={optionColor}\n type=\"button\"\n bg={`${optionColor}.500`}\n aria-label={optionColor}\n aria-pressed={optionColor === color}\n data-selected={optionColor === color ? \"\" : undefined}\n onClick={() => onColorChange(optionColor)}\n />\n ))}\n </Grid>\n {showIcons ? (\n <>\n <Box borderTop=\"subtle\" />\n <Text textStyle=\"label/S/medium\" color=\"fg.muted\">\n {iconLabel}\n </Text>\n <Grid templateColumns=\"repeat(8, 1fr)\" gap=\"3xs\" justifyItems=\"center\">\n {iconOptions.map((entry) => {\n const selected = entry.value === selectedIcon;\n return (\n <IconCell\n key={entry.value ?? \"none\"}\n type=\"button\"\n color={selected ? `${color}.500` : undefined}\n bg={selected ? `${color}.500/15` : undefined}\n _hover={selected ? { bg: `${color}.500/15` } : undefined}\n aria-label={entry.label}\n aria-pressed={selected}\n onClick={() => onIconChange?.(entry.value)}\n >\n <Icon as={entry.icon} boxSize=\"icon-xs\" />\n </IconCell>\n );\n })}\n </Grid>\n </>\n ) : null}\n </Stack>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, type BoxProps } from \"@chakra-ui/react\";\n\nexport type SimpleCardProps = BoxProps;\n\nexport const SimpleCard = (props: SimpleCardProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box borderWidth=\"1px\" borderColor=\"border.subtle\" borderRadius=\"xs\" bg=\"bg\" {...rest}>\n {children}\n </Box>\n );\n};\n\nexport type SimpleCardBodyProps = BoxProps;\n\nexport const SimpleCardBody = (props: SimpleCardBodyProps) => {\n const { children, ...rest } = props;\n\n return (\n <Box p=\"md\" {...rest}>\n {children}\n </Box>\n );\n};\n","import { Badge, Box, Button, HStack, Icon, Stack, Text } from \"@chakra-ui/react\";\nimport { Check } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { SimpleCard, SimpleCardBody } from \"@/components/primitives/simple-card\";\n\nexport interface IntegrationCardProps {\n icon: ReactNode;\n name: string;\n description: string;\n id: string;\n version?: string;\n category?: string;\n active?: boolean;\n actionLabel?: string;\n}\n\nexport const IntegrationCard = (props: IntegrationCardProps) => {\n const { icon, name, description, id, version, category, active = false, actionLabel } = props;\n\n return (\n <SimpleCard>\n <SimpleCardBody>\n <HStack gap=\"4\" alignItems=\"flex-start\">\n <Icon boxSize=\"1em\" fontSize=\"2xl\" flexShrink=\"0\" color=\"fg.muted\">\n {icon}\n </Icon>\n <Box flex=\"1\" minW=\"0\">\n <Stack gap=\"1\">\n <HStack gap=\"2\" flexWrap=\"wrap\">\n <Text textStyle=\"sm\" fontWeight=\"semibold\">\n {name}\n </Text>\n <Badge size=\"sm\" variant=\"outline\">\n {id}\n </Badge>\n {version && (\n <Badge size=\"sm\" variant=\"outline\">\n v{version}\n </Badge>\n )}\n {category && (\n <Badge size=\"sm\" variant=\"outline\">\n {category}\n </Badge>\n )}\n </HStack>\n <Text color=\"fg.muted\">{description}</Text>\n </Stack>\n </Box>\n <Button\n type=\"button\"\n disabled={active}\n size=\"sm\"\n variant=\"outline\"\n colorPalette=\"gray\"\n bg=\"bg\"\n flexShrink=\"0\"\n >\n {active && (\n <Icon color=\"fg.success\">\n <Check />\n </Icon>\n )}\n {actionLabel ?? (active ? \"Active\" : \"Connect\")}\n </Button>\n </HStack>\n </SimpleCardBody>\n </SimpleCard>\n );\n};\n","import { defineSlotRecipe } from \"@chakra-ui/react\";\n\nexport const segmentedControlSlotRecipe = defineSlotRecipe({\n className: \"ps-segmented-control\",\n slots: [\"root\", \"item\"],\n base: {\n root: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"3xs\",\n padding: \"3xs\",\n bg: \"bg.subtle\",\n borderRadius: \"compact\",\n borderWidth: \"1px\",\n borderColor: \"border\",\n },\n item: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n whiteSpace: \"nowrap\",\n textStyle: \"label/S/medium\",\n color: \"fg.muted\",\n bg: \"transparent\",\n borderRadius: \"xs\",\n cursor: \"pointer\",\n transitionProperty: \"background-color, color\",\n transitionDuration: \"fast\",\n focusVisibleRing: \"outside\",\n _hover: { color: \"fg\" },\n _selected: { bg: \"bg.inverted\", color: \"fg.inverted\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { color: \"fg.muted\" } },\n },\n },\n variants: {\n size: {\n sm: {\n root: { height: \"segmented-control-sm\" },\n item: { height: \"segmented-control-item-sm\", paddingInline: \"compact\" },\n },\n xs: {\n root: { height: \"segmented-control-xs\" },\n item: { height: \"segmented-control-item-xs\", paddingInline: \"xs\" },\n },\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport { segmentedControlSlotRecipe as recipe } from \"@/theme/recipes/segmented-control\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\n\ntype VariantProps = RecipeVariantProps<typeof recipe>;\n\nexport interface SegmentedControlRootProps extends HTMLChakraProps<\"div\">, VariantProps {}\nconst SegmentedControlRoot = withProvider<HTMLDivElement, SegmentedControlRootProps>(\"div\", \"root\");\n\nexport interface SegmentedControlItemProps extends HTMLChakraProps<\"button\"> {}\nconst SegmentedControlItem = withContext<HTMLButtonElement, SegmentedControlItemProps>(\"button\", \"item\");\n\nexport interface SegmentedControlOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<SegmentedControlRootProps, \"onChange\"> {\n options: SegmentedControlOption[];\n value: string;\n onValueChange: (value: string) => void;\n disabled?: boolean;\n \"aria-label\"?: string;\n}\n\nexport const SegmentedControl = (props: SegmentedControlProps) => {\n const { options, value, onValueChange, disabled, \"aria-label\": ariaLabel, ...rootProps } = props;\n\n return (\n <SegmentedControlRoot role=\"group\" aria-label={ariaLabel} {...rootProps}>\n {options.map((option) => {\n const selected = option.value === value;\n return (\n <SegmentedControlItem\n key={option.value}\n type=\"button\"\n aria-pressed={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={disabled}\n onClick={() => onValueChange(option.value)}\n >\n {option.label}\n </SegmentedControlItem>\n );\n })}\n </SegmentedControlRoot>\n );\n};\n","import { Toaster as ChakraToaster, createToaster, Portal, Spinner, Stack, Toast } from \"@chakra-ui/react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const toaster: ReturnType<typeof createToaster> = createToaster({\n placement: \"top\",\n pauseOnPageIdle: true,\n duration: 10000,\n});\n\nexport const Toaster = () => {\n return (\n <Portal>\n <ChakraToaster toaster={toaster} insetInline={{ mdDown: \"4\" }}>\n {(toast) => (\n <Toast.Root width={{ md: \"sm\" }} alignItems=\"start\" borderRadius=\"xs\" gap=\"xs\" px=\"sm\" py=\"xs\" minH=\"auto\">\n {toast.type === \"loading\" ? <Spinner size=\"sm\" color=\"blue.solid\" /> : <Toast.Indicator />}\n <Stack gap=\"0\" flex=\"1\" minWidth=\"0\" maxWidth=\"100%\">\n {toast.title && <Toast.Title textStyle=\"label/S/medium\">{toast.title}</Toast.Title>}\n {toast.description && (\n <ScrollArea maxHeight=\"12rem\" contentProps={{ paddingEnd: \"1\" }}>\n <Toast.Description textStyle=\"paragraph/S/regular\" whiteSpace=\"pre-wrap\" wordBreak=\"break-word\">\n {toast.description}\n </Toast.Description>\n </ScrollArea>\n )}\n </Stack>\n {toast.action && <Toast.ActionTrigger>{toast.action.label}</Toast.ActionTrigger>}\n <Toast.CloseTrigger />\n </Toast.Root>\n )}\n </ChakraToaster>\n </Portal>\n );\n};\n","import { Stack, type StackProps } from \"@chakra-ui/react\";\n\ninterface ParamEditorControlListProps extends StackProps {}\n\n// A vertical stack of control items with consistent authoring density. Use it to\n// compose control layouts outside a full <ParamEditor> section.\nexport const ParamEditorControlList = (props: ParamEditorControlListProps) => {\n const { children, ...rest } = props;\n\n return (\n <Stack gap=\"sm\" minW=\"0\" {...rest}>\n {children}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface SidenavSnapshot {\n open: boolean;\n expandedSections: string[];\n expandedNodes: string[];\n width: number | null;\n}\n\ninterface SidenavState extends SidenavSnapshot {\n openSidenav: () => void;\n closeSidenav: () => void;\n toggleSidenav: () => void;\n toggleSection: (sectionId: string) => void;\n toggleNode: (nodeId: string) => void;\n setSectionExpanded: (sectionId: string, expanded: boolean) => void;\n setNodeExpanded: (nodeId: string, expanded: boolean) => void;\n setWidth: (width: number) => void;\n reset: () => void;\n}\n\ninterface CreateSidenavStoreOptions {\n storageKey: string;\n initialState?: Partial<SidenavSnapshot>;\n}\n\nconst DEFAULT_SNAPSHOT = {\n open: true,\n expandedSections: [],\n expandedNodes: [],\n width: null,\n} satisfies SidenavSnapshot;\n\nconst SIDENAV_STORE_NAMESPACE = \"pstdio/ui/sidenav\";\n\nconst toStorageName = (storageKey: string) => `${SIDENAV_STORE_NAMESPACE}/${storageKey}`;\n\nconst toggleId = (values: string[], id: string) =>\n values.includes(id) ? values.filter((value) => value !== id) : [...values, id];\n\nconst setExpanded = (values: string[], id: string, expanded: boolean) => {\n if (expanded) {\n return values.includes(id) ? values : [...values, id];\n }\n\n return values.filter((value) => value !== id);\n};\n\nconst getPersistedSnapshot = (state: SidenavState) => ({\n open: state.open,\n expandedSections: state.expandedSections,\n expandedNodes: state.expandedNodes,\n width: state.width,\n});\n\nexport const createSidenavStore = (options: CreateSidenavStoreOptions) => {\n const { storageKey, initialState } = options;\n const snapshot = { ...DEFAULT_SNAPSHOT, ...initialState };\n\n return createStore<SidenavState>()(\n persist(\n (set) => ({\n ...snapshot,\n openSidenav: () => set((state) => ({ ...state, open: true })),\n closeSidenav: () => set((state) => ({ ...state, open: false })),\n toggleSidenav: () => set((state) => ({ ...state, open: !state.open })),\n toggleSection: (sectionId) =>\n set((state) => ({\n ...state,\n expandedSections: toggleId(state.expandedSections, sectionId),\n })),\n toggleNode: (nodeId) =>\n set((state) => ({\n ...state,\n expandedNodes: toggleId(state.expandedNodes, nodeId),\n })),\n setSectionExpanded: (sectionId, expanded) =>\n set((state) => ({\n ...state,\n expandedSections: setExpanded(state.expandedSections, sectionId, expanded),\n })),\n setNodeExpanded: (nodeId, expanded) =>\n set((state) => ({\n ...state,\n expandedNodes: setExpanded(state.expandedNodes, nodeId, expanded),\n })),\n setWidth: (width) => set((state) => ({ ...state, width })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n};\n\nconst sidenavStoreRegistry = new Map<string, ReturnType<typeof createSidenavStore>>();\n\nexport const getSidenavStore = (storageKey: string, initialState?: Partial<SidenavSnapshot>) => {\n const existingStore = sidenavStoreRegistry.get(storageKey);\n\n if (existingStore) {\n return existingStore;\n }\n\n const store = createSidenavStore({ storageKey, initialState });\n sidenavStoreRegistry.set(storageKey, store);\n\n return store;\n};\n\nexport const useSidenavStore = <T>(\n storageKey: string,\n selector: (state: SidenavState) => T,\n initialState?: Partial<SidenavSnapshot>,\n) => {\n const store = getSidenavStore(storageKey, initialState);\n return useStore(store, selector);\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\ninterface SidenavFooterProps {\n children?: ReactNode;\n}\n\nexport const SidenavFooter = (props: SidenavFooterProps) => {\n const { children } = props;\n\n if (!children) {\n return null;\n }\n\n return (\n <Box bg=\"bg\" position=\"sticky\" bottom=\"0\" overflow=\"hidden\">\n {children}\n </Box>\n );\n};\n","import { HStack } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { PANEL_HEADER_HEIGHT } from \"@/components/layout/panel-header.constants\";\n\ninterface SidenavHeaderProps {\n children?: ReactNode;\n}\n\nexport const SidenavHeader = (props: SidenavHeaderProps) => {\n const { children } = props;\n\n return (\n <HStack\n data-testid=\"sidenav-header\"\n justify=\"space-between\"\n align=\"center\"\n minH={PANEL_HEADER_HEIGHT}\n bg=\"bg\"\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n gap=\"0\"\n >\n <HStack minW=\"0\" flex=\"1\">\n {children}\n </HStack>\n </HStack>\n );\n};\n","import { Box, Flex, Text } from \"@chakra-ui/react\";\nimport { useEffect, useRef } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport { useSidenavStore } from \"./sidenav.store\";\nimport type { SidenavProps } from \"./sidenav.types\";\nimport { SidenavFooter } from \"./sidenav-footer\";\nimport { SidenavHeader } from \"./sidenav-header\";\n\nconst DEFAULT_WIDTH = 240;\nconst DEFAULT_MIN_WIDTH = 200;\nconst DEFAULT_MAX_WIDTH = 480;\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\nconst resolveInitialWidth = (width?: string | number, defaultWidth = DEFAULT_WIDTH) => {\n if (typeof width === \"number\") return width;\n if (typeof width === \"string\") {\n const parsed = parseInt(width, 10);\n if (!Number.isNaN(parsed)) return parsed;\n }\n return defaultWidth;\n};\n\nexport const Sidenav = (props: SidenavProps) => {\n const {\n storageKey,\n sections,\n activeNodeId,\n contextActions = [],\n header,\n footer,\n width,\n closable = true,\n emptyLabel = \"No items available.\",\n defaultExpandedSections,\n linkComponent,\n onNavigate,\n onOpenChange,\n resizable = true,\n defaultWidth,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n virtualize = false,\n } = props;\n\n const viewportRef = useRef<HTMLDivElement | null>(null);\n\n const initialWidth = resolveInitialWidth(width, defaultWidth);\n const initialState = {\n ...(defaultExpandedSections ? { expandedSections: defaultExpandedSections } : {}),\n width: initialWidth,\n };\n\n const open = useSidenavStore(storageKey, (state) => state.open, initialState);\n const persistedWidth = useSidenavStore(storageKey, (state) => state.width, initialState);\n const expandedSections = useSidenavStore(storageKey, (state) => state.expandedSections, initialState);\n const expandedNodes = useSidenavStore(storageKey, (state) => state.expandedNodes, initialState);\n const toggleSection = useSidenavStore(storageKey, (state) => state.toggleSection, initialState);\n const toggleNode = useSidenavStore(storageKey, (state) => state.toggleNode, initialState);\n\n useEffect(() => {\n onOpenChange?.(open);\n }, [onOpenChange, open]);\n\n const effectiveWidth = clamp(persistedWidth ?? initialWidth, minWidth, maxWidth);\n if (!open && closable) {\n return null;\n }\n\n const widthCss = resizable ? `${effectiveWidth}px` : (width ?? `${initialWidth}px`);\n\n const content = (\n <Flex\n as=\"aside\"\n data-testid=\"sidenav\"\n direction=\"column\"\n position=\"relative\"\n h=\"100%\"\n w={widthCss}\n minW={widthCss}\n maxW={widthCss}\n flexShrink={0}\n borderRightWidth=\"1px\"\n borderRightColor=\"border.subtle\"\n bg=\"bg\"\n >\n <SidenavHeader>{header}</SidenavHeader>\n\n <ScrollArea\n flex=\"1\"\n mt=\"lg\"\n viewportRef={viewportRef}\n viewportProps={{ display: \"block\", style: { overflowX: \"hidden\" } }}\n contentProps={{\n style: { minWidth: \"100%\", width: \"100%\", minHeight: \"100%\", display: \"flex\", flexDirection: \"column\" },\n }}\n >\n <Box w=\"full\" minW=\"0\" flex=\"1 0 auto\" display=\"flex\" flexDirection=\"column\">\n {sections.length === 0 ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" p=\"3\">\n {emptyLabel}\n </Text>\n ) : (\n <TreeList\n sections={sections}\n expandedSectionIds={expandedSections}\n expandedNodeIds={expandedNodes}\n activeNodeId={activeNodeId}\n rowVariant=\"compact\"\n sectionGap=\"md\"\n nodeGap=\"1px\"\n linkComponent={linkComponent}\n onNavigate={onNavigate}\n onToggleSection={toggleSection}\n onToggleNode={toggleNode}\n virtualize={virtualize}\n scrollRef={viewportRef}\n />\n )}\n </Box>\n </ScrollArea>\n\n <SidenavFooter>{footer}</SidenavFooter>\n </Flex>\n );\n\n return (\n <ResourceContextMenu actions={contextActions} closeOnSelect={false}>\n {content}\n </ResourceContextMenu>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\n\ninterface TabVisibilitySnapshot {\n tabOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TabVisibilityState extends TabVisibilitySnapshot {\n setTab: (key: string, value: VisibilityOverride | undefined) => void;\n toggleTab: (key: string, hiddenByDefault: boolean) => void;\n clearTab: (key: string) => void;\n reset: () => void;\n}\n\ninterface CreateTabVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TabVisibilitySnapshot = { tabOverrides: {} };\n\nconst STORE_NAMESPACE = \"pstdio/ui/tab-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n key: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(key in overrides)) return overrides;\n const { [key]: _removed, ...rest } = overrides;\n return rest;\n }\n if (overrides[key] === value) return overrides;\n return { ...overrides, [key]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, key: string, hiddenByDefault: boolean) => {\n const current = resolveEffective(overrides[key], hiddenByDefault);\n return setOverride(overrides, key, current === \"hidden\" ? \"shown\" : \"hidden\");\n};\n\nconst getPersistedSnapshot = (state: TabVisibilityState) => ({ tabOverrides: state.tabOverrides });\n\nexport const createTabVisibilityStore = (options: CreateTabVisibilityStoreOptions) =>\n createStore<TabVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setTab: (key, value) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, value) })),\n toggleTab: (key, hiddenByDefault) =>\n set((state) => ({ ...state, tabOverrides: toggleOverride(state.tabOverrides, key, hiddenByDefault) })),\n clearTab: (key) =>\n set((state) => ({ ...state, tabOverrides: setOverride(state.tabOverrides, key, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTabVisibilityStore>>();\n\nexport const getTabVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n const store = createTabVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTabVisibilityStore = <T>(storageKey: string, selector: (state: TabVisibilityState) => T) => {\n const store = getTabVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TabVisibilitySnapshot, TabVisibilityState };\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { TreeListNode, TreeListSection } from \"./tree-list.types\";\nimport type { VisibilityOverride } from \"./tree-list-visibility.store\";\n\nconst toStringLabel = (label: ReactNode, fallback: string) => (typeof label === \"string\" ? label : fallback);\n\nexport const resolveVisibility = (\n override: VisibilityOverride | undefined,\n hiddenByDefault: boolean | undefined,\n): VisibilityOverride => override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\n// A section or node is \"customizable\": it opts in to the hide/show menu and may be toggled.\n// Hideability is explicit — items are non-hideable unless they set canHide (or start hidden by\n// default, which would otherwise be unrecoverable). Body sub-items never opt in, so only\n// categories (sections) and header/footer rows ever appear in the customize menu.\nconst isCustomizable = (item: { canHide?: boolean; hiddenByDefault?: boolean }) =>\n item.canHide === true || item.hiddenByDefault === true;\n\nconst isNodeVisible = (node: TreeListNode, nodeOverrides: Record<string, VisibilityOverride>) =>\n resolveVisibility(nodeOverrides[node.id], node.hiddenByDefault) === \"shown\";\n\nconst filterNodes = (nodes: TreeListNode[], nodeOverrides: Record<string, VisibilityOverride>): TreeListNode[] => {\n let changed = false;\n const next: TreeListNode[] = [];\n for (const node of nodes) {\n if (!isNodeVisible(node, nodeOverrides)) {\n changed = true;\n continue;\n }\n if (node.children && node.children.length > 0) {\n const filteredChildren = filterNodes(node.children, nodeOverrides);\n if (filteredChildren !== node.children) {\n changed = true;\n next.push({ ...node, children: filteredChildren });\n continue;\n }\n }\n next.push(node);\n }\n return changed ? next : nodes;\n};\n\n// Header/footer rows are flat lists, filtered by their own node overrides (mirrors the body's\n// per-node filtering, minus section nesting).\nexport const filterVisibleNodes = (\n nodes: TreeListNode[],\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListNode[] => filterNodes(nodes, nodeOverrides);\n\nexport const filterVisibleSections = (\n sections: TreeListSection[],\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n): TreeListSection[] => {\n let changed = false;\n const next: TreeListSection[] = [];\n for (const section of sections) {\n if (resolveVisibility(sectionOverrides[section.id], section.hiddenByDefault) === \"hidden\") {\n changed = true;\n continue;\n }\n const filteredNodes = filterNodes(section.nodes, nodeOverrides);\n if (filteredNodes.length === 0 && !section.emptyState) {\n changed = true;\n continue;\n }\n if (filteredNodes !== section.nodes) {\n changed = true;\n next.push({ ...section, nodes: filteredNodes });\n continue;\n }\n next.push(section);\n }\n return changed ? next : sections;\n};\n\nexport interface TreeVisibilityMenuActions {\n onToggleSection: (id: string, hiddenByDefault: boolean) => void;\n onToggleNode: (id: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildMenuOptions {\n // Trailing toggle indicator: an eye when the entry is shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n // Leading icon for the reset rows, kept separate from the toggle list above.\n resetIcon?: ReactNode;\n}\n\nconst visibilityEndContent = (effective: VisibilityOverride, options: BuildMenuOptions) =>\n effective === \"shown\" ? options.visibleIcon : options.hiddenIcon;\n\nconst buildSectionAction = (\n section: TreeListSection,\n sectionOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = section.hiddenByDefault === true;\n const effective = resolveVisibility(sectionOverrides[section.id], hiddenByDefault);\n return {\n key: `section:${section.id}`,\n label: section.label ?? section.id,\n onClick: () => actions.onToggleSection(section.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nconst buildNodeAction = (\n node: TreeListNode,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction => {\n const hiddenByDefault = node.hiddenByDefault === true;\n const effective = resolveVisibility(nodeOverrides[node.id], hiddenByDefault);\n return {\n key: `node:${node.id}`,\n label: toStringLabel(node.label, node.id),\n icon: node.icon,\n onClick: () => actions.onToggleNode(node.id, hiddenByDefault),\n endContent: visibilityEndContent(effective, options),\n };\n};\n\nexport interface TreeVisibilityMenuItems {\n headerSections?: TreeListSection[];\n sections: TreeListSection[];\n footerSections?: TreeListSection[];\n}\n\n// Builds the back-of-tree hide/show menu. Every slot uses sections, so the same rules apply to\n// pinned and scrolling content. Hideability is explicit per item.\nexport const buildTreeVisibilityMenuActions = (\n items: TreeVisibilityMenuItems,\n sectionOverrides: Record<string, VisibilityOverride>,\n nodeOverrides: Record<string, VisibilityOverride>,\n actions: TreeVisibilityMenuActions,\n options: BuildMenuOptions,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n const appendGroup = (group: ResourceContextAction[]) => {\n if (group.length === 0) return;\n if (result.length > 0) group[0] = { ...group[0], separatorBefore: true };\n result.push(...group);\n };\n\n const actionsForSections = (sections: TreeListSection[]) => {\n const sectionActions: ResourceContextAction[] = [];\n for (const section of sections) {\n if (isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, sectionOverrides, actions, options));\n }\n // Top-level rows that opt in (e.g. a \"Tickets\" nav entry) are hideable too; their leaf\n // children are not visited, so files/sessions inside a category stay non-hideable.\n for (const node of section.nodes) {\n if (isCustomizable(node)) sectionActions.push(buildNodeAction(node, nodeOverrides, actions, options));\n }\n }\n return sectionActions;\n };\n\n appendGroup(actionsForSections(items.headerSections ?? []));\n appendGroup(actionsForSections(items.sections));\n appendGroup(actionsForSections(items.footerSections ?? []));\n\n if (result.length === 0) return result;\n\n // A separator splits the visibility toggles above from the reset actions below.\n result.push({\n key: \"__reset-visibility\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n\n return result;\n};\n","import type { ReactNode } from \"react\";\nimport type { ResourceContextAction } from \"@/components/overlays/resource-context-menu\";\nimport type { VisibilityOverride } from \"../tree-list/tree-list-visibility.store\";\nimport { resolveVisibility } from \"../tree-list/tree-list-visibility-filter\";\n\nexport interface TabVisibilityPlacement {\n closable?: boolean;\n hiddenByDefault?: boolean;\n pinned?: boolean;\n title?: string;\n contributionId: string;\n}\n\nexport const filterVisibleTabs = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n getKey: (placement: T) => string,\n): T[] => {\n let changed = false;\n const next: T[] = [];\n for (const placement of placements) {\n if (placement.closable === true) {\n next.push(placement);\n continue;\n }\n if (placement.pinned === true && placement.hiddenByDefault === true) {\n changed = true;\n continue;\n }\n const effective = resolveVisibility(tabOverrides[getKey(placement)], placement.hiddenByDefault);\n if (effective === \"hidden\") {\n changed = true;\n continue;\n }\n next.push(placement);\n }\n return changed ? next : placements;\n};\n\nexport interface TabVisibilityMenuActions {\n onToggleTab: (key: string, hiddenByDefault: boolean) => void;\n onResetAll: () => void;\n}\n\ninterface BuildTabMenuOptions {\n // Trailing toggle indicator, mirroring the tree menu: eye when shown, eye-off when hidden.\n visibleIcon: ReactNode;\n hiddenIcon: ReactNode;\n resetIcon?: ReactNode;\n}\n\nexport const buildTabVisibilityMenuActions = <T extends TabVisibilityPlacement>(\n placements: T[],\n tabOverrides: Record<string, VisibilityOverride>,\n actions: TabVisibilityMenuActions,\n getKey: (placement: T) => string,\n options: BuildTabMenuOptions,\n getIcon?: (placement: T) => ReactNode,\n): ResourceContextAction[] => {\n const result: ResourceContextAction[] = [];\n let nonCloseableCount = 0;\n\n for (const placement of placements) {\n if (placement.pinned === true) continue;\n if (placement.closable === true) continue;\n nonCloseableCount += 1;\n const key = getKey(placement);\n const hiddenByDefault = placement.hiddenByDefault === true;\n const effective = resolveVisibility(tabOverrides[key], hiddenByDefault);\n result.push({\n key: `tab:${key}`,\n label: placement.title ?? placement.contributionId,\n icon: getIcon?.(placement),\n onClick: () => actions.onToggleTab(key, hiddenByDefault),\n endContent: effective === \"shown\" ? options.visibleIcon : options.hiddenIcon,\n });\n }\n\n if (nonCloseableCount === 0) return result;\n\n result.push({\n key: \"__reset-tabs\",\n label: \"Reset to default\",\n icon: options.resetIcon,\n separatorBefore: true,\n onClick: actions.onResetAll,\n });\n return result;\n};\n","import { createSlotRecipeContext, type HTMLChakraProps } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport {\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { X } from \"lucide-react\";\nimport { type KeyboardEvent, type ReactNode, useEffect, useRef } from \"react\";\nimport { windowTabsRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\nconst List = withProvider<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"list\");\nconst Tab = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"tab\");\nconst Trigger = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"trigger\");\nconst Label = withContext<HTMLSpanElement, HTMLChakraProps<\"span\">>(\"span\", \"label\");\nconst Close = withContext<HTMLButtonElement, HTMLChakraProps<\"button\">>(\"button\", \"close\");\n\nexport interface WindowTab {\n id: string;\n label: string;\n icon?: ReactNode;\n}\n\nexport interface WindowTabsProps {\n tabs: WindowTab[];\n selectedId?: string;\n onSelect: (id: string) => void;\n onClose: (id: string) => void;\n onReorder?: (id: string, targetId: string) => void;\n \"aria-label\": string;\n}\n\ninterface WindowTabItemProps {\n tab: WindowTab;\n selected: boolean;\n tabIndex: number;\n reorderable: boolean;\n onSelect: () => void;\n onClose: () => void;\n onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => void;\n}\n\nconst WindowTabItem = (props: WindowTabItemProps) => {\n const { tab, selected, tabIndex, reorderable, onSelect, onClose, onKeyDown } = props;\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging, isSorting } =\n useSortable({ id: tab.id, disabled: !reorderable });\n return (\n <Tab\n ref={setNodeRef}\n role=\"presentation\"\n data-selected={selected ? \"\" : undefined}\n data-dragging={isDragging ? \"\" : undefined}\n transform={CSS.Translate.toString(transform)}\n transition={transition}\n >\n <Trigger\n {...(reorderable ? attributes : {})}\n {...listeners}\n ref={setActivatorNodeRef}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected}\n aria-label={tab.label}\n tabIndex={tabIndex}\n title={tab.label}\n onClick={onSelect}\n onKeyDown={(event) => {\n listeners?.onKeyDown?.(event);\n if (!isSorting && !event.defaultPrevented) onKeyDown(event);\n }}\n >\n {tab.icon}\n <Label>{tab.label}</Label>\n </Trigger>\n <Close type=\"button\" aria-label={`Close ${tab.label}`} title={`Close ${tab.label}`} onClick={onClose}>\n <X aria-hidden=\"true\" />\n </Close>\n </Tab>\n );\n};\n\nexport const WindowTabs = (props: WindowTabsProps) => {\n const { tabs, selectedId, onSelect, onClose, onReorder, \"aria-label\": label } = props;\n const listRef = useRef<HTMLDivElement>(null);\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n useEffect(() => {\n if (!selectedId) return;\n listRef.current?.querySelector('[aria-selected=\"true\"]')?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }, [selectedId]);\n\n const closeTab = (index: number) => {\n const triggers = listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n const neighbor = triggers?.[index + 1] ?? triggers?.[index - 1];\n onClose(tabs[index].id);\n neighbor?.focus();\n };\n\n const handleKey = (event: KeyboardEvent<HTMLButtonElement>, index: number) => {\n let next = index;\n if (event.key === \"ArrowRight\") next = (index + 1) % tabs.length;\n else if (event.key === \"ArrowLeft\") next = (index - 1 + tabs.length) % tabs.length;\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = tabs.length - 1;\n else if (event.key === \"Delete\") {\n event.preventDefault();\n closeTab(index);\n return;\n } else return;\n event.preventDefault();\n listRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]')[next]?.focus();\n onSelect(tabs[next].id);\n };\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[({ transform }) => ({ ...transform, y: 0 })]}\n onDragEnd={({ active, over }) => {\n if (over && active.id !== over.id) onReorder?.(String(active.id), String(over.id));\n }}\n >\n <SortableContext items={tabs.map((tab) => tab.id)} strategy={horizontalListSortingStrategy}>\n <List ref={listRef} role=\"tablist\" aria-label={label}>\n {tabs.map((tab, index) => (\n <WindowTabItem\n key={tab.id}\n tab={tab}\n selected={tab.id === selectedId}\n tabIndex={tab.id === (selectedId ?? tabs[0]?.id) ? 0 : -1}\n reorderable={Boolean(onReorder)}\n onSelect={() => onSelect(tab.id)}\n onClose={() => closeTab(index)}\n onKeyDown={(event) => handleKey(event, index)}\n />\n ))}\n </List>\n </SortableContext>\n </DndContext>\n );\n};\n","import { createSlotRecipeContext, type HTMLChakraProps, type RecipeVariantProps } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\nimport { windowTitleBarRecipe as recipe } from \"@/theme/recipes/window-title-bar\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({ recipe });\ninterface RootProps extends HTMLChakraProps<\"div\">, RecipeVariantProps<typeof recipe> {}\nconst Root = withProvider<HTMLDivElement, RootProps>(\"div\", \"root\");\nconst Content = withContext<HTMLDivElement, HTMLChakraProps<\"div\">>(\"div\", \"content\");\n\nexport interface WindowTitleBarProps {\n platform: string;\n children?: ReactNode;\n}\n\nexport const WindowTitleBar = (props: WindowTitleBarProps) => {\n const { platform, children } = props;\n return (\n <Root controls={platform === \"darwin\" ? \"mac\" : \"overlay\"} data-window-title-bar=\"\">\n <Content>{children}</Content>\n </Root>\n );\n};\n","import { HStack, Text } from \"@chakra-ui/react\";\nimport type { ReactNode } from \"react\";\n\nexport interface TagEditorHeadingProps {\n children: ReactNode;\n /** Appends the unsaved-changes marker. */\n hasChanges?: boolean;\n}\n\n/**\n * Screen heading for a tag settings panel. The asterisk stays quiet on purpose —\n * the enabled Save button in the same header is the loud signal.\n */\nexport const TagEditorHeading = (props: TagEditorHeadingProps) => {\n const { children, hasChanges } = props;\n\n return (\n <HStack gap=\"3xs\" minWidth=\"0\">\n <Text textStyle=\"label/L/medium\" truncate>\n {children}\n </Text>\n {hasChanges ? (\n <Text textStyle=\"label/L/medium\" color=\"fg.muted\" aria-label=\"Unsaved changes\">\n *\n </Text>\n ) : null}\n </HStack>\n );\n};\n","import { Badge, Button, Editable, Flex, Icon, IconButton, Menu } from \"@chakra-ui/react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Check, ChevronDown, GripVertical, Trash2 } from \"lucide-react\";\n\nimport { IconColorPicker } from \"@/components/primitives/icon-color-picker\";\nimport type { IconColorPickerIconOption } from \"@/components/primitives/icon-options\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorAction, TagEditorValue } from \"./tag-editor.types\";\n\ninterface TagEditorRowProps {\n actionOptions?: TagEditorAction[];\n actionsLabel?: string;\n colorOptions?: readonly string[];\n iconOptions?: readonly IconColorPickerIconOption[];\n value: TagEditorValue;\n isSaving?: boolean;\n readOnly?: boolean;\n showDefault?: boolean;\n showIcons?: boolean;\n onActionsChange: (actions: string[]) => void;\n onColorChange: (color: string) => void;\n onDelete: () => void;\n onIconChange: (icon: string | null) => void;\n onNameChange: (name: string) => void;\n}\n\n/** Reads out the selected names rather than a count: a number says nothing about what is on. */\nconst selectionLabel = (selected: TagEditorAction[]) => {\n if (selected.length === 0) return \"None\";\n if (selected.length === 1) return selected[0].label;\n return `${selected[0].label} +${selected.length - 1}`;\n};\n\nconst ActionDropdown = (props: {\n actions: string[];\n disabled?: boolean;\n label: string;\n options: TagEditorAction[];\n optionName: string;\n onChange: (actions: string[]) => void;\n}) => {\n const { actions, disabled, label, options, optionName, onChange } = props;\n\n const selected = options.filter((option) => actions.includes(option.value));\n\n const toggleAction = (action: string) => {\n onChange(actions.includes(action) ? actions.filter((item) => item !== action) : [...actions, action]);\n };\n\n return (\n <Menu.Root closeOnSelect={false}>\n <Menu.Trigger asChild>\n <Button\n size=\"2xs\"\n variant=\"ghost\"\n gap=\"xs\"\n color={selected.length === 0 ? \"fg.subtle\" : \"fg\"}\n disabled={disabled}\n aria-label={`${label} for ${optionName}`}\n >\n {selected[0]?.icon}\n {selectionLabel(selected)}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {options.map((option) => (\n <Menu.Item key={option.value} value={option.value} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={option.value}\n label={option.label}\n icon={option.icon}\n isSelected={actions.includes(option.value)}\n endContent={actions.includes(option.value) ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => toggleAction(option.value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n\nexport const TagEditorRow = (props: TagEditorRowProps) => {\n const {\n actionOptions,\n actionsLabel = \"Actions\",\n colorOptions,\n iconOptions,\n value,\n isSaving,\n readOnly,\n showDefault,\n showIcons,\n onActionsChange,\n onColorChange,\n onDelete,\n onIconChange,\n onNameChange,\n } = props;\n const disabled = isSaving || readOnly;\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: value.id,\n disabled,\n });\n\n return (\n <Flex\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"group\"\n height=\"tag-editor-row\"\n alignItems=\"center\"\n gap=\"compact\"\n px=\"xs\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n // Lifted out of the list while dragging, so the row carries the drag chrome.\n bg={isDragging ? \"bg.elevated\" : \"transparent\"}\n borderRadius={isDragging ? \"compact\" : \"none\"}\n borderWidth={isDragging ? \"1px\" : undefined}\n boxShadow={isDragging ? \"lg\" : undefined}\n _hover={{ bg: isDragging ? \"bg.elevated\" : \"bg.muted\" }}\n >\n <Flex\n cursor={readOnly ? \"default\" : \"grab\"}\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.muted\" }}\n aria-label={`Reorder ${value.name}`}\n {...attributes}\n {...listeners}\n >\n <Icon as={GripVertical} boxSize=\"icon-xs\" />\n </Flex>\n <IconColorPicker\n color={value.color}\n colorOptions={colorOptions}\n icon={value.icon}\n iconOptions={iconOptions}\n showIcons={showIcons}\n onColorChange={onColorChange}\n onIconChange={onIconChange}\n disabled={disabled}\n aria-label={`Change ${value.name} appearance`}\n />\n {/* The default marker belongs to the name, so it sits beside it rather than drifting right. */}\n <Flex flex=\"1\" minWidth=\"0\" alignItems=\"center\" gap=\"xs\">\n <Editable.Root\n // Editable owns its draft text, so a changed source name must remount it for Cancel/reset flows.\n key={value.name}\n minWidth=\"0\"\n defaultValue={value.name}\n // A freshly added option opens straight into its rename input.\n defaultEdit={value.isNew}\n selectOnFocus\n disabled={disabled}\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== value.name) onNameChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"paragraph/S/regular\" />\n <Editable.Input textStyle=\"paragraph/S/regular\" />\n </Editable.Root>\n {showDefault && value.isDefault ? (\n <Badge size=\"sm\" variant=\"subtle\" colorPalette=\"blue\">\n Default\n </Badge>\n ) : null}\n </Flex>\n {actionOptions ? (\n <Flex width=\"tag-editor-commands\" justifyContent=\"flex-end\">\n <ActionDropdown\n actions={value.actions ?? []}\n disabled={disabled}\n label={actionsLabel}\n optionName={value.name}\n options={actionOptions}\n onChange={onActionsChange}\n />\n </Flex>\n ) : null}\n <IconButton\n size=\"xs\"\n variant=\"ghost\"\n color=\"fg.subtle\"\n _groupHover={{ color: \"fg.error\", bg: \"bg.error\" }}\n onClick={onDelete}\n disabled={disabled || value.isDefault}\n aria-label={`Delete ${value.name}`}\n >\n <Icon as={Trash2} boxSize=\"icon-xs\" />\n </IconButton>\n </Flex>\n );\n};\n","import { Button, chakra, Editable, Flex, Icon, Menu, Stack, Text } from \"@chakra-ui/react\";\nimport { closestCenter, DndContext, type DragEndEvent, PointerSensor, useSensor, useSensors } from \"@dnd-kit/core\";\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { Check, ChevronDown, Plus } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { DeleteConfirmationModal } from \"@/components/overlays/delete-confirmation-modal\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorHeading } from \"./tag-editor-heading\";\nimport { TagEditorRow } from \"./tag-editor-row\";\n\nconst nextSortOrder = (values: TagEditorValue[]) =>\n values.length > 0 ? Math.max(...values.map((value) => value.sortOrder)) + 1 : 0;\n\ninterface TagEditorTitleProps {\n title: string;\n hasChanges?: boolean;\n isSaving?: boolean;\n onTitleChange?: (title: string) => void;\n}\n\n/** Renames the tag definition inline, matching how its options are renamed. */\nconst TagEditorTitle = (props: TagEditorTitleProps) => {\n const { title, hasChanges, isSaving, onTitleChange } = props;\n\n if (!onTitleChange) return <TagEditorHeading hasChanges={hasChanges}>{title}</TagEditorHeading>;\n\n return (\n <Editable.Root\n key={title}\n defaultValue={title}\n disabled={isSaving}\n selectOnFocus\n onValueCommit={(details) => {\n const trimmed = details.value.trim();\n if (trimmed && trimmed !== title) onTitleChange(trimmed);\n }}\n >\n <Editable.Preview textStyle=\"label/L/medium\" />\n <Editable.Input textStyle=\"label/L/medium\" />\n </Editable.Root>\n );\n};\n\nconst AddOptionRow = chakra(\"button\", {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"xs\",\n height: \"tag-editor-add-row\",\n paddingInline: \"xs\",\n color: \"fg.muted\",\n borderRadius: \"compact\",\n cursor: \"pointer\",\n _hover: { bg: \"bg.muted\", color: \"fg\" },\n _disabled: { cursor: \"not-allowed\", opacity: 0.5, _hover: { bg: \"transparent\", color: \"fg.muted\" } },\n },\n});\n\ninterface ColumnHeadersProps {\n valueLabel: string;\n actionsLabel?: string;\n}\n\n/** Names each column once, so a row reads as data instead of repeating its own labels. */\nconst ColumnHeaders = (props: ColumnHeadersProps) => {\n const { valueLabel, actionsLabel } = props;\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"compact\"\n paddingInline=\"xs\"\n height=\"tag-editor-add-row\"\n bg=\"bg.subtle\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Flex width=\"tag-editor-lead\" flexShrink=\"0\" />\n <Text flex=\"1\" minWidth=\"0\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {valueLabel}\n </Text>\n {actionsLabel ? (\n <Text width=\"tag-editor-commands\" textAlign=\"right\" textStyle=\"label/XS/caps\" color=\"fg.subtle\">\n {actionsLabel}\n </Text>\n ) : null}\n <Flex width=\"tag-editor-trailing\" flexShrink=\"0\" />\n </Flex>\n );\n};\n\ninterface DefaultValueSelectProps {\n label: string;\n values: TagEditorValue[];\n disabled?: boolean;\n onSelect: (value: TagEditorValue) => void;\n}\n\n/**\n * Exactly one option is the default, so it reads as one select rather than a\n * per-row toggle. A select cannot hold two values, which is the rule itself.\n */\nconst DefaultValueSelect = (props: DefaultValueSelectProps) => {\n const { label, values, disabled, onSelect } = props;\n const current = values.find((value) => value.isDefault);\n\n return (\n <Flex\n alignItems=\"center\"\n gap=\"sm\"\n paddingInline=\"xs\"\n paddingBlock=\"xs\"\n bg=\"bg.subtle\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {label}\n </Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"2xs\" variant=\"ghost\" gap=\"xs\" disabled={disabled} aria-label={label}>\n {current?.name ?? \"None\"}\n <Icon as={ChevronDown} boxSize=\"icon-2xs\" />\n </Button>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"tag-action-menu\" bg=\"bg\">\n {values.map((value) => (\n <Menu.Item key={value.id} value={value.id} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n id={value.id}\n label={value.name}\n isSelected={value.isDefault}\n endContent={value.isDefault ? <Icon as={Check} boxSize=\"icon-xs\" /> : undefined}\n onActivate={() => onSelect(value)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n </Flex>\n );\n};\n\nexport const TagEditor = (props: TagEditorProps) => {\n const {\n title,\n description,\n headerActions,\n values,\n onValuesChange,\n onDeleteValue,\n onSetDefault,\n onTitleChange,\n hasChanges,\n isSaving,\n readOnly,\n addLabel = \"Add option\",\n addName = \"New option\",\n actionOptions,\n actionsLabel,\n defaultValueLabel = \"Default value\",\n colorOptions,\n defaultAddColor = \"blue\",\n defaultAddIcon = null,\n deleteButtonText = \"Delete tag\",\n deleteHeadline = \"Delete tag?\",\n deleteNotificationText = (value) => `This will delete \"${value.name}\".`,\n iconOptions,\n showDefault,\n showIcons = true,\n framed,\n showColumnHeaders,\n valueColumnLabel = \"Name\",\n } = props;\n const [valueToDelete, setValueToDelete] = useState<TagEditorValue | null>(null);\n const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));\n\n const updateValue = (index: number, patch: Partial<TagEditorValue>) => {\n const next = [...values];\n next[index] = { ...next[index], ...patch };\n onValuesChange(next);\n };\n\n const handleAddOption = () => {\n onValuesChange([\n ...values,\n {\n id: `new-${crypto.randomUUID()}`,\n name: addName,\n color: defaultAddColor,\n icon: defaultAddIcon,\n sortOrder: nextSortOrder(values),\n isNew: true,\n },\n ]);\n };\n\n const handleDeleteOption = () => {\n if (!valueToDelete) return;\n if (onDeleteValue) {\n onDeleteValue(valueToDelete);\n } else {\n onValuesChange(values.filter((value) => value.id !== valueToDelete.id));\n }\n setValueToDelete(null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over || active.id === over.id) return;\n\n const oldIndex = values.findIndex((value) => value.id === active.id);\n const newIndex = values.findIndex((value) => value.id === over.id);\n if (oldIndex < 0 || newIndex < 0) return;\n\n onValuesChange(arrayMove(values, oldIndex, newIndex).map((value, index) => ({ ...value, sortOrder: index })));\n };\n\n return (\n <>\n <Stack gap=\"2xs\">\n {title || headerActions ? (\n <Flex minHeight=\"tag-editor-row\" alignItems=\"center\" justifyContent=\"space-between\" gap=\"xs\">\n <Stack gap=\"3xs\" minWidth=\"0\">\n {title ? (\n <TagEditorTitle\n title={title}\n hasChanges={hasChanges}\n isSaving={isSaving}\n onTitleChange={onTitleChange}\n />\n ) : null}\n {description ? (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\">\n {description}\n </Text>\n ) : null}\n </Stack>\n {headerActions}\n </Flex>\n ) : null}\n\n <Stack\n gap=\"none\"\n borderWidth={framed ? \"1px\" : undefined}\n borderColor={framed ? \"border.subtle\" : undefined}\n borderRadius={framed ? \"md\" : undefined}\n overflow={framed ? \"hidden\" : undefined}\n >\n {showColumnHeaders ? (\n <ColumnHeaders valueLabel={valueColumnLabel} actionsLabel={actionOptions ? actionsLabel : undefined} />\n ) : null}\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={readOnly ? undefined : handleDragEnd}\n >\n <SortableContext items={values.map((value) => value.id)} strategy={verticalListSortingStrategy}>\n {values.map((value, index) => (\n <TagEditorRow\n key={value.id}\n value={value}\n isSaving={isSaving}\n readOnly={readOnly}\n showDefault={showDefault}\n showIcons={showIcons}\n actionOptions={actionOptions}\n actionsLabel={actionsLabel}\n colorOptions={colorOptions}\n iconOptions={iconOptions}\n onNameChange={(name) => updateValue(index, { name })}\n onColorChange={(color) => updateValue(index, { color })}\n onIconChange={(icon) => updateValue(index, { icon })}\n onActionsChange={(actions) => updateValue(index, { actions })}\n onDelete={() => setValueToDelete(value)}\n />\n ))}\n </SortableContext>\n </DndContext>\n\n {readOnly ? null : (\n <AddOptionRow type=\"button\" disabled={isSaving} onClick={handleAddOption}>\n <Icon as={Plus} boxSize=\"icon-xs\" />\n <Text textStyle=\"paragraph/S/regular\">{addLabel}</Text>\n </AddOptionRow>\n )}\n\n {showDefault && values.length > 0 ? (\n <DefaultValueSelect\n label={defaultValueLabel}\n values={values}\n disabled={isSaving || readOnly}\n onSelect={(value) => onSetDefault?.(value)}\n />\n ) : null}\n </Stack>\n </Stack>\n\n <DeleteConfirmationModal\n open={Boolean(valueToDelete)}\n onClose={() => setValueToDelete(null)}\n onDelete={handleDeleteOption}\n headline={deleteHeadline}\n notificationText={valueToDelete ? deleteNotificationText(valueToDelete) : \"\"}\n buttonText={deleteButtonText}\n />\n </>\n );\n};\n","import { Button, HStack } from \"@chakra-ui/react\";\n\nexport interface TagEditorSaveBarProps {\n onSave: () => void;\n onReset: () => void;\n hasChanges?: boolean;\n isSaving?: boolean;\n resetLabel?: string;\n saveLabel?: string;\n}\n\n/**\n * The single commit point for a tag settings screen, anchored in its header.\n * Reset only appears while edits are pending, so the resting state stays quiet.\n */\nexport const TagEditorSaveBar = (props: TagEditorSaveBarProps) => {\n const { onSave, onReset, hasChanges, isSaving, resetLabel = \"Reset\", saveLabel = \"Save\" } = props;\n\n return (\n <HStack gap=\"xs\">\n {hasChanges ? (\n <Button size=\"sm\" variant=\"ghost\" onClick={onReset} disabled={isSaving}>\n {resetLabel}\n </Button>\n ) : null}\n <Button size=\"sm\" variant=\"primary\" onClick={onSave} loading={isSaving} disabled={!hasChanges}>\n {saveLabel}\n </Button>\n </HStack>\n );\n};\n","import { HStack, Spinner, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { AlertMessage } from \"@/components/primitives/alert\";\nimport { TagEditor } from \"./tag-editor\";\nimport type { TagEditorProps, TagEditorValue } from \"./tag-editor.types\";\nimport { TagEditorSaveBar } from \"./tag-editor-save-bar\";\n\nexport interface SaveTagSettingsInput<TValue> {\n deletedIds: Set<string>;\n drafts: TagEditorValue[];\n values: TValue[];\n}\n\ntype EditorLabels = Pick<\n TagEditorProps,\n | \"actionOptions\"\n | \"actionsLabel\"\n | \"addLabel\"\n | \"addName\"\n | \"colorOptions\"\n | \"deleteButtonText\"\n | \"deleteHeadline\"\n | \"defaultValueLabel\"\n | \"deleteNotificationText\"\n | \"description\"\n | \"framed\"\n | \"iconOptions\"\n | \"readOnly\"\n | \"showDefault\"\n | \"onSetDefault\"\n | \"showColumnHeaders\"\n | \"showIcons\"\n | \"title\"\n | \"valueColumnLabel\"\n>;\n\ntype SortableValue = { id: string; sortOrder: number };\n\nexport interface TagSettingsPanelProps<TValue extends SortableValue> extends EditorLabels {\n errorTitle: string;\n loadingText?: string;\n resetLabel?: string;\n saveLabel?: string;\n /** Loaded values; pass undefined while the initial load is pending. */\n values: TValue[] | undefined;\n /** Load/save error surfaced by the host's data layer. */\n loadError?: unknown;\n /**\n * Persists the pending edits. The host owns fetching and cache invalidation;\n * the panel resets its delete tracking once the returned promise resolves.\n */\n onSave: (input: SaveTagSettingsInput<TValue>) => Promise<void>;\n toEditorValue: (value: TValue) => TagEditorValue;\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean;\n}\n\nconst bySortOrder = (left: TagEditorValue, right: TagEditorValue) =>\n left.sortOrder - right.sortOrder || left.name.localeCompare(right.name);\n\nconst toEditorValues = <TValue extends SortableValue>(\n values: TValue[],\n toEditorValue: (value: TValue) => TagEditorValue,\n) => values.map(toEditorValue).sort(bySortOrder);\n\nconst findOriginalValue = <TValue extends SortableValue>(values: TValue[], draft: TagEditorValue) =>\n values.find((value) => value.id === draft.id);\n\nconst hasTagValueChanges = <TValue extends SortableValue>(\n values: TValue[],\n drafts: TagEditorValue[],\n deletedIds: Set<string>,\n valueNeedsUpdate: (original: TValue, draft: TagEditorValue) => boolean,\n) => {\n if (deletedIds.size > 0) return true;\n\n return drafts.some((draft) => {\n if (draft.isNew) return true;\n const original = findOriginalValue(values, draft);\n if (!original) return true;\n return valueNeedsUpdate(original, draft) || draft.sortOrder !== original.sortOrder;\n });\n};\n\nconst errorMessage = (error: unknown) => (error instanceof Error ? error.message : error ? String(error) : null);\n\nexport const TagSettingsPanel = <TValue extends SortableValue>(props: TagSettingsPanelProps<TValue>) => {\n const {\n errorTitle,\n loadingText = \"Loading...\",\n resetLabel,\n saveLabel,\n values: loadedValues,\n loadError,\n onSave,\n readOnly,\n toEditorValue,\n valueNeedsUpdate,\n ...editorProps\n } = props;\n const [drafts, setDrafts] = useState<TagEditorValue[]>([]);\n const [deletedIds, setDeletedIds] = useState<Set<string>>(new Set());\n const [isSaving, setIsSaving] = useState(false);\n const [saveError, setSaveError] = useState<unknown>(null);\n\n const values = loadedValues ?? [];\n\n // Edits never refetch in the background, so loaded values only change on\n // initial load and after a save invalidates the host's cache — keeping local\n // drafts in sync.\n useEffect(() => {\n if (loadedValues) setDrafts(toEditorValues(loadedValues, toEditorValue));\n }, [loadedValues, toEditorValue]);\n\n const handleSave = async () => {\n setIsSaving(true);\n setSaveError(null);\n try {\n await onSave({ deletedIds, drafts, values });\n setDeletedIds(new Set());\n } catch (error) {\n setSaveError(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n const hasChanges = hasTagValueChanges(values, drafts, deletedIds, valueNeedsUpdate);\n const error = errorMessage(loadError) ?? errorMessage(saveError);\n\n const handleDeleteValue = (value: TagEditorValue) => {\n if (!value.isNew) setDeletedIds(new Set([...deletedIds, value.id]));\n setDrafts(drafts.filter((draft) => draft.id !== value.id));\n };\n\n const handleReset = () => {\n setDrafts(toEditorValues(values, toEditorValue));\n setDeletedIds(new Set());\n setSaveError(null);\n };\n\n return (\n <Stack boxSizing=\"border-box\" minH=\"100%\" p=\"lg\" gap=\"lg\" bg=\"bg\" color=\"fg\">\n {error ? (\n <AlertMessage status=\"error\" colorPalette=\"red\" title={errorTitle} size=\"sm\">\n {error}\n </AlertMessage>\n ) : null}\n {loadedValues === undefined ? (\n <HStack gap=\"sm\" color=\"fg.muted\">\n <Spinner size=\"sm\" />\n <Text textStyle=\"paragraph/S/regular\">{loadingText}</Text>\n </HStack>\n ) : (\n <TagEditor\n {...editorProps}\n readOnly={readOnly}\n values={drafts}\n onValuesChange={setDrafts}\n onDeleteValue={handleDeleteValue}\n onSetDefault={\n editorProps.showDefault\n ? (value) => setDrafts(drafts.map((draft) => ({ ...draft, isDefault: draft.id === value.id })))\n : editorProps.onSetDefault\n }\n hasChanges={hasChanges}\n isSaving={isSaving}\n headerActions={\n readOnly ? undefined : (\n <TagEditorSaveBar\n hasChanges={hasChanges}\n isSaving={isSaving}\n resetLabel={resetLabel}\n saveLabel={saveLabel}\n onSave={() => void handleSave()}\n onReset={handleReset}\n />\n )\n }\n />\n )}\n </Stack>\n );\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\ninterface TreeListOrderState extends TreeListOrderSnapshot {\n setSectionOrder: (nextSectionIds: string[]) => void;\n setNodeOrder: (sectionId: string, nextNodeIds: string[]) => void;\n setSectionSlot: (sectionId: string, slot: TreeListOrderSlot) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-order\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst dedupe = (ids: string[]) => {\n const seen = new Set<string>();\n const result: string[] = [];\n for (const id of ids) {\n if (seen.has(id)) continue;\n seen.add(id);\n result.push(id);\n }\n return result;\n};\n\nconst getPersistedSnapshot = (state: TreeListOrderState) => ({\n sectionOrder: state.sectionOrder,\n nodeOrderBySection: state.nodeOrderBySection,\n sectionSlotById: state.sectionSlotById,\n});\n\nexport const createTreeListOrderStore = (options: CreateTreeListOrderStoreOptions) =>\n createStore<TreeListOrderState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSectionOrder: (nextSectionIds) => set((state) => ({ ...state, sectionOrder: dedupe(nextSectionIds) })),\n setNodeOrder: (sectionId, nextNodeIds) =>\n set((state) => ({\n ...state,\n nodeOrderBySection: { ...state.nodeOrderBySection, [sectionId]: dedupe(nextNodeIds) },\n })),\n setSectionSlot: (sectionId, slot) =>\n set((state) => ({ ...state, sectionSlotById: { ...state.sectionSlotById, [sectionId]: slot } })),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListOrderStore>>();\n\nexport const getTreeListOrderStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListOrderStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\n\nconst reorderBy = <T extends { id: string }>(items: T[], order: string[]): T[] => {\n if (order.length === 0) return items;\n\n const indexById = new Map(items.map((item, index) => [item.id, index]));\n const placed = new Set<number>();\n const next: T[] = [];\n\n for (const id of order) {\n const index = indexById.get(id);\n if (index === undefined || placed.has(index)) continue;\n placed.add(index);\n next.push(items[index]);\n }\n\n let changed = next.length > 0 && next.length !== items.length;\n for (let i = 0; i < items.length; i += 1) {\n if (placed.has(i)) continue;\n if (next.length !== i && !changed) changed = true;\n next.push(items[i]);\n }\n\n if (!changed) {\n for (let i = 0; i < items.length; i += 1) {\n if (items[i] !== next[i]) {\n changed = true;\n break;\n }\n }\n }\n\n return changed ? next : items;\n};\n\nexport const applyTreeListOrder = (\n sections: TreeListSection[],\n sectionOrder: string[],\n nodeOrderBySection: Record<string, string[]>,\n): TreeListSection[] => {\n let changed = false;\n const reorderedSections = reorderBy(sections, sectionOrder);\n if (reorderedSections !== sections) changed = true;\n\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => sections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) => nodeIds.filter((nodeId) => nodesById.has(nodeId))),\n );\n\n const next: TreeListSection[] = [];\n for (const section of reorderedSections) {\n const nodeOrder = nodeOrderBySection[section.id];\n if (!(section.id in nodeOrderBySection)) {\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n if (remainingNodes.length === section.nodes.length) next.push(section);\n else {\n changed = true;\n next.push({ ...section, nodes: remainingNodes });\n }\n continue;\n }\n\n const orderedNodes = (nodeOrder ?? []).flatMap((nodeId) => {\n const node = nodesById.get(nodeId);\n return node ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = [...orderedNodes, ...remainingNodes];\n if (\n reorderedNodes.length !== section.nodes.length ||\n reorderedNodes.some((node, index) => node !== section.nodes[index])\n ) {\n changed = true;\n next.push({ ...section, nodes: reorderedNodes });\n } else {\n next.push(section);\n }\n }\n\n return changed ? next : sections;\n};\n","import { useStore } from \"zustand\";\nimport { createJSONStorage, persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport { createBrowserStorage } from \"../../utils/browser-storage\";\n\nexport type VisibilityOverride = \"hidden\" | \"shown\";\n\ninterface TreeListVisibilitySnapshot {\n sectionOverrides: Record<string, VisibilityOverride>;\n nodeOverrides: Record<string, VisibilityOverride>;\n}\n\ninterface TreeListVisibilityState extends TreeListVisibilitySnapshot {\n setSection: (id: string, value: VisibilityOverride | undefined) => void;\n setNode: (id: string, value: VisibilityOverride | undefined) => void;\n toggleSection: (id: string, hiddenByDefault: boolean) => void;\n toggleNode: (id: string, hiddenByDefault: boolean) => void;\n clearSection: (id: string) => void;\n clearNode: (id: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListVisibilityStoreOptions {\n storageKey: string;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListVisibilitySnapshot = {\n sectionOverrides: {},\n nodeOverrides: {},\n};\n\nconst STORE_NAMESPACE = \"pstdio/ui/tree-list-visibility\";\n\nconst toStorageName = (storageKey: string) => `${STORE_NAMESPACE}/${storageKey}`;\n\nconst resolveEffective = (override: VisibilityOverride | undefined, hiddenByDefault: boolean): VisibilityOverride =>\n override ?? (hiddenByDefault ? \"hidden\" : \"shown\");\n\nconst flipOverride = (current: VisibilityOverride): VisibilityOverride => (current === \"hidden\" ? \"shown\" : \"hidden\");\n\nconst setOverride = (\n overrides: Record<string, VisibilityOverride>,\n id: string,\n value: VisibilityOverride | undefined,\n) => {\n if (value === undefined) {\n if (!(id in overrides)) return overrides;\n const { [id]: _removed, ...rest } = overrides;\n return rest;\n }\n\n if (overrides[id] === value) return overrides;\n return { ...overrides, [id]: value };\n};\n\nconst toggleOverride = (overrides: Record<string, VisibilityOverride>, id: string, hiddenByDefault: boolean) => {\n const next = flipOverride(resolveEffective(overrides[id], hiddenByDefault));\n return setOverride(overrides, id, next);\n};\n\nconst getPersistedSnapshot = (state: TreeListVisibilityState) => ({\n sectionOverrides: state.sectionOverrides,\n nodeOverrides: state.nodeOverrides,\n});\n\nexport const createTreeListVisibilityStore = (options: CreateTreeListVisibilityStoreOptions) =>\n createStore<TreeListVisibilityState>()(\n persist(\n (set) => ({\n ...DEFAULT_SNAPSHOT,\n setSection: (id, value) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, value) })),\n setNode: (id, value) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, value) })),\n toggleSection: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n sectionOverrides: toggleOverride(state.sectionOverrides, id, hiddenByDefault),\n })),\n toggleNode: (id, hiddenByDefault) =>\n set((state) => ({\n ...state,\n nodeOverrides: toggleOverride(state.nodeOverrides, id, hiddenByDefault),\n })),\n clearSection: (id) =>\n set((state) => ({ ...state, sectionOverrides: setOverride(state.sectionOverrides, id, undefined) })),\n clearNode: (id) =>\n set((state) => ({ ...state, nodeOverrides: setOverride(state.nodeOverrides, id, undefined) })),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createJSONStorage(createBrowserStorage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nconst storeRegistry = new Map<string, ReturnType<typeof createTreeListVisibilityStore>>();\n\nexport const getTreeListVisibilityStore = (storageKey: string) => {\n const existing = storeRegistry.get(storageKey);\n if (existing) return existing;\n\n const store = createTreeListVisibilityStore({ storageKey });\n storeRegistry.set(storageKey, store);\n return store;\n};\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey);\n return useStore(store, selector);\n};\n\nexport type { TreeListVisibilitySnapshot, TreeListVisibilityState };\n","export interface FileIconThemeFont {\n fontFamily: string;\n src: { url: string; format?: string }[];\n weight?: string;\n style?: string;\n}\n\nexport interface FileIconThemeDefinition {\n fontCharacter?: string;\n fontColor?: string;\n fontId?: string;\n}\n\nexport interface FileIconThemePreferenceOption {\n id: string;\n title?: string;\n definitions: Record<string, unknown>;\n fileExtensions: Record<string, string>;\n fileNames: Record<string, string>;\n defaults: { file?: string; folder?: string };\n fonts: FileIconThemeFont[];\n}\n\nexport const defaultFileIconThemePreferences: FileIconThemePreferenceOption[] = [];\n\nexport const isFileIconThemePreference = (\n value: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n): value is string => typeof value === \"string\" && themes.some((theme) => theme.id === value);\n\n// VS Code matches the longest compound extension first (\"d.ts\" before \"ts\").\nconst extensionCandidates = (filename: string) => {\n const parts = filename.toLowerCase().split(\".\");\n const candidates: string[] = [];\n for (let i = 1; i < parts.length; i += 1) candidates.push(parts.slice(i).join(\".\"));\n return candidates;\n};\n\nconst resolveDefinitionKey = (theme: FileIconThemePreferenceOption, filename: string, isDirectory: boolean) => {\n if (isDirectory) return theme.defaults.folder;\n\n const named = theme.fileNames[filename.toLowerCase()];\n if (named) return named;\n\n for (const candidate of extensionCandidates(filename)) {\n const match = theme.fileExtensions[candidate];\n if (match) return match;\n }\n\n return theme.defaults.file;\n};\n\nconst fontFamilyForDefinition = (theme: FileIconThemePreferenceOption, definition: FileIconThemeDefinition) => {\n if (definition.fontId) {\n const matched = theme.fonts.find((font) => font.fontFamily === `${theme.id}-${definition.fontId}`);\n if (matched) return matched.fontFamily;\n }\n return theme.fonts[0]?.fontFamily;\n};\n\nexport interface ResolvedFileIconGlyph {\n fontFamily: string;\n fontCharacter: string;\n fontColor?: string;\n}\n\n// VS Code icon themes store the glyph as a CSS escape (\"\\\\E023\"); decode it to the real code point.\nconst decodeFontCharacter = (value: string) => {\n const match = /^\\\\([0-9a-fA-F]+)$/.exec(value);\n return match ? String.fromCodePoint(Number.parseInt(match[1], 16)) : value;\n};\n\nexport const resolveFileIconGlyph = (\n theme: FileIconThemePreferenceOption | undefined,\n filename: string,\n isDirectory = false,\n): ResolvedFileIconGlyph | undefined => {\n if (!theme) return undefined;\n\n const key = resolveDefinitionKey(theme, filename, isDirectory);\n if (!key) return undefined;\n\n const definition = theme.definitions[key] as FileIconThemeDefinition | undefined;\n if (!definition?.fontCharacter) return undefined;\n\n const fontFamily = fontFamilyForDefinition(theme, definition);\n if (!fontFamily) return undefined;\n\n return {\n fontFamily,\n fontCharacter: decodeFontCharacter(definition.fontCharacter),\n fontColor: definition.fontColor,\n };\n};\n\nconst FONT_STYLE_ATTRIBUTE = \"data-pstdio-file-icon-fonts\";\n\nconst fontFaceRule = (font: FileIconThemeFont) => {\n const src = font.src\n .map((entry) => `url(\"${entry.url}\")${entry.format ? ` format(\"${entry.format}\")` : \"\"}`)\n .join(\", \");\n return [\n \"@font-face {\",\n ` font-family: \"${font.fontFamily}\";`,\n ` src: ${src};`,\n ` font-weight: ${font.weight ?? \"normal\"};`,\n ` font-style: ${font.style ?? \"normal\"};`,\n \"}\",\n ].join(\"\\n\");\n};\n\nexport const applyFileIconThemePreference = (\n themeId: string | null,\n themes: readonly FileIconThemePreferenceOption[],\n) => {\n if (typeof document === \"undefined\") return;\n\n let style = document.querySelector<HTMLStyleElement>(`style[${FONT_STYLE_ATTRIBUTE}]`);\n if (!style) {\n style = document.createElement(\"style\");\n style.setAttribute(FONT_STYLE_ATTRIBUTE, \"\");\n document.head.appendChild(style);\n }\n\n const theme = themes.find((option) => option.id === themeId);\n style.textContent = (theme?.fonts ?? []).map(fontFaceRule).join(\"\\n\\n\");\n};\n","import { createContext, type ReactNode, useContext, useEffect, useState } from \"react\";\n\nimport {\n applyFileIconThemePreference,\n defaultFileIconThemePreferences,\n type FileIconThemePreferenceOption,\n isFileIconThemePreference,\n} from \"./apply-file-icon-theme-preference\";\nimport { createBrowserStorage } from \"./browser-storage\";\n\nconst STORAGE_KEY = \"file-icon-theme-preference\";\n\n// The bundled Seti theme is the preferred default; fall back to whatever is registered first.\nconst getDefaultFileIconThemePreference = (themes: readonly FileIconThemePreferenceOption[]) =>\n themes.find((theme) => theme.id.endsWith(\".seti\"))?.id ?? themes[0]?.id ?? null;\n\ninterface FileIconThemePreferenceContextValue {\n fileIconThemePreference: string | null;\n fileIconThemePreferences: readonly FileIconThemePreferenceOption[];\n activeFileIconTheme: FileIconThemePreferenceOption | undefined;\n setFileIconThemePreference: (preference: string) => void;\n}\n\nconst FileIconThemePreferenceContext = createContext<FileIconThemePreferenceContextValue | null>(null);\n\ninterface FileIconThemePreferenceProviderProps {\n children: ReactNode;\n themePreferences?: readonly FileIconThemePreferenceOption[];\n}\n\nconst getInitialPreference = (themes: readonly FileIconThemePreferenceOption[]) => {\n if (typeof window === \"undefined\") return getDefaultFileIconThemePreference(themes);\n\n const stored = createBrowserStorage().getItem(STORAGE_KEY);\n if (isFileIconThemePreference(stored, themes)) return stored;\n\n return getDefaultFileIconThemePreference(themes);\n};\n\nexport const FileIconThemePreferenceProvider = (props: FileIconThemePreferenceProviderProps) => {\n const { children, themePreferences = defaultFileIconThemePreferences } = props;\n const [fileIconThemePreference, setFileIconThemePreference] = useState<string | null>(() =>\n getInitialPreference(themePreferences),\n );\n\n useEffect(() => {\n const resolved = isFileIconThemePreference(fileIconThemePreference, themePreferences)\n ? fileIconThemePreference\n : getDefaultFileIconThemePreference(themePreferences);\n\n if (resolved !== fileIconThemePreference) {\n setFileIconThemePreference(resolved);\n return;\n }\n\n applyFileIconThemePreference(resolved, themePreferences);\n if (typeof window !== \"undefined\" && resolved) createBrowserStorage().setItem(STORAGE_KEY, resolved);\n }, [fileIconThemePreference, themePreferences]);\n\n const activeFileIconTheme = themePreferences.find((theme) => theme.id === fileIconThemePreference);\n\n return (\n <FileIconThemePreferenceContext\n value={{\n fileIconThemePreference,\n fileIconThemePreferences: themePreferences,\n activeFileIconTheme,\n setFileIconThemePreference,\n }}\n >\n {children}\n </FileIconThemePreferenceContext>\n );\n};\n\nexport const useFileIconThemePreference = () => {\n const context = useContext(FileIconThemePreferenceContext);\n\n if (!context) {\n throw new Error(\"useFileIconThemePreference must be used within a FileIconThemePreferenceProvider\");\n }\n\n return context;\n};\n","import { Folder } from \"lucide-react\";\nimport type { CSSProperties } from \"react\";\n\nimport { type FileIconThemePreferenceOption, resolveFileIconGlyph } from \"./apply-file-icon-theme-preference\";\nimport { getFileTypeIcon } from \"./get-file-type-icon\";\n\ninterface ResolveFileIconElementOptions {\n isDirectory?: boolean;\n theme?: FileIconThemePreferenceOption;\n size?: number;\n}\n\n// Renders a contributed icon-font glyph when the active theme matches; otherwise falls back to Lucide icons.\nexport const resolveFileIconElement = (filename: string, options: ResolveFileIconElementOptions = {}) => {\n const { isDirectory = false, theme, size = 16 } = options;\n\n const glyph = resolveFileIconGlyph(theme, filename, isDirectory);\n if (glyph) {\n const style: CSSProperties = {\n fontFamily: `\"${glyph.fontFamily}\"`,\n color: glyph.fontColor,\n fontSize: size,\n lineHeight: 1,\n display: \"inline-flex\",\n };\n return (\n <span aria-hidden=\"true\" style={style}>\n {glyph.fontCharacter}\n </span>\n );\n }\n\n if (isDirectory) return <Folder size={size} />;\n\n const Icon = getFileTypeIcon(filename);\n return <Icon size={size} />;\n};\n"],"names":["ActivityAvatar","props","$","_c","actor","icon","color","t0","background","t1","undefined","t2","Box","avatarSrc","t3","avatarAlt","name","t4","Avatar","t5","t6","t7","activityCommentSlotRecipe","defineSlotRecipe","className","slots","base","root","width","borderWidth","borderRadius","overflow","body","display","flexDirection","content","overflowWrap","whiteSpace","variants","tone","default","borderColor","attention","size","comfortable","gap","padding","textStyle","compact","defaultVariants","withContext","withProvider","createSlotRecipeContext","recipe","TimestampSeparator","Symbol","for","jsx","ActivityCommentHeader","iconColor","iconBackground","timestamp","actions","Text","jsxs","Fragment","HStack","ActivityCommentRoot","ActivityCommentBody","ActivityCommentContent","ActivityReply","children","rootProps","Stack","ActivityComment","composer","replies","hasReplies","Children","count","ActivityComposer","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","onAttach","onChange","onSubmit","internalValue","setInternalValue","useState","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","handleSubmit","event","preventDefault","chakra","Textarea","currentTarget","Spacer","Tooltip","IconButton","Icon","Paperclip","ArrowUp","EventSeparator","ActivityEvent","Timeline","t8","ActivityRoot","ActivityHeader","title","ActivityFeed","ActivityTimeline","RichMessage","lazy","then","module","iconComponents","activity","Activity","bell","Bell","CircleAlert","component","Component","ExternalLink","GitBranch","info","Info","MessageCircle","ScanSearch","sparkles","Sparkles","ActivityIcon","IconComponent","ItemActions","item","onActionSelect","onRelatedResourceSelect","attentionActions","kind","relatedResources","map","action","Button","label","id","resource","type","AttentionStatus","statusLabel","ResourceActivityItem","fallbackActorName","formatTimestamp","timestampLabel","createdAt","summary","attentionIcon","t9","markdown","Suspense","t10","t11","t12","defaultFormatTimestamp","ResourceActivityFeed","error","items","onLoadMore","isLoading","hasMore","isLoadingMore","emptyTitle","emptyDescription","errorTitle","loadMoreLabel","loadingLabel","AlertMessage","Spinner","t13","EmptyState","t14","Root","Header","Feed","Event","Comment","Reply","Composer","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","entry","secondaryLabel","searchText","hasInputPrefix","query","inputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","find","mode","getPaletteEffectiveQuery","modeId","candidate","slice","limitDefaultAssetEntries","entries","limit","counts","filter","assetType","filterPaletteEntries","options","effectiveQuery","getEffectiveQuery","toLowerCase","filteredEntries","includes","defaultAssetLimit","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","endContent","shortcut","isSelected","Check","onActivate","buildRows","rows","forEach","index","previousEntry","group","push","entryIndex","getActiveRowIndex","activeIndex","findIndex","row","PaletteList","emptyLabel","onHover","scrollRef","activeRowIndex","virtualizer","useVirtualizer","getScrollElement","current","estimateSize","getItemKey","initialRect","height","overscan","useEffect","scrollToIndex","align","behavior","getTotalSize","getVirtualItems","virtualRow","measureElement","top","start","ListRow","key","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","onSearchChange","onSearchKeyDown","restScrollAreaProps","maxH","showHorizontalScrollbar","target","Input","InputGroup","Dialog","CloseButton","ScrollArea","resolveStateValue","state","fallback","Palette","open","initialQuery","initialActiveIndex","resetKey","inputIcon","filterEntries","onActiveEntryChange","onQueryChange","onClose","onEscape","setQueryState","setActiveIndex","inputRef","useRef","setupRef","activeEntry","resolvedInputIcon","activeMode","resolvedPlaceholder","nextQuery","setQuery","runActiveEntry","closePalette","previousSetup","timeout","setTimeout","input","focus","setSelectionRange","clearTimeout","Math","min","max","t15","entryCount","handleEscape","t16","current_0","_temp","stopPropagation","handleKeyDown","t17","details","t18","t19","viewportRef","viewportProps","style","overflowAnchor","t20","nextQuery_0","t21","t22","t23","current_1","nonMacModifierLabels","alt","control","ctrl","mod","shift","macModifierLabels","Option","cmd","Command","command","meta","option","keyLabels","arrowleft","ArrowLeft","arrowright","ArrowRight","getShortcutPlatform","navigator","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","part","Boolean","getShortcutDisplayParts","binding","Array","isArray","PaletteShortcut","steps","stepIndex","part_0","partIndex","Kbd","join","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","transform","ChevronRight","Collapsible","Flex","e","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","status","sourceLabel","targetLabel","filterItems","normalizedQuery","groupItems","needsInput","urgent","normal","orderItemsForDisplay","flatMap","metadataDescription","timeLabel","getActionButtons","onDismiss","X","tooltip","onAction","NotificationEndContent","onRunAction","Badge","destructive","NotificationRows","onActivateItem","onActiveIndexChange","groups","rowIndex","currentIndex","LoadingRows","NotificationCenter","autoFocus","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2","Search","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","ref","containerProps","isOpen","button","BubblePanel","menu","closeLabel","onPopOut","popOutLabel","testId","ariaLabel","SquareArrowOutUpRight","Minus","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","buttonText","notificationText","onDelete","handleDelete","getEntryIcon","isDirectory","isGitRepo","FolderOpen","Folder","FileText","path","RepoPickerListEntry","selectedPath","selectedPathSet","onEntryClick","has","isAlreadySelected","isDisabled","handleClick","focusInlinePickerOption","from","querySelectorAll","indexOf","document","activeElement","nextIndex","RepoPickerDialog","currentPath","selectedPaths","isSelectDisabled","onSelect","onSelectHomeDirectory","onSelectParentDirectory","Set","searchScope","T0","t24","Home","t25","t26","t27","ChevronUp","t28","t29","t30","T1","t31","t32","t33","t34","t35","t36","t37","t38","t39","t40","t41","t42","Body","t43","t44","t45","t46","Content","t47","Positioner","t48","linkProps","alignItems","minW","maxW","outline","textOverflow","_active","_focus","_focusVisible","staticProps","cursor","textDecoration","_hover","isInteractiveItem","url","onClick","BreadcrumbItemLink","isCurrent","linkComponent","LinkComponent","ChakraBreadcrumb","BreadcrumbItemContent","contextMenuActions","placement","ResourceContextMenu","BreadcrumbSeparator","separator","Breadcrumb","React","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","backgroundClip","backgroundImage","Label","ErrorBoundary","getDerivedStateFromError","componentDidCatch","console","handleReset","setState","onReset","render","ErrorFallback","message","AbsoluteCenter","hasGlyph","TagSwatch","iconOptions","showIcon","getIconComponent","Center","SwatchTrigger","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","justifyContent","bg","IconColorPicker","colorOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","optionColors","optionIcons","selectedIcon","Popover","optionColor","Grid","selected","SimpleCard","SimpleCardBody","IntegrationCard","version","category","active","actionLabel","segmentedControlSlotRecipe","transitionProperty","transitionDuration","sm","paddingInline","xs","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","toaster","createToaster","pauseOnPageIdle","duration","Toaster","ChakraToaster","mdDown","toast","Toast","md","paddingEnd","ParamEditorControlList","DEFAULT_SNAPSHOT","expandedSections","expandedNodes","SIDENAV_STORE_NAMESPACE","toStorageName","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot","createSidenavStore","initialState","snapshot","createStore","persist","set","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","setNodeExpanded","setWidth","reset","storage","createJSONStorage","createBrowserStorage","partialize","sidenavStoreRegistry","Map","getSidenavStore","existingStore","get","store","useSidenavStore","selector","useStore","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","resolveInitialWidth","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","sections","activeNodeId","contextActions","footer","closable","defaultExpandedSections","onNavigate","onOpenChange","maxWidth","virtualize","initialWidth","persistedWidth","_temp3","_temp4","_temp5","_temp6","effectiveWidth","widthCss","overflowX","minHeight","TreeList","state_0","state_1","state_2","state_3","state_4","tabOverrides","STORE_NAMESPACE","resolveEffective","override","hiddenByDefault","setOverride","overrides","_removed","toggleOverride","createTabVisibilityStore","setTab","toggleTab","clearTab","storeRegistry","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","canHide","isNodeVisible","node","nodeOverrides","filterNodes","nodes","changed","next","filteredChildren","filterVisibleNodes","filterVisibleSections","sectionOverrides","section","filteredNodes","emptyState","visibilityEndContent","effective","visibleIcon","hiddenIcon","buildSectionAction","onToggleSection","buildNodeAction","onToggleNode","buildTreeVisibilityMenuActions","result","appendGroup","separatorBefore","actionsForSections","sectionActions","headerSections","footerSections","resetIcon","onResetAll","filterVisibleTabs","placements","getKey","pinned","buildTabVisibilityMenuActions","getIcon","nonCloseableCount","contributionId","onToggleTab","List","Tab","Trigger","Close","WindowTabItem","tab","tabIndex","reorderable","onKeyDown","attributes","listeners","setNodeRef","setActivatorNodeRef","transition","isDragging","isSorting","useSortable","CSS","Translate","toString","defaultPrevented","WindowTabs","tabs","selectedId","onReorder","listRef","activationConstraint","distance","coordinateGetter","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","querySelector","scrollIntoView","block","inline","T2","closeTab","triggers","neighbor","handleKey","index_0","DndContext","closestCenter","over","String","SortableContext","horizontalListSortingStrategy","tab_0","index_1","event_0","y","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","optionName","toggleAction","Menu","ChevronDown","option_0","TagEditorRow","actionOptions","actionsLabel","isSaving","readOnly","showDefault","onActionsChange","onNameChange","Transform","GripVertical","trimmed","Editable","isNew","isDefault","Trash2","nextSortOrder","sortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","value_0","TagEditor","headerActions","onValuesChange","onDeleteValue","onSetDefault","addLabel","addName","defaultValueLabel","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","updateValue","patch","handleAddOption","crypto","randomUUID","handleDeleteOption","handleDragEnd","oldIndex","newIndex","arrayMove","verticalListSortingStrategy","Plus","TagEditorSaveBar","onSave","resetLabel","saveLabel","bySortOrder","left","right","localeCompare","toEditorValues","toEditorValue","sort","findOriginalValue","draft","hasTagValueChanges","drafts","deletedIds","valueNeedsUpdate","some","original","errorMessage","Error","TagSettingsPanel","loadingText","loadedValues","loadError","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","handleDeleteValue","sectionOrder","nodeOrderBySection","sectionSlotById","dedupe","ids","seen","add","createTreeListOrderStore","setSectionOrder","nextSectionIds","setNodeOrder","nextNodeIds","setSectionSlot","slot","resetSectionOrder","resetNodeOrder","getTreeListOrderStore","useTreeListOrderStore","reorderBy","order","indexById","placed","i","applyTreeListOrder","reorderedSections","nodesById","assignedNodeIds","Object","nodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","flipOverride","createTreeListVisibilityStore","setSection","setNode","clearSection","clearNode","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","filename","parts","candidates","resolveDefinitionKey","defaults","folder","named","fileNames","match","fileExtensions","file","fontFamilyForDefinition","definition","fontId","matched","fonts","font","fontFamily","decodeFontCharacter","exec","fromCodePoint","resolveFileIconGlyph","definitions","fontCharacter","fontColor","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","format","weight","applyFileIconThemePreference","themeId","createElement","setAttribute","head","appendChild","textContent","STORAGE_KEY","getDefaultFileIconThemePreference","endsWith","FileIconThemePreferenceContext","createContext","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","setItem","activeFileIconTheme","fileIconThemePreferences","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","fontSize","lineHeight","getFileTypeIcon"],"mappings":"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"}