@elench/shell 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -7
- package/dist/components/shell/activity-bar.d.ts +2 -0
- package/dist/components/shell/activity-bar.d.ts.map +1 -0
- package/dist/components/shell/activity-bar.js +19 -0
- package/dist/components/shell/activity-bar.js.map +1 -0
- package/dist/components/shell/app-shell.d.ts +11 -0
- package/dist/components/shell/app-shell.d.ts.map +1 -0
- package/dist/components/shell/app-shell.js +323 -0
- package/dist/components/shell/app-shell.js.map +1 -0
- package/dist/components/shell/context-action-menu.d.ts +7 -0
- package/dist/components/shell/context-action-menu.d.ts.map +1 -0
- package/dist/components/shell/context-action-menu.js +75 -0
- package/dist/components/shell/context-action-menu.js.map +1 -0
- package/dist/components/shell/default-layout.d.ts +3 -0
- package/dist/components/shell/default-layout.d.ts.map +1 -0
- package/dist/components/shell/default-layout.js +63 -0
- package/dist/components/shell/default-layout.js.map +1 -0
- package/dist/components/shell/left-sidebar.d.ts +2 -0
- package/dist/components/shell/left-sidebar.d.ts.map +1 -0
- package/dist/components/shell/left-sidebar.js +16 -0
- package/dist/components/shell/left-sidebar.js.map +1 -0
- package/dist/components/shell/primitives/activity-nav.d.ts +7 -0
- package/dist/components/shell/primitives/activity-nav.d.ts.map +1 -0
- package/dist/components/shell/primitives/activity-nav.js +12 -0
- package/dist/components/shell/primitives/activity-nav.js.map +1 -0
- package/dist/components/shell/primitives/inspector-panel.d.ts +25 -0
- package/dist/components/shell/primitives/inspector-panel.d.ts.map +1 -0
- package/dist/components/shell/primitives/inspector-panel.js +32 -0
- package/dist/components/shell/primitives/inspector-panel.js.map +1 -0
- package/dist/components/shell/primitives/instance-row.d.ts +20 -0
- package/dist/components/shell/primitives/instance-row.d.ts.map +1 -0
- package/dist/components/shell/primitives/instance-row.js +16 -0
- package/dist/components/shell/primitives/instance-row.js.map +1 -0
- package/dist/components/shell/primitives/search-bar-primitives.d.ts +21 -0
- package/dist/components/shell/primitives/search-bar-primitives.d.ts.map +1 -0
- package/dist/components/shell/primitives/search-bar-primitives.js +24 -0
- package/dist/components/shell/primitives/search-bar-primitives.js.map +1 -0
- package/dist/components/shell/primitives/shell-frame.d.ts +10 -0
- package/dist/components/shell/primitives/shell-frame.d.ts.map +1 -0
- package/dist/components/shell/primitives/shell-frame.js +26 -0
- package/dist/components/shell/primitives/shell-frame.js.map +1 -0
- package/dist/components/shell/primitives/shell-status-bar.d.ts +13 -0
- package/dist/components/shell/primitives/shell-status-bar.d.ts.map +1 -0
- package/dist/components/shell/primitives/shell-status-bar.js +18 -0
- package/dist/components/shell/primitives/shell-status-bar.js.map +1 -0
- package/dist/components/shell/primitives/shell-surface.d.ts +19 -0
- package/dist/components/shell/primitives/shell-surface.d.ts.map +1 -0
- package/dist/components/shell/primitives/shell-surface.js +73 -0
- package/dist/components/shell/primitives/shell-surface.js.map +1 -0
- package/dist/components/shell/primitives/shell-toolbar.d.ts +8 -0
- package/dist/components/shell/primitives/shell-toolbar.d.ts.map +1 -0
- package/dist/components/shell/primitives/shell-toolbar.js +22 -0
- package/dist/components/shell/primitives/shell-toolbar.js.map +1 -0
- package/dist/components/shell/primitives/sidebar-action-row.d.ts +14 -0
- package/dist/components/shell/primitives/sidebar-action-row.d.ts.map +1 -0
- package/dist/components/shell/primitives/sidebar-action-row.js +9 -0
- package/dist/components/shell/primitives/sidebar-action-row.js.map +1 -0
- package/dist/components/shell/primitives/sidebar-frame.d.ts +12 -0
- package/dist/components/shell/primitives/sidebar-frame.d.ts.map +1 -0
- package/dist/components/shell/primitives/sidebar-frame.js +19 -0
- package/dist/components/shell/primitives/sidebar-frame.js.map +1 -0
- package/dist/components/shell/primitives/sidebar-section.d.ts +15 -0
- package/dist/components/shell/primitives/sidebar-section.d.ts.map +1 -0
- package/dist/components/shell/primitives/sidebar-section.js +23 -0
- package/dist/components/shell/primitives/sidebar-section.js.map +1 -0
- package/dist/components/shell/primitives/workspace-page.d.ts +21 -0
- package/dist/components/shell/primitives/workspace-page.d.ts.map +1 -0
- package/dist/components/shell/primitives/workspace-page.js +18 -0
- package/dist/components/shell/primitives/workspace-page.js.map +1 -0
- package/dist/components/shell/right-inspector.d.ts +2 -0
- package/dist/components/shell/right-inspector.d.ts.map +1 -0
- package/dist/components/shell/right-inspector.js +32 -0
- package/dist/components/shell/right-inspector.js.map +1 -0
- package/dist/components/shell/search-action-groups.d.ts +6 -0
- package/dist/components/shell/search-action-groups.d.ts.map +1 -0
- package/dist/components/shell/search-action-groups.js +37 -0
- package/dist/components/shell/search-action-groups.js.map +1 -0
- package/dist/components/shell/search-bar.d.ts +2 -0
- package/dist/components/shell/search-bar.d.ts.map +1 -0
- package/dist/components/shell/search-bar.js +161 -0
- package/dist/components/shell/search-bar.js.map +1 -0
- package/dist/components/shell/shell-layout.d.ts +30 -0
- package/dist/components/shell/shell-layout.d.ts.map +1 -0
- package/dist/components/shell/shell-layout.js +176 -0
- package/dist/components/shell/shell-layout.js.map +1 -0
- package/dist/components/shell/shell-model.d.ts +14 -0
- package/dist/components/shell/shell-model.d.ts.map +1 -0
- package/dist/components/shell/shell-model.js +75 -0
- package/dist/components/shell/shell-model.js.map +1 -0
- package/dist/components/shell/status-bar.d.ts +2 -0
- package/dist/components/shell/status-bar.d.ts.map +1 -0
- package/dist/components/shell/status-bar.js +16 -0
- package/dist/components/shell/status-bar.js.map +1 -0
- package/dist/components/shell/tab-strip-bridge.d.ts +32 -0
- package/dist/components/shell/tab-strip-bridge.d.ts.map +1 -0
- package/dist/components/shell/tab-strip-bridge.js +46 -0
- package/dist/components/shell/tab-strip-bridge.js.map +1 -0
- package/dist/components/shell/top-bar.d.ts +2 -0
- package/dist/components/shell/top-bar.d.ts.map +1 -0
- package/dist/components/shell/top-bar.js +24 -0
- package/dist/components/shell/top-bar.js.map +1 -0
- package/dist/components/shell/use-shell-surface-action-groups.d.ts +16 -0
- package/dist/components/shell/use-shell-surface-action-groups.d.ts.map +1 -0
- package/dist/components/shell/use-shell-surface-action-groups.js +169 -0
- package/dist/components/shell/use-shell-surface-action-groups.js.map +1 -0
- package/dist/components/shell/workspace-surface-context-menu.d.ts +12 -0
- package/dist/components/shell/workspace-surface-context-menu.d.ts.map +1 -0
- package/dist/components/shell/workspace-surface-context-menu.js +27 -0
- package/dist/components/shell/workspace-surface-context-menu.js.map +1 -0
- package/dist/components/shell/workspace-tab-content.d.ts +7 -0
- package/dist/components/shell/workspace-tab-content.d.ts.map +1 -0
- package/dist/components/shell/workspace-tab-content.js +15 -0
- package/dist/components/shell/workspace-tab-content.js.map +1 -0
- package/dist/components/system/async-state.d.ts +22 -0
- package/dist/components/system/async-state.d.ts.map +1 -0
- package/dist/components/system/async-state.js +34 -0
- package/dist/components/system/async-state.js.map +1 -0
- package/dist/components/system/status.d.ts +16 -0
- package/dist/components/system/status.d.ts.map +1 -0
- package/dist/components/system/status.js +42 -0
- package/dist/components/system/status.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +26 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.d.ts +11 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +37 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +12 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +26 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +11 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/context-menu.d.ts +31 -0
- package/dist/components/ui/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu.js +54 -0
- package/dist/components/ui/context-menu.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +18 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +39 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +30 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +53 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/icon-button.d.ts +10 -0
- package/dist/components/ui/icon-button.d.ts.map +1 -0
- package/dist/components/ui/icon-button.js +7 -0
- package/dist/components/ui/icon-button.js.map +1 -0
- package/dist/components/ui/input.d.ts +4 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +8 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/kbd.d.ts +3 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +6 -0
- package/dist/components/ui/kbd.js.map +1 -0
- package/dist/components/ui/label.d.ts +5 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +10 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/popover.d.ts +11 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +28 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +13 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/search-field.d.ts +9 -0
- package/dist/components/ui/search-field.d.ts.map +1 -0
- package/dist/components/ui/search-field.js +9 -0
- package/dist/components/ui/search-field.js.map +1 -0
- package/dist/components/ui/select.d.ts +25 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +35 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +10 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/skeleton.d.ts +3 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +9 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/switch.d.ts +7 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +10 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +12 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +31 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +4 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +8 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +19 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/hooks/shell/shell-registry-provider.d.ts +20 -0
- package/dist/hooks/shell/shell-registry-provider.d.ts.map +1 -0
- package/dist/hooks/shell/shell-registry-provider.js +42 -0
- package/dist/hooks/shell/shell-registry-provider.js.map +1 -0
- package/dist/hooks/shell/use-shell-shortcuts.d.ts +2 -0
- package/dist/hooks/shell/use-shell-shortcuts.d.ts.map +1 -0
- package/dist/hooks/shell/use-shell-shortcuts.js +27 -0
- package/dist/hooks/shell/use-shell-shortcuts.js.map +1 -0
- package/dist/hooks/shell/use-shell-store.d.ts +40 -0
- package/dist/hooks/shell/use-shell-store.d.ts.map +1 -0
- package/dist/hooks/shell/use-shell-store.js +420 -0
- package/dist/hooks/shell/use-shell-store.js.map +1 -0
- package/dist/hooks/shell/use-shell-tab-strip-bridge.d.ts +7 -0
- package/dist/hooks/shell/use-shell-tab-strip-bridge.d.ts.map +1 -0
- package/dist/hooks/shell/use-shell-tab-strip-bridge.js +316 -0
- package/dist/hooks/shell/use-shell-tab-strip-bridge.js.map +1 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts +10 -0
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -0
- package/dist/hooks/use-keyboard-shortcut.js +35 -0
- package/dist/hooks/use-keyboard-shortcut.js.map +1 -0
- package/dist/hooks/use-media-query.d.ts +2 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +14 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/hooks/use-theme.d.ts +14 -0
- package/dist/hooks/use-theme.d.ts.map +1 -0
- package/dist/hooks/use-theme.js +43 -0
- package/dist/hooks/use-theme.js.map +1 -0
- package/dist/hooks/workspace/use-workspace-draft-store.d.ts +45 -0
- package/dist/hooks/workspace/use-workspace-draft-store.d.ts.map +1 -0
- package/dist/hooks/workspace/use-workspace-draft-store.js +197 -0
- package/dist/hooks/workspace/use-workspace-draft-store.js.map +1 -0
- package/dist/index.d.ts +3 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/infra/logger.d.ts +10 -0
- package/dist/lib/infra/logger.d.ts.map +1 -0
- package/dist/lib/infra/logger.js +24 -0
- package/dist/lib/infra/logger.js.map +1 -0
- package/dist/lib/observe/event.d.ts +20 -0
- package/dist/lib/observe/event.d.ts.map +1 -0
- package/dist/lib/observe/event.js +60 -0
- package/dist/lib/observe/event.js.map +1 -0
- package/dist/lib/observe/ids.d.ts +3 -0
- package/dist/lib/observe/ids.d.ts.map +1 -0
- package/dist/lib/observe/ids.js +9 -0
- package/dist/lib/observe/ids.js.map +1 -0
- package/dist/lib/observe/index.d.ts +7 -0
- package/dist/lib/observe/index.d.ts.map +1 -0
- package/dist/lib/observe/index.js +6 -0
- package/dist/lib/observe/index.js.map +1 -0
- package/dist/lib/observe/logger.d.ts +25 -0
- package/dist/lib/observe/logger.d.ts.map +1 -0
- package/dist/lib/observe/logger.js +53 -0
- package/dist/lib/observe/logger.js.map +1 -0
- package/dist/lib/observe/nop.d.ts +3 -0
- package/dist/lib/observe/nop.d.ts.map +1 -0
- package/dist/lib/observe/nop.js +9 -0
- package/dist/lib/observe/nop.js.map +1 -0
- package/dist/lib/observe/shell.d.ts +19 -0
- package/dist/lib/observe/shell.d.ts.map +1 -0
- package/dist/lib/observe/shell.js +49 -0
- package/dist/lib/observe/shell.js.map +1 -0
- package/dist/lib/observe/stdout.d.ts +3 -0
- package/dist/lib/observe/stdout.d.ts.map +1 -0
- package/dist/lib/observe/stdout.js +6 -0
- package/dist/lib/observe/stdout.js.map +1 -0
- package/dist/lib/observe/types.d.ts +14 -0
- package/dist/lib/observe/types.d.ts.map +1 -0
- package/dist/lib/observe/types.js +2 -0
- package/dist/lib/observe/types.js.map +1 -0
- package/dist/lib/shell/actions.d.ts +33 -0
- package/dist/lib/shell/actions.d.ts.map +1 -0
- package/dist/lib/shell/actions.js +2 -0
- package/dist/lib/shell/actions.js.map +1 -0
- package/dist/lib/shell/persistence.d.ts +7 -0
- package/dist/lib/shell/persistence.d.ts.map +1 -0
- package/dist/lib/shell/persistence.js +18 -0
- package/dist/lib/shell/persistence.js.map +1 -0
- package/dist/lib/shell/status.d.ts +4 -0
- package/dist/lib/shell/status.d.ts.map +1 -0
- package/dist/lib/shell/status.js +31 -0
- package/dist/lib/shell/status.js.map +1 -0
- package/dist/lib/shell/types.d.ts +40 -0
- package/dist/lib/shell/types.d.ts.map +1 -0
- package/dist/lib/shell/types.js +2 -0
- package/dist/lib/shell/types.js.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +11 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/public-api.d.ts +109 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +145 -0
- package/dist/public-api.js.map +1 -0
- package/dist/styles.css +249 -379
- package/package.json +17 -11
- package/dist/shell.d.ts +0 -147
- package/dist/shell.d.ts.map +0 -1
- package/dist/shell.js +0 -339
- package/dist/shell.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
3
|
+
import { Badge } from "../../ui/badge.js";
|
|
4
|
+
import { cn } from "../../../lib/utils.js";
|
|
5
|
+
import { useShellSurface } from "./shell-surface.js";
|
|
6
|
+
export function SidebarSection({ children, className, ...props }) {
|
|
7
|
+
return (_jsx("section", { className: cn("mb-0.5", className), ...props, children: children }));
|
|
8
|
+
}
|
|
9
|
+
export function SidebarSectionHeader({ collapsed = false, count, onClick, title, }) {
|
|
10
|
+
const { isCompact, isNarrow } = useShellSurface();
|
|
11
|
+
return (_jsxs("button", { "data-collapsed": collapsed || undefined, className: cn("flex w-full items-center gap-1.5 rounded-md px-2 py-[7px] text-left transition-colors", isCompact && "gap-1 px-1.5 py-1.5", isNarrow && "px-1.5 py-1.25", "hover:bg-bg-hover active:bg-bg-active"), onClick: onClick, type: "button", children: [_jsx("span", { className: cn("flex items-center justify-center text-fg-tertiary transition-transform duration-200", isNarrow && "[&_svg]:size-3", collapsed && "-rotate-90"), children: _jsx(ChevronDownIcon, { className: "size-3.5" }) }), _jsx("span", { className: cn("min-w-0 flex-1 truncate text-[12px] font-semibold text-fg-secondary", isNarrow && "text-[11px]"), children: title }), count && !isNarrow ? (_jsx(Badge, { className: "h-[18px] rounded-full bg-bg-elevated px-1.5 py-0 font-mono text-[10px] text-fg-tertiary hover:bg-bg-elevated", variant: "ghost", children: count })) : null] }));
|
|
12
|
+
}
|
|
13
|
+
export function SidebarSectionContent({ children, collapsed = false, className, }) {
|
|
14
|
+
const { isNarrow } = useShellSurface();
|
|
15
|
+
return (_jsx("div", { "data-collapsed": collapsed || undefined, className: cn("grid pl-1 transition-[grid-template-rows,opacity] duration-200 ease-out", isNarrow && "pl-0.5", collapsed
|
|
16
|
+
? "grid-rows-[0fr] opacity-0 pointer-events-none"
|
|
17
|
+
: "grid-rows-[1fr] opacity-100", className), children: _jsx("div", { className: "min-h-0 overflow-hidden", children: children }) }));
|
|
18
|
+
}
|
|
19
|
+
export function SidebarSectionLabel({ children, className, ...props }) {
|
|
20
|
+
const { isNarrow } = useShellSurface();
|
|
21
|
+
return (_jsx("div", { className: cn("px-2 py-1.5 text-[11px] font-semibold tracking-[0.06em] text-fg-tertiary uppercase", isNarrow && "px-1.5 py-1 text-[10px]", className), ...props, children: children }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sidebar-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-section.js","sourceRoot":"","sources":["../../../../src/components/shell/primitives/sidebar-section.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACkB;IAC1B,OAAO,CACL,kBAAS,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAM,KAAK,YACnD,QAAQ,GACD,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EACnC,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,OAAO,EACP,KAAK,GAMN;IACC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IAElD,OAAO,CACL,oCACkB,SAAS,IAAI,SAAS,EACtC,SAAS,EAAE,EAAE,CACX,uFAAuF,EACvF,SAAS,IAAI,qBAAqB,EAClC,QAAQ,IAAI,gBAAgB,EAC5B,uCAAuC,CACxC,EACD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,QAAQ,aAEb,eACE,SAAS,EAAE,EAAE,CACX,qFAAqF,EACrF,QAAQ,IAAI,gBAAgB,EAC5B,SAAS,IAAI,YAAY,CAC1B,YAED,KAAC,eAAe,IAAC,SAAS,EAAC,UAAU,GAAG,GACnC,EACP,eACE,SAAS,EAAE,EAAE,CACX,qEAAqE,EACrE,QAAQ,IAAI,aAAa,CAC1B,YAEA,KAAK,GACD,EACN,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpB,KAAC,KAAK,IACJ,SAAS,EAAC,8GAA8G,EACxH,OAAO,EAAC,OAAO,YAEd,KAAK,GACA,CACT,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,SAAS,GAKV;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IAEvC,OAAO,CACL,gCACkB,SAAS,IAAI,SAAS,EACtC,SAAS,EAAE,EAAE,CACX,yEAAyE,EACzE,QAAQ,IAAI,QAAQ,EACpB,SAAS;YACP,CAAC,CAAC,+CAA+C;YACjD,CAAC,CAAC,6BAA6B,EACjC,SAAS,CACV,YAED,cAAK,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAO,GACrD,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACc;IACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,CAAC;IAEvC,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,oFAAoF,EACpF,QAAQ,IAAI,yBAAyB,EACrC,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACL,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
export declare function WorkspacePageFrame({ align, children, className, contentClassName, width, ...props }: ComponentProps<"div"> & {
|
|
3
|
+
align?: "center" | "start";
|
|
4
|
+
contentClassName?: string;
|
|
5
|
+
width?: "narrow" | "wide" | "full";
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function WorkspaceFormPage({ children, className, ...props }: ComponentProps<typeof WorkspacePageFrame>): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function WorkspaceFormHeader({ actions, description, eyebrow, title, }: {
|
|
9
|
+
actions?: ReactNode;
|
|
10
|
+
description?: ReactNode;
|
|
11
|
+
eyebrow?: ReactNode;
|
|
12
|
+
title: ReactNode;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function WorkspaceFormBody({ children, className, ...props }: ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function WorkspaceFormSection({ children, className, description, title, }: {
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
className?: string;
|
|
18
|
+
description?: ReactNode;
|
|
19
|
+
title?: ReactNode;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=workspace-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-page.d.ts","sourceRoot":"","sources":["../../../../src/components/shell/primitives/workspace-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,wBAAgB,kBAAkB,CAAC,EACjC,KAAe,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,KAAc,EACd,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CACpC,2CAsBA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,kBAAkB,CAAC,2CAU3C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,WAAW,EACX,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;CAClB,2CAyBA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CAMvB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,2CAoBA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../lib/utils.js";
|
|
3
|
+
export function WorkspacePageFrame({ align = "start", children, className, contentClassName, width = "wide", ...props }) {
|
|
4
|
+
return (_jsx("div", { className: cn("min-h-full overflow-y-auto bg-bg-surface px-6 pt-5 pb-8 xl:px-7", align === "center" && "flex items-start justify-center", className), ...props, children: _jsx("div", { className: cn("w-full", width === "narrow" && "max-w-[480px]", width === "wide" && "max-w-6xl", contentClassName), children: children }) }));
|
|
5
|
+
}
|
|
6
|
+
export function WorkspaceFormPage({ children, className, ...props }) {
|
|
7
|
+
return (_jsx(WorkspacePageFrame, { className: cn("space-y-7", className), width: "wide", ...props, children: children }));
|
|
8
|
+
}
|
|
9
|
+
export function WorkspaceFormHeader({ actions, description, eyebrow, title, }) {
|
|
10
|
+
return (_jsxs("header", { className: "flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between", children: [_jsxs("div", { className: "min-w-0 max-w-3xl space-y-2", children: [eyebrow ? (_jsx("div", { className: "text-[11px] font-medium text-fg-tertiary", children: eyebrow })) : null, _jsxs("div", { className: "space-y-1", children: [_jsx("h1", { className: "text-[20px] leading-[1.3] font-semibold tracking-[-0.02em] text-fg", children: title }), description ? (_jsx("div", { className: "text-[13px] leading-6 text-fg-tertiary", children: description })) : null] })] }), actions ? (_jsx("div", { className: "flex shrink-0 items-center gap-2", children: actions })) : null] }));
|
|
11
|
+
}
|
|
12
|
+
export function WorkspaceFormBody({ children, className, ...props }) {
|
|
13
|
+
return (_jsx("div", { className: cn("space-y-7", className), ...props, children: children }));
|
|
14
|
+
}
|
|
15
|
+
export function WorkspaceFormSection({ children, className, description, title, }) {
|
|
16
|
+
return (_jsxs("section", { className: cn("space-y-4", className), children: [title || description ? (_jsxs("div", { className: "max-w-3xl space-y-1", children: [title ? (_jsx("h2", { className: "text-[12px] font-semibold tracking-[0.06em] text-fg-secondary uppercase", children: title })) : null, description ? (_jsx("div", { className: "text-[12.5px] leading-6 text-fg-tertiary", children: description })) : null] })) : null, children] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=workspace-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-page.js","sourceRoot":"","sources":["../../../../src/components/shell/primitives/workspace-page.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,GAAG,OAAO,EACf,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,KAAK,GAAG,MAAM,EACd,GAAG,KAAK,EAKT;IACC,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,KAAK,KAAK,QAAQ,IAAI,iCAAiC,EACvD,SAAS,CACV,KACG,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,QAAQ,EACR,KAAK,KAAK,QAAQ,IAAI,eAAe,EACrC,KAAK,KAAK,MAAM,IAAI,WAAW,EAC/B,gBAAgB,CACjB,YAEA,QAAQ,GACL,GACF,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACkC;IAC1C,OAAO,CACL,KAAC,kBAAkB,IACjB,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,KAAK,EAAC,MAAM,KACR,KAAK,YAER,QAAQ,GACU,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAClC,OAAO,EACP,WAAW,EACX,OAAO,EACP,KAAK,GAMN;IACC,OAAO,CACL,kBAAQ,SAAS,EAAC,mEAAmE,aACnF,eAAK,SAAS,EAAC,6BAA6B,aACzC,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,0CAA0C,YACtD,OAAO,GACJ,CACP,CAAC,CAAC,CAAC,IAAI,EACR,eAAK,SAAS,EAAC,WAAW,aACxB,aAAI,SAAS,EAAC,oEAAoE,YAC/E,KAAK,GACH,EACJ,WAAW,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,wCAAwC,YACpD,WAAW,GACR,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,EACL,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,kCAAkC,YAAE,OAAO,GAAO,CAClE,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACc;IACtB,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,KAAM,KAAK,YAClD,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,EACnC,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,GAMN;IACC,OAAO,CACL,mBAAS,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,aAC3C,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CACtB,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,CAAC,CAAC,CAAC,CACP,aAAI,SAAS,EAAC,yEAAyE,YACpF,KAAK,GACH,CACN,CAAC,CAAC,CAAC,IAAI,EACP,WAAW,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,0CAA0C,YACtD,WAAW,GACR,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,IACD,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"right-inspector.d.ts","sourceRoot":"","sources":["../../../src/components/shell/right-inspector.tsx"],"names":[],"mappings":"AAeA,wBAAgB,cAAc,4CA4D7B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import { ContextActionMenu } from "./context-action-menu.js";
|
|
5
|
+
import { EmptyState, LoadingState } from "../system/async-state.js";
|
|
6
|
+
import { InspectorHeader, InspectorPanel, InspectorScroll, } from "./primitives/inspector-panel.js";
|
|
7
|
+
import { useShellRegistry } from "../../hooks/shell/shell-registry-provider.js";
|
|
8
|
+
import { useShellStore } from "../../hooks/shell/use-shell-store.js";
|
|
9
|
+
import { setShellTabFields, shellInspectorLogger } from "../../lib/observe/shell.js";
|
|
10
|
+
import { useShellSurfaceActionGroups } from "./use-shell-surface-action-groups.js";
|
|
11
|
+
export function RightInspector() {
|
|
12
|
+
const hasHydrated = useShellStore((state) => state.hasHydrated);
|
|
13
|
+
const { activeModeWorkspace, activeTab, activeTabWorkspace } = useShellRegistry();
|
|
14
|
+
const contextKeyRef = useRef("");
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const contextKey = `${activeModeWorkspace?.mode ?? "none"}:${activeTab?.id ?? "none"}:${activeTabWorkspace?.mode ?? "none"}`;
|
|
17
|
+
if (contextKeyRef.current === contextKey) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
setShellTabFields(shellInspectorLogger
|
|
21
|
+
.event("shell.inspector.context.changed")
|
|
22
|
+
.set("workspace_mode", activeTabWorkspace?.mode ?? activeModeWorkspace?.mode ?? null), activeTab).send();
|
|
23
|
+
contextKeyRef.current = contextKey;
|
|
24
|
+
}, [activeModeWorkspace, activeTab, activeTabWorkspace]);
|
|
25
|
+
const Inspector = activeTabWorkspace?.Inspector ?? activeModeWorkspace?.Inspector ?? null;
|
|
26
|
+
const tab = activeTabWorkspace ? activeTab : null;
|
|
27
|
+
const contextMenuGroups = useShellSurfaceActionGroups({
|
|
28
|
+
includeAppearance: false,
|
|
29
|
+
});
|
|
30
|
+
return (_jsx(ContextActionMenu, { groups: contextMenuGroups, children: _jsx("div", { className: "h-full", children: _jsxs(InspectorPanel, { "aria-label": "Inspector", children: [_jsx(InspectorHeader, { title: "Inspector" }), _jsx(InspectorScroll, { className: "py-1", children: !hasHydrated ? (_jsx("div", { className: "p-3", children: _jsx(LoadingState, { className: "min-h-[14rem]", label: "Restoring inspector" }) })) : Inspector ? (_jsx(Inspector, { tab: tab })) : (_jsx("div", { className: "p-3", children: _jsx(EmptyState, { title: "Inspector unavailable", description: "The current workspace does not provide inspector content.", className: "min-h-[14rem]" }) })) })] }) }) }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=right-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"right-inspector.js","sourceRoot":"","sources":["../../../src/components/shell/right-inspector.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEhF,MAAM,UAAU,cAAc;IAC5B,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAC1D,gBAAgB,EAAE,CAAC;IACrB,MAAM,aAAa,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,GAAG,mBAAmB,EAAE,IAAI,IAAI,MAAM,IAAI,SAAS,EAAE,EAAE,IAAI,MAAM,IAAI,kBAAkB,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC;QAC7H,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,iBAAiB,CACf,oBAAoB;aACjB,KAAK,CAAC,iCAAiC,CAAC;aACxC,GAAG,CACF,gBAAgB,EAChB,kBAAkB,EAAE,IAAI,IAAI,mBAAmB,EAAE,IAAI,IAAI,IAAI,CAC9D,EACH,SAAS,CACV,CAAC,IAAI,EAAE,CAAC;QACT,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IACrC,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAM,SAAS,GACb,kBAAkB,EAAE,SAAS,IAAI,mBAAmB,EAAE,SAAS,IAAI,IAAI,CAAC;IAC1E,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;QACpD,iBAAiB,EAAE,KAAK;KACzB,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,iBAAiB,IAAC,MAAM,EAAE,iBAAiB,YAC1C,cAAK,SAAS,EAAC,QAAQ,YACrB,MAAC,cAAc,kBAAY,WAAW,aACpC,KAAC,eAAe,IAAC,KAAK,EAAC,WAAW,GAAG,EACrC,KAAC,eAAe,IAAC,SAAS,EAAC,MAAM,YAC9B,CAAC,WAAW,CAAC,CAAC,CAAC,CACd,cAAK,SAAS,EAAC,KAAK,YAClB,KAAC,YAAY,IACX,SAAS,EAAC,eAAe,EACzB,KAAK,EAAC,qBAAqB,GAC3B,GACE,CACP,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACd,KAAC,SAAS,IAAC,GAAG,EAAE,GAAG,GAAI,CACxB,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,KAAK,YAClB,KAAC,UAAU,IACT,KAAK,EAAC,uBAAuB,EAC7B,WAAW,EAAC,2DAA2D,EACvE,SAAS,EAAC,eAAe,GACzB,GACE,CACP,GACe,IACH,GACb,GACY,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ShellActionGroup } from "../../lib/shell/actions.js";
|
|
2
|
+
export declare function SearchActionGroups({ groups, runCommand, }: {
|
|
3
|
+
groups: ShellActionGroup[];
|
|
4
|
+
runCommand: (command: () => void) => void;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=search-action-groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-action-groups.d.ts","sourceRoot":"","sources":["../../../src/components/shell/search-action-groups.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAgBzE,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,UAAU,GACX,EAAE;IACD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CAC3C,2CAoDA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Command } from "cmdk";
|
|
4
|
+
import { SearchBarGroupHeading, SearchBarItem, } from "./primitives/search-bar-primitives.js";
|
|
5
|
+
import { shellSearchLogger } from "../../lib/observe/shell.js";
|
|
6
|
+
function logSearchAction(action) {
|
|
7
|
+
if (!action.searchLog)
|
|
8
|
+
return;
|
|
9
|
+
shellSearchLogger
|
|
10
|
+
.event("shell.search_bar.executed")
|
|
11
|
+
.setMany({
|
|
12
|
+
command_group: action.searchLog.commandGroup,
|
|
13
|
+
command_id: action.searchLog.commandId,
|
|
14
|
+
item_kind: action.searchLog.itemKind,
|
|
15
|
+
...(action.searchLog.extra ?? {}),
|
|
16
|
+
})
|
|
17
|
+
.send();
|
|
18
|
+
}
|
|
19
|
+
export function SearchActionGroups({ groups, runCommand, }) {
|
|
20
|
+
const visibleGroups = groups
|
|
21
|
+
.map((group) => ({
|
|
22
|
+
...group,
|
|
23
|
+
actions: group.actions.filter((action) => action.showInSearch !== false),
|
|
24
|
+
}))
|
|
25
|
+
.filter((group) => group.actions.length > 0);
|
|
26
|
+
return (_jsx(_Fragment, { children: visibleGroups.map((group) => (_jsxs(Command.Group, { children: [group.label ? (_jsx(SearchBarGroupHeading, { children: group.label })) : null, group.actions.map((action) => {
|
|
27
|
+
const execute = () => runCommand(() => {
|
|
28
|
+
logSearchAction(action);
|
|
29
|
+
action.run({ source: "search_bar" });
|
|
30
|
+
});
|
|
31
|
+
if (action.searchNode) {
|
|
32
|
+
return (_jsx(Command.Item, { className: "flex cursor-pointer items-center rounded-md px-0 py-0 text-[13px] outline-none data-[selected=true]:bg-primary/12", disabled: action.disabled, keywords: action.keywords, onSelect: execute, value: action.searchValue ?? action.label, children: action.searchNode }, action.id));
|
|
33
|
+
}
|
|
34
|
+
return (_jsx(SearchBarItem, { disabled: action.disabled, keywords: action.keywords, onSelect: execute, children: action.label }, action.id));
|
|
35
|
+
})] }, group.id))) }));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=search-action-groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-action-groups.js","sourceRoot":"","sources":["../../../src/components/shell/search-action-groups.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EACL,qBAAqB,EACrB,aAAa,GACd,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,SAAS,eAAe,CAAC,MAAmB;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO;IAE9B,iBAAiB;SACd,KAAK,CAAC,2BAA2B,CAAC;SAClC,OAAO,CAAC;QACP,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;QAC5C,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;QACtC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;QACpC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;KAClC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,UAAU,GAIX;IACC,MAAM,aAAa,GAAG,MAAM;SACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,GAAG,KAAK;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,KAAK,CAAC;KACzE,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,OAAO,CACL,4BACG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC5B,MAAC,OAAO,CAAC,KAAK,eACX,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CACb,KAAC,qBAAqB,cAAE,KAAK,CAAC,KAAK,GAAyB,CAC7D,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC5B,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,UAAU,CAAC,GAAG,EAAE;wBACd,eAAe,CAAC,MAAM,CAAC,CAAC;wBACxB,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;oBACvC,CAAC,CAAC,CAAC;oBAEL,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;wBACtB,OAAO,CACL,KAAC,OAAO,CAAC,IAAI,IACX,SAAS,EAAC,mHAAmH,EAC7H,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAEzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,YAExC,MAAM,CAAC,UAAU,IALb,MAAM,CAAC,EAAE,CAMD,CAChB,CAAC;oBACJ,CAAC;oBAED,OAAO,CACL,KAAC,aAAa,IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAEzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,OAAO,YAEhB,MAAM,CAAC,KAAK,IAJR,MAAM,CAAC,EAAE,CAKA,CACjB,CAAC;gBACJ,CAAC,CAAC,KApCgB,KAAK,CAAC,EAAE,CAqCZ,CACjB,CAAC,GACD,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../../src/components/shell/search-bar.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,SAAS,4CA8NxB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Command } from "cmdk";
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { CommandIcon, SearchIcon } from "lucide-react";
|
|
6
|
+
import { useShallow } from "zustand/react/shallow";
|
|
7
|
+
import { Kbd } from "../ui/kbd.js";
|
|
8
|
+
import { useShellLayout } from "./shell-layout.js";
|
|
9
|
+
import { useShellRegistry } from "../../hooks/shell/shell-registry-provider.js";
|
|
10
|
+
import { useShellStore } from "../../hooks/shell/use-shell-store.js";
|
|
11
|
+
import { shellSearchLogger } from "../../lib/observe/shell.js";
|
|
12
|
+
import { SearchActionGroups } from "./search-action-groups.js";
|
|
13
|
+
import { SearchBarEmpty, SearchBarList, } from "./primitives/search-bar-primitives.js";
|
|
14
|
+
export function SearchBar() {
|
|
15
|
+
const [query, setQuery] = useState("");
|
|
16
|
+
const { searchBarOpen, setActiveMode, setSearchBarOpen } = useShellStore(useShallow((state) => ({
|
|
17
|
+
searchBarOpen: state.searchBarOpen,
|
|
18
|
+
setSearchBarOpen: state.setSearchBarOpen,
|
|
19
|
+
setActiveMode: state.setActiveMode,
|
|
20
|
+
})));
|
|
21
|
+
const { workspaces } = useShellRegistry();
|
|
22
|
+
const { toggleLeftSidebar, toggleRightInspector } = useShellLayout();
|
|
23
|
+
const listRef = useRef(null);
|
|
24
|
+
const containerRef = useRef(null);
|
|
25
|
+
const inputRef = useRef(null);
|
|
26
|
+
const lastLoggedQueryRef = useRef("");
|
|
27
|
+
const close = useCallback(() => {
|
|
28
|
+
setQuery("");
|
|
29
|
+
lastLoggedQueryRef.current = "";
|
|
30
|
+
setSearchBarOpen(false, { source: "search_bar" });
|
|
31
|
+
inputRef.current?.blur();
|
|
32
|
+
}, [setSearchBarOpen]);
|
|
33
|
+
const runCommand = useCallback((command) => {
|
|
34
|
+
command();
|
|
35
|
+
close();
|
|
36
|
+
}, [close]);
|
|
37
|
+
const searchableItems = useMemo(() => [
|
|
38
|
+
...workspaces.map((workspace) => ({
|
|
39
|
+
label: workspace.label,
|
|
40
|
+
searchText: `open ${workspace.label.toLowerCase()} navigate workspace`,
|
|
41
|
+
})),
|
|
42
|
+
{
|
|
43
|
+
label: "Toggle left sidebar",
|
|
44
|
+
searchText: "toggle left sidebar panels",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
label: "Toggle inspector",
|
|
48
|
+
searchText: "toggle inspector panels",
|
|
49
|
+
},
|
|
50
|
+
], [workspaces]);
|
|
51
|
+
const globalActionGroups = useMemo(() => [
|
|
52
|
+
{
|
|
53
|
+
id: "navigate",
|
|
54
|
+
label: "Navigate",
|
|
55
|
+
actions: workspaces.map((workspace) => ({
|
|
56
|
+
id: workspace.mode,
|
|
57
|
+
keywords: [workspace.label, "workspace", "navigate"],
|
|
58
|
+
label: `Open ${workspace.label.toLowerCase()}`,
|
|
59
|
+
searchLog: {
|
|
60
|
+
commandGroup: "navigate",
|
|
61
|
+
commandId: workspace.mode,
|
|
62
|
+
itemKind: "mode",
|
|
63
|
+
},
|
|
64
|
+
run: ({ source }) => {
|
|
65
|
+
setActiveMode(workspace.mode, { source });
|
|
66
|
+
},
|
|
67
|
+
})),
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "panels",
|
|
71
|
+
label: "Panels",
|
|
72
|
+
actions: [
|
|
73
|
+
{
|
|
74
|
+
id: "toggle-left-sidebar",
|
|
75
|
+
keywords: ["toggle", "left", "sidebar", "panels"],
|
|
76
|
+
label: "Toggle left sidebar",
|
|
77
|
+
searchLog: {
|
|
78
|
+
commandGroup: "panels",
|
|
79
|
+
commandId: "toggle-left-sidebar",
|
|
80
|
+
itemKind: "panel",
|
|
81
|
+
},
|
|
82
|
+
run: ({ source }) => {
|
|
83
|
+
toggleLeftSidebar({ source });
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: "toggle-inspector",
|
|
88
|
+
keywords: ["toggle", "inspector", "panels"],
|
|
89
|
+
label: "Toggle inspector",
|
|
90
|
+
searchLog: {
|
|
91
|
+
commandGroup: "panels",
|
|
92
|
+
commandId: "toggle-inspector",
|
|
93
|
+
itemKind: "panel",
|
|
94
|
+
},
|
|
95
|
+
run: ({ source }) => {
|
|
96
|
+
toggleRightInspector({ source });
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
], [setActiveMode, toggleLeftSidebar, toggleRightInspector, workspaces]);
|
|
102
|
+
// Open dropdown when store state changes (e.g. via Cmd+K)
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (searchBarOpen) {
|
|
105
|
+
inputRef.current?.focus();
|
|
106
|
+
}
|
|
107
|
+
}, [searchBarOpen]);
|
|
108
|
+
// Click-outside detection
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!searchBarOpen)
|
|
111
|
+
return;
|
|
112
|
+
function handlePointerDown(event) {
|
|
113
|
+
if (containerRef.current &&
|
|
114
|
+
!containerRef.current.contains(event.target)) {
|
|
115
|
+
close();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
document.addEventListener("pointerdown", handlePointerDown);
|
|
119
|
+
return () => document.removeEventListener("pointerdown", handlePointerDown);
|
|
120
|
+
}, [searchBarOpen, close]);
|
|
121
|
+
// Search logging
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (!searchBarOpen) {
|
|
124
|
+
lastLoggedQueryRef.current = "";
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const trimmedQuery = query.trim().toLowerCase();
|
|
128
|
+
if (trimmedQuery.length < 2 ||
|
|
129
|
+
trimmedQuery === lastLoggedQueryRef.current) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const timer = setTimeout(() => {
|
|
133
|
+
const visibleCount = listRef.current?.querySelectorAll("[cmdk-item]:not([hidden])").length ??
|
|
134
|
+
searchableItems.filter((item) => item.searchText.includes(trimmedQuery))
|
|
135
|
+
.length;
|
|
136
|
+
shellSearchLogger
|
|
137
|
+
.event("shell.search_bar.search")
|
|
138
|
+
.setMany({
|
|
139
|
+
query_length: query.trim().length,
|
|
140
|
+
match_count: visibleCount,
|
|
141
|
+
})
|
|
142
|
+
.send();
|
|
143
|
+
if (visibleCount === 0) {
|
|
144
|
+
shellSearchLogger
|
|
145
|
+
.event("shell.search_bar.empty")
|
|
146
|
+
.set("query_length", query.trim().length)
|
|
147
|
+
.send();
|
|
148
|
+
}
|
|
149
|
+
lastLoggedQueryRef.current = trimmedQuery;
|
|
150
|
+
}, 250);
|
|
151
|
+
return () => clearTimeout(timer);
|
|
152
|
+
}, [searchBarOpen, query, searchableItems]);
|
|
153
|
+
return (_jsxs(Command, { className: "relative flex-1", ref: containerRef, label: "Search bar", shouldFilter: true, children: [_jsxs("div", { className: "flex h-[30px] w-[min(100%,420px)] min-w-[280px] flex-1 items-center gap-2 rounded-md border border-border bg-bg-card px-[10px] text-[12.5px] text-fg-tertiary transition-[border-color,background-color] hover:border-border-light hover:bg-bg-elevated max-[1180px]:min-w-0 max-[1180px]:w-auto max-[1180px]:flex-none focus-within:border-border-light focus-within:bg-bg-elevated", children: [_jsx(SearchIcon, { className: "size-4 shrink-0" }), _jsx(Command.Input, { ref: inputRef, className: "min-w-0 flex-1 truncate bg-transparent text-left text-fg outline-none! placeholder:text-fg-tertiary max-[1180px]:hidden", onFocus: () => {
|
|
154
|
+
if (!searchBarOpen) {
|
|
155
|
+
setSearchBarOpen(true, { source: "search_bar" });
|
|
156
|
+
}
|
|
157
|
+
}, onValueChange: setQuery, placeholder: searchBarOpen
|
|
158
|
+
? undefined
|
|
159
|
+
: "Search workspaces, commands, and panels", value: query }), _jsxs(Kbd, { className: "border-border bg-secondary text-[10px] text-fg-tertiary max-[1180px]:hidden", children: [_jsx(CommandIcon, { className: "mr-1 size-3" }), "K"] })] }), searchBarOpen ? (_jsx("div", { className: "absolute top-[calc(100%+4px)] left-0 z-100 min-w-full max-w-[min(520px,90vw)] overflow-hidden rounded-[10px] border border-border-strong bg-bg-card shadow-[0_16px_40px_rgba(0,0,0,0.45),0_0_0_1px_rgba(255,255,255,0.03)]", children: _jsxs(SearchBarList, { ref: listRef, children: [_jsx(SearchBarEmpty, { children: "No matching commands." }), _jsx(SearchActionGroups, { groups: globalActionGroups, runCommand: runCommand }), workspaces.map((workspace) => workspace.SearchBarContent ? (_jsx(workspace.SearchBarContent, { runCommand: runCommand }, workspace.mode)) : null)] }) })) : null] }));
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=search-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-bar.js","sourceRoot":"","sources":["../../../src/components/shell/search-bar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ShellEventSource } from "../../lib/observe/shell.js";
|
|
3
|
+
type ShellLayoutActionMeta = {
|
|
4
|
+
source?: ShellEventSource;
|
|
5
|
+
};
|
|
6
|
+
type PanelVisibility = {
|
|
7
|
+
leftSidebarOpen: boolean;
|
|
8
|
+
rightInspectorOpen: boolean;
|
|
9
|
+
};
|
|
10
|
+
type ShellLayoutContextValue = {
|
|
11
|
+
isCompact: boolean;
|
|
12
|
+
leftSidebarOpen: boolean;
|
|
13
|
+
rightInspectorOpen: boolean;
|
|
14
|
+
setPanelVisibility: (panels: PanelVisibility, meta?: ShellLayoutActionMeta) => void;
|
|
15
|
+
toggleLeftSidebar: (meta?: ShellLayoutActionMeta) => void;
|
|
16
|
+
toggleRightInspector: (meta?: ShellLayoutActionMeta) => void;
|
|
17
|
+
openLeftSidebar: (meta?: ShellLayoutActionMeta) => void;
|
|
18
|
+
openRightInspector: (meta?: ShellLayoutActionMeta) => void;
|
|
19
|
+
closeLeftSidebar: (meta?: ShellLayoutActionMeta) => void;
|
|
20
|
+
closeRightInspector: (meta?: ShellLayoutActionMeta) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare const DEFAULT_PANEL_PIXELS: {
|
|
23
|
+
readonly activityRail: 52;
|
|
24
|
+
};
|
|
25
|
+
export declare function ShellLayoutProvider({ children }: {
|
|
26
|
+
children: ReactNode;
|
|
27
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function useShellLayout(): ShellLayoutContextValue;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=shell-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-layout.d.ts","sourceRoot":"","sources":["../../../src/components/shell/shell-layout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,qBAAqB,GAAG;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,CAClB,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE,qBAAqB,KACzB,IAAI,CAAC;IACV,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,oBAAoB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxD,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC3D,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACzD,mBAAmB,EAAE,CAAC,IAAI,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC7D,CAAC;AAIF,eAAO,MAAM,oBAAoB;;CAEvB,CAAC;AA2CX,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAyLxE;AAED,wBAAgB,cAAc,IAAI,uBAAuB,CAMxD"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useMemo, useState, } from "react";
|
|
4
|
+
import { useMediaQuery } from "../../hooks/use-media-query.js";
|
|
5
|
+
import { setShellLayoutFields, setShellSource, shellLayoutLogger, } from "../../lib/observe/shell.js";
|
|
6
|
+
import { getShellModel, isBorderOpen, toggleBorder } from "./shell-model.js";
|
|
7
|
+
const ShellLayoutContext = createContext(null);
|
|
8
|
+
export const DEFAULT_PANEL_PIXELS = {
|
|
9
|
+
activityRail: 52,
|
|
10
|
+
};
|
|
11
|
+
function logPanelVisibilityChange(params) {
|
|
12
|
+
const { source, isCompact, previous, next } = params;
|
|
13
|
+
if (previous.leftSidebarOpen !== next.leftSidebarOpen) {
|
|
14
|
+
setShellSource(setShellLayoutFields(shellLayoutLogger
|
|
15
|
+
.event("shell.sidebar.toggled")
|
|
16
|
+
.set("previous_open", previous.leftSidebarOpen), {
|
|
17
|
+
isCompact,
|
|
18
|
+
leftSidebarOpen: next.leftSidebarOpen,
|
|
19
|
+
rightInspectorOpen: next.rightInspectorOpen,
|
|
20
|
+
}), source).send();
|
|
21
|
+
}
|
|
22
|
+
if (previous.rightInspectorOpen !== next.rightInspectorOpen) {
|
|
23
|
+
setShellSource(setShellLayoutFields(shellLayoutLogger
|
|
24
|
+
.event("shell.inspector.toggled")
|
|
25
|
+
.set("previous_open", previous.rightInspectorOpen), {
|
|
26
|
+
isCompact,
|
|
27
|
+
leftSidebarOpen: next.leftSidebarOpen,
|
|
28
|
+
rightInspectorOpen: next.rightInspectorOpen,
|
|
29
|
+
}), source).send();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function ShellLayoutProvider({ children }) {
|
|
33
|
+
const isCompact = useMediaQuery("(max-width: 1180px)");
|
|
34
|
+
const [compactPanels, setCompactPanels] = useState({
|
|
35
|
+
leftSidebarOpen: false,
|
|
36
|
+
rightInspectorOpen: false,
|
|
37
|
+
});
|
|
38
|
+
// Desktop border state tracked here for reactivity; synced from FlexLayout via setPanelVisibility
|
|
39
|
+
const [desktopBorderState, setDesktopBorderState] = useState({
|
|
40
|
+
leftSidebarOpen: true,
|
|
41
|
+
rightInspectorOpen: true,
|
|
42
|
+
});
|
|
43
|
+
const leftSidebarOpen = isCompact
|
|
44
|
+
? compactPanels.leftSidebarOpen
|
|
45
|
+
: desktopBorderState.leftSidebarOpen;
|
|
46
|
+
const rightInspectorOpen = isCompact
|
|
47
|
+
? compactPanels.rightInspectorOpen
|
|
48
|
+
: desktopBorderState.rightInspectorOpen;
|
|
49
|
+
const setPanelVisibility = useCallback((panels, meta) => {
|
|
50
|
+
const previous = {
|
|
51
|
+
leftSidebarOpen,
|
|
52
|
+
rightInspectorOpen,
|
|
53
|
+
};
|
|
54
|
+
// Always log, regardless of compact/desktop
|
|
55
|
+
logPanelVisibilityChange({
|
|
56
|
+
source: meta?.source,
|
|
57
|
+
isCompact,
|
|
58
|
+
previous,
|
|
59
|
+
next: panels,
|
|
60
|
+
});
|
|
61
|
+
if (isCompact) {
|
|
62
|
+
setCompactPanels(panels);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
setDesktopBorderState(panels);
|
|
66
|
+
}
|
|
67
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen]);
|
|
68
|
+
const toggleLeftSidebar = useCallback((meta) => {
|
|
69
|
+
const nextPanels = {
|
|
70
|
+
leftSidebarOpen: !leftSidebarOpen,
|
|
71
|
+
rightInspectorOpen,
|
|
72
|
+
};
|
|
73
|
+
setPanelVisibility(nextPanels, meta);
|
|
74
|
+
if (!isCompact) {
|
|
75
|
+
const model = getShellModel();
|
|
76
|
+
if (model) {
|
|
77
|
+
const isOpen = isBorderOpen(model, "left");
|
|
78
|
+
if (nextPanels.leftSidebarOpen !== isOpen) {
|
|
79
|
+
toggleBorder(model, "left");
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
84
|
+
const toggleRightInspector = useCallback((meta) => {
|
|
85
|
+
const nextPanels = {
|
|
86
|
+
leftSidebarOpen,
|
|
87
|
+
rightInspectorOpen: !rightInspectorOpen,
|
|
88
|
+
};
|
|
89
|
+
setPanelVisibility(nextPanels, meta);
|
|
90
|
+
if (!isCompact) {
|
|
91
|
+
const model = getShellModel();
|
|
92
|
+
if (model) {
|
|
93
|
+
const isOpen = isBorderOpen(model, "right");
|
|
94
|
+
if (nextPanels.rightInspectorOpen !== isOpen) {
|
|
95
|
+
toggleBorder(model, "right");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
100
|
+
const openLeftSidebar = useCallback((meta) => {
|
|
101
|
+
if (leftSidebarOpen)
|
|
102
|
+
return;
|
|
103
|
+
setPanelVisibility({ leftSidebarOpen: true, rightInspectorOpen }, meta);
|
|
104
|
+
if (!isCompact) {
|
|
105
|
+
const model = getShellModel();
|
|
106
|
+
if (model && !isBorderOpen(model, "left")) {
|
|
107
|
+
toggleBorder(model, "left");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
111
|
+
const openRightInspector = useCallback((meta) => {
|
|
112
|
+
if (rightInspectorOpen)
|
|
113
|
+
return;
|
|
114
|
+
setPanelVisibility({ leftSidebarOpen, rightInspectorOpen: true }, meta);
|
|
115
|
+
if (!isCompact) {
|
|
116
|
+
const model = getShellModel();
|
|
117
|
+
if (model && !isBorderOpen(model, "right")) {
|
|
118
|
+
toggleBorder(model, "right");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
122
|
+
const closeLeftSidebar = useCallback((meta) => {
|
|
123
|
+
if (!leftSidebarOpen)
|
|
124
|
+
return;
|
|
125
|
+
setPanelVisibility({ leftSidebarOpen: false, rightInspectorOpen }, meta);
|
|
126
|
+
if (!isCompact) {
|
|
127
|
+
const model = getShellModel();
|
|
128
|
+
if (model && isBorderOpen(model, "left")) {
|
|
129
|
+
toggleBorder(model, "left");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
133
|
+
const closeRightInspector = useCallback((meta) => {
|
|
134
|
+
if (!rightInspectorOpen)
|
|
135
|
+
return;
|
|
136
|
+
setPanelVisibility({ leftSidebarOpen, rightInspectorOpen: false }, meta);
|
|
137
|
+
if (!isCompact) {
|
|
138
|
+
const model = getShellModel();
|
|
139
|
+
if (model && isBorderOpen(model, "right")) {
|
|
140
|
+
toggleBorder(model, "right");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}, [isCompact, leftSidebarOpen, rightInspectorOpen, setPanelVisibility]);
|
|
144
|
+
const value = useMemo(() => ({
|
|
145
|
+
isCompact,
|
|
146
|
+
leftSidebarOpen,
|
|
147
|
+
rightInspectorOpen,
|
|
148
|
+
setPanelVisibility,
|
|
149
|
+
toggleLeftSidebar,
|
|
150
|
+
toggleRightInspector,
|
|
151
|
+
openLeftSidebar,
|
|
152
|
+
openRightInspector,
|
|
153
|
+
closeLeftSidebar,
|
|
154
|
+
closeRightInspector,
|
|
155
|
+
}), [
|
|
156
|
+
closeLeftSidebar,
|
|
157
|
+
closeRightInspector,
|
|
158
|
+
isCompact,
|
|
159
|
+
leftSidebarOpen,
|
|
160
|
+
openLeftSidebar,
|
|
161
|
+
openRightInspector,
|
|
162
|
+
rightInspectorOpen,
|
|
163
|
+
setPanelVisibility,
|
|
164
|
+
toggleLeftSidebar,
|
|
165
|
+
toggleRightInspector,
|
|
166
|
+
]);
|
|
167
|
+
return (_jsx(ShellLayoutContext.Provider, { value: value, children: children }));
|
|
168
|
+
}
|
|
169
|
+
export function useShellLayout() {
|
|
170
|
+
const context = useContext(ShellLayoutContext);
|
|
171
|
+
if (!context) {
|
|
172
|
+
throw new Error("useShellLayout must be used within ShellLayoutProvider");
|
|
173
|
+
}
|
|
174
|
+
return context;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=shell-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-layout.js","sourceRoot":"","sources":["../../../src/components/shell/shell-layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Model, type TabNode } from "flexlayout-react";
|
|
2
|
+
import type { ShellTab } from "../../lib/shell/types.js";
|
|
3
|
+
export declare function getShellModel(): Model | null;
|
|
4
|
+
export declare function setShellModel(model: Model | null): void;
|
|
5
|
+
export declare function extractTabsFromModel(model: Model): ShellTab[];
|
|
6
|
+
export declare function extractActiveTabId(model: Model): string | null;
|
|
7
|
+
export declare function isBorderOpen(model: Model, location: "left" | "right"): boolean;
|
|
8
|
+
export declare function findPreviewTabNode(model: Model): {
|
|
9
|
+
node: TabNode;
|
|
10
|
+
index: number;
|
|
11
|
+
} | null;
|
|
12
|
+
export declare function getWorkspaceShellTab(nodeId: string): ShellTab | null;
|
|
13
|
+
export declare function toggleBorder(model: Model, location: "left" | "right"): void;
|
|
14
|
+
//# sourceMappingURL=shell-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-model.d.ts","sourceRoot":"","sources":["../../../src/components/shell/shell-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAa,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIlD,wBAAgB,aAAa,IAAI,KAAK,GAAG,IAAI,CAE5C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAc7D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAW9D;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GAAG,OAAO,GACzB,OAAO,CAMT;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,GACX;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBzC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQpE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAG3E"}
|