Extract dashboard EmptyState component (#61)

* review: harden readonly git checks and lint verification

* test: satisfy readonly reviewer sandbox typing

* test: fix readonly reviewer sandbox assertions

* test: remove impossible readonly sandbox guards

* test: relax readonly sandbox assertions

* test: cast readonly sandbox expectation shape

* test: cast readonly sandbox expectation through unknown

* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke

* Add STEP_DONE guards, verdict storage, and stale delivery suppression

* style: format paired stepdone telemetry files

* Route STEP_DONE through reviewer

* Add structured Discord attachments

* style: format structured attachment test

* Fix room thread bot output parity

* Remove duplicate work item attachment migration from owner branch

* Remove legacy dashboard rooms renderer

* Extract dashboard parsed body renderer

* Extract dashboard redaction helpers

* Extract dashboard RoomCardV2 component

* Include RoomCardV2 test in vitest suite

* Extract dashboard RoomBoardV2 component

* Extract dashboard EmptyState component
This commit is contained in:
Eyejoker
2026-04-28 14:35:43 +09:00
committed by GitHub
parent d99c0bc6be
commit 13f05273d7
3 changed files with 9 additions and 10 deletions

View File

@@ -1,4 +1,4 @@
import { useEffect, useMemo, useState, type ReactNode } from 'react';
import { useEffect, useMemo, useState } from 'react';
import {
type ClaudeAccountSummary,
@@ -53,6 +53,7 @@ import {
} from './DashboardNav';
import { isInternalProtocolPayload } from './roomThread';
import { RoomBoardV2 } from './RoomBoardV2';
import { EmptyState } from './EmptyState';
import { ParsedBody } from './ParsedBody';
import { redactSecretsForPreview } from './redaction';
import './styles.css';
@@ -628,10 +629,6 @@ function inboxTargetHref(item: InboxItem): string | null {
return null;
}
function EmptyState({ children }: { children: ReactNode }) {
return <div className="empty-state">{children}</div>;
}
function LanguageSelector({
locale,
onLocaleChange,

View File

@@ -0,0 +1,5 @@
import type { ReactNode } from 'react';
export function EmptyState({ children }: { children: ReactNode }) {
return <div className="empty-state">{children}</div>;
}

View File

@@ -1,4 +1,4 @@
import { useEffect, useState, type ReactNode } from 'react';
import { useEffect, useState } from 'react';
import type {
DashboardOverview,
@@ -7,6 +7,7 @@ import type {
} from './api';
import type { Locale, Messages } from './i18n';
import { RoomCardV2, type RoomEntryWithService } from './RoomCardV2';
import { EmptyState } from './EmptyState';
import type { RoomActivityMap } from './useRoomActivity';
type InboxItem = DashboardOverview['inbox'][number];
@@ -47,10 +48,6 @@ export interface RoomBoardV2Props {
t: Messages;
}
function EmptyState({ children }: { children: ReactNode }) {
return <div className="empty-state">{children}</div>;
}
function roomFilterLabel(
filter: RoomFilter,
statusLabel: (status: string, t: Messages) => string,