import { useState } from "react"; import { Welcome } from "@godxjp/ui/data-display"; import { Button, Text } from "@godxjp/ui/general"; import { AppShell, Flex, PageContainer, Sidebar, type SidebarSectionProp, Topbar, } from "@godxjp/ui/layout"; import { Bot, MessageSquare, Settings, Sparkles, Users } from "lucide-react"; /** * Welcome — the greeting block at the head of an empty conversation (Ant Design X `Welcome`). * * It is the first thing an assistant says, so every slot on this page is one Ant X slot at rest: * the full block, the two variants, the block with no glyph, and the `icon`-as-URL rule that Ant * ports from a string beginning with `http`. * * Composed only from real @godxjp/ui components. */ const sections: SidebarSectionProp[] = [ { label: "アシスタント", items: [ { id: "chat", label: "チャット", icon: MessageSquare }, { id: "agents", label: "エージェント", icon: Bot }, { id: "members", label: "メンバー", icon: Users }, ], }, { label: "管理", items: [{ id: "settings", label: "設定", icon: Settings }] }, ]; export default function WelcomeDoc() { const [dismissed, setDismissed] = useState(false); return ( {}} product={{ name: "CoreDesk", role: "アシスタント", color: "hsl(var(--primary))" }} /> } topbar={} > {/* THE WHOLE BLOCK. `extra` sits on the title row, which is the placement a hand-roll usually gets wrong (it lands under the description instead). */} icon · title · description · extra {dismissed ? ( 閉じました。 ) : ( } title="こんにちは、何からはじめますか" description="請求、経費、勤怠のことならお手伝いできます。左の履歴から続きを開くこともできます。" extra={ } /> )} {/* THE TWO VARIANTS, side by side. */} variant · filled と borderless } title="filled" description="自分の地色と髪の毛一本分の境界を持つ。カードの中に置いても沈まない。" /> } title="borderless" description="ページの地の上にそのまま置く。上下に他の要素が続くときはこちら。" /> {/* NO GLYPH, AND AN IMAGE GLYPH. */} icon · 省略と URL http で始まる文字列は装飾画像として描かれる(Ant Design X と同じ規則、ただし alt は空)。 ); }