feat(inbox): hide issue detail sidebar by default

The properties sidebar in the inbox view is not needed by default.
Add defaultSidebarOpen and layoutId props to IssueDetail so inbox
can start with the sidebar collapsed and persist its layout separately.
This commit is contained in:
Jiayuan 2026-03-30 02:41:41 +08:00
parent 663dec52b8
commit 63fd7efc95
2 changed files with 8 additions and 4 deletions

View file

@ -384,6 +384,8 @@ export default function InboxPage() {
{selected?.issue_id ? (
<IssueDetail
issueId={selected.issue_id}
defaultSidebarOpen={false}
layoutId="multica_inbox_issue_detail_layout"
onDelete={() => {
handleArchive(selected.id);
}}

View file

@ -167,13 +167,15 @@ function PropRow({
interface IssueDetailProps {
issueId: string;
onDelete?: () => void;
defaultSidebarOpen?: boolean;
layoutId?: string;
}
// ---------------------------------------------------------------------------
// IssueDetail
// ---------------------------------------------------------------------------
export function IssueDetail({ issueId, onDelete }: IssueDetailProps) {
export function IssueDetail({ issueId, onDelete, defaultSidebarOpen = true, layoutId = "multica_issue_detail_layout" }: IssueDetailProps) {
const id = issueId;
const router = useRouter();
const user = useAuthStore((s) => s.user);
@ -188,10 +190,10 @@ export function IssueDetail({ issueId, onDelete }: IssueDetailProps) {
const nextIssue = currentIndex < allIssues.length - 1 ? allIssues[currentIndex + 1] : null;
const { getActorName, getActorInitials } = useActorName();
const { defaultLayout, onLayoutChanged } = useDefaultLayout({
id: "multica_issue_detail_layout",
id: layoutId,
});
const sidebarRef = usePanelRef();
const [sidebarOpen, setSidebarOpen] = useState(true);
const [sidebarOpen, setSidebarOpen] = useState(defaultSidebarOpen);
const [issue, setIssue] = useState<Issue | null>(null);
const [timeline, setTimeline] = useState<TimelineEntry[]>([]);
const [subscribers, setSubscribers] = useState<IssueSubscriber[]>([]);
@ -948,7 +950,7 @@ export function IssueDetail({ issueId, onDelete }: IssueDetailProps) {
<ResizableHandle />
<ResizablePanel
id="sidebar"
defaultSize={320}
defaultSize={defaultSidebarOpen ? 320 : 0}
minSize={260}
maxSize={420}
collapsible