@pstdio/ui 0.43.0 → 0.43.1

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 (74) hide show
  1. package/README.md +11 -0
  2. package/dist/{MermaidComponent-X7N-8w2S.js → MermaidComponent-_cmVeKKR.js} +3 -3
  3. package/dist/{MermaidComponent-X7N-8w2S.js.map → MermaidComponent-_cmVeKKR.js.map} +1 -1
  4. package/dist/chat-ui.d.ts +85 -57
  5. package/dist/chat-ui.js +1168 -1183
  6. package/dist/chat-ui.js.map +1 -1
  7. package/dist/{collection-view-fields-CajuwtKF.d.ts → collection-view-fields-B3fhsgn7.d.ts} +2 -0
  8. package/dist/{collection-view-grouping-DnuJ1U4R.js → collection-view-grouping-jIqOrBG8.js} +2 -2
  9. package/dist/{collection-view-grouping-DnuJ1U4R.js.map → collection-view-grouping-jIqOrBG8.js.map} +1 -1
  10. package/dist/{collection-view-search-D_7Qvz7p.js → collection-view-search-KbQpKHdn.js} +767 -630
  11. package/dist/collection-view-search-KbQpKHdn.js.map +1 -0
  12. package/dist/collection-view.d.ts +1 -1
  13. package/dist/collection-view.js +2 -2
  14. package/dist/{data-table-stats-row-C8CtvdDt.js → data-table-stats-row-83mX8b1B.js} +2 -2
  15. package/dist/{data-table-stats-row-C8CtvdDt.js.map → data-table-stats-row-83mX8b1B.js.map} +1 -1
  16. package/dist/data-table.d.ts +2 -2
  17. package/dist/data-table.js +8 -8
  18. package/dist/{diff-drawer-BGQhxyOh.js → diff-drawer-BMl0zobj.js} +2 -2
  19. package/dist/{diff-drawer-BGQhxyOh.js.map → diff-drawer-BMl0zobj.js.map} +1 -1
  20. package/dist/{diff-viewer-DYcswG6O.js → diff-viewer-C5KXwq7E.js} +5 -5
  21. package/dist/{diff-viewer-DYcswG6O.js.map → diff-viewer-C5KXwq7E.js.map} +1 -1
  22. package/dist/diff.js +2 -2
  23. package/dist/{display-sort-control-n3L5WvkJ.js → display-sort-control-BCkgKET1.js} +194 -183
  24. package/dist/display-sort-control-BCkgKET1.js.map +1 -0
  25. package/dist/{edit-mode-data-table-BclZ-pWe.js → edit-mode-data-table-ScVJJT9F.js} +8 -8
  26. package/dist/{edit-mode-data-table-BclZ-pWe.js.map → edit-mode-data-table-ScVJJT9F.js.map} +1 -1
  27. package/dist/{index-5Lw7YMKy.d.ts → index-Bc2BsdD1.d.ts} +6 -0
  28. package/dist/{index-DjZsR4Ey.d.ts → index-DXpADqIg.d.ts} +8 -4
  29. package/dist/index.d.ts +49 -49
  30. package/dist/index.js +453 -455
  31. package/dist/index.js.map +1 -1
  32. package/dist/kanban-renderer.d.ts +3 -3
  33. package/dist/kanban-renderer.js +935 -745
  34. package/dist/kanban-renderer.js.map +1 -1
  35. package/dist/{list-row-CmFG_jCC.js → list-row-F8kBQGB-.js} +394 -384
  36. package/dist/list-row-F8kBQGB-.js.map +1 -0
  37. package/dist/{markdown-editor-CN4qOKky.js → markdown-editor-Dm4Fi3sX.js} +6 -6
  38. package/dist/{markdown-editor-CN4qOKky.js.map → markdown-editor-Dm4Fi3sX.js.map} +1 -1
  39. package/dist/{mermaid-renderer-DybQ_2Cp.js → mermaid-renderer-BtW_13Sz.js} +2 -2
  40. package/dist/{mermaid-renderer-DybQ_2Cp.js.map → mermaid-renderer-BtW_13Sz.js.map} +1 -1
  41. package/dist/mermaid.js +1 -1
  42. package/dist/{number-input-CyrMrDxB.js → number-input-QDqWYzTR.js} +2 -2
  43. package/dist/{number-input-CyrMrDxB.js.map → number-input-QDqWYzTR.js.map} +1 -1
  44. package/dist/{param-editor-28dBRSV4.js → param-editor-B9ASM5Lv.js} +2 -2
  45. package/dist/{param-editor-28dBRSV4.js.map → param-editor-B9ASM5Lv.js.map} +1 -1
  46. package/dist/{param-editor-field-GxhFb86w.js → param-editor-field-BmNUziwI.js} +7 -5
  47. package/dist/param-editor-field-BmNUziwI.js.map +1 -0
  48. package/dist/param-editor.js +3 -3
  49. package/dist/{prism-CnkSh-ZG.js → prism-EZSmZh-a.js} +2 -2
  50. package/dist/{prism-CnkSh-ZG.js.map → prism-EZSmZh-a.js.map} +1 -1
  51. package/dist/{rich-text-DOK4dDeb.js → rich-text-Dx5F8Zm1.js} +384 -363
  52. package/dist/rich-text-Dx5F8Zm1.js.map +1 -0
  53. package/dist/rich-text.d.ts +1 -1
  54. package/dist/rich-text.js +3 -3
  55. package/dist/{scroll-area-crJfiiuF.js → scroll-area-IeoRS73V.js} +3 -5
  56. package/dist/scroll-area-IeoRS73V.js.map +1 -0
  57. package/dist/terminal.js +1 -1
  58. package/dist/{theme-Bd_a7sU8.js → theme-CWDvF5Yn.js} +185 -73
  59. package/dist/theme-CWDvF5Yn.js.map +1 -0
  60. package/dist/theme.js +1 -1
  61. package/dist/{tree-list-B_qqiIoM.js → tree-list-Ces1hpRd.js} +2 -2
  62. package/dist/{tree-list-B_qqiIoM.js.map → tree-list-Ces1hpRd.js.map} +1 -1
  63. package/dist/{workspace-badge-oFp29Gbe.d.ts → workspace-badge-De6OQjb5.d.ts} +2 -1
  64. package/dist/{workspace-badge-BfSkiGP_.js → workspace-badge-DqQKSUJw.js} +12 -12
  65. package/dist/workspace-badge-DqQKSUJw.js.map +1 -0
  66. package/package.json +2 -2
  67. package/dist/collection-view-search-D_7Qvz7p.js.map +0 -1
  68. package/dist/display-sort-control-n3L5WvkJ.js.map +0 -1
  69. package/dist/list-row-CmFG_jCC.js.map +0 -1
  70. package/dist/param-editor-field-GxhFb86w.js.map +0 -1
  71. package/dist/rich-text-DOK4dDeb.js.map +0 -1
  72. package/dist/scroll-area-crJfiiuF.js.map +0 -1
  73. package/dist/theme-Bd_a7sU8.js.map +0 -1
  74. package/dist/workspace-badge-BfSkiGP_.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HTMLChakraProps","Box","chakra","HStack","Icon","IconButton","Spacer","Textarea","ArrowUp","Paperclip","FormEvent","ReactNode","useState","Tooltip","ActivityActor","ActivityAvatar","ActivityComposerProps","Omit","actor","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","actions","onAttach","onChange","onSubmit","ActivityComposer","props","rootProps","internalValue","setInternalValue","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","undefined","handleSubmit","event","HTMLFormElement","preventDefault","borderColor","color","currentTarget","ActivityAvatar","ActivityComment","ActivityReply","ActivityComposer","ActivityEvent","ActivityFeed","ActivityHeader","ActivityRoot","ActivityTimeline","ActivityActor","ActivityAvatarProps","ActivityCommentProps","ActivityReplyProps","ActivityComposerProps","ActivityEventProps","ActivityFeedProps","ActivityHeaderProps","ActivityRootProps","ActivityTimelineProps","Activity","Root","Header","Feed","Timeline","Event","Comment","Reply","Composer","Avatar","ReactNode","DEFAULT_PALETTE_ASSET_LIMIT","PaletteSearchEntry","id","mode","label","searchText","secondaryLabel","assetType","PaletteMode","inputPrefix","FilterPaletteEntriesOptions","query","getEffectiveQuery","defaultAssetLimit","getSearchableText","entry","hasInputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","prefixedMode","find","getPaletteEffectiveQuery","modeId","candidate","trim","slice","length","limitDefaultAssetEntries","entries","T","limit","counts","Record","filter","count","filterPaletteEntries","options","effectiveQuery","toLowerCase","filteredEntries","includes","undefined","Box","HStack","Icon","Text","Check","RefObject","useEffect","PaletteEntry","ListRow","ListRowItem","useVirtualizer","PaletteRow","type","id","label","entry","T","entryIndex","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","secondaryLabel","icon","endContent","shortcut","isSelected","undefined","onActivate","buildRows","entries","rows","forEach","index","previousEntry","group","push","getActiveRowIndex","activeIndex","findIndex","row","PaletteListProps","emptyLabel","onHover","scrollRef","HTMLDivElement","PaletteList","props","$","_c","activeRowIndex","virtualizer","count","length","getScrollElement","current","estimateSize","getItemKey","index_0","initialRect","width","height","overscan","scrollToIndex","align","behavior","t0","T0","t1","t2","t3","getTotalSize","t4","t5","getVirtualItems","map","virtualRow","key","measureElement","top","start","t6","_c","Box","CloseButton","Dialog","Input","InputGroup","KeyboardEventHandler","ReactNode","Ref","ScrollArea","ScrollAreaProps","SearchModalContentProps","children","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","HTMLInputElement","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","Omit","onSearchChange","value","onSearchKeyDown","hasContent","undefined","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","props","$","_c","t0","t1","t2","t3","t4","restScrollAreaProps","t5","t6","maxH","showHorizontalScrollbar","t7","event","target","t8","t9","t10","t11","t12","t13","_c","_Fragment","Dialog","useSlotRecipe","KeyboardEvent","ReactNode","SetStateAction","useEffect","useRef","useState","DEFAULT_PALETTE_ASSET_LIMIT","FilterPaletteEntriesOptions","filterPaletteEntries","getPaletteEffectiveQuery","PaletteMode","PaletteSearchEntry","resolvePaletteMode","PaletteList","SearchModalContent","PaletteEntry","description","icon","shortcut","endContent","group","isSelected","onActivate","PaletteState","query","mode","activeIndex","entries","T","PaletteEscapeContext","activeEntry","entryCount","setQuery","setActiveIndex","index","runActiveEntry","closePalette","PaletteStateValue","TValue","state","PaletteProps","open","fullScreen","searchAutoFocus","initialQuery","initialActiveIndex","modes","resetKey","inputIcon","placeholder","emptyLabel","footerStart","footerEnd","filterEntries","onActiveEntryChange","entry","onQueryChange","onClose","onEscape","ctx","resolveStateValue","value","fallback","Palette","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","t6","Symbol","for","key","t7","t8","styles","t9","entryMode","getEffectiveQuery","search","getFilteredEntries","t10","activeId","id","searchState","setSearchState","t11","setup","setSetup","inputRef","contentRef","scrollRef","shouldReset","filteredEntries","resolvedInputIcon","t12","activeMode","t13","Math","max","findIndex","t14","current","currentEntries","currentIndex","entry_0","nextIndex","resolvedPlaceholder","nextQuery","t15","t16","timeout","setTimeout","input","focus","length","setSelectionRange","clearTimeout","t17","activeEntryId","t18","t19","t20","handled","handleEscape","t21","event","preventDefault","current_0","min","_temp","stopPropagation","handleKeyDown","t22","t23","details","t24","t25","style","overflowAnchor","t26","results","maxH","css","showHorizontalScrollbar","viewportRef","viewportProps","t27","nextQuery_0","t28","t29","t30","content","t31","positioner","t32","current_1","_c","_temp","defineRecipe","shortcutKeysRecipe","base","display","alignItems","gap","verticalAlign","whiteSpace","chakra","Kbd","ArrowLeft","ArrowRight","Command","LucideIcon","Option","Fragment","shortcutKeysRecipe","ShortcutKeys","PaletteShortcutBinding","ShortcutPlatform","ShortcutDisplayPart","label","Icon","nonMacModifierLabels","Record","alt","control","ctrl","mod","shift","macModifierLabels","cmd","command","meta","option","keyLabels","arrowleft","arrowright","getShortcutPlatform","navigator","platform","toLowerCase","includes","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","map","part","trim","filter","Boolean","getShortcutDisplayParts","binding","steps","Array","isArray","PaletteShortcut","props","$","_c","t0","stepIndex","_temp","join","_temp2","length","t1","part_0","partIndex","_c","Fragment","_temp2","_temp","_Fragment","HStack","StackProps","HorizontalMenuStackProps","children","HorizontalMenuStack","props","$","_c","rest","t0","t1","t2","t3","h","px","py","borderBottomWidth","undefined","t4","_c","Box","Collapsible","Flex","Text","ChevronRight","ReactNode","ItemSectionProps","children","title","defaultOpen","action","ItemSection","props","$","_c","t0","undefined","t1","Symbol","for","background","t2","t3","transform","t4","t5","_temp","t6","t7","t8","e","stopPropagation","_c","_temp","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","const","PANEL_HEADER_TAB_SIZE","Badge","Box","Button","HStack","Icon","Skeleton","Stack","Text","Bell","Search","X","KeyboardEvent","useEffect","useRef","useState","SearchModalContent","AlertMessage","ListRow","ListRowAction","NotificationCenterAction","NotificationCenterItem","NotificationCenterProps","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","title","body","kind","status","sourceLabel","targetLabel","searchText","actions","map","action","label","filter","Boolean","join","toLowerCase","filterItems","items","query","normalizedQuery","trim","includes","groupItems","needsInput","urgent","normal","id","group","length","orderItemsForDisplay","flatMap","metadataDescription","parts","timeLabel","getActionButtons","props","Pick","onDismiss","push","icon","tooltip","onAction","NotificationEndContent","$","_c","onRunAction","t0","t1","t2","t3","destructive","event","stopPropagation","NotificationRows","activeIndex","onActiveIndexChange","index","onActivateItem","groups","rowIndex","currentIndex","LoadingRows","Symbol","for","_temp","NotificationCenter","autoFocus","emptyLabel","error","footerEnd","footerStart","loading","onEscape","onQueryChange","undefined","internalQuery","setInternalQuery","setActiveIndex","inputRef","activeQuery","filteredItems","displayItems","activeItem","t4","t5","timeout","setTimeout","current","focus","clearTimeout","t6","t7","Math","min","max","t8","nextQuery","updateQuery","t9","key","preventDefault","current_0","_temp2","handleKeyDown","t10","t11","maxH","showHorizontalScrollbar","t12","t13","t14","t15","t16","row","current_1","_c","_temp","_temp2","Flex","FlexProps","ReactNode","AttachedMenuProps","Omit","children","AttachedMenu","props","$","_c","rest","t0","_c","Flex","FlexProps","ReactNode","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanelProps","Omit","children","header","resizable","AttachedPanel","props","$","_c","minWidth","rest","t0","t1","width","undefined","resolvedMinWidth","resolvedWidth","t2","t3","_c","chakra","HTMLChakraProps","IconButton","IconButtonProps","useRecipe","forwardRef","ReactNode","Tooltip","BubbleButtonStyleProps","BubbleButtonProps","Omit","containerProps","isOpen","tooltip","BubbleButton","HTMLButtonElement","props","ref","$","_c","children","rest","t0","undefined","t1","Symbol","for","key","motion","t2","t3","borderColor","t4","button","t5","t6","t7","_c","Box","chakra","Flex","HStack","HTMLChakraProps","IconButton","Portal","Spacer","useRecipe","Minus","SquareArrowOutUpRight","forwardRef","ReactNode","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","BubblePanelContainerProps","attribute","BubblePanelProps","isOpen","title","menu","onClose","closeLabel","onPopOut","popOutLabel","width","height","containerProps","testId","children","overlay","BubblePanel","HTMLDivElement","props","ref","$","_c","t0","t1","t2","ariaLabel","undefined","t3","Symbol","for","key","motion","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","_c","Button","CloseButton","Dialog","Portal","Stack","Text","ReactNode","useState","DeleteConfirmationModalProps","open","onClose","onDelete","Promise","headline","notificationText","buttonText","children","DeleteConfirmationModal","props","isDeleting","setIsDeleting","handleDelete","details","Box","Button","Dialog","Input","InputGroup","Text","useSlotRecipe","ArrowUp","Folder","FolderPlus","Home","Search","useEffect","useState","ListRow","ScrollArea","FolderPickerEntry","name","path","isDirectory","FolderPickerProps","currentPath","entries","isLoading","isOpening","error","onClose","onSelect","onNavigate","onCreateFolder","Promise","FolderPicker","props","styles","key","setPath","query","setQuery","creating","setCreating","folderName","setFolderName","saving","setSaving","folders","filter","entry","toLocaleLowerCase","includes","normalizedPath","replaceAll","root","match","ancestor","replace","split","slice","join","parent","length","atRoot","createFolder","trim","header","body","navigation","navigationButton","event","target","value","creation","list","rows","map","footer","FolderPickerDialog","$","_c","t0","Symbol","for","t1","t2","t3","open","t4","t5","t6","content","t7","_Fragment","_c","Breadcrumb","ChakraBreadcrumb","chakra","SystemStyleObject","React","ResourceContextAction","ResourceContextMenu","BreadcrumbItem","title","ReactNode","url","onClick","contextMenuActions","BreadcrumbLinkProps","to","children","BreadcrumbProps","RootProps","separator","separatorGap","items","linkComponent","ComponentType","linkProps","alignItems","display","gap","minW","maxW","overflow","outline","textOverflow","whiteSpace","_active","_focus","_focusVisible","const","staticProps","color","cursor","textDecoration","_hover","BreadcrumbItemContentProps","item","isCurrent","BreadcrumbSeparatorProps","isInteractiveItem","Boolean","BreadcrumbItemLink","props","$","_c","LinkComponent","t0","length","undefined","t1","BreadcrumbItemContent","content","Symbol","for","placement","t2","t3","BreadcrumbSeparator","forwardRef","HTMLDivElement","BreadcrumbRoot","ref","rest","index","map","_c","ChakraBreadcrumb","Box","BoxProps","Text","TextProps","ContentPlaceholderProps","contentPlaceholderBackgroundImage","ContentPlaceholder","props","$","_c","t0","Symbol","for","backgroundClip","backgroundImage","display","width","t1","Label","_c","IconButton","IconButtonProps","Check","Copy","useEffect","useRef","useState","Tooltip","CopyButtonProps","Omit","text","label","onCopy","onCopyError","error","CopyButton","props","disabled","rest","state","setState","timer","ReturnType","setTimeout","current","clearTimeout","copy","navigator","clipboard","writeText","status","AbsoluteCenter","Button","Stack","Text","Component","ErrorInfo","ReactNode","AlertMessage","ContentPlaceholder","ErrorBoundaryProps","children","fallback","label","onReset","ErrorBoundaryState","error","Error","ErrorBoundary","state","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","props","render","ErrorFallbackProps","ErrorFallback","$","_c","t0","t1","t2","message","t3","t4","t5","t6","_c","Box","Center","CenterProps","Icon","getIconComponent","IconColorPickerIconOption","TagSwatchProps","Omit","color","icon","iconOptions","showIcon","hasGlyph","Boolean","TagSwatch","props","$","_c","rest","t0","undefined","t1","IconComponent","t2","t3","t4","_c","Box","chakra","Grid","Icon","Popover","Portal","Stack","Text","IconColorPickerIconOption","optionColors","optionIcons","TagSwatch","SwatchTrigger","base","display","borderRadius","cursor","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","alignItems","justifyContent","color","_hover","bg","IconColorPickerProps","colorOptions","icon","iconOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","IconColorPicker","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","ariaLabel","selectedIcon","t6","Symbol","for","placement","t7","t8","t9","t10","t11","t12","t13","optionColor","map","t14","entry","selected","value","label","t15","t16","t17","_c","_Fragment","Box","BoxProps","SimpleCardProps","SimpleCard","props","$","_c","children","rest","t0","SimpleCardBodyProps","SimpleCardBody","_c","Badge","Box","Button","HStack","Icon","Stack","Text","Check","ReactNode","SimpleCard","SimpleCardBody","IntegrationCardProps","icon","name","description","id","version","category","active","actionLabel","IntegrationCard","props","$","_c","t0","undefined","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","_c","defineSlotRecipe","segmentedControlSlotRecipe","className","slots","base","root","display","alignItems","gap","padding","bg","borderRadius","borderWidth","borderColor","item","justifyContent","whiteSpace","textStyle","color","cursor","transitionProperty","transitionDuration","focusVisibleRing","_hover","_selected","_disabled","opacity","variants","size","sm","height","paddingInline","xs","defaultVariants","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","segmentedControlSlotRecipe","recipe","withProvider","withContext","VariantProps","SegmentedControlRootProps","SegmentedControlRoot","HTMLDivElement","SegmentedControlItemProps","SegmentedControlItem","HTMLButtonElement","SegmentedControlOption","value","label","SegmentedControlProps","Omit","options","onValueChange","disabled","SegmentedControl","props","$","_c","ariaLabel","rootProps","t0","t1","option","selected","undefined","map","withProvider","withContext","_c","Toaster","ChakraToaster","createToaster","Portal","Spinner","Stack","Toast","ScrollArea","toaster","ReturnType","placement","pauseOnPageIdle","duration","$","_c","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","paddingEnd","action","label","_c","ChakraToaster","_temp","useStore","createJSONStorage","persist","createStore","createBrowserStorage","SidenavSnapshot","open","expandedSections","expandedNodes","width","SidenavState","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","expanded","setNodeExpanded","setWidth","reset","CreateSidenavStoreOptions","storageKey","initialState","Partial","DEFAULT_SNAPSHOT","SIDENAV_STORE_NAMESPACE","toStorageName","toggleId","values","id","includes","filter","value","setExpanded","getPersistedSnapshot","state","createSidenavStore","options","snapshot","set","name","storage","partialize","sidenavStoreRegistry","Map","ReturnType","getSidenavStore","existingStore","get","store","useSidenavStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","toStorageName","getPersistedSnapshot","_c","store","Box","ReactNode","SidenavFooterProps","children","SidenavFooter","props","$","_c","t0","_c","HStack","ReactNode","PANEL_HEADER_HEIGHT","SidenavHeaderProps","children","SidenavHeader","props","$","_c","t0","_c","Box","Flex","Text","useEffect","useRef","ResourceContextMenu","ScrollArea","TreeList","useSidenavStore","SidenavProps","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","value","min","max","Math","resolveInitialWidth","width","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","props","$","_c","storageKey","sections","activeNodeId","contextActions","t0","header","footer","closable","t1","emptyLabel","t2","defaultExpandedSections","linkComponent","onNavigate","onOpenChange","resizable","t3","minWidth","t4","maxWidth","t5","virtualize","t6","t7","undefined","viewportRef","t8","initialWidth","t9","expandedSections","t10","initialState","open","_temp","persistedWidth","_temp2","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","t11","t12","t13","t14","effectiveWidth","widthCss","t15","t16","t17","Symbol","for","display","style","overflowX","minHeight","flexDirection","t18","length","t19","t20","content","t21","state","state_0","state_1","state_2","state_3","state_4","_c","_temp","_temp2","useStore","createJSONStorage","persist","createStore","createBrowserStorage","VisibilityOverride","TabVisibilitySnapshot","tabOverrides","Record","TabVisibilityState","setTab","key","value","toggleTab","hiddenByDefault","clearTab","reset","CreateTabVisibilityStoreOptions","storageKey","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","setOverride","overrides","undefined","_removed","rest","toggleOverride","current","getPersistedSnapshot","state","createTabVisibilityStore","options","set","name","storage","partialize","storeRegistry","Map","ReturnType","getTabVisibilityStore","existing","get","store","useTabVisibilityStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","setOverride","toggleOverride","getPersistedSnapshot","_c","store","ReactNode","ResourceContextAction","TreeListNode","TreeListSection","VisibilityOverride","toStringLabel","label","fallback","resolveVisibility","override","hiddenByDefault","isCustomizable","item","canHide","isNodeVisible","node","nodeOverrides","Record","id","filterNodes","nodes","changed","next","children","length","filteredChildren","push","filterVisibleNodes","filterVisibleSections","sections","sectionOverrides","section","filteredNodes","emptyState","actions","TreeVisibilityMenuActions","onToggleSection","onToggleNode","onResetAll","BuildMenuOptions","visibleIcon","hiddenIcon","resetIcon","visibilityEndContent","effective","options","buildSectionAction","key","onClick","endContent","buildNodeAction","icon","TreeVisibilityMenuItems","headerSections","footerSections","buildTreeVisibilityMenuActions","items","result","appendGroup","group","separatorBefore","actionsForSections","sectionActions","menuLabel","ReactNode","ResourceContextAction","VisibilityOverride","resolveVisibility","TabVisibilityPlacement","closable","hiddenByDefault","pinned","title","contributionId","filterVisibleTabs","placements","T","tabOverrides","Record","getKey","placement","changed","next","push","effective","TabVisibilityMenuActions","onToggleTab","key","onResetAll","BuildTabMenuOptions","visibleIcon","hiddenIcon","resetIcon","buildTabVisibilityMenuActions","actions","options","getIcon","result","nonCloseableCount","label","icon","onClick","endContent","separatorBefore","createSlotRecipeContext","HTMLChakraProps","closestCenter","DndContext","KeyboardSensor","PointerSensor","useSensor","useSensors","horizontalListSortingStrategy","SortableContext","sortableKeyboardCoordinates","useSortable","CSS","X","KeyboardEvent","ReactNode","useEffect","useRef","windowTabsRecipe","recipe","withProvider","withContext","List","HTMLDivElement","Tab","Trigger","HTMLButtonElement","Label","HTMLSpanElement","Close","WindowTab","id","label","icon","WindowTabsProps","tabs","selectedId","onSelect","onClose","onReorder","targetId","WindowTabItemProps","tab","selected","tabIndex","reorderable","onKeyDown","event","WindowTabItem","props","$","_c","t0","t1","disabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","isSorting","t2","undefined","t3","t4","Translate","toString","t5","t6","defaultPrevented","t7","t8","t9","t10","t11","Symbol","for","t12","t13","WindowTabs","listRef","activationConstraint","distance","coordinateGetter","sensors","current","querySelector","scrollIntoView","block","inline","T0","T1","T2","closeTab","index","triggers","querySelectorAll","neighbor","focus","handleKey","index_0","next","key","length","preventDefault","_temp","t14","active","over","String","map","_temp2","tab_0","index_1","Boolean","event_0","t15","t16","y","List","withProvider","withContext","Label","_c","_temp","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","ReactNode","windowTitleBarRecipe","recipe","withProvider","withContext","RootProps","Root","HTMLDivElement","Content","WindowTitleBarProps","platform","children","WindowTitleBar","props","$","_c","t0","t1","t2","_c","HStack","Text","ReactNode","TagEditorHeadingProps","children","hasChanges","TagEditorHeading","props","$","_c","t0","t1","t2","_c","Badge","Button","Editable","Flex","Icon","IconButton","Menu","useSortable","CSS","Check","ChevronDown","GripVertical","Trash2","IconColorPicker","IconColorPickerIconOption","ListRow","TagEditorAction","TagEditorValue","TagEditorRowProps","actionOptions","actionsLabel","colorOptions","iconOptions","value","isSaving","readOnly","showDefault","showIcons","onActionsChange","actions","onColorChange","color","onDelete","onIconChange","icon","onNameChange","name","selectionLabel","selected","length","label","ActionDropdown","props","$","_c","disabled","options","optionName","onChange","T0","T1","T2","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","toggleAction","t10","option","includes","filter","t11","action","item","Root","Trigger","Symbol","for","t12","t13","t14","option_0","undefined","map","t15","TagEditorRow","id","attributes","listeners","setNodeRef","transform","transition","isDragging","Transform","toString","bg","t16","t17","details","trimmed","trim","t18","t19","t20","isNew","t21","isDefault","t22","t23","t24","t25","t26","t27","t28","_c","Button","chakra","Editable","Flex","Icon","Menu","Stack","Text","closestCenter","DndContext","DragEndEvent","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","verticalListSortingStrategy","Check","ChevronDown","Plus","useState","DeleteConfirmationModal","ListRow","TagEditorProps","TagEditorValue","TagEditorHeading","TagEditorRow","nextSortOrder","values","length","Math","max","map","value","sortOrder","TagEditorTitleProps","title","hasChanges","isSaving","onTitleChange","TagEditorTitle","props","$","_c","t0","details","trimmed","trim","t1","t2","Symbol","for","t3","AddOptionRow","base","display","alignItems","gap","height","paddingInline","color","borderRadius","cursor","_hover","bg","_disabled","opacity","ColumnHeadersProps","valueLabel","actionsLabel","ColumnHeaders","t4","DefaultValueSelectProps","label","disabled","onSelect","DefaultValueSelect","find","_temp","current","name","t5","t6","value_0","id","isDefault","undefined","t7","t8","TagEditor","description","headerActions","onValuesChange","onDeleteValue","onSetDefault","readOnly","addLabel","addName","actionOptions","defaultValueLabel","colorOptions","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","iconOptions","showDefault","showIcons","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","sensors","activationConstraint","distance","updateValue","index","patch","Partial","next","handleAddOption","crypto","randomUUID","icon","isNew","handleDeleteOption","filter","handleDragEnd","event","active","over","oldIndex","findIndex","newIndex","actions","Boolean","_c","_Fragment","Button","HStack","TagEditorSaveBarProps","onSave","onReset","hasChanges","isSaving","resetLabel","saveLabel","TagEditorSaveBar","props","$","_c","t0","t1","undefined","t2","t3","t4","t5","_c","HStack","Spinner","Stack","Text","useEffect","useState","AlertMessage","TagEditor","TagEditorProps","TagEditorValue","TagEditorSaveBar","SaveTagSettingsInput","deletedIds","Set","drafts","values","TValue","EditorLabels","Pick","SortableValue","id","sortOrder","TagSettingsPanelProps","errorTitle","loadingText","resetLabel","saveLabel","loadError","onSave","input","Promise","toEditorValue","value","valueNeedsUpdate","original","draft","bySortOrder","left","right","name","localeCompare","toEditorValues","map","sort","findOriginalValue","find","hasTagValueChanges","size","some","isNew","errorMessage","error","Error","message","String","TagSettingsPanel","props","loadedValues","readOnly","editorProps","setDrafts","setDeletedIds","isSaving","setIsSaving","saveError","setSaveError","handleSave","hasChanges","handleDeleteValue","filter","handleReset","undefined","showDefault","isDefault","onSetDefault","useStore","persist","createStore","createHostPersistStorage","createHostStoreRegistry","HostStorage","useHostStorage","TreeListOrderSnapshot","sectionOrder","nodeOrderBySection","Record","sectionSlotById","TreeListOrderSlot","groups","TreeListGroup","id","label","moveScope","TreeListOrderState","setSectionOrder","nextSectionIds","setNodeOrder","sectionId","nextNodeIds","setSectionSlot","slot","addGroup","group","sectionIds","renameGroup","groupId","removeGroup","resetSectionOrder","resetNodeOrder","reset","CreateTreeListOrderStoreOptions","storageKey","storage","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","dedupe","ids","seen","Set","result","has","add","push","getPersistedSnapshot","state","groupLabel","trimmed","trim","Error","createTreeListOrderStore","options","set","nextLabel","map","_nodes","_slot","filter","_removed","rest","name","partialize","getTreeListOrderStore","useTreeListOrderStore","selector","$","_c","t0","t1","store","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","getPersistedSnapshot","_c","store","TreeListSection","TreeListGroup","keepFixedPositions","id","canReorder","original","T","ordered","movable","filter","item","index","fixed","map","Boolean","push","slice","every","length","reorderBy","items","order","indexById","Map","placed","Set","next","get","undefined","has","add","changed","i","applyTreeListOrder","sections","sectionOrder","nodeOrderBySection","Record","groups","nodesById","flatMap","section","nodes","node","const","groupedSections","group","canHide","looseSections","Object","entries","nodeIds","some","first","nodeId","find","moveScope","allSections","reorderedSections","assignedNodeIds","sectionId","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","useStore","persist","createStore","createHostPersistStorage","createHostStoreRegistry","HostStorage","useHostStorage","VisibilityOverride","TreeListVisibilitySnapshot","sectionOverrides","Record","nodeOverrides","TreeListVisibilityState","setSection","id","value","setNode","toggleSection","hiddenByDefault","toggleNode","clearSection","clearNode","reset","CreateTreeListVisibilityStoreOptions","storageKey","storage","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","flipOverride","current","setOverride","overrides","undefined","_removed","rest","toggleOverride","next","getPersistedSnapshot","state","createTreeListVisibilityStore","options","set","name","partialize","getTreeListVisibilityStore","useTreeListVisibilityStore","selector","$","_c","t0","t1","store","_c","store","FileIconThemeFont","fontFamily","src","url","format","weight","style","FileIconThemeDefinition","fontCharacter","fontColor","fontId","FileIconThemePreferenceOption","id","title","definitions","Record","fileExtensions","fileNames","defaults","file","folder","fonts","defaultFileIconThemePreferences","isFileIconThemePreference","value","themes","some","theme","extensionCandidates","filename","parts","toLowerCase","split","candidates","i","length","push","slice","join","resolveDefinitionKey","isDirectory","named","candidate","match","fontFamilyForDefinition","definition","matched","find","font","ResolvedFileIconGlyph","decodeFontCharacter","exec","String","fromCodePoint","Number","parseInt","resolveFileIconGlyph","undefined","key","FONT_STYLE_ATTRIBUTE","fontFaceRule","map","entry","applyFileIconThemePreference","themeId","document","querySelector","HTMLStyleElement","createElement","setAttribute","head","appendChild","option","textContent","createContext","ReactNode","useContext","useEffect","useState","applyFileIconThemePreference","defaultFileIconThemePreferences","FileIconThemePreferenceOption","isFileIconThemePreference","createBrowserStorage","STORAGE_KEY","getDefaultFileIconThemePreference","themes","find","theme","id","endsWith","FileIconThemePreferenceContextValue","fileIconThemePreference","fileIconThemePreferences","activeFileIconTheme","setFileIconThemePreference","preference","FileIconThemePreferenceContext","FileIconThemePreferenceProviderProps","children","themePreferences","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","props","$","_c","t0","undefined","t1","t2","t3","resolved","setItem","t4","t5","t6","useFileIconThemePreference","context","Error","_c","Folder","CSSProperties","FileIconThemePreferenceOption","resolveFileIconGlyph","getFileTypeIcon","ResolveFileIconElementOptions","isDirectory","theme","size","resolveFileIconElement","filename","options","glyph","style","fontFamily","color","fontColor","fontSize","lineHeight","display","fontCharacter","Icon","ActivityRoot","ActivityReply","ActivityHeader","ActivityAvatar","ActivityTimeline","ActivityEvent","ActivityFeed","AlertMessage","Tooltip","ScrollArea","Checkbox","ResourceActionMenu","SearchableMenu","Header","ListRow","ResourceContextMenu","useVirtualizer","TreeListDragProvider","ResizableSplitLayout","TreeList","getFileTypeIcon","ResourceBadge","Switch","Chip","Slider","AttachmentChip","installPrismGlobal","sessionCompletionStatuses","resolveSessionIndicatorIcon","SessionIndicator","handleDialogAcceptShortcut","resolveSessionIndicatorColor","WorkspaceBadge","DropIndicator","EmptyState","createGlyphIcon","optionColors","optionIcons","getIconComponent","RadioGroup","Radio","createBrowserStorage","windowTabsRecipe","windowTitleBarRecipe","theme_default","useHostStorage","createHostPersistStorage","createHostStoreRegistry","HostStorageProvider","createThemePreferenceFromVsCodeTheme","createMonacoThemeFromVsCodeTheme","defaultThemePreferences","getThemePreferenceMode","applyThemePreference","isThemePreference","getInitialThemePreference","getThemePreferenceClassName","useThemePreference","getThemePreferenceClassNames","ThemePreferenceProvider","Breadcrumb$1","Toaster$1","React","Fragment$1","ActivityComposer","variant","rootProps","props","internalValue","setInternalValue","useState","defaultValue","currentValue","value","isInline","canSubmit","handleChange","nextValue","onChange","chakra","event","onSubmit","HStack","actor","Box","Textarea","minRows","event_0","actions","Spacer","attachLabel","IconButton","onAttach","Icon","Paperclip","submitLabel","ArrowUp","Activity","ActivityComment","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","label","entry","secondaryLabel","hasInputPrefix","query","inputPrefix","resolvePaletteMode","modes","mode","fallbackMode","getPaletteEffectiveQuery","candidate","modeId","limitDefaultAssetEntries","counts","entries","assetType","count","limit","filterPaletteEntries","effectiveQuery","options","filteredEntries","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","Check","buildRows","rows","previousEntry","index","getActiveRowIndex","row","activeIndex","PaletteList","$","c","activeRowIndex","virtualizer","scrollRef","index_0","useEffect","t0","emptyLabel","Text","T0","t3","t4","t5","virtualRow","onHover","t6","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","t1","t2","searchAriaLabel","searchPlaceholder","showCloseButton","closeButtonLabel","bodyBefore","children","footerEnd","footerStart","onSearchChange","onSearchKeyDown","scrollAreaProps","searchAutoFocus","searchIcon","searchInputRef","searchValue","restScrollAreaProps","maxH","showHorizontalScrollbar","t7","t8","Input","t9","InputGroup","t10","Dialog","CloseButton","t11","t12","t13","Fragment","resolveStateValue","state","fallback","Palette","fullScreen","initialQuery","initialActiveIndex","resetKey","useSlotRecipe","styles","filterEntries","entryMode","search","getFilteredEntries","searchState","setSearchState","setup","setSetup","inputRef","useRef","contentRef","shouldReset","open","activeEntry","resolvedInputIcon","setActiveIndex","activeId","inputIcon","placeholder","activeMode","t14","currentEntries","current","currentIndex","entry_0","nextIndex","resolvedPlaceholder","onQueryChange","nextQuery","setQuery","runActiveEntry","t15","onClose","closePalette","t16","timeout","input","length","t17","activeEntryId","t18","onActiveEntryChange","t19","t20","onEscape","handleEscape","t21","current_0","_temp$7","handleKeyDown","t22","t23","details","t24","t25","t26","t27","nextQuery_0","t28","t29","t30","t31","t32","current_1","shortcutKeysRecipe","defineRecipe","ShortcutKeys","nonMacModifierLabels","macModifierLabels","Option","Command","keyLabels","ArrowLeft","ArrowRight","getShortcutPlatform","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","part","getShortcutDisplayParts","binding","PaletteShortcut","steps","_temp2$3","stepIndex","_temp$6","Kbd","part_0","partIndex","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","title","Collapsible","ChevronRight","action","_temp$5","Flex","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","filterItems","normalizedQuery","items","groupItems","needsInput","urgent","normal","group","orderItemsForDisplay","metadataDescription","getActionButtons","X","NotificationEndContent","Badge","onRunAction","Button","NotificationRows","groups","rowIndex","Stack","Bell","onActivateItem","onActiveIndexChange","LoadingRows","_temp$4","NotificationCenter","autoFocus","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2$2","Search","error","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","width","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","containerProps","tooltip","isOpen","motion","useRecipe","ref","button","BubblePanel","ariaLabel","height","menu","onPopOut","popOutLabel","SquareArrowOutUpRight","closeLabel","Minus","overlay","testId","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","notificationText","onDelete","buttonText","FolderPicker","path","setPath","currentPath","creating","setCreating","folderName","setFolderName","saving","setSaving","folders","normalizedPath","root","ancestor","parent","atRoot","createFolder","onCreateFolder","isLoading","isOpening","onNavigate","Home","FolderPlus","event_1","event_2","event_3","Folder","onSelect","FolderPickerDialog","linkProps","staticProps","isInteractiveItem","BreadcrumbItemLink","LinkComponent","isCurrent","BreadcrumbItemContent","content","BreadcrumbSeparator","separator","Breadcrumb","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","Label","CopyButton","setState","timer","copy","text","onCopy","onCopyError","status","disabled","jsx","Copy","ErrorBoundary","Component","info","ErrorFallback","onReset","AbsoluteCenter","hasGlyph","icon","TagSwatch","color","iconOptions","showIcon","IconComponent","Center","SwatchTrigger","ColorDot","IconCell","IconColorPicker","colorOptions","showIcons","colorLabel","iconLabel","selectedIcon","Popover","onColorChange","optionColor","Grid","onIconChange","selected","SimpleCard","SimpleCardBody","IntegrationCard","active","name","id","version","category","description","actionLabel","segmentedControlSlotRecipe","defineSlotRecipe","withProvider$2","withContext$2","createSlotRecipeContext","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","option","toaster","createToaster","Toaster","_temp$3","Toast","toast","Spinner","DEFAULT_SNAPSHOT$3","SIDENAV_STORE_NAMESPACE","toStorageName$3","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot$3","createSidenavStore","snapshot","initialState","createStore","persist","set","sectionId","nodeId","createJSONStorage","sidenavStoreRegistry","getSidenavStore","existingStore","store","useSidenavStore","useStore","selector","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","min","max","resolveInitialWidth","parsed","defaultWidth","Sidenav","contextActions","closable","maxWidth","virtualize","viewportRef","initialWidth","defaultExpandedSections","_temp$2","persistedWidth","_temp2$1","expandedSections","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","onOpenChange","effectiveWidth","widthCss","activeNodeId","linkComponent","sections","footer","state_0","state_1","state_2","state_3","state_4","DEFAULT_SNAPSHOT$2","STORE_NAMESPACE$2","toStorageName$2","resolveEffective$1","override","hiddenByDefault","setOverride$1","key","overrides","_removed","toggleOverride$1","getPersistedSnapshot$2","createTabVisibilityStore","storeRegistry","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","isNodeVisible","nodeOverrides","node","filterNodes","changed","next","nodes","filteredChildren","filterVisibleNodes","filterVisibleSections","section","sectionOverrides","filteredNodes","visibilityEndContent","effective","buildSectionAction","buildNodeAction","buildTreeVisibilityMenuActions","result","appendGroup","actionsForSections","sectionActions","filterVisibleTabs","placement","placements","tabOverrides","getKey","buildTabVisibilityMenuActions","nonCloseableCount","getIcon","withProvider$1","withContext$1","List$1","Tab","Trigger","Label$1","Close","WindowTabItem","reorderable","tab","useSortable","isDragging","transform","CSS","attributes","isSorting","listeners","onKeyDown","setActivatorNodeRef","tabIndex","setNodeRef","transition","WindowTabs","listRef","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","selectedId","T1","T2","onReorder","tabs","closeTab","triggers","neighbor","handleKey","DndContext","closestCenter","_temp$1","over","SortableContext","_temp2","horizontalListSortingStrategy","tab_0","index_1","Root","withProvider","Content","withContext","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","toggleAction","optionName","Menu","ChevronDown","option_0","TagEditorRow","actionsLabel","isSaving","readOnly","GripVertical","onNameChange","trimmed","Editable","showDefault","actionOptions","onActionsChange","Trash2","nextSortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","_temp","value_0","TagEditor","valueToDelete","setValueToDelete","updateValue","patch","onValuesChange","headerActions","framed","showColumnHeaders","valueColumnLabel","oldIndex","value_1","newIndex","value_2","arrayMove","value_3","value_4","verticalListSortingStrategy","value_5","addName","defaultAddColor","defaultAddIcon","Plus","addLabel","defaultValueLabel","onSetDefault","value_6","onDeleteValue","deleteHeadline","deleteNotificationText","deleteButtonText","TagEditorSaveBar","resetLabel","saveLabel","onSave","bySortOrder","left","right","toEditorValues","toEditorValue","findOriginalValue","draft","hasTagValueChanges","deletedIds","drafts","original","valueNeedsUpdate","errorMessage","TagSettingsPanel","loadedValues","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","error_0","loadError","handleDeleteValue","handleReset","errorTitle","loadingText","draft_0","DEFAULT_SNAPSHOT$1","STORE_NAMESPACE$1","toStorageName$1","dedupe","seen","ids","getPersistedSnapshot$1","groupLabel","createTreeListOrderStore","nextSectionIds","nextNodeIds","slot","sectionIds","nextLabel","groupId","_nodes","nodeOrderBySection","_slot","sectionSlotById","getTreeListOrderStore","useTreeListOrderStore","keepFixedPositions","movable","ordered","fixed","reorderBy","order","indexById","placed","i","applyTreeListOrder","nodesById","groupedSections","looseSections","nodeIds","first","allSections","reorderedSections","sectionOrder","assignedNodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","flipOverride","setOverride","toggleOverride","getPersistedSnapshot","createTreeListVisibilityStore","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","parts","filename","candidates","resolveDefinitionKey","isDirectory","named","match","fontFamilyForDefinition","definition","matched","font","decodeFontCharacter","resolveFileIconGlyph","fontFamily","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","applyFileIconThemePreference","style","themeId","STORAGE_KEY","getDefaultFileIconThemePreference","FileIconThemePreferenceContext","createContext","getInitialPreference","stored","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","activeFileIconTheme","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","size","ChakraProvider"],"sources":["../src/components/activity/activity-composer.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/theme/recipes/shortcut-keys.ts","../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/folder-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/copy-button.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/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 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 { 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\";\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 { 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\";\nimport { useVirtualizer } from \"@/utils/use-virtualizer\";\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, useSlotRecipe } 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 /** Fill the viewport, with a scrollable results area. */\n fullScreen?: boolean;\n /** Focus the dialog instead of opening a touch keyboard when false. */\n searchAutoFocus?: 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 fullScreen = false,\n searchAutoFocus = true,\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 styles = useSlotRecipe({ key: \"palette\" })({ fullScreen });\n const getFilteredEntries = (value: string) => {\n const entryMode = mode ?? resolvePaletteMode(value, modes);\n return filterEntries\n ? filterEntries(entries, value, entryMode)\n : filterPaletteEntries(entries, {\n query: value,\n mode: entryMode,\n getEffectiveQuery: (search) => getPaletteEffectiveQuery(search, modes, entryMode),\n });\n };\n const [searchState, setSearchState] = useState<{ query: string; activeId: string | null }>(() => ({\n query: initialQuery,\n activeId: getFilteredEntries(initialQuery)[initialActiveIndex]?.id ?? null,\n }));\n const { query, activeId } = searchState;\n const [setup, setSetup] = useState({ open: false, resetKey });\n const inputRef = useRef<HTMLInputElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n // Reset while rendering, not in an effect, so the first open render already highlights\n // the initial entry and listeners never see the previous session's entry.\n const shouldReset = setup.open !== open || setup.resetKey !== resetKey;\n if (shouldReset) {\n setSetup({ open, resetKey });\n if (open) {\n setSearchState({\n query: initialQuery,\n activeId: getFilteredEntries(initialQuery)[initialActiveIndex]?.id ?? null,\n });\n }\n }\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = getFilteredEntries(query);\n // Entries can arrive or reorder while the palette is open. Keep the highlight on the\n // same entry instead of previewing a different theme at its previous row number.\n const activeIndex = Math.max(\n filteredEntries.findIndex((entry) => entry.id === activeId),\n 0,\n );\n const activeEntry = filteredEntries[activeIndex] ?? null;\n if (!shouldReset && (activeEntry?.id ?? null) !== activeId) {\n setSearchState({ ...searchState, activeId: activeEntry?.id ?? null });\n }\n const setActiveIndex = (index: SetStateAction<number>) => {\n setSearchState((current) => {\n const currentEntries = getFilteredEntries(current.query);\n const currentIndex = Math.max(\n currentEntries.findIndex((entry) => entry.id === current.activeId),\n 0,\n );\n const nextIndex = typeof index === \"function\" ? index(currentIndex) : index;\n return { ...current, activeId: currentEntries[nextIndex]?.id ?? null };\n });\n };\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 setSearchState({ query: nextQuery, activeId: null });\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n if (!setup.open || !searchAutoFocus) return;\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 }, [setup, searchAutoFocus]);\n\n const activeEntryId = activeEntry?.id;\n // Callers rebuild entries and callbacks on every render. Report only a real change of the\n // highlighted entry, so a listener that updates state cannot start a render loop.\n // biome-ignore lint/correctness/useExhaustiveDependencies: the entry and callback change identity on every render\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntryId, activeIndex]);\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\n open={open}\n initialFocusEl={() => (searchAutoFocus ? inputRef.current : contentRef.current)}\n onOpenChange={(details) => !details.open && closePalette()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner css={styles.positioner}>\n <Dialog.Content ref={contentRef} tabIndex={-1} css={styles.content} aria-label=\"Command palette\">\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: \"var(--palette-results-height)\",\n css: styles.results,\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 { defineRecipe } from \"@chakra-ui/react\";\n\nexport const shortcutKeysRecipe = defineRecipe({\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"shortcut-key-gap\",\n verticalAlign: \"middle\",\n whiteSpace: \"nowrap\",\n },\n});\n","import { chakra, Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport { shortcutKeysRecipe } from \"../../theme/recipes/shortcut-keys\";\n\nconst ShortcutKeys = chakra(\"span\", shortcutKeysRecipe);\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 <ShortcutKeys>\n {step.map((part, partIndex) => (\n <Kbd key={`${part.label}-${partIndex}`} aria-label={part.label}>\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n ))}\n </ShortcutKeys>\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 ) : null}\n {!error && loading && <LoadingRows />}\n {!error && !loading && filteredItems.length === 0 && (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n )}\n {!error && !loading && filteredItems.length > 0 && (\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, useRecipe } 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 motion = useRecipe({ key: \"bubbleLauncher\" });\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\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\n position=\"fixed\"\n bottom=\"6\"\n right=\"6\"\n zIndex=\"docked\"\n {...containerProps}\n css={motion()}\n data-open={isOpen}\n inert={isOpen}\n aria-hidden={isOpen}\n >\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import {\n Box,\n chakra,\n Flex,\n HStack,\n type HTMLChakraProps,\n IconButton,\n Portal,\n Spacer,\n useRecipe,\n} 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\ninterface BubblePanelContainerProps extends HTMLChakraProps<\"section\"> {\n [attribute: `data-${string}`]: string | number | boolean | undefined;\n}\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?: BubblePanelContainerProps;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n overlay?: 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 overlay,\n } = props;\n\n const motion = useRecipe({ key: \"bubblePanel\" });\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 css={motion()}\n data-open={isOpen}\n inert={!isOpen}\n aria-hidden={!isOpen}\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 {overlay}\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 { Box, Button, Dialog, Input, InputGroup, Text, useSlotRecipe } from \"@chakra-ui/react\";\nimport { ArrowUp, Folder, FolderPlus, Home, Search } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface FolderPickerEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n}\nexport interface FolderPickerProps {\n currentPath: string;\n entries: FolderPickerEntry[];\n isLoading?: boolean;\n isOpening?: boolean;\n error?: string;\n onClose: () => void;\n onSelect: () => void;\n onNavigate: (path: string) => void;\n onCreateFolder: (name: string) => Promise<void>;\n}\n\nexport const FolderPicker = (props: FolderPickerProps) => {\n const { currentPath, entries, isLoading, isOpening, error, onClose, onSelect, onNavigate, onCreateFolder } = props;\n const styles = useSlotRecipe({ key: \"folderPicker\" })({});\n const [path, setPath] = useState(currentPath);\n const [query, setQuery] = useState(\"\");\n const [creating, setCreating] = useState(false);\n const [folderName, setFolderName] = useState(\"\");\n const [saving, setSaving] = useState(false);\n useEffect(() => {\n setPath(currentPath);\n setQuery(\"\");\n }, [currentPath]);\n const folders = entries.filter(\n (entry) => entry.isDirectory && entry.name.toLocaleLowerCase().includes(query.toLocaleLowerCase()),\n );\n const normalizedPath = currentPath.replaceAll(\"\\\\\", \"/\");\n const root = normalizedPath.match(/^\\/\\/[^/]+\\/[^/]+/)?.[0] ?? normalizedPath.match(/^[a-z]:\\//i)?.[0] ?? \"/\";\n const ancestor = normalizedPath.replace(/\\/+$/, \"\").split(\"/\").slice(0, -1).join(\"/\");\n const parent = ancestor.length < root.length ? root : ancestor;\n const atRoot = normalizedPath.replace(/\\/+$/, \"\") === root.replace(/\\/+$/, \"\");\n const createFolder = async () => {\n if (!folderName.trim()) return;\n setSaving(true);\n try {\n await onCreateFolder(folderName);\n setCreating(false);\n setFolderName(\"\");\n } catch {\n /* The host displays the error. */\n } finally {\n setSaving(false);\n }\n };\n return (\n <>\n <Dialog.Header css={styles.header}>\n <Dialog.Title>Open project folder</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body css={styles.body}>\n <Box css={styles.navigation}>\n <Button\n size=\"sm\"\n variant=\"outline\"\n css={styles.navigationButton}\n aria-label=\"Go to home directory\"\n disabled={isLoading || isOpening}\n onClick={() => onNavigate(\"~\")}\n >\n <Home />\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n css={styles.navigationButton}\n aria-label=\"Go to parent directory\"\n disabled={isLoading || isOpening || atRoot}\n onClick={() => onNavigate(parent)}\n >\n <ArrowUp />\n </Button>\n <Input\n css={styles.path}\n size=\"sm\"\n variant=\"borderless\"\n title={path}\n aria-label=\"Folder path\"\n value={path}\n onChange={(event) => setPath(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") onNavigate(path);\n }}\n disabled={isLoading || isOpening}\n />\n {!creating && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!currentPath || isLoading || isOpening}\n onClick={() => setCreating(true)}\n >\n <FolderPlus />\n New folder\n </Button>\n )}\n </Box>\n {!creating && (\n <InputGroup css={styles.filter} startElement={<Search />}>\n <Input\n size=\"sm\"\n aria-label=\"Filter folders\"\n placeholder=\"Filter folders\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n )}\n {creating && (\n <Box css={styles.creation}>\n <Input\n size=\"sm\"\n aria-label=\"New folder name\"\n placeholder=\"New folder name\"\n autoFocus\n value={folderName}\n onChange={(event) => setFolderName(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") void createFolder();\n }}\n />\n <Button size=\"sm\" variant=\"primary\" disabled={!folderName.trim()} loading={saving} onClick={createFolder}>\n <FolderPlus />\n Create folder\n </Button>\n </Box>\n )}\n {error && (\n <Text role=\"alert\" color=\"fg.error\" textStyle=\"paragraph/S/regular\">\n {error}\n </Text>\n )}\n <ScrollArea css={styles.list}>\n <Box css={styles.rows} aria-label=\"Folders\">\n {isLoading && <Text color=\"fg.muted\">Loading folders...</Text>}\n {!isLoading && folders.length === 0 && (\n <Text color=\"fg.muted\">{query ? \"No matching folders.\" : \"This folder is empty.\"}</Text>\n )}\n {!isLoading &&\n folders.map((entry) => (\n <ListRow\n key={entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Folder />}\n disabled={isLoading || isOpening}\n onActivate={() => onNavigate(entry.path)}\n />\n ))}\n </Box>\n </ScrollArea>\n </Dialog.Body>\n <Dialog.Footer css={styles.footer}>\n <Button size=\"sm\" variant=\"outline\" onClick={onClose} disabled={isLoading || isOpening || saving}>\n Cancel\n </Button>\n {!creating && (\n <Button\n size=\"sm\"\n variant=\"primary\"\n onClick={onSelect}\n loading={isOpening}\n disabled={!currentPath || isLoading || saving}\n >\n Open folder\n </Button>\n )}\n </Dialog.Footer>\n </>\n );\n};\nexport const FolderPickerDialog = (props: FolderPickerProps & { open: boolean }) => {\n const styles = useSlotRecipe({ key: \"folderPicker\" })({});\n return (\n <Dialog.Root\n placement=\"center\"\n scrollBehavior=\"inside\"\n open={props.open}\n onOpenChange={(event) => {\n if (!event.open) props.onClose();\n }}\n closeOnInteractOutside={false}\n lazyMount\n unmountOnExit\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content css={styles.content}>\n <FolderPicker {...props} />\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, chakra, 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 (\n <ChakraBreadcrumb.CurrentLink {...staticProps} tabIndex={item.contextMenuActions?.length ? 0 : undefined}>\n {item.title}\n </ChakraBreadcrumb.CurrentLink>\n );\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} tabIndex={item.contextMenuActions?.length ? 0 : undefined}>\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 <chakra.span display=\"inline-flex\" minW=\"0\" tabIndex={-1}>\n {content}\n </chakra.span>\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 { IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { Check, Copy } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\nexport interface CopyButtonProps extends Omit<IconButtonProps, \"children\" | \"onClick\"> {\n text: string;\n label?: string;\n onCopy?: () => void;\n onCopyError?: (error: unknown) => void;\n}\n\n/** Webviews must declare clipboard.write. Copy from a click so browser activation is preserved. */\nexport const CopyButton = (props: CopyButtonProps) => {\n const { text, label = \"Copy\", onCopy, onCopyError, disabled, ...rest } = props;\n const [state, setState] = useState<\"ready\" | \"copied\" | \"failed\">(\"ready\");\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(\n () => () => {\n if (timer.current) clearTimeout(timer.current);\n },\n [],\n );\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(text);\n setState(\"copied\");\n onCopy?.();\n } catch (error) {\n setState(\"failed\");\n onCopyError?.(error);\n }\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setState(\"ready\"), 1500);\n };\n let status = label;\n if (state === \"copied\") status = \"Copied\";\n if (state === \"failed\") status = \"Copy failed. Try again.\";\n return (\n <Tooltip content={status} openDelay={300} closeDelay={150}>\n <IconButton variant=\"ghost\" size=\"sm\" {...rest} aria-label={status} disabled={disabled || !text} onClick={copy}>\n {state === \"copied\" ? <Check /> : <Copy />}\n </IconButton>\n </Tooltip>\n );\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 { 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 && !section.actions?.length) {\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 label: string,\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,\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 // Without a name, a section toggle would show its internal id; its rows keep their own toggles.\n const label = section.label ?? section.menuLabel;\n if (label && isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, label, 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=\"destructive-ghost\"\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) => {\n if (error instanceof Error) return error.message;\n return error ? String(error) : null;\n};\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 { persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport {\n createHostPersistStorage,\n createHostStoreRegistry,\n type HostStorage,\n useHostStorage,\n} from \"../../utils/host-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n groups: TreeListGroup[];\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\nexport interface TreeListGroup {\n id: string;\n label: string;\n moveScope?: string;\n}\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 addGroup: (group: TreeListGroup, sectionIds: string[]) => void;\n renameGroup: (groupId: string, label: string) => void;\n removeGroup: (groupId: string) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n storage?: HostStorage;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n groups: [],\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 groups: state.groups,\n});\n\nconst groupLabel = (label: string) => {\n const trimmed = label.trim();\n if (!trimmed) throw new Error(\"Enter a group name.\");\n return trimmed;\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 addGroup: (group, sectionIds) =>\n set((state) => ({\n groups: [...state.groups, { ...group, label: groupLabel(group.label) }],\n sectionOrder: dedupe([...sectionIds, group.id]),\n })),\n renameGroup: (groupId, label) => {\n const nextLabel = groupLabel(label);\n set((state) => ({\n groups: state.groups.map((group) => (group.id === groupId ? { ...group, label: nextLabel } : group)),\n }));\n },\n removeGroup: (groupId) =>\n set((state) => {\n const { [groupId]: _nodes, ...nodeOrderBySection } = state.nodeOrderBySection;\n const { [groupId]: _slot, ...sectionSlotById } = state.sectionSlotById;\n return {\n groups: state.groups.filter((group) => group.id !== groupId),\n sectionOrder: state.sectionOrder.filter((id) => id !== groupId),\n nodeOrderBySection,\n sectionSlotById,\n };\n }),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createHostPersistStorage(options.storage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nexport const getTreeListOrderStore = createHostStoreRegistry((storageKey, storage) =>\n createTreeListOrderStore({ storageKey, storage }),\n);\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey, useHostStorage());\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\nimport type { TreeListGroup } from \"./tree-list-order.store\";\n\nconst keepFixedPositions = <T extends { id: string; canReorder?: boolean }>(original: T[], ordered: T[]) => {\n const movable = ordered.filter((item) => item.canReorder !== false);\n let index = 0;\n const fixed = original\n .map((item) => (item.canReorder === false ? item : movable[index++]))\n .filter((item): item is T => Boolean(item));\n fixed.push(...movable.slice(index));\n return fixed.every((item, index) => item === ordered[index]) && fixed.length === ordered.length ? ordered : fixed;\n};\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 groups: TreeListGroup[] = [],\n): TreeListSection[] => {\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const groupedSections: TreeListSection[] = groups.length\n ? [...sections, ...groups.map((group) => ({ ...group, canHide: true, nodes: [] }))]\n : sections;\n // Order entries for ids no contributor declares are bare runs users made by dropping rows behind a group.\n // They exist while at least one of their rows does.\n const looseSections = Object.entries(nodeOrderBySection).flatMap(([id, nodeIds]) => {\n if (groupedSections.some((section) => section.id === id)) return [];\n const first = nodeIds.map((nodeId) => nodesById.get(nodeId)).find((node) => node && node.canReorder !== false);\n return first ? [{ id, moveScope: first.moveScope, nodes: [] }] : [];\n });\n const allSections = looseSections.length > 0 ? [...groupedSections, ...looseSections] : groupedSections;\n\n let changed = allSections !== sections;\n const reorderedSections = keepFixedPositions(allSections, reorderBy(allSections, sectionOrder));\n if (reorderedSections !== allSections) changed = true;\n\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => allSections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) =>\n nodeIds.filter((nodeId) => nodesById.has(nodeId) && nodesById.get(nodeId)?.canReorder !== false),\n ),\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.canReorder !== false ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = keepFixedPositions(section.nodes, [...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 { persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport {\n createHostPersistStorage,\n createHostStoreRegistry,\n type HostStorage,\n useHostStorage,\n} from \"../../utils/host-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 storage?: HostStorage;\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: createHostPersistStorage(options.storage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nexport const getTreeListVisibilityStore = createHostStoreRegistry((storageKey, storage) =>\n createTreeListVisibilityStore({ storageKey, storage }),\n);\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey, useHostStorage());\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"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["HTMLChakraProps","Box","chakra","HStack","Icon","IconButton","Spacer","Textarea","ArrowUp","Paperclip","FormEvent","ReactNode","useState","Tooltip","ActivityActor","ActivityAvatar","ActivityComposerProps","Omit","actor","value","defaultValue","placeholder","variant","minRows","attachLabel","submitLabel","actions","onAttach","onChange","onSubmit","ActivityComposer","props","rootProps","internalValue","setInternalValue","currentValue","isInline","canSubmit","trim","length","handleChange","nextValue","undefined","handleSubmit","event","HTMLFormElement","preventDefault","borderColor","color","currentTarget","ActivityAvatar","ActivityComment","ActivityReply","ActivityComposer","ActivityEvent","ActivityFeed","ActivityHeader","ActivityRoot","ActivityTimeline","ActivityActor","ActivityAvatarProps","ActivityCommentProps","ActivityReplyProps","ActivityComposerProps","ActivityEventProps","ActivityFeedProps","ActivityHeaderProps","ActivityRootProps","ActivityTimelineProps","Activity","Root","Header","Feed","Timeline","Event","Comment","Reply","Composer","Avatar","ReactNode","DEFAULT_PALETTE_ASSET_LIMIT","PaletteSearchEntry","id","mode","label","searchText","secondaryLabel","assetType","PaletteMode","inputPrefix","FilterPaletteEntriesOptions","query","getEffectiveQuery","defaultAssetLimit","getSearchableText","entry","hasInputPrefix","trimStart","startsWith","resolvePaletteMode","modes","fallbackMode","prefixedMode","find","getPaletteEffectiveQuery","modeId","candidate","trim","slice","length","limitDefaultAssetEntries","entries","T","limit","counts","Record","filter","count","filterPaletteEntries","options","effectiveQuery","toLowerCase","filteredEntries","includes","undefined","Box","HStack","Icon","Text","Check","RefObject","useEffect","PaletteEntry","ListRow","ListRowItem","useVirtualizer","PaletteRow","type","id","label","entry","T","entryIndex","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","description","secondaryLabel","icon","endContent","shortcut","isSelected","undefined","onActivate","buildRows","entries","rows","forEach","index","previousEntry","group","push","getActiveRowIndex","activeIndex","findIndex","row","PaletteListProps","emptyLabel","onHover","scrollRef","HTMLDivElement","PaletteList","props","$","_c","activeRowIndex","virtualizer","count","length","getScrollElement","current","estimateSize","getItemKey","index_0","initialRect","width","height","overscan","scrollToIndex","align","behavior","t0","T0","t1","t2","t3","getTotalSize","t4","t5","getVirtualItems","map","virtualRow","key","measureElement","top","start","t6","_c","Box","CloseButton","Dialog","Input","InputGroup","KeyboardEventHandler","ReactNode","Ref","ScrollArea","ScrollAreaProps","SearchModalContentProps","children","searchValue","searchPlaceholder","searchAriaLabel","searchIcon","searchInputRef","HTMLInputElement","searchAutoFocus","showCloseButton","closeButtonLabel","bodyBefore","footerStart","footerEnd","scrollAreaProps","Omit","onSearchChange","value","onSearchKeyDown","hasContent","undefined","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","props","$","_c","t0","t1","t2","t3","t4","restScrollAreaProps","t5","t6","maxH","showHorizontalScrollbar","t7","event","target","t8","t9","t10","t11","t12","t13","_c","_Fragment","Dialog","useSlotRecipe","KeyboardEvent","ReactNode","SetStateAction","useEffect","useRef","useState","DEFAULT_PALETTE_ASSET_LIMIT","FilterPaletteEntriesOptions","filterPaletteEntries","getPaletteEffectiveQuery","PaletteMode","PaletteSearchEntry","resolvePaletteMode","PaletteList","SearchModalContent","PaletteEntry","description","icon","shortcut","endContent","group","isSelected","onActivate","PaletteState","query","mode","activeIndex","entries","T","PaletteEscapeContext","activeEntry","entryCount","setQuery","setActiveIndex","index","runActiveEntry","closePalette","PaletteStateValue","TValue","state","PaletteProps","open","fullScreen","searchAutoFocus","initialQuery","initialActiveIndex","modes","resetKey","inputIcon","placeholder","emptyLabel","footerStart","footerEnd","filterEntries","onActiveEntryChange","entry","onQueryChange","onClose","onEscape","ctx","resolveStateValue","value","fallback","Palette","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","t6","Symbol","for","key","t7","t8","styles","t9","entryMode","getEffectiveQuery","search","getFilteredEntries","t10","activeId","id","searchState","setSearchState","t11","setup","setSetup","inputRef","contentRef","scrollRef","shouldReset","filteredEntries","resolvedInputIcon","t12","activeMode","t13","Math","max","findIndex","t14","current","currentEntries","currentIndex","entry_0","nextIndex","resolvedPlaceholder","nextQuery","t15","t16","timeout","setTimeout","input","focus","length","setSelectionRange","clearTimeout","t17","activeEntryId","t18","t19","t20","handled","handleEscape","t21","event","preventDefault","current_0","min","_temp","stopPropagation","handleKeyDown","t22","t23","details","t24","t25","style","overflowAnchor","t26","results","maxH","css","showHorizontalScrollbar","viewportRef","viewportProps","t27","nextQuery_0","t28","t29","t30","content","t31","positioner","t32","current_1","_c","_temp","defineRecipe","shortcutKeysRecipe","base","display","alignItems","gap","verticalAlign","whiteSpace","chakra","Kbd","ArrowLeft","ArrowRight","Command","LucideIcon","Option","Fragment","shortcutKeysRecipe","ShortcutKeys","PaletteShortcutBinding","ShortcutPlatform","ShortcutDisplayPart","label","Icon","nonMacModifierLabels","Record","alt","control","ctrl","mod","shift","macModifierLabels","cmd","command","meta","option","keyLabels","arrowleft","arrowright","getShortcutPlatform","navigator","platform","toLowerCase","includes","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","split","map","part","trim","filter","Boolean","getShortcutDisplayParts","binding","steps","Array","isArray","PaletteShortcut","props","$","_c","t0","stepIndex","_temp","join","_temp2","length","t1","part_0","partIndex","_c","Fragment","_temp2","_temp","_Fragment","HStack","StackProps","HorizontalMenuStackProps","children","HorizontalMenuStack","props","$","_c","rest","t0","t1","t2","t3","h","px","py","borderBottomWidth","undefined","t4","_c","Box","Collapsible","Flex","Text","ChevronRight","ReactNode","ItemSectionProps","children","title","defaultOpen","action","ItemSection","props","$","_c","t0","undefined","t1","Symbol","for","background","t2","t3","transform","t4","t5","_temp","t6","t7","t8","e","stopPropagation","_c","_temp","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","const","PANEL_HEADER_TAB_SIZE","Badge","Box","Button","HStack","Icon","Skeleton","Stack","Text","Bell","Search","X","KeyboardEvent","useEffect","useRef","useState","SearchModalContent","AlertMessage","ListRow","ListRowAction","NotificationCenterAction","NotificationCenterItem","NotificationCenterProps","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","title","body","kind","status","sourceLabel","targetLabel","searchText","actions","map","action","label","filter","Boolean","join","toLowerCase","filterItems","items","query","normalizedQuery","trim","includes","groupItems","needsInput","urgent","normal","id","group","length","orderItemsForDisplay","flatMap","metadataDescription","parts","timeLabel","getActionButtons","props","Pick","onDismiss","push","icon","tooltip","onAction","NotificationEndContent","$","_c","onRunAction","t0","t1","t2","t3","destructive","event","stopPropagation","NotificationRows","activeIndex","onActiveIndexChange","index","onActivateItem","groups","rowIndex","currentIndex","LoadingRows","Symbol","for","_temp","NotificationCenter","autoFocus","emptyLabel","error","footerEnd","footerStart","loading","onEscape","onQueryChange","undefined","internalQuery","setInternalQuery","setActiveIndex","inputRef","activeQuery","filteredItems","displayItems","activeItem","t4","t5","timeout","setTimeout","current","focus","clearTimeout","t6","t7","Math","min","max","t8","nextQuery","updateQuery","t9","key","preventDefault","current_0","_temp2","handleKeyDown","t10","t11","maxH","showHorizontalScrollbar","t12","t13","t14","t15","t16","row","current_1","_c","_temp","_temp2","Flex","FlexProps","ReactNode","AttachedMenuProps","Omit","children","AttachedMenu","props","$","_c","rest","t0","_c","Flex","FlexProps","ReactNode","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanelProps","Omit","children","header","resizable","AttachedPanel","props","$","_c","minWidth","rest","t0","t1","width","undefined","resolvedMinWidth","resolvedWidth","t2","t3","_c","chakra","HTMLChakraProps","IconButton","IconButtonProps","useRecipe","forwardRef","ReactNode","Tooltip","BubbleButtonStyleProps","BubbleButtonProps","Omit","containerProps","isOpen","tooltip","BubbleButton","HTMLButtonElement","props","ref","$","_c","children","rest","t0","undefined","t1","Symbol","for","key","motion","t2","t3","borderColor","t4","button","t5","t6","t7","_c","Box","chakra","Flex","HStack","HTMLChakraProps","IconButton","Portal","Spacer","useRecipe","Minus","SquareArrowOutUpRight","forwardRef","ReactNode","Header","PANEL_HEADER_CONTROL_SIZE","Tooltip","BubblePanelContainerProps","attribute","BubblePanelProps","isOpen","title","menu","onClose","closeLabel","onPopOut","popOutLabel","width","height","containerProps","testId","children","overlay","BubblePanel","HTMLDivElement","props","ref","$","_c","t0","t1","t2","ariaLabel","undefined","t3","Symbol","for","key","motion","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","_c","Button","CloseButton","Dialog","Portal","Stack","Text","ReactNode","useState","DeleteConfirmationModalProps","open","onClose","onDelete","Promise","headline","notificationText","buttonText","children","DeleteConfirmationModal","props","isDeleting","setIsDeleting","handleDelete","details","Box","Button","Dialog","Input","InputGroup","Text","useSlotRecipe","ArrowUp","Folder","FolderPlus","Home","Search","useState","ListRow","ScrollArea","FolderPickerEntry","name","path","isDirectory","FolderPickerProps","currentPath","entries","isLoading","isOpening","error","onClose","onSelect","onNavigate","onCreateFolder","Promise","FolderPicker","props","styles","key","setPath","previousPath","setPreviousPath","query","setQuery","creating","setCreating","folderName","setFolderName","saving","setSaving","folders","filter","entry","toLocaleLowerCase","includes","normalizedPath","replaceAll","root","match","ancestor","replace","split","slice","join","parent","length","atRoot","createFolder","trim","header","body","navigation","navigationButton","event","target","value","creation","list","rows","map","footer","FolderPickerDialog","$","_c","t0","Symbol","for","t1","t2","t3","open","t4","t5","t6","content","t7","_Fragment","_c","Breadcrumb","ChakraBreadcrumb","chakra","SystemStyleObject","React","ResourceContextAction","ResourceContextMenu","BreadcrumbItem","title","ReactNode","url","onClick","contextMenuActions","BreadcrumbLinkProps","to","children","BreadcrumbProps","RootProps","separator","separatorGap","items","linkComponent","ComponentType","linkProps","alignItems","display","gap","minW","maxW","overflow","outline","textOverflow","whiteSpace","_active","_focus","_focusVisible","const","staticProps","color","cursor","textDecoration","_hover","BreadcrumbItemContentProps","item","isCurrent","BreadcrumbSeparatorProps","isInteractiveItem","Boolean","BreadcrumbItemLink","props","$","_c","LinkComponent","t0","length","undefined","t1","BreadcrumbItemContent","content","Symbol","for","placement","t2","t3","BreadcrumbSeparator","forwardRef","HTMLDivElement","BreadcrumbRoot","ref","rest","index","map","_c","ChakraBreadcrumb","Box","BoxProps","Text","TextProps","ContentPlaceholderProps","contentPlaceholderBackgroundImage","ContentPlaceholder","props","$","_c","t0","Symbol","for","backgroundClip","backgroundImage","display","width","t1","Label","_c","IconButton","IconButtonProps","Check","Copy","useEffect","useRef","useState","Tooltip","CopyButtonProps","Omit","text","label","onCopy","onCopyError","error","CopyButton","props","disabled","rest","state","setState","timer","ReturnType","setTimeout","current","clearTimeout","copy","navigator","clipboard","writeText","status","AbsoluteCenter","Button","Stack","Text","Component","ErrorInfo","ReactNode","AlertMessage","ContentPlaceholder","ErrorBoundaryProps","children","fallback","label","onReset","ErrorBoundaryState","error","Error","ErrorBoundary","state","getDerivedStateFromError","componentDidCatch","info","console","handleReset","setState","props","render","ErrorFallbackProps","ErrorFallback","$","_c","t0","t1","t2","message","t3","t4","t5","t6","_c","Box","Center","CenterProps","Icon","getIconComponent","IconColorPickerIconOption","TagSwatchProps","Omit","color","icon","iconOptions","showIcon","hasGlyph","Boolean","TagSwatch","props","$","_c","rest","t0","undefined","t1","IconComponent","t2","t3","t4","_c","Box","chakra","Grid","Icon","Popover","Portal","Stack","Text","IconColorPickerIconOption","optionColors","optionIcons","TagSwatch","SwatchTrigger","base","display","borderRadius","cursor","focusVisibleRing","_disabled","opacity","ColorDot","boxSize","outlineStyle","outlineWidth","outlineOffset","outlineColor","_selected","IconCell","alignItems","justifyContent","color","_hover","bg","IconColorPickerProps","colorOptions","icon","iconOptions","onColorChange","onIconChange","disabled","showIcons","colorLabel","iconLabel","IconColorPicker","props","$","_c","t0","t1","t2","t3","t4","t5","undefined","ariaLabel","selectedIcon","t6","Symbol","for","placement","t7","t8","t9","t10","t11","t12","t13","optionColor","map","t14","entry","selected","value","label","t15","t16","t17","_c","_Fragment","Box","BoxProps","SimpleCardProps","SimpleCard","props","$","_c","children","rest","t0","SimpleCardBodyProps","SimpleCardBody","_c","Badge","Box","Button","HStack","Icon","Stack","Text","Check","ReactNode","SimpleCard","SimpleCardBody","IntegrationCardProps","icon","name","description","id","version","category","active","actionLabel","IntegrationCard","props","$","_c","t0","undefined","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","_c","defineSlotRecipe","segmentedControlSlotRecipe","className","slots","base","root","display","alignItems","gap","padding","bg","borderRadius","borderWidth","borderColor","item","justifyContent","whiteSpace","textStyle","color","cursor","transitionProperty","transitionDuration","focusVisibleRing","_hover","_selected","_disabled","opacity","variants","size","sm","height","paddingInline","xs","defaultVariants","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","segmentedControlSlotRecipe","recipe","withProvider","withContext","VariantProps","SegmentedControlRootProps","SegmentedControlRoot","HTMLDivElement","SegmentedControlItemProps","SegmentedControlItem","HTMLButtonElement","SegmentedControlOption","value","label","SegmentedControlProps","Omit","options","onValueChange","disabled","SegmentedControl","props","$","_c","ariaLabel","rootProps","t0","t1","option","selected","undefined","map","withProvider","withContext","_c","Toaster","ChakraToaster","createToaster","Portal","Spinner","Stack","Toast","ScrollArea","toaster","ReturnType","placement","pauseOnPageIdle","duration","$","_c","t0","Symbol","for","mdDown","_temp","toast","md","type","title","description","paddingEnd","action","label","_c","ChakraToaster","_temp","useStore","createJSONStorage","persist","createStore","createBrowserStorage","SidenavSnapshot","open","expandedSections","expandedNodes","width","SidenavState","openSidenav","closeSidenav","toggleSidenav","toggleSection","sectionId","toggleNode","nodeId","setSectionExpanded","expanded","setNodeExpanded","setWidth","reset","CreateSidenavStoreOptions","storageKey","initialState","Partial","DEFAULT_SNAPSHOT","SIDENAV_STORE_NAMESPACE","toStorageName","toggleId","values","id","includes","filter","value","setExpanded","getPersistedSnapshot","state","createSidenavStore","options","snapshot","set","name","storage","partialize","sidenavStoreRegistry","Map","ReturnType","getSidenavStore","existingStore","get","store","useSidenavStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","toStorageName","getPersistedSnapshot","_c","store","Box","ReactNode","SidenavFooterProps","children","SidenavFooter","props","$","_c","t0","_c","HStack","ReactNode","PANEL_HEADER_HEIGHT","SidenavHeaderProps","children","SidenavHeader","props","$","_c","t0","_c","Box","Flex","Text","useEffect","useRef","ResourceContextMenu","ScrollArea","TreeList","useSidenavStore","SidenavProps","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","value","min","max","Math","resolveInitialWidth","width","defaultWidth","parsed","parseInt","Number","isNaN","Sidenav","props","$","_c","storageKey","sections","activeNodeId","contextActions","t0","header","footer","closable","t1","emptyLabel","t2","defaultExpandedSections","linkComponent","onNavigate","onOpenChange","resizable","t3","minWidth","t4","maxWidth","t5","virtualize","t6","t7","undefined","viewportRef","t8","initialWidth","t9","expandedSections","t10","initialState","open","_temp","persistedWidth","_temp2","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","t11","t12","t13","t14","effectiveWidth","widthCss","t15","t16","t17","Symbol","for","display","style","overflowX","minHeight","flexDirection","t18","length","t19","t20","content","t21","state","state_0","state_1","state_2","state_3","state_4","_c","_temp","_temp2","useStore","createJSONStorage","persist","createStore","createBrowserStorage","VisibilityOverride","TabVisibilitySnapshot","tabOverrides","Record","TabVisibilityState","setTab","key","value","toggleTab","hiddenByDefault","clearTab","reset","CreateTabVisibilityStoreOptions","storageKey","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","setOverride","overrides","undefined","_removed","rest","toggleOverride","current","getPersistedSnapshot","state","createTabVisibilityStore","options","set","name","storage","partialize","storeRegistry","Map","ReturnType","getTabVisibilityStore","existing","get","store","useTabVisibilityStore","selector","$","_c","t0","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","setOverride","toggleOverride","getPersistedSnapshot","_c","store","ReactNode","ResourceContextAction","TreeListNode","TreeListSection","VisibilityOverride","toStringLabel","label","fallback","resolveVisibility","override","hiddenByDefault","isCustomizable","item","canHide","isNodeVisible","node","nodeOverrides","Record","id","filterNodes","nodes","changed","next","children","length","filteredChildren","push","filterVisibleNodes","filterVisibleSections","sections","sectionOverrides","section","filteredNodes","emptyState","actions","TreeVisibilityMenuActions","onToggleSection","onToggleNode","onResetAll","BuildMenuOptions","visibleIcon","hiddenIcon","resetIcon","visibilityEndContent","effective","options","buildSectionAction","key","onClick","endContent","buildNodeAction","icon","TreeVisibilityMenuItems","headerSections","footerSections","buildTreeVisibilityMenuActions","items","result","appendGroup","group","separatorBefore","actionsForSections","sectionActions","menuLabel","ReactNode","ResourceContextAction","VisibilityOverride","resolveVisibility","TabVisibilityPlacement","closable","hiddenByDefault","pinned","title","contributionId","filterVisibleTabs","placements","T","tabOverrides","Record","getKey","placement","changed","next","push","effective","TabVisibilityMenuActions","onToggleTab","key","onResetAll","BuildTabMenuOptions","visibleIcon","hiddenIcon","resetIcon","buildTabVisibilityMenuActions","actions","options","getIcon","result","nonCloseableCount","label","icon","onClick","endContent","separatorBefore","createSlotRecipeContext","HTMLChakraProps","closestCenter","DndContext","KeyboardSensor","PointerSensor","useSensor","useSensors","horizontalListSortingStrategy","SortableContext","sortableKeyboardCoordinates","useSortable","CSS","X","KeyboardEvent","ReactNode","useEffect","useRef","windowTabsRecipe","recipe","withProvider","withContext","List","HTMLDivElement","Tab","Trigger","HTMLButtonElement","Label","HTMLSpanElement","Close","WindowTab","id","label","icon","WindowTabsProps","tabs","selectedId","onSelect","onClose","onReorder","targetId","WindowTabItemProps","tab","selected","tabIndex","reorderable","onKeyDown","event","WindowTabItem","props","$","_c","t0","t1","disabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","isSorting","t2","undefined","t3","t4","Translate","toString","t5","t6","defaultPrevented","t7","t8","t9","t10","t11","Symbol","for","t12","t13","WindowTabs","listRef","activationConstraint","distance","coordinateGetter","sensors","current","querySelector","scrollIntoView","block","inline","T0","T1","T2","closeTab","index","triggers","querySelectorAll","neighbor","focus","handleKey","index_0","next","key","length","preventDefault","_temp","t14","active","over","String","map","_temp2","tab_0","index_1","Boolean","event_0","t15","t16","y","List","withProvider","withContext","Label","_c","_temp","createSlotRecipeContext","HTMLChakraProps","RecipeVariantProps","ReactNode","windowTitleBarRecipe","recipe","withProvider","withContext","RootProps","Root","HTMLDivElement","Content","WindowTitleBarProps","platform","children","WindowTitleBar","props","$","_c","t0","t1","t2","_c","HStack","Text","ReactNode","TagEditorHeadingProps","children","hasChanges","TagEditorHeading","props","$","_c","t0","t1","t2","_c","Badge","Button","Editable","Flex","Icon","IconButton","Menu","useSortable","CSS","Check","ChevronDown","GripVertical","Trash2","IconColorPicker","IconColorPickerIconOption","ListRow","TagEditorAction","TagEditorValue","TagEditorRowProps","actionOptions","actionsLabel","colorOptions","iconOptions","value","isSaving","readOnly","showDefault","showIcons","onActionsChange","actions","onColorChange","color","onDelete","onIconChange","icon","onNameChange","name","selectionLabel","selected","length","label","ActionDropdown","props","$","_c","disabled","options","optionName","onChange","T0","T1","T2","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","toggleAction","t10","option","includes","filter","t11","action","item","Root","Trigger","Symbol","for","t12","t13","t14","option_0","undefined","map","t15","TagEditorRow","id","attributes","listeners","setNodeRef","transform","transition","isDragging","Transform","toString","bg","t16","t17","details","trimmed","trim","t18","t19","t20","isNew","t21","isDefault","t22","t23","t24","t25","t26","t27","t28","_c","Button","chakra","Editable","Flex","Icon","Menu","Stack","Text","closestCenter","DndContext","DragEndEvent","PointerSensor","useSensor","useSensors","arrayMove","SortableContext","verticalListSortingStrategy","Check","ChevronDown","Plus","useState","DeleteConfirmationModal","ListRow","TagEditorProps","TagEditorValue","TagEditorHeading","TagEditorRow","nextSortOrder","values","length","Math","max","map","value","sortOrder","TagEditorTitleProps","title","hasChanges","isSaving","onTitleChange","TagEditorTitle","props","$","_c","t0","details","trimmed","trim","t1","t2","Symbol","for","t3","AddOptionRow","base","display","alignItems","gap","height","paddingInline","color","borderRadius","cursor","_hover","bg","_disabled","opacity","ColumnHeadersProps","valueLabel","actionsLabel","ColumnHeaders","t4","DefaultValueSelectProps","label","disabled","onSelect","DefaultValueSelect","find","_temp","current","name","t5","t6","value_0","id","isDefault","undefined","t7","t8","TagEditor","description","headerActions","onValuesChange","onDeleteValue","onSetDefault","readOnly","addLabel","addName","actionOptions","defaultValueLabel","colorOptions","defaultAddColor","defaultAddIcon","deleteButtonText","deleteHeadline","deleteNotificationText","iconOptions","showDefault","showIcons","framed","showColumnHeaders","valueColumnLabel","valueToDelete","setValueToDelete","sensors","activationConstraint","distance","updateValue","index","patch","Partial","next","handleAddOption","crypto","randomUUID","icon","isNew","handleDeleteOption","filter","handleDragEnd","event","active","over","oldIndex","findIndex","newIndex","actions","Boolean","_c","_Fragment","Button","HStack","TagEditorSaveBarProps","onSave","onReset","hasChanges","isSaving","resetLabel","saveLabel","TagEditorSaveBar","props","$","_c","t0","t1","undefined","t2","t3","t4","t5","_c","HStack","Spinner","Stack","Text","useEffect","useState","AlertMessage","TagEditor","TagEditorProps","TagEditorValue","TagEditorSaveBar","SaveTagSettingsInput","deletedIds","Set","drafts","values","TValue","EditorLabels","Pick","SortableValue","id","sortOrder","TagSettingsPanelProps","errorTitle","loadingText","resetLabel","saveLabel","loadError","onSave","input","Promise","toEditorValue","value","valueNeedsUpdate","original","draft","bySortOrder","left","right","name","localeCompare","toEditorValues","map","sort","findOriginalValue","find","hasTagValueChanges","size","some","isNew","errorMessage","error","Error","message","String","TagSettingsPanel","props","loadedValues","readOnly","editorProps","setDrafts","setDeletedIds","isSaving","setIsSaving","saveError","setSaveError","handleSave","hasChanges","handleDeleteValue","filter","handleReset","undefined","showDefault","isDefault","onSetDefault","useStore","persist","createStore","createHostPersistStorage","createHostStoreRegistry","HostStorage","useHostStorage","TreeListOrderSnapshot","sectionOrder","nodeOrderBySection","Record","sectionSlotById","TreeListOrderSlot","groups","TreeListGroup","id","label","moveScope","TreeListOrderState","setSectionOrder","nextSectionIds","setNodeOrder","sectionId","nextNodeIds","setSectionSlot","slot","addGroup","group","sectionIds","renameGroup","groupId","removeGroup","resetSectionOrder","resetNodeOrder","reset","CreateTreeListOrderStoreOptions","storageKey","storage","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","dedupe","ids","seen","Set","result","has","add","push","getPersistedSnapshot","state","groupLabel","trimmed","trim","Error","createTreeListOrderStore","options","set","nextLabel","map","_nodes","_slot","filter","_removed","rest","name","partialize","getTreeListOrderStore","useTreeListOrderStore","selector","$","_c","t0","t1","store","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","getPersistedSnapshot","_c","store","TreeListSection","TreeListGroup","keepFixedPositions","id","canReorder","original","T","ordered","movable","filter","item","index","fixed","map","Boolean","push","slice","every","length","reorderBy","items","order","indexById","Map","placed","Set","next","get","undefined","has","add","changed","i","applyTreeListOrder","sections","sectionOrder","nodeOrderBySection","Record","groups","nodesById","flatMap","section","nodes","node","const","groupedSections","group","canHide","looseSections","Object","entries","nodeIds","some","first","nodeId","find","moveScope","allSections","reorderedSections","assignedNodeIds","sectionId","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","useStore","persist","createStore","createHostPersistStorage","createHostStoreRegistry","HostStorage","useHostStorage","VisibilityOverride","TreeListVisibilitySnapshot","sectionOverrides","Record","nodeOverrides","TreeListVisibilityState","setSection","id","value","setNode","toggleSection","hiddenByDefault","toggleNode","clearSection","clearNode","reset","CreateTreeListVisibilityStoreOptions","storageKey","storage","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","override","flipOverride","current","setOverride","overrides","undefined","_removed","rest","toggleOverride","next","getPersistedSnapshot","state","createTreeListVisibilityStore","options","set","name","partialize","getTreeListVisibilityStore","useTreeListVisibilityStore","selector","$","_c","t0","t1","store","_c","store","FileIconThemeFont","fontFamily","src","url","format","weight","style","FileIconThemeDefinition","fontCharacter","fontColor","fontId","FileIconThemePreferenceOption","id","title","definitions","Record","fileExtensions","fileNames","defaults","file","folder","fonts","defaultFileIconThemePreferences","isFileIconThemePreference","value","themes","some","theme","extensionCandidates","filename","parts","toLowerCase","split","candidates","i","length","push","slice","join","resolveDefinitionKey","isDirectory","named","candidate","match","fontFamilyForDefinition","definition","matched","find","font","ResolvedFileIconGlyph","decodeFontCharacter","exec","String","fromCodePoint","Number","parseInt","resolveFileIconGlyph","undefined","key","FONT_STYLE_ATTRIBUTE","fontFaceRule","map","entry","applyFileIconThemePreference","themeId","document","querySelector","HTMLStyleElement","createElement","setAttribute","head","appendChild","option","textContent","createContext","ReactNode","useContext","useEffect","useState","applyFileIconThemePreference","defaultFileIconThemePreferences","FileIconThemePreferenceOption","isFileIconThemePreference","createBrowserStorage","STORAGE_KEY","getDefaultFileIconThemePreference","themes","find","theme","id","endsWith","FileIconThemePreferenceContextValue","fileIconThemePreference","fileIconThemePreferences","activeFileIconTheme","setFileIconThemePreference","preference","FileIconThemePreferenceContext","FileIconThemePreferenceProviderProps","children","themePreferences","getInitialPreference","window","stored","getItem","FileIconThemePreferenceProvider","props","$","_c","t0","undefined","t1","t2","t3","resolved","setItem","t4","t5","t6","useFileIconThemePreference","context","Error","_c","Folder","CSSProperties","FileIconThemePreferenceOption","resolveFileIconGlyph","getFileTypeIcon","ResolveFileIconElementOptions","isDirectory","theme","size","resolveFileIconElement","filename","options","glyph","style","fontFamily","color","fontColor","fontSize","lineHeight","display","fontCharacter","Icon","ActivityRoot","ActivityReply","ActivityHeader","ActivityAvatar","ActivityTimeline","ActivityEvent","ActivityFeed","AlertMessage","Tooltip","ScrollArea","Checkbox","ResourceActionMenu","SearchableMenu","Header","ListRow","ResourceContextMenu","useVirtualizer","TreeListDragProvider","ResizableSplitLayout","TreeList","getFileTypeIcon","ResourceBadge","Switch","Chip","Slider","AttachmentChip","installPrismGlobal","sessionCompletionStatuses","resolveSessionIndicatorIcon","SessionIndicator","handleDialogAcceptShortcut","resolveSessionIndicatorColor","WorkspaceBadge","DropIndicator","EmptyState","createGlyphIcon","optionColors","optionIcons","getIconComponent","RadioGroup","Radio","createBrowserStorage","windowTabsRecipe","windowTitleBarRecipe","theme_default","useHostStorage","createHostPersistStorage","createHostStoreRegistry","HostStorageProvider","createThemePreferenceFromVsCodeTheme","createMonacoThemeFromVsCodeTheme","defaultThemePreferences","getThemePreferenceMode","applyThemePreference","isThemePreference","getInitialThemePreference","getThemePreferenceClassName","useThemePreference","getThemePreferenceClassNames","ThemePreferenceProvider","Breadcrumb$1","Toaster$1","React","Fragment$1","ActivityComposer","variant","rootProps","props","internalValue","setInternalValue","useState","defaultValue","currentValue","value","isInline","canSubmit","handleChange","nextValue","onChange","chakra","event","onSubmit","HStack","actor","Box","Textarea","minRows","event_0","actions","Spacer","attachLabel","IconButton","onAttach","Icon","Paperclip","submitLabel","ArrowUp","Activity","ActivityComment","DEFAULT_PALETTE_ASSET_LIMIT","getSearchableText","label","entry","secondaryLabel","hasInputPrefix","query","inputPrefix","resolvePaletteMode","modes","mode","fallbackMode","getPaletteEffectiveQuery","candidate","modeId","limitDefaultAssetEntries","counts","entries","assetType","count","limit","filterPaletteEntries","effectiveQuery","options","filteredEntries","GROUP_ROW_HEIGHT","ENTRY_ROW_HEIGHT","INITIAL_VIEWPORT_HEIGHT","buildEntryItem","Check","buildRows","rows","previousEntry","index","getActiveRowIndex","row","activeIndex","PaletteList","$","c","activeRowIndex","virtualizer","scrollRef","index_0","useEffect","t0","emptyLabel","Text","T0","t3","t4","t5","virtualRow","onHover","t6","hasContent","footerJustifyContent","hasFooterStart","hasFooterEnd","SearchModalContent","t1","t2","searchAriaLabel","searchPlaceholder","showCloseButton","closeButtonLabel","bodyBefore","children","footerEnd","footerStart","onSearchChange","onSearchKeyDown","scrollAreaProps","searchAutoFocus","searchIcon","searchInputRef","searchValue","restScrollAreaProps","maxH","showHorizontalScrollbar","t7","t8","Input","t9","InputGroup","t10","Dialog","CloseButton","t11","t12","t13","Fragment","resolveStateValue","state","fallback","Palette","fullScreen","initialQuery","initialActiveIndex","resetKey","useSlotRecipe","styles","filterEntries","entryMode","search","getFilteredEntries","searchState","setSearchState","setup","setSetup","inputRef","useRef","contentRef","shouldReset","open","activeEntry","resolvedInputIcon","setActiveIndex","activeId","inputIcon","placeholder","activeMode","t14","currentEntries","current","currentIndex","entry_0","nextIndex","resolvedPlaceholder","onQueryChange","nextQuery","setQuery","runActiveEntry","t15","onClose","closePalette","t16","timeout","input","length","t17","activeEntryId","t18","onActiveEntryChange","t19","t20","onEscape","handleEscape","t21","current_0","_temp$7","handleKeyDown","t22","t23","details","t24","t25","t26","t27","nextQuery_0","t28","t29","t30","t31","t32","current_1","shortcutKeysRecipe","defineRecipe","ShortcutKeys","nonMacModifierLabels","macModifierLabels","Option","Command","keyLabels","ArrowLeft","ArrowRight","getShortcutPlatform","platform","resolveShortcutDisplayPart","normalized","modifierLabels","splitShortcutStep","step","part","getShortcutDisplayParts","binding","PaletteShortcut","steps","_temp2$3","stepIndex","_temp$6","Kbd","part_0","partIndex","HorizontalMenuStack","rest","h","px","py","borderBottomWidth","ItemSection","defaultOpen","title","Collapsible","ChevronRight","action","_temp$5","Flex","PANEL_HEADER_HEIGHT","PANEL_HEADER_CONTROL_SIZE","PANEL_HEADER_TAB_SIZE","priorityColorPalette","priority","shouldShowPriorityBadge","itemSearchText","item","filterItems","normalizedQuery","items","groupItems","needsInput","urgent","normal","group","orderItemsForDisplay","metadataDescription","getActionButtons","X","NotificationEndContent","Badge","onRunAction","Button","NotificationRows","groups","rowIndex","Stack","Bell","onActivateItem","onActiveIndexChange","LoadingRows","_temp$4","NotificationCenter","autoFocus","loading","internalQuery","setInternalQuery","activeQuery","filteredItems","displayItems","activeItem","updateQuery","_temp2$2","Search","error","Skeleton","AttachedMenu","DEFAULT_RESIZABLE_MIN_WIDTH","AttachedPanel","header","minWidth","width","resizable","resolvedMinWidth","resolvedWidth","BubbleButton","forwardRef","containerProps","tooltip","isOpen","motion","useRecipe","ref","button","BubblePanel","ariaLabel","height","menu","onPopOut","popOutLabel","SquareArrowOutUpRight","closeLabel","Minus","overlay","testId","Portal","DeleteConfirmationModal","isDeleting","setIsDeleting","headline","notificationText","onDelete","buttonText","FolderPicker","path","setPath","currentPath","previousPath","setPreviousPath","creating","setCreating","folderName","setFolderName","saving","setSaving","folders","normalizedPath","root","ancestor","parent","atRoot","createFolder","onCreateFolder","isLoading","isOpening","onNavigate","Home","FolderPlus","event_1","event_2","event_3","Folder","onSelect","FolderPickerDialog","linkProps","staticProps","isInteractiveItem","BreadcrumbItemLink","LinkComponent","isCurrent","BreadcrumbItemContent","content","BreadcrumbSeparator","separator","Breadcrumb","separatorGap","contentPlaceholderBackgroundImage","ContentPlaceholder","Label","CopyButton","setState","timer","copy","text","onCopy","onCopyError","status","disabled","jsx","Copy","ErrorBoundary","Component","info","ErrorFallback","onReset","AbsoluteCenter","hasGlyph","icon","TagSwatch","color","iconOptions","showIcon","IconComponent","Center","SwatchTrigger","ColorDot","IconCell","IconColorPicker","colorOptions","showIcons","colorLabel","iconLabel","selectedIcon","Popover","onColorChange","optionColor","Grid","onIconChange","selected","SimpleCard","SimpleCardBody","IntegrationCard","active","name","id","version","category","description","actionLabel","segmentedControlSlotRecipe","defineSlotRecipe","withProvider$2","withContext$2","createSlotRecipeContext","SegmentedControlRoot","SegmentedControlItem","SegmentedControl","onValueChange","option","toaster","createToaster","Toaster","_temp$3","Toast","toast","Spinner","DEFAULT_SNAPSHOT$3","SIDENAV_STORE_NAMESPACE","toStorageName$3","storageKey","toggleId","values","setExpanded","expanded","getPersistedSnapshot$3","createSidenavStore","snapshot","initialState","createStore","persist","set","sectionId","nodeId","createJSONStorage","sidenavStoreRegistry","getSidenavStore","existingStore","store","useSidenavStore","useStore","selector","SidenavFooter","SidenavHeader","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","clamp","min","max","resolveInitialWidth","parsed","defaultWidth","Sidenav","contextActions","closable","maxWidth","virtualize","viewportRef","initialWidth","defaultExpandedSections","_temp$2","persistedWidth","_temp2$1","expandedSections","_temp3","expandedNodes","_temp4","toggleSection","_temp5","toggleNode","_temp6","onOpenChange","effectiveWidth","widthCss","activeNodeId","linkComponent","sections","footer","state_0","state_1","state_2","state_3","state_4","DEFAULT_SNAPSHOT$2","STORE_NAMESPACE$2","toStorageName$2","resolveEffective$1","override","hiddenByDefault","setOverride$1","key","overrides","_removed","toggleOverride$1","getPersistedSnapshot$2","createTabVisibilityStore","storeRegistry","getTabVisibilityStore","existing","useTabVisibilityStore","toStringLabel","resolveVisibility","isCustomizable","isNodeVisible","nodeOverrides","node","filterNodes","changed","next","nodes","filteredChildren","filterVisibleNodes","filterVisibleSections","section","sectionOverrides","filteredNodes","visibilityEndContent","effective","buildSectionAction","buildNodeAction","buildTreeVisibilityMenuActions","result","appendGroup","actionsForSections","sectionActions","filterVisibleTabs","placement","placements","tabOverrides","getKey","buildTabVisibilityMenuActions","nonCloseableCount","getIcon","withProvider$1","withContext$1","List$1","Tab","Trigger","Label$1","Close","WindowTabItem","reorderable","tab","useSortable","isDragging","transform","CSS","attributes","isSorting","listeners","onKeyDown","setActivatorNodeRef","tabIndex","setNodeRef","transition","WindowTabs","listRef","sortableKeyboardCoordinates","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","selectedId","T1","T2","onReorder","tabs","closeTab","triggers","neighbor","handleKey","DndContext","closestCenter","_temp$1","over","SortableContext","_temp2","horizontalListSortingStrategy","tab_0","index_1","Root","withProvider","Content","withContext","WindowTitleBar","TagEditorHeading","hasChanges","selectionLabel","ActionDropdown","toggleAction","optionName","Menu","ChevronDown","option_0","TagEditorRow","actionsLabel","isSaving","readOnly","GripVertical","onNameChange","trimmed","Editable","showDefault","actionOptions","onActionsChange","Trash2","nextSortOrder","TagEditorTitle","onTitleChange","AddOptionRow","ColumnHeaders","valueLabel","DefaultValueSelect","_temp","value_0","TagEditor","valueToDelete","setValueToDelete","updateValue","patch","onValuesChange","headerActions","framed","showColumnHeaders","valueColumnLabel","oldIndex","value_1","newIndex","value_2","arrayMove","value_3","value_4","verticalListSortingStrategy","value_5","addName","defaultAddColor","defaultAddIcon","Plus","addLabel","defaultValueLabel","onSetDefault","value_6","onDeleteValue","deleteHeadline","deleteNotificationText","deleteButtonText","TagEditorSaveBar","resetLabel","saveLabel","onSave","bySortOrder","left","right","toEditorValues","toEditorValue","findOriginalValue","draft","hasTagValueChanges","deletedIds","drafts","original","valueNeedsUpdate","errorMessage","TagSettingsPanel","loadedValues","editorProps","setDrafts","setDeletedIds","setIsSaving","saveError","setSaveError","handleSave","error_0","loadError","handleDeleteValue","handleReset","errorTitle","loadingText","draft_0","DEFAULT_SNAPSHOT$1","STORE_NAMESPACE$1","toStorageName$1","dedupe","seen","ids","getPersistedSnapshot$1","groupLabel","createTreeListOrderStore","nextSectionIds","nextNodeIds","slot","sectionIds","nextLabel","groupId","_nodes","nodeOrderBySection","_slot","sectionSlotById","getTreeListOrderStore","useTreeListOrderStore","keepFixedPositions","movable","ordered","fixed","reorderBy","order","indexById","placed","i","applyTreeListOrder","nodesById","groupedSections","looseSections","nodeIds","first","allSections","reorderedSections","sectionOrder","assignedNodeIds","nodeOrder","remainingNodes","orderedNodes","reorderedNodes","DEFAULT_SNAPSHOT","STORE_NAMESPACE","toStorageName","resolveEffective","flipOverride","setOverride","toggleOverride","getPersistedSnapshot","createTreeListVisibilityStore","getTreeListVisibilityStore","useTreeListVisibilityStore","defaultFileIconThemePreferences","isFileIconThemePreference","themes","theme","extensionCandidates","parts","filename","candidates","resolveDefinitionKey","isDirectory","named","match","fontFamilyForDefinition","definition","matched","font","decodeFontCharacter","resolveFileIconGlyph","fontFamily","FONT_STYLE_ATTRIBUTE","fontFaceRule","src","applyFileIconThemePreference","style","themeId","STORAGE_KEY","getDefaultFileIconThemePreference","FileIconThemePreferenceContext","createContext","getInitialPreference","stored","FileIconThemePreferenceProvider","themePreferences","fileIconThemePreference","setFileIconThemePreference","resolved","activeFileIconTheme","useFileIconThemePreference","context","useContext","resolveFileIconElement","glyph","size","ChakraProvider"],"sources":["../src/components/activity/activity-composer.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/theme/recipes/shortcut-keys.ts","../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/folder-picker-dialog.tsx","../src/components/primitives/breadcrumb.tsx","../src/components/primitives/content-placeholder.tsx","../src/components/primitives/copy-button.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/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 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 { 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\";\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 { 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\";\nimport { useVirtualizer } from \"@/utils/use-virtualizer\";\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, useSlotRecipe } 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 /** Fill the viewport, with a scrollable results area. */\n fullScreen?: boolean;\n /** Focus the dialog instead of opening a touch keyboard when false. */\n searchAutoFocus?: 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 fullScreen = false,\n searchAutoFocus = true,\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 styles = useSlotRecipe({ key: \"palette\" })({ fullScreen });\n const getFilteredEntries = (value: string) => {\n const entryMode = mode ?? resolvePaletteMode(value, modes);\n return filterEntries\n ? filterEntries(entries, value, entryMode)\n : filterPaletteEntries(entries, {\n query: value,\n mode: entryMode,\n getEffectiveQuery: (search) => getPaletteEffectiveQuery(search, modes, entryMode),\n });\n };\n const [searchState, setSearchState] = useState<{ query: string; activeId: string | null }>(() => ({\n query: initialQuery,\n activeId: getFilteredEntries(initialQuery)[initialActiveIndex]?.id ?? null,\n }));\n const { query, activeId } = searchState;\n const [setup, setSetup] = useState({ open: false, resetKey });\n const inputRef = useRef<HTMLInputElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n // Reset while rendering, not in an effect, so the first open render already highlights\n // the initial entry and listeners never see the previous session's entry.\n const shouldReset = setup.open !== open || setup.resetKey !== resetKey;\n if (shouldReset) {\n setSetup({ open, resetKey });\n if (open) {\n setSearchState({\n query: initialQuery,\n activeId: getFilteredEntries(initialQuery)[initialActiveIndex]?.id ?? null,\n });\n }\n }\n const activeMode = mode ?? resolvePaletteMode(query, modes);\n const filteredEntries = getFilteredEntries(query);\n // Entries can arrive or reorder while the palette is open. Keep the highlight on the\n // same entry instead of previewing a different theme at its previous row number.\n const activeIndex = Math.max(\n filteredEntries.findIndex((entry) => entry.id === activeId),\n 0,\n );\n const activeEntry = filteredEntries[activeIndex] ?? null;\n if (!shouldReset && (activeEntry?.id ?? null) !== activeId) {\n setSearchState({ ...searchState, activeId: activeEntry?.id ?? null });\n }\n const setActiveIndex = (index: SetStateAction<number>) => {\n setSearchState((current) => {\n const currentEntries = getFilteredEntries(current.query);\n const currentIndex = Math.max(\n currentEntries.findIndex((entry) => entry.id === current.activeId),\n 0,\n );\n const nextIndex = typeof index === \"function\" ? index(currentIndex) : index;\n return { ...current, activeId: currentEntries[nextIndex]?.id ?? null };\n });\n };\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 setSearchState({ query: nextQuery, activeId: null });\n onQueryChange?.(nextQuery);\n };\n\n const runActiveEntry = () => {\n activeEntry?.onActivate();\n };\n\n const closePalette = () => {\n onClose();\n };\n\n useEffect(() => {\n if (!setup.open || !searchAutoFocus) return;\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 }, [setup, searchAutoFocus]);\n\n const activeEntryId = activeEntry?.id;\n // Callers rebuild entries and callbacks on every render. Report only a real change of the\n // highlighted entry, so a listener that updates state cannot start a render loop.\n // biome-ignore lint/correctness/useExhaustiveDependencies: the entry and callback change identity on every render\n useEffect(() => {\n onActiveEntryChange?.(activeEntry, activeIndex);\n }, [activeEntryId, activeIndex]);\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\n open={open}\n initialFocusEl={() => (searchAutoFocus ? inputRef.current : contentRef.current)}\n onOpenChange={(details) => !details.open && closePalette()}\n >\n <Dialog.Backdrop />\n <Dialog.Positioner css={styles.positioner}>\n <Dialog.Content ref={contentRef} tabIndex={-1} css={styles.content} aria-label=\"Command palette\">\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: \"var(--palette-results-height)\",\n css: styles.results,\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 { defineRecipe } from \"@chakra-ui/react\";\n\nexport const shortcutKeysRecipe = defineRecipe({\n base: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"shortcut-key-gap\",\n verticalAlign: \"middle\",\n whiteSpace: \"nowrap\",\n },\n});\n","import { chakra, Kbd } from \"@chakra-ui/react\";\nimport { ArrowLeft, ArrowRight, Command, type LucideIcon, Option } from \"lucide-react\";\nimport { Fragment } from \"react\";\nimport { shortcutKeysRecipe } from \"../../theme/recipes/shortcut-keys\";\n\nconst ShortcutKeys = chakra(\"span\", shortcutKeysRecipe);\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 <ShortcutKeys>\n {step.map((part, partIndex) => (\n <Kbd key={`${part.label}-${partIndex}`} aria-label={part.label}>\n {part.Icon ? <part.Icon size={12} aria-hidden=\"true\" /> : part.label}\n </Kbd>\n ))}\n </ShortcutKeys>\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 ) : null}\n {!error && loading && <LoadingRows />}\n {!error && !loading && filteredItems.length === 0 && (\n <Text textStyle=\"paragraph/S/regular\" color=\"fg.muted\" px=\"sm\" py=\"md\">\n {emptyLabel}\n </Text>\n )}\n {!error && !loading && filteredItems.length > 0 && (\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, useRecipe } 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 motion = useRecipe({ key: \"bubbleLauncher\" });\n const button = (\n <IconButton\n ref={ref}\n rounded=\"full\"\n size=\"lg\"\n borderWidth=\"1px\"\n borderColor=\"border\"\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\n position=\"fixed\"\n bottom=\"6\"\n right=\"6\"\n zIndex=\"docked\"\n {...containerProps}\n css={motion()}\n data-open={isOpen}\n inert={isOpen}\n aria-hidden={isOpen}\n >\n {tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button}\n </chakra.div>\n );\n});\n","import {\n Box,\n chakra,\n Flex,\n HStack,\n type HTMLChakraProps,\n IconButton,\n Portal,\n Spacer,\n useRecipe,\n} 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\ninterface BubblePanelContainerProps extends HTMLChakraProps<\"section\"> {\n [attribute: `data-${string}`]: string | number | boolean | undefined;\n}\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?: BubblePanelContainerProps;\n testId?: string;\n \"aria-label\"?: string;\n children?: ReactNode;\n overlay?: 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 overlay,\n } = props;\n\n const motion = useRecipe({ key: \"bubblePanel\" });\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 css={motion()}\n data-open={isOpen}\n inert={!isOpen}\n aria-hidden={!isOpen}\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 {overlay}\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 { Box, Button, Dialog, Input, InputGroup, Text, useSlotRecipe } from \"@chakra-ui/react\";\nimport { ArrowUp, Folder, FolderPlus, Home, Search } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { ListRow } from \"@/components/list-row/list-row\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport interface FolderPickerEntry {\n name: string;\n path: string;\n isDirectory: boolean;\n}\nexport interface FolderPickerProps {\n currentPath: string;\n entries: FolderPickerEntry[];\n isLoading?: boolean;\n isOpening?: boolean;\n error?: string;\n onClose: () => void;\n onSelect: () => void;\n onNavigate: (path: string) => void;\n onCreateFolder: (name: string) => Promise<void>;\n}\n\nexport const FolderPicker = (props: FolderPickerProps) => {\n const { currentPath, entries, isLoading, isOpening, error, onClose, onSelect, onNavigate, onCreateFolder } = props;\n const styles = useSlotRecipe({ key: \"folderPicker\" })({});\n const [path, setPath] = useState(currentPath);\n const [previousPath, setPreviousPath] = useState(currentPath);\n const [query, setQuery] = useState(\"\");\n const [creating, setCreating] = useState(false);\n const [folderName, setFolderName] = useState(\"\");\n const [saving, setSaving] = useState(false);\n if (currentPath !== previousPath) {\n setPreviousPath(currentPath);\n setPath(currentPath);\n setQuery(\"\");\n }\n const folders = entries.filter(\n (entry) => entry.isDirectory && entry.name.toLocaleLowerCase().includes(query.toLocaleLowerCase()),\n );\n const normalizedPath = currentPath.replaceAll(\"\\\\\", \"/\");\n const root = normalizedPath.match(/^\\/\\/[^/]+\\/[^/]+/)?.[0] ?? normalizedPath.match(/^[a-z]:\\//i)?.[0] ?? \"/\";\n const ancestor = normalizedPath.replace(/\\/+$/, \"\").split(\"/\").slice(0, -1).join(\"/\");\n const parent = ancestor.length < root.length ? root : ancestor;\n const atRoot = normalizedPath.replace(/\\/+$/, \"\") === root.replace(/\\/+$/, \"\");\n const createFolder = async () => {\n if (!folderName.trim()) return;\n setSaving(true);\n try {\n await onCreateFolder(folderName);\n setCreating(false);\n setFolderName(\"\");\n } catch {\n /* The host displays the error. */\n } finally {\n setSaving(false);\n }\n };\n return (\n <>\n <Dialog.Header css={styles.header}>\n <Dialog.Title>Open project folder</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body css={styles.body}>\n <Box css={styles.navigation}>\n <Button\n size=\"sm\"\n variant=\"outline\"\n css={styles.navigationButton}\n aria-label=\"Go to home directory\"\n disabled={isLoading || isOpening}\n onClick={() => onNavigate(\"~\")}\n >\n <Home />\n </Button>\n <Button\n size=\"sm\"\n variant=\"outline\"\n css={styles.navigationButton}\n aria-label=\"Go to parent directory\"\n disabled={isLoading || isOpening || atRoot}\n onClick={() => onNavigate(parent)}\n >\n <ArrowUp />\n </Button>\n <Input\n css={styles.path}\n size=\"sm\"\n variant=\"borderless\"\n title={path}\n aria-label=\"Folder path\"\n value={path}\n onChange={(event) => setPath(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") onNavigate(path);\n }}\n disabled={isLoading || isOpening}\n />\n {!creating && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!currentPath || isLoading || isOpening}\n onClick={() => setCreating(true)}\n >\n <FolderPlus />\n New folder\n </Button>\n )}\n </Box>\n {!creating && (\n <InputGroup css={styles.filter} startElement={<Search />}>\n <Input\n size=\"sm\"\n aria-label=\"Filter folders\"\n placeholder=\"Filter folders\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </InputGroup>\n )}\n {creating && (\n <Box css={styles.creation}>\n <Input\n size=\"sm\"\n aria-label=\"New folder name\"\n placeholder=\"New folder name\"\n autoFocus\n value={folderName}\n onChange={(event) => setFolderName(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") void createFolder();\n }}\n />\n <Button size=\"sm\" variant=\"primary\" disabled={!folderName.trim()} loading={saving} onClick={createFolder}>\n <FolderPlus />\n Create folder\n </Button>\n </Box>\n )}\n {error && (\n <Text role=\"alert\" color=\"fg.error\" textStyle=\"paragraph/S/regular\">\n {error}\n </Text>\n )}\n <ScrollArea css={styles.list}>\n <Box css={styles.rows} aria-label=\"Folders\">\n {isLoading && <Text color=\"fg.muted\">Loading folders...</Text>}\n {!isLoading && folders.length === 0 && (\n <Text color=\"fg.muted\">{query ? \"No matching folders.\" : \"This folder is empty.\"}</Text>\n )}\n {!isLoading &&\n folders.map((entry) => (\n <ListRow\n key={entry.path}\n id={entry.path}\n label={entry.name}\n icon={<Folder />}\n disabled={isLoading || isOpening}\n onActivate={() => onNavigate(entry.path)}\n />\n ))}\n </Box>\n </ScrollArea>\n </Dialog.Body>\n <Dialog.Footer css={styles.footer}>\n <Button size=\"sm\" variant=\"outline\" onClick={onClose} disabled={isLoading || isOpening || saving}>\n Cancel\n </Button>\n {!creating && (\n <Button\n size=\"sm\"\n variant=\"primary\"\n onClick={onSelect}\n loading={isOpening}\n disabled={!currentPath || isLoading || saving}\n >\n Open folder\n </Button>\n )}\n </Dialog.Footer>\n </>\n );\n};\nexport const FolderPickerDialog = (props: FolderPickerProps & { open: boolean }) => {\n const styles = useSlotRecipe({ key: \"folderPicker\" })({});\n return (\n <Dialog.Root\n placement=\"center\"\n scrollBehavior=\"inside\"\n open={props.open}\n onOpenChange={(event) => {\n if (!event.open) props.onClose();\n }}\n closeOnInteractOutside={false}\n lazyMount\n unmountOnExit\n >\n <Dialog.Backdrop />\n <Dialog.Positioner>\n <Dialog.Content css={styles.content}>\n <FolderPicker {...props} />\n </Dialog.Content>\n </Dialog.Positioner>\n </Dialog.Root>\n );\n};\n","import { Breadcrumb as ChakraBreadcrumb, chakra, 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 (\n <ChakraBreadcrumb.CurrentLink {...staticProps} tabIndex={item.contextMenuActions?.length ? 0 : undefined}>\n {item.title}\n </ChakraBreadcrumb.CurrentLink>\n );\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} tabIndex={item.contextMenuActions?.length ? 0 : undefined}>\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 <chakra.span display=\"inline-flex\" minW=\"0\" tabIndex={-1}>\n {content}\n </chakra.span>\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 { IconButton, type IconButtonProps } from \"@chakra-ui/react\";\nimport { Check, Copy } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"./tooltip\";\n\nexport interface CopyButtonProps extends Omit<IconButtonProps, \"children\" | \"onClick\"> {\n text: string;\n label?: string;\n onCopy?: () => void;\n onCopyError?: (error: unknown) => void;\n}\n\n/** Webviews must declare clipboard.write. Copy from a click so browser activation is preserved. */\nexport const CopyButton = (props: CopyButtonProps) => {\n const { text, label = \"Copy\", onCopy, onCopyError, disabled, ...rest } = props;\n const [state, setState] = useState<\"ready\" | \"copied\" | \"failed\">(\"ready\");\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n useEffect(\n () => () => {\n if (timer.current) clearTimeout(timer.current);\n },\n [],\n );\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(text);\n setState(\"copied\");\n onCopy?.();\n } catch (error) {\n setState(\"failed\");\n onCopyError?.(error);\n }\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setState(\"ready\"), 1500);\n };\n let status = label;\n if (state === \"copied\") status = \"Copied\";\n if (state === \"failed\") status = \"Copy failed. Try again.\";\n return (\n <Tooltip content={status} openDelay={300} closeDelay={150}>\n <IconButton variant=\"ghost\" size=\"sm\" {...rest} aria-label={status} disabled={disabled || !text} onClick={copy}>\n {state === \"copied\" ? <Check /> : <Copy />}\n </IconButton>\n </Tooltip>\n );\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 { 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 && !section.actions?.length) {\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 label: string,\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,\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 // Without a name, a section toggle would show its internal id; its rows keep their own toggles.\n const label = section.label ?? section.menuLabel;\n if (label && isCustomizable(section)) {\n sectionActions.push(buildSectionAction(section, label, 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=\"destructive-ghost\"\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) => {\n if (error instanceof Error) return error.message;\n return error ? String(error) : null;\n};\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 { persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport {\n createHostPersistStorage,\n createHostStoreRegistry,\n type HostStorage,\n useHostStorage,\n} from \"../../utils/host-storage\";\n\ninterface TreeListOrderSnapshot {\n sectionOrder: string[];\n nodeOrderBySection: Record<string, string[]>;\n sectionSlotById: Record<string, TreeListOrderSlot>;\n groups: TreeListGroup[];\n}\n\ntype TreeListOrderSlot = \"header\" | \"content\" | \"footer\";\n\nexport interface TreeListGroup {\n id: string;\n label: string;\n moveScope?: string;\n}\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 addGroup: (group: TreeListGroup, sectionIds: string[]) => void;\n renameGroup: (groupId: string, label: string) => void;\n removeGroup: (groupId: string) => void;\n resetSectionOrder: () => void;\n resetNodeOrder: (sectionId: string) => void;\n reset: () => void;\n}\n\ninterface CreateTreeListOrderStoreOptions {\n storageKey: string;\n storage?: HostStorage;\n}\n\nconst DEFAULT_SNAPSHOT: TreeListOrderSnapshot = {\n sectionOrder: [],\n nodeOrderBySection: {},\n sectionSlotById: {},\n groups: [],\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 groups: state.groups,\n});\n\nconst groupLabel = (label: string) => {\n const trimmed = label.trim();\n if (!trimmed) throw new Error(\"Enter a group name.\");\n return trimmed;\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 addGroup: (group, sectionIds) =>\n set((state) => ({\n groups: [...state.groups, { ...group, label: groupLabel(group.label) }],\n sectionOrder: dedupe([...sectionIds, group.id]),\n })),\n renameGroup: (groupId, label) => {\n const nextLabel = groupLabel(label);\n set((state) => ({\n groups: state.groups.map((group) => (group.id === groupId ? { ...group, label: nextLabel } : group)),\n }));\n },\n removeGroup: (groupId) =>\n set((state) => {\n const { [groupId]: _nodes, ...nodeOrderBySection } = state.nodeOrderBySection;\n const { [groupId]: _slot, ...sectionSlotById } = state.sectionSlotById;\n return {\n groups: state.groups.filter((group) => group.id !== groupId),\n sectionOrder: state.sectionOrder.filter((id) => id !== groupId),\n nodeOrderBySection,\n sectionSlotById,\n };\n }),\n resetSectionOrder: () => set((state) => ({ ...state, sectionOrder: [] })),\n resetNodeOrder: (sectionId) =>\n set((state) => {\n if (!(sectionId in state.nodeOrderBySection)) return state;\n const { [sectionId]: _removed, ...rest } = state.nodeOrderBySection;\n return { ...state, nodeOrderBySection: rest };\n }),\n reset: () => set(DEFAULT_SNAPSHOT),\n }),\n {\n name: toStorageName(options.storageKey),\n storage: createHostPersistStorage(options.storage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nexport const getTreeListOrderStore = createHostStoreRegistry((storageKey, storage) =>\n createTreeListOrderStore({ storageKey, storage }),\n);\n\nexport const useTreeListOrderStore = <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => {\n const store = getTreeListOrderStore(storageKey, useHostStorage());\n return useStore(store, selector);\n};\n\nexport type { TreeListOrderSlot, TreeListOrderSnapshot, TreeListOrderState };\n","import type { TreeListSection } from \"./tree-list.types\";\nimport type { TreeListGroup } from \"./tree-list-order.store\";\n\nconst keepFixedPositions = <T extends { id: string; canReorder?: boolean }>(original: T[], ordered: T[]) => {\n const movable = ordered.filter((item) => item.canReorder !== false);\n let index = 0;\n const fixed = original\n .map((item) => (item.canReorder === false ? item : movable[index++]))\n .filter((item): item is T => Boolean(item));\n fixed.push(...movable.slice(index));\n return fixed.every((item, index) => item === ordered[index]) && fixed.length === ordered.length ? ordered : fixed;\n};\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 groups: TreeListGroup[] = [],\n): TreeListSection[] => {\n const nodesById = new Map(sections.flatMap((section) => section.nodes.map((node) => [node.id, node] as const)));\n const groupedSections: TreeListSection[] = groups.length\n ? [...sections, ...groups.map((group) => ({ ...group, canHide: true, nodes: [] }))]\n : sections;\n // Order entries for ids no contributor declares are bare runs users made by dropping rows behind a group.\n // They exist while at least one of their rows does.\n const looseSections = Object.entries(nodeOrderBySection).flatMap(([id, nodeIds]) => {\n if (groupedSections.some((section) => section.id === id)) return [];\n const first = nodeIds.map((nodeId) => nodesById.get(nodeId)).find((node) => node && node.canReorder !== false);\n return first ? [{ id, moveScope: first.moveScope, nodes: [] }] : [];\n });\n const allSections = looseSections.length > 0 ? [...groupedSections, ...looseSections] : groupedSections;\n\n let changed = allSections !== sections;\n const reorderedSections = keepFixedPositions(allSections, reorderBy(allSections, sectionOrder));\n if (reorderedSections !== allSections) changed = true;\n\n const assignedNodeIds = new Set(\n Object.entries(nodeOrderBySection)\n .filter(([sectionId]) => allSections.some((section) => section.id === sectionId))\n .flatMap(([, nodeIds]) =>\n nodeIds.filter((nodeId) => nodesById.has(nodeId) && nodesById.get(nodeId)?.canReorder !== false),\n ),\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.canReorder !== false ? [node] : [];\n });\n const remainingNodes = section.nodes.filter((node) => !assignedNodeIds.has(node.id));\n const reorderedNodes = keepFixedPositions(section.nodes, [...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 { persist } from \"zustand/middleware\";\nimport { createStore } from \"zustand/vanilla\";\nimport {\n createHostPersistStorage,\n createHostStoreRegistry,\n type HostStorage,\n useHostStorage,\n} from \"../../utils/host-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 storage?: HostStorage;\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: createHostPersistStorage(options.storage),\n partialize: getPersistedSnapshot,\n },\n ),\n );\n\nexport const getTreeListVisibilityStore = createHostStoreRegistry((storageKey, storage) =>\n createTreeListVisibilityStore({ storageKey, storage }),\n);\n\nexport const useTreeListVisibilityStore = <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => {\n const store = getTreeListVisibilityStore(storageKey, useHostStorage());\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"],"mappings":"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"}