Compare commits
4 Commits
d2b5df210b
...
ce4b0dcd4d
| Author | SHA1 | Date |
|---|---|---|
|
|
ce4b0dcd4d | |
|
|
eabc0995b9 | |
|
|
bb2338e65b | |
|
|
93e03e1e5a |
|
|
@ -475,7 +475,7 @@ export default function ChatPage() {
|
||||||
XClawUsed: false,
|
XClawUsed: false,
|
||||||
});
|
});
|
||||||
// 使用完整页面刷新确保组件重新挂载,isNewThread 为 true
|
// 使用完整页面刷新确保组件重新挂载,isNewThread 为 true
|
||||||
window.location.href = "/workspace/chats/new";
|
window.location.reload();
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
确定
|
确定
|
||||||
|
|
|
||||||
|
|
@ -1,79 +1,14 @@
|
||||||
import { Skeleton } from "@/components/ui/skeleton";
|
import { Loader } from "@/components/ai-elements/loader";
|
||||||
|
|
||||||
const STAGGER_MS = 60;
|
|
||||||
|
|
||||||
function SkeletonBar({
|
|
||||||
className,
|
|
||||||
style,
|
|
||||||
originRight,
|
|
||||||
}: {
|
|
||||||
className?: string;
|
|
||||||
style?: React.CSSProperties;
|
|
||||||
originRight?: boolean;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<div
|
|
||||||
className={`animate-skeleton-entrance fill-mode-[forwards] overflow-hidden rounded-md ${originRight ? "origin-[right]" : "origin-[left]"} ${className ?? ""}`}
|
|
||||||
style={{ opacity: 0, ...style }}
|
|
||||||
>
|
|
||||||
<Skeleton className="h-full w-full rounded-md" />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function MessageListSkeleton() {
|
export function MessageListSkeleton() {
|
||||||
let index = 0;
|
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full max-w-(--container-width-md) flex-col gap-12 p-8 pt-16">
|
<div className="flex w-full max-w-(--container-width-md) flex-1 items-center justify-center p-8">
|
||||||
<div
|
<Loader
|
||||||
role="human-message"
|
className="text-muted-foreground"
|
||||||
className="flex w-[50%] flex-col items-end gap-2 self-end"
|
size={28}
|
||||||
>
|
role="status"
|
||||||
<SkeletonBar
|
aria-label="Loading"
|
||||||
className="h-6 w-full"
|
/>
|
||||||
originRight
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-[80%]"
|
|
||||||
originRight
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div role="assistant-message" className="flex flex-col gap-2">
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-full"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-full"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-[70%]"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-full"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-full"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-full"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-[60%]"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
<SkeletonBar
|
|
||||||
className="h-6 w-[40%]"
|
|
||||||
style={{ animationDelay: `${index++ * STAGGER_MS}ms` }}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ export function WorkspaceHeader({ className }: { className?: string }) {
|
||||||
{state === "collapsed" ? (
|
{state === "collapsed" ? (
|
||||||
<div className="group-has-data-[collapsible=icon]/sidebar-wrapper:-translate-y flex w-full cursor-pointer items-center justify-center">
|
<div className="group-has-data-[collapsible=icon]/sidebar-wrapper:-translate-y flex w-full cursor-pointer items-center justify-center">
|
||||||
<div className="text-primary block pt-1 font-serif group-hover/workspace-header:hidden">
|
<div className="text-primary block pt-1 font-serif group-hover/workspace-header:hidden">
|
||||||
DF
|
XC
|
||||||
</div>
|
</div>
|
||||||
<SidebarTrigger className="hidden pl-2 group-hover/workspace-header:block" />
|
<SidebarTrigger className="hidden pl-2 group-hover/workspace-header:block" />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -38,11 +38,11 @@ export function WorkspaceHeader({ className }: { className?: string }) {
|
||||||
<div className="flex items-center justify-between gap-2">
|
<div className="flex items-center justify-between gap-2">
|
||||||
{env.NEXT_PUBLIC_STATIC_WEBSITE_ONLY === "true" ? (
|
{env.NEXT_PUBLIC_STATIC_WEBSITE_ONLY === "true" ? (
|
||||||
<Link href="/" className="text-primary ml-2 font-serif">
|
<Link href="/" className="text-primary ml-2 font-serif">
|
||||||
DeerFlow
|
XClaw侧边栏
|
||||||
</Link>
|
</Link>
|
||||||
) : (
|
) : (
|
||||||
<div className="text-primary ml-2 cursor-default font-serif">
|
<div className="text-primary ml-2 cursor-default font-serif">
|
||||||
DeerFlow
|
XClaw(测试专用侧边栏。)
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<SidebarTrigger />
|
<SidebarTrigger />
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ export function WorkspaceSidebar({
|
||||||
{isSidebarOpen && <RecentChatList />}
|
{isSidebarOpen && <RecentChatList />}
|
||||||
</SidebarContent>
|
</SidebarContent>
|
||||||
<SidebarFooter>
|
<SidebarFooter>
|
||||||
<WorkspaceNavMenu />
|
{/* <WorkspaceNavMenu /> */}
|
||||||
</SidebarFooter>
|
</SidebarFooter>
|
||||||
<SidebarRail />
|
<SidebarRail />
|
||||||
</Sidebar>
|
</Sidebar>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue