address-03-block
stackzero/address-03-blockFreeBlock
stackzero publishes no description for this item.
Install it
npx shadcn@latest add https://ui.stackzero.co/r/address-03-block.jsonSource
1"use client";23import InputIcon from "@/components/commerce-ui/input-icon";4import PhoneInput from "@/components/commerce-ui/phone-number-input-basic";5import { Button } from "@/components/ui/button";6import {7 Form,8 FormControl,9 FormField,10 FormItem,11 FormLabel,12 FormMessage,13} from "@/components/ui/form";14import { zodResolver } from "@hookform/resolvers/zod";15import { Building, Building2, Globe, House, Mail, User } from "lucide-react";16import { useForm } from "react-hook-form";17import { z } from "zod";1819export const addressFormSchema = z.object({20 address1: z.string().min(1, "Address is required"),21 address2: z.string().optional(),22 city: z.string().min(1, "City is required"),23 country: z.string().min(1, "Country is required"),24 email: z.string().email("Invalid email").optional(),25 fullName: z.string().min(5, "Full name is required"),26 phone: z.string().optional(),27 postalCode: z.string().min(1, "Postal code is required"),28 state: z.string().min(1, "State is required"),29});3031export type AddressFormValues = z.infer<typeof addressFormSchema>;3233export type AddressFormProps = {34 value?: AddressFormValues;35 onSubmit?: (value: AddressFormValues) => void;36 submitLabel?: string;37 disabled?: boolean;38 className?: string;39};4041function Address_03({42 className = "",43 disabled = false,44 onSubmit,45 submitLabel = "Save Address",46 value,47}: AddressFormProps) {48 const form = useForm<AddressFormValues>({49 defaultValues: value || {50 address1: "",51 address2: "",52 city: "",53 country: "",54 email: "",55 fullName: "",56 phone: "",57 postalCode: "",58 state: "",59 },60 mode: "onChange",61 resolver: zodResolver(addressFormSchema),62 });6364 return (65 <div className="mx-auto max-w-xl rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-700 dark:bg-gray-900">66 <h1 className="mb-6 text-2xl font-bold text-gray-900 dark:text-gray-100">67 Shipping Address68 </h1>69 <Form {...form}>70 <form71 className={className}72 onSubmit={form.handleSubmit(onSubmit ?? (() => {}))}73 >74 <div className="grid gap-6">75 {/* Full Name */}76 <div>77 <FormField78 control={form.control}79 name="fullName"80 render={({ field }) => (81 <FormItem>82 <FormLabel>Full Name</FormLabel>83 <FormControl>84 <>85// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from stackzero
All 112 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| address-01-blockaddress-01-block | stackzero | Blocks | Free | 4 deps | |
| address-02-blockaddress-02-block | stackzero | Blocks | Free | 4 deps | |
| banner-01-blockbanner-01-block | stackzero | Blocks | Free | no deps | |
| banner-02-blockbanner-02-block | stackzero | Blocks | Free | no deps | |
| banner-03-blockbanner-03-block | stackzero | Blocks | Free | no deps | |
| banner-04-blockbanner-04-block | stackzero | Blocks | Free | no deps | |
| banner-05-blockbanner-05-block | stackzero | Blocks | Free | no deps | |
| banner-06-blockbanner-06-block | stackzero | Blocks | Free | no deps |
