Files
zeekay 16c4453cc1 feat: sync with upstream shadcn/ui (through [email protected])
Squash merge of shadcn-ui/ui main branch into hanzo/ui, bringing in:
- [email protected] through [email protected] releases
- New apps/v4 directory structure
- Registry system improvements and MCP server
- Framework support (Vue, Svelte, React Native)
- New templates (vite-app, monorepo-next, laravel)
- Zod 4 compatibility (scoped override for zod@>4)
- Test fixture corrections for alias resolution

All 867 merge conflicts resolved preserving Hanzo customizations.
1020/1020 shadcn tests pass.
2026-02-09 10:44:26 -08:00

193 lines
4.2 KiB
TypeScript

import {
Example,
ExampleWrapper,
} from "@/registry/bases/base/components/example"
import { Button } from "@/registry/bases/base/ui/button"
import {
InputGroup,
InputGroupAddon,
InputGroupInput,
} from "@/registry/bases/base/ui/input-group"
import { Kbd, KbdGroup } from "@/registry/bases/base/ui/kbd"
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from "@/registry/bases/base/ui/tooltip"
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
export default function KbdExample() {
return (
<ExampleWrapper>
<KbdBasic />
<KbdModifierKeys />
<KbdGroupExample />
<KbdArrowKeys />
<KbdWithIcons />
<KbdWithIconsAndText />
<KbdInInputGroup />
<KbdInTooltip />
<KbdWithSamp />
</ExampleWrapper>
)
}
function KbdBasic() {
return (
<Example title="Basic">
<div className="flex items-center gap-2">
<Kbd>Ctrl</Kbd>
<Kbd>⌘K</Kbd>
<Kbd>Ctrl + B</Kbd>
</div>
</Example>
)
}
function KbdModifierKeys() {
return (
<Example title="Modifier Keys">
<div className="flex items-center gap-2">
<Kbd>⌘</Kbd>
<Kbd>C</Kbd>
</div>
</Example>
)
}
function KbdGroupExample() {
return (
<Example title="KbdGroup">
<KbdGroup>
<Kbd>Ctrl</Kbd>
<Kbd>Shift</Kbd>
<Kbd>P</Kbd>
</KbdGroup>
</Example>
)
}
function KbdArrowKeys() {
return (
<Example title="Arrow Keys">
<div className="flex items-center gap-2">
<Kbd>↑</Kbd>
<Kbd>↓</Kbd>
<Kbd>←</Kbd>
<Kbd>→</Kbd>
</div>
</Example>
)
}
function KbdWithIcons() {
return (
<Example title="With Icons">
<KbdGroup>
<Kbd>
<IconPlaceholder
lucide="CircleDashedIcon"
tabler="IconCircleDashed"
hugeicons="DashedLineCircleIcon"
phosphor="CircleDashedIcon"
remixicon="RiLoaderLine"
/>
</Kbd>
<Kbd>
<IconPlaceholder
lucide="ArrowLeftIcon"
tabler="IconArrowLeft"
hugeicons="ArrowLeft01Icon"
phosphor="ArrowLeftIcon"
remixicon="RiArrowLeftLine"
/>
</Kbd>
<Kbd>
<IconPlaceholder
lucide="ArrowRightIcon"
tabler="IconArrowRight"
hugeicons="ArrowRight01Icon"
phosphor="ArrowRightIcon"
remixicon="RiArrowRightLine"
/>
</Kbd>
</KbdGroup>
</Example>
)
}
function KbdWithIconsAndText() {
return (
<Example title="With Icons and Text">
<KbdGroup>
<Kbd>
<IconPlaceholder
lucide="ArrowLeftIcon"
tabler="IconArrowLeft"
hugeicons="ArrowLeft01Icon"
phosphor="ArrowLeftIcon"
remixicon="RiArrowLeftLine"
/>
Left
</Kbd>
<Kbd>
<IconPlaceholder
lucide="CircleDashedIcon"
tabler="IconCircleDashed"
hugeicons="DashedLineCircleIcon"
phosphor="CircleDashedIcon"
remixicon="RiLoaderLine"
/>
Voice Enabled
</Kbd>
</KbdGroup>
</Example>
)
}
function KbdInInputGroup() {
return (
<Example title="InputGroup">
<InputGroup>
<InputGroupInput />
<InputGroupAddon>
<Kbd>Space</Kbd>
</InputGroupAddon>
</InputGroup>
</Example>
)
}
function KbdInTooltip() {
return (
<Example title="Tooltip">
<Tooltip>
<TooltipTrigger render={<Button size="icon-sm" variant="outline" />}>
<IconPlaceholder
lucide="SaveIcon"
tabler="IconDeviceFloppy"
hugeicons="FloppyDiskIcon"
phosphor="FloppyDiskIcon"
remixicon="RiSaveLine"
/>
</TooltipTrigger>
<TooltipContent className="pr-1.5">
<div className="flex items-center gap-2">
Save Changes <Kbd>S</Kbd>
</div>
</TooltipContent>
</Tooltip>
</Example>
)
}
function KbdWithSamp() {
return (
<Example title="With samp">
<Kbd>
<samp>File</samp>
</Kbd>
</Example>
)
}