Commit cbdbd078 authored by Vũ Hoàng Anh's avatar Vũ Hoàng Anh

feat(nav): add 1-click 3D Vu Tru button on top navbar and embed Banner3DCanvas

parent cadb9671
Pipeline #3909 failed with stage
...@@ -3,7 +3,7 @@ import { TeamManagementPage } from "../../team/team-management-page"; ...@@ -3,7 +3,7 @@ import { TeamManagementPage } from "../../team/team-management-page";
import type { CSSProperties } from "react"; import type { CSSProperties } from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { usePanelRef } from "react-resizable-panels"; import { usePanelRef } from "react-resizable-panels";
import { Cloud, FileText, Globe, Mic2, MoreHorizontal, PanelRight, TextSearch, Zap } from "lucide-react"; import { Cloud, FileText, Globe, Mic2, MoreHorizontal, PanelRight, Sparkles, TextSearch, Zap } from "lucide-react";
import { resolveExtensionIconSrc } from "@/react-app/design-system/extension-icon-src"; import { resolveExtensionIconSrc } from "@/react-app/design-system/extension-icon-src";
import { ModeToggle } from "@/components/mode-toggle"; import { ModeToggle } from "@/components/mode-toggle";
...@@ -1179,6 +1179,16 @@ export function SessionPage(props: SessionPageProps) { ...@@ -1179,6 +1179,16 @@ export function SessionPage(props: SessionPageProps) {
</div> </div>
<div className="flex items-center gap-1.5 text-gray-10 mac:titlebar-no-drag"> <div className="flex items-center gap-1.5 text-gray-10 mac:titlebar-no-drag">
<Button
variant="outline"
size="sm"
className="hidden sm:inline-flex items-center gap-1.5 rounded-xl border-primary/30 bg-primary/10 text-primary hover:bg-primary/20 text-xs font-medium"
onClick={() => setTeamViewOpen((prev) => !prev)}
title="Mở Trung Tâm Điều Hành 3D Vũ Trụ AI"
>
<Sparkles className="size-3.5 text-amber-400 animate-pulse" />
<span>🌌 Vũ Trụ 3D</span>
</Button>
<ModeToggle /> <ModeToggle />
{!props.primarySlot && findButtonSessionId && !hasMainContentTakeover ? ( {!props.primarySlot && findButtonSessionId && !hasMainContentTakeover ? (
<Tooltip> <Tooltip>
......
...@@ -86,6 +86,7 @@ import { ...@@ -86,6 +86,7 @@ import {
useComposerStateStore, useComposerStateStore,
} from "./composer-state-store"; } from "./composer-state-store";
import { MessageList } from "@/components/chat/message-list"; import { MessageList } from "@/components/chat/message-list";
import { Banner3DCanvas } from "@/components/ui/banner-3d-canvas";
import { DeliverablePreviewModal } from "@/components/modals/deliverable-preview-modal"; import { DeliverablePreviewModal } from "@/components/modals/deliverable-preview-modal";
import { mockOpencodeStore } from "@/app/lib/mock-opencode"; import { mockOpencodeStore } from "@/app/lib/mock-opencode";
import { MessageListProvider, type DispatchAction } from "@/components/chat/message-list-provider"; import { MessageListProvider, type DispatchAction } from "@/components/chat/message-list-provider";
...@@ -2097,6 +2098,12 @@ export function SessionSurface(props: SessionSurfaceProps) { ...@@ -2097,6 +2098,12 @@ export function SessionSurface(props: SessionSurfaceProps) {
openTargets={verifiedOpenTargets} openTargets={verifiedOpenTargets}
onOpenTarget={props.onOpenTarget} onOpenTarget={props.onOpenTarget}
> >
<div className="mx-auto w-full max-w-3xl px-4 pt-3 pb-2">
<Banner3DCanvas
title="Trung Tâm Điều Hành 3D Vũ Trụ AI"
subtitle="Quỹ đạo 5 AI Agent tự vận hành liên phòng ban · DeepSeek-V4 & ThreeUI 3D WebGL"
/>
</div>
<EnvironmentVariableProvider <EnvironmentVariableProvider
client={props.isRemoteWorkspace ? null : props.environmentClient ?? props.client} client={props.isRemoteWorkspace ? null : props.environmentClient ?? props.client}
runtimeKey={props.environmentRuntimeKey} runtimeKey={props.environmentRuntimeKey}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment