UNPKG

flowbite-svelte-son

Version:

Flowbite components for Svelte

299 lines (224 loc) 9.47 kB
--- layout: formLayout title: Svelte Forms - Flowbite breadcrumb_title: Forms dir: Components description: Use the Tailwind CSS form and input elements such as checkboxes, radios, textarea, text inputs to collect information from users with Flowbite --- <MetaTag {breadcrumb_title} {title} {dir} {description}/> <script> import { Htwo, ExampleDiv, GitHubSource, CompoDescription, TableProp, TableDefaultRow, MetaTag } from '../utils' import { Breadcrumb, BreadcrumbItem, Heading, A } from '$lib' import { props as items } from '../props/Input.json' import { props as items2 } from '../props/Label.json' import { props as items3 } from '../props/Helper.json' import { props as items5 } from '../props/Fileupload.json' import { props as items6 } from '../props/Textarea.json' import { props as items7 } from '../props/Select.json' import { props as items8 } from '../props/Checkbox.json' import { props as items9 } from '../props/Radio.json' import { props as items10 } from '../props/Toggle.json' let propHeader = ['Name', 'Type', 'Default'] let divClass='w-full relative overflow-x-auto shadow-md sm:rounded-lg py-4' let theadClass ='text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-white' </script> <Breadcrumb class="pt-16 py-8"> <BreadcrumbItem href="/" home >Home</BreadcrumbItem> <BreadcrumbItem>{dir}</BreadcrumbItem> <BreadcrumbItem>{breadcrumb_title}</BreadcrumbItem> </Breadcrumb> <Heading class="mb-2" tag="h1" customSize="text-3xl">{title}</Heading> <CompoDescription>{description}</CompoDescription> The Input component allows you to change the input size, add disabled, helper text, and floating label. <Htwo label="Input Sizes" /> User the size prop to change the input size. Choose one from 'sm:text-md' | 'text-sm' | 'sm:text-xs'. The default size is text-sm. ```svelte example <script> import { Label, Input } from 'flowbite-svelte' </script> <div class='mb-6'> <Label for='large-input' class='block mb-2'>Large input</Label> <Input id="large-input" size="lg" placeholder="Large input" /> </div> <div class='mb-6'> <Label for='default-input' class='block mb-2'>Default input</Label> <Input id='default-input' placeholder="Default input" /> </div> <div class='mb-6'> <Label for='large-input' class='block mb-2'>Small input</Label> <Input size="sm" placeholder="Small input" label="Small input"/> </div> ``` <Htwo label="Disabled" /> Get started with this example if you want to apply the disabled state to an input field. Add the disabled to change the input to disabled. ```svelte example <script> import { Label, Input } from 'flowbite-svelte' </script> <Input id="disabled-input" class="mb-6" disabled value="Disabled input" /> <Input id="disabled-input-2" class="mb-6" disabled readonly value="Disabled readonly input" /> ``` <Htwo label="Helper text" /> Use the helper prop to add your helper text. You can use HTML in the helper text. ```svelte example <script> import { Label, Input, Helper } from 'flowbite-svelte' </script> <Label class='block mb-2' >Your email</Label> <Input label="Email" id="email" name="email" required placeholder="name@flowbite.com"/> <Helper class='text-sm mt-2'>We’ll never share your details. Read our <a href="/" class="font-medium text-blue-600 hover:underline dark:text-blue-500">Privacy Policy</a>.</Helper> ``` <Htwo label="Input element with icon" /> With the Input component, you can add <a href="https://flowbite-svelte.vercel.app/icons/heroicons" class="text-blue-700 dark:text-blue-500 hover:underline">Heroicons</a> or <a href="https://svelte-svg-icons.vercel.app/" class="text-blue-700 dark:text-blue-500 hover:underline">other icon sets</a>. ```svelte example <script> import { Label, Input } from 'flowbite-svelte' </script> <div class="mb-6"> <Label for="input-group-1" class="block mb-2">Your Email</Label> <Input id="email" type="email" placeholder="name@flowbite.com"> <svg slot="left" aria-hidden="true" class="w-5 h-5 text-gray-500 dark:text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"></path><path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"></path></svg> </Input> </div> ``` <Htwo label="Input element with addon" /> ```svelte example <script> import { Label, Input, InputAddon, ButtonGroup } from 'flowbite-svelte' </script> <div class="mb-6"> <Label for="website-admin" class="block mb-2">Username</Label> <ButtonGroup class="w-full"> <InputAddon> <svg aria-hidden="true" class="w-5 h-5 text-gray-500 dark:text-gray-400" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"></path><path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"></path></svg> </InputAddon> <Input id="website-admin" placeholder="elonmusk" /> </ButtonGroup> </div> ``` <Htwo label="Form validation" /> Use the following example to apply validation styles for success and error messages. ```svelte example <script> import { Label, Input, Helper } from 'flowbite-svelte' </script> <div class="mb-6"> <Label for='success' color='green' class='block mb-2'>Your name</Label> <Input id='success' color='green' placeholder="Success input" /> <Helper class='mt-2' color='green'><span class="font-medium">Well done!</span> Some success messsage.</Helper> </div> <div class="mb-6"> <Label for='error' color='red' class='block mb-2'>Your name</Label> <Input id='success' color='red' placeholder="Success input" /> <Helper class='mt-2' color='red'><span class="font-medium">Well done!</span> Some success messsage.</Helper> </div> ``` <Htwo label="Textarea" /> ```svelte example <script> import { Textarea } from 'flowbite-svelte' let textareaprops = { id: 'message', name: 'message', label: 'Your message', rows: 4, placeholder: 'Leave a comment...', }; </script> <Textarea {...textareaprops} /> ``` <Htwo label="Select input" /> Get started with the default example of a select input component to get a single option selection. ```svelte example <script> import { Label, Select } from 'flowbite-svelte' let selected; let countries = [ {value:"us", name: "United States"}, {value:"ca", name: "Canada"}, {value:"fr", name: "France"}, ] </script> <Label>Select an option <Select class="mt-2" items={countries} bind:value={selected} /> </Label> ``` <Htwo label="Checkbox" /> ```svelte example class="flex flex-col gap-4" <script> import { Checkbox } from 'flowbite-svelte' </script> <Checkbox>Default checkbox</Checkbox> <Checkbox checked >Checked state</Checkbox> ``` <Htwo label="Radio buttons" /> ```svelte example class="flex flex-col gap-4" <script> import { Radio } from 'flowbite-svelte' </script> <Radio name="example">Default radio</Radio> <Radio name="example" checked={true}>Checked state</Radio> ``` <Htwo label="File upload" /> ```svelte example <script> import { Label, Fileupload } from 'flowbite-svelte' let fileuploadprops = { id : 'user_avatar' } let fileuploadprops2 = { id : 'user_avatar2' } </script> <Label class="pb-2">Upload file</Label> <Fileupload {...fileuploadprops} /> ``` <Htwo label="Toggle Switch" /> ```svelte example class="flex flex-col gap-2" <script> import { Toggle } from 'flowbite-svelte' </script> <Toggle>Toggle me</Toggle> <Toggle checked={true}>Checked toggle</Toggle> <Toggle disabled>Disabled toggle</Toggle> <Toggle checked disabled>Disabled checked</Toggle> ``` <Htwo label="Props" /> The component has the following props, type, and default values. See <A href="/pages/types">types page</A> for type information. <h3 class='text-xl w-full dark:text-white py-4'>Input</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Label</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items2} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Helper</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items3} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Fileupload</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items5} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Textarea</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items6} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Select</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items7} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Checkbox</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items8} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Radio</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items9} rowState='hover' /> </TableProp> <h3 class='text-xl w-full dark:text-white py-4'>Toggle</h3> <TableProp header={propHeader} {divClass} {theadClass}> <TableDefaultRow items={items10} rowState='hover' /> </TableProp>