# Payment form

> Name on card, card number with icon, expiry, CVC, and country select fields with a pay button.

A shadcn/ui block from the [@flx](https://ui.flexnative.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/flx/card-14).

- Page, with a live preview: https://shadcn.exchange/r/flx/card-14
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/flx/card-14-light-7acdb7f874a0f6ad.png
- Registry item: https://ui.flexnative.com/r/card-14.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://ui.flexnative.com/r/card-14.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- Registry items: `card`, `button`, `field`, `input`, `input-group`, `select`

## Files

### `registry/patterns/card/card-14.tsx`

```tsx
import { CreditCardIcon } from 'lucide-react'

import { Button } from '@/components/ui/button'
import {
  Card,
  CardContent,
  CardDescription,
  CardFooter,
  CardHeader,
  CardTitle,
} from '@/components/ui/card'
import { Field, FieldGroup, FieldLabel } from '@/components/ui/field'
import { Input } from '@/components/ui/input'
import {
  InputGroup,
  InputGroupAddon,
  InputGroupInput,
} from '@/components/ui/input-group'
import {
  Select,
  SelectContent,
  SelectGroup,
  SelectItem,
  SelectTrigger,
  SelectValue,
} from '@/components/ui/select'

export function Card14() {
  return (
    <Card className="w-full max-w-sm">
      <CardHeader>
        <CardTitle>Payment details</CardTitle>
        <CardDescription>
          Enter your card information to complete checkout.
        </CardDescription>
      </CardHeader>
      <CardContent>
        <form>
          <FieldGroup>
            <Field>
              <FieldLabel htmlFor="card-14-name">Name on card</FieldLabel>
              <Input id="card-14-name" placeholder="John Doe" />
            </Field>
            <Field>
              <FieldLabel htmlFor="card-14-number">Card number</FieldLabel>
              <InputGroup>
                <InputGroupInput
                  id="card-14-number"
                  placeholder="1234 1234 1234 1234"
                  inputMode="numeric"
                />
                <InputGroupAddon>
                  <CreditCardIcon />
                </InputGroupAddon>
              </InputGroup>
            </Field>
            <div className="grid grid-cols-2 gap-4">
              <Field>
                <FieldLabel htmlFor="card-14-expiry">Expires</FieldLabel>
                <Input id="card-14-expiry" placeholder="MM / YY" />
              </Field>
              <Field>
                <FieldLabel htmlFor="card-14-cvc">CVC</FieldLabel>
                <Input id="card-14-cvc" placeholder="123" inputMode="numeric" />
              </Field>
            </div>
            <Field>
              <FieldLabel htmlFor="card-14-country">Country</FieldLabel>
              <Select defaultValue="us">
                <SelectTrigger id="card-14-country" className="w-full">
                  <SelectValue />
                </SelectTrigger>
                <SelectContent>
                  <SelectGroup>
                    <SelectItem value="us">United States</SelectItem>
                    <SelectItem value="br">Brazil</SelectItem>
                    <SelectItem value="pt">Portugal</SelectItem>
                    <SelectItem value="uk">United Kingdom</SelectItem>
                  </SelectGroup>
                </SelectContent>
              </Select>
            </Field>
          </FieldGroup>
        </form>
      </CardContent>
      <CardFooter>
        <Button type="submit" className="w-full">
          Pay $29.00
        </Button>
      </CardFooter>
    </Card>
  )
}
```
