refactor(private-zoom): rename full feature surface

This commit is contained in:
Codex
2026-07-22 18:21:47 +08:00
parent e813333607
commit ed3b34ce1c
102 changed files with 695 additions and 519 deletions
@@ -85,8 +85,8 @@ describe("shared Tailwind components", () => {
<CharacterAvatar
src="/images/avatar/elio.png"
alt="Elio Silvestri"
actionLabel="Open Elio's private room"
analyticsKey="chat.open_private_room_from_avatar"
actionLabel="Open Elio's private zoom"
analyticsKey="chat.open_private_zoom_from_avatar"
onClick={() => undefined}
/>,
);
@@ -100,10 +100,10 @@ describe("shared Tailwind components", () => {
expect(characterHtml).toContain('<button type="button"');
expect(characterHtml).toContain(
'aria-label="Open Elio&#x27;s private room"',
'aria-label="Open Elio&#x27;s private zoom"',
);
expect(characterHtml).toContain(
'data-analytics-key="chat.open_private_room_from_avatar"',
'data-analytics-key="chat.open_private_zoom_from_avatar"',
);
expect(userHtml).toContain('<button type="button"');
expect(userHtml).toContain('aria-label="Open profile"');
@@ -79,18 +79,18 @@ describe("core Tailwind components", () => {
<AppBottomNav
activeItem="chat"
variant="dark"
privateRoomLabel="Maya Private room"
privateZoomLabel="Maya Private Zoom"
onChatClick={() => undefined}
onPrivateRoomClick={() => undefined}
onPrivateZoomClick={() => undefined}
/>,
);
const privateRoomHtml = renderToStaticMarkup(
const privateZoomHtml = renderToStaticMarkup(
<AppBottomNav
activeItem="privateRoom"
activeItem="privateZoom"
variant="warm"
privateRoomLabel="Maya Private room"
privateZoomLabel="Maya Private Zoom"
onChatClick={() => undefined}
onPrivateRoomClick={() => undefined}
onPrivateZoomClick={() => undefined}
/>,
);
@@ -99,13 +99,13 @@ describe("core Tailwind components", () => {
expect(chatHtml).toMatch(
/<button[^>]*aria-current="page"[^>]*>.*?<span>Chat<\/span>/,
);
expect(privateRoomHtml).toMatch(/class="[^"]*warm[^"]*"/);
expect(privateRoomHtml).toMatch(
/<button[^>]*aria-current="page"[^>]*>.*?<span>Maya Private room<\/span>/,
expect(privateZoomHtml).toMatch(/class="[^"]*warm[^"]*"/);
expect(privateZoomHtml).toMatch(
/<button[^>]*aria-current="page"[^>]*>.*?<span>Maya Private Zoom<\/span>/,
);
expect(chatHtml).toContain('data-analytics-key="navigation.chat"');
expect(privateRoomHtml).toContain(
'data-analytics-key="navigation.private_room"',
expect(privateZoomHtml).toContain(
'data-analytics-key="navigation.private_zoom"',
);
});
});
+11 -11
View File
@@ -4,23 +4,23 @@ import { Camera, MessageCircle } from "lucide-react";
import styles from "./app-bottom-nav.module.css";
export type AppBottomNavItem = "chat" | "privateRoom";
export type AppBottomNavItem = "chat" | "privateZoom";
export type AppBottomNavVariant = "warm" | "dark";
export interface AppBottomNavProps {
activeItem?: AppBottomNavItem | null;
variant?: AppBottomNavVariant;
privateRoomLabel: string;
privateZoomLabel: string;
onChatClick: () => void;
onPrivateRoomClick: () => void;
onPrivateZoomClick: () => void;
}
export function AppBottomNav({
activeItem = null,
variant = "warm",
privateRoomLabel,
privateZoomLabel,
onChatClick,
onPrivateRoomClick,
onPrivateZoomClick,
}: AppBottomNavProps) {
return (
<nav className={getRootClass(variant)} aria-label="Primary navigation">
@@ -37,14 +37,14 @@ export function AppBottomNav({
</button>
<button
type="button"
data-analytics-key="navigation.private_room"
data-analytics-label="Private room navigation"
className={getButtonClass(activeItem === "privateRoom")}
aria-current={activeItem === "privateRoom" ? "page" : undefined}
onClick={onPrivateRoomClick}
data-analytics-key="navigation.private_zoom"
data-analytics-label="Private Zoom navigation"
className={getButtonClass(activeItem === "privateZoom")}
aria-current={activeItem === "privateZoom" ? "page" : undefined}
onClick={onPrivateZoomClick}
>
<Camera size={20} aria-hidden="true" />
<span>{privateRoomLabel}</span>
<span>{privateZoomLabel}</span>
</button>
</nav>
);