Files
zeekay 05fc512820 feat: sync upstream shadcn/ui — [email protected], v4 app, font system, chart improvements
Upstream sync from shadcn-ui/ui (1686 commits since last merge base).

Key changes:
- packages/shadcn upgraded to 4.1.0 (CLI font transformers, scaffold from github, chart colors)
- apps/v4 replaces apps/www as the primary docs/registry app
- Font system: 25+ heading font registries, font markers utility, @supports override
- Chart improvements: recharts v3 compat, radial chart fixes
- templates/ updated with monorepo variants (astro, vite, react-router, start)
- skills/shadcn AI skill definitions added
- deprecated/ removed (auth, auth-firebase, cli, www)

Preserved Hanzo-only paths: app/, pkg/, demo/, docs/, template/next/
2026-03-24 19:04:31 -07:00

101 lines
3.1 KiB
TypeScript

"use client"
import { Button } from "@/registry/bases/radix/ui/button"
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/registry/bases/radix/ui/card"
import { Field, FieldLabel } from "@/registry/bases/radix/ui/field"
import { Input } from "@/registry/bases/radix/ui/input"
import {
InputGroup,
InputGroupAddon,
InputGroupButton,
InputGroupInput,
} from "@/registry/bases/radix/ui/input-group"
import {
Select,
SelectContent,
SelectGroup,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/registry/bases/radix/ui/select"
import { Separator } from "@/registry/bases/radix/ui/separator"
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
export function InviteTeam() {
return (
<Card>
<CardHeader>
<CardTitle>Invite Team</CardTitle>
<CardDescription>Add members to your workspace</CardDescription>
</CardHeader>
<CardContent className="flex flex-col gap-4">
<div className="flex flex-col gap-3">
{[
{ email: "[email protected]", role: "Editor" },
{ email: "[email protected]", role: "Viewer" },
].map((invite) => (
<div key={invite.email} className="flex items-center gap-2">
<Input defaultValue={invite.email} className="flex-1" />
<Select defaultValue={invite.role.toLowerCase()}>
<SelectTrigger className="w-24">
<SelectValue />
</SelectTrigger>
<SelectContent position="popper" align="end">
<SelectGroup>
<SelectItem value="admin">Admin</SelectItem>
<SelectItem value="editor">Editor</SelectItem>
<SelectItem value="viewer">Viewer</SelectItem>
</SelectGroup>
</SelectContent>
</Select>
</div>
))}
</div>
<Button variant="outline">
<IconPlaceholder
lucide="PlusIcon"
tabler="IconPlus"
hugeicons="PlusSignIcon"
phosphor="PlusIcon"
remixicon="RiAddLine"
data-icon="inline-start"
/>
Add another
</Button>
<Separator />
<Field>
<FieldLabel htmlFor="invite-link">Or share invite link</FieldLabel>
<InputGroup>
<InputGroupInput
id="invite-link"
defaultValue="https://app.co/invite/x8f2k"
readOnly
/>
<InputGroupAddon align="inline-end">
<InputGroupButton size="icon-xs" aria-label="Copy link">
<IconPlaceholder
lucide="CopyIcon"
tabler="IconCopy"
hugeicons="Copy01Icon"
phosphor="CopyIcon"
remixicon="RiFileCopyLine"
/>
</InputGroupButton>
</InputGroupAddon>
</InputGroup>
</Field>
</CardContent>
<CardFooter>
<Button className="w-full">Send Invites</Button>
</CardFooter>
</Card>
)
}