import { useState } from "react"; import { Badge, Card, CardContent, CardDescription, CardHeader, CardTitle, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, } from "@godxjp/ui/data-display"; import { Checkbox, FormField, Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@godxjp/ui/data-entry"; import { Button, Text } from "@godxjp/ui/general"; import { Flex, PageContainer } from "@godxjp/ui/layout"; import { Info, SlidersHorizontal } from "lucide-react"; /** * Popover — floating panel anchored to a trigger. Always compose * PopoverTrigger + PopoverContent; never a raw div overlay. Composed only from * real @godxjp/ui components. */ export default function Demo() { // Card 1 — controlled filter panel: open/onOpenChange drive the panel, and // 適用 closes it. Staged defaultOpen via initial state so the open panel is // visible at rest in a static screenshot. const [filterOpen, setFilterOpen] = useState(true); return ( PopoverAnchor · non-trigger positioning reference Anchor positions content without becoming its toggle. 請求額 ¥482,000 税額と支払条件の補足情報です。 Picker in a popover · Select defaultOpen Opening the popover opens the workspace list with it. The Select waits for the popover to finish sliding in, so the list sits below its trigger exactly as a click-open does and the first option is never covered. Controlled trigger + content Common for compact filter / settings panels off a button. Controlled via open / onOpenChange so 適用 closes the panel. Shown open at rest. {/* data-axe-open: check:frame-axe presses this before its overlay scan, so the panel is measured OPEN as well as closed. See docs/FRAME-A11Y-CI.md. */} Header / title / description slots The titled info-panel pattern: PopoverHeader › PopoverTitle + PopoverDescription, then body. Shown open at rest via defaultOpen. 保険料の内訳 健康保険・厚生年金・雇用保険の控除額を表示します。 健康保険 ¥12,400 厚生年金 ¥22,800 Placement · side PopoverContent accepts side: top / right / bottom (default) / left, with sideOffset. 上に開きます。 右に開きます。 下に開きます(既定)。 左に開きます。 Alignment · align align: start / center (default) / end positions the panel along the trigger edge. 開始端に揃えます。 中央に揃えます(既定)。 終了端に揃えます。 width · パネルの測り方 既定の panel は --popover-width(18rem)。auto は中身に測らせます。自前の幅を持つもの (Calendar、チャート、固定幅のプレビュー)はこれ以外に正解がありません。trigger はアンカーに合わせます。className に w-* を書くのは呼び出し側の定数で、どのテーマからも retune できません。flush が padding 側で避けているのと同じ話です。 18rem のパネル幅。散文や、パネル自身が測るリスト向け。 中身が幅を決めます。 アンカーと同じ幅。 Modal modal traps focus and blocks outside interaction while open, which also marks the rest of the page aria-hidden. Shown CLOSED at rest: an open modal layer would take the frame's own main landmark and heading out of the accessibility tree. Open it from the trigger to inspect it. 下書きを削除しますか? この操作は取り消せません。 ); }