UNPKG

react-vite-themes

Version:

A test/experimental React theme system created for learning purposes. Features atomic design components, SCSS variables, and dark/light theme support. Not intended for production use.

83 lines (79 loc) 24.6 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import React, { useState } from 'react'; import { Input } from '../../components/atoms/Input'; import { Card } from '../../components/atoms/Card'; import { CodeBlock } from '../../components/atoms/CodeBlock'; import { Typography } from '../../components/atoms/Typography'; export const InputDocumentation = () => { const [inputValue, setInputValue] = useState(''); const [emailValue, setEmailValue] = useState(''); const [passwordValue, setPasswordValue] = useState(''); const [textareaValue, setTextareaValue] = useState(''); const [dateValue, setDateValue] = useState(''); return (_jsx("div", { className: "bg-background text-text-primary min-h-screen p-8", children: _jsxs("div", { className: "max-w-6xl mx-auto", children: [_jsxs("div", { className: "mb-12", children: [_jsx(Typography, { variant: "h1", size: "xl", weight: "bold", className: "mb-4", children: "Input Component" }), _jsx(Typography, { variant: "p", size: "lg", className: "text-text-secondary max-w-4xl", children: "A flexible and powerful input component with multiple variants, sizes, states, and features. Supports icons, validation states, helper text, and various input types." })] }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-12 p-6", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Import" }), _jsx(CodeBlock, { code: "import { Input } from '../../components/atoms/Input';", language: "typescript" })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Basic Usage" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { placeholder: "Enter your name" }), _jsx(Input, { type: "email", placeholder: "Enter your email" }), _jsx(Input, { type: "password", placeholder: "Enter your password" })] }), _jsx(CodeBlock, { code: `<Input placeholder="Enter your name" /> <Input type="email" placeholder="Enter your email" /> <Input type="password" placeholder="Enter your password" />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Sizes" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { placeholder: "Small input", size: "sm" }), _jsx(Input, { placeholder: "Medium input (default)", size: "md" }), _jsx(Input, { placeholder: "Large input", size: "lg" })] }), _jsx(CodeBlock, { code: `<Input placeholder="Small input" size="sm" /> <Input placeholder="Medium input (default)" size="md" /> <Input placeholder="Large input" size="lg" />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Icons" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { placeholder: "Search...", leftIcon: "search", leftIconSize: "sm" }), _jsx(Input, { type: "email", placeholder: "Enter email", leftIcon: "mail", leftIconSize: "sm", rightIcon: "check", rightIconSize: "sm" }), _jsx(Input, { type: "password", placeholder: "Enter password", leftIcon: "lock", leftIconSize: "sm", showPasswordToggle: true })] }), _jsx(CodeBlock, { code: `<Input placeholder="Search..." leftIcon="search" leftIconSize="sm" /> <Input type="email" placeholder="Enter email" leftIcon="mail" leftIconSize="sm" rightIcon="check" rightIconSize="sm" /> <Input type="password" placeholder="Enter password" leftIcon="lock" leftIconSize="sm" showPasswordToggle={true} />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Validation States" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { placeholder: "Valid input", value: inputValue, onChange: (event) => setInputValue(event.target.value) }), _jsx(Input, { placeholder: "Invalid input", isInvalid: true, errorMessage: "This field is required" }), _jsx(Input, { placeholder: "Disabled input", disabled: true })] }), _jsx(CodeBlock, { code: `<Input placeholder="Valid input" /> <Input placeholder="Invalid input" isInvalid={true} errorMessage="This field is required" /> <Input placeholder="Disabled input" disabled />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Controlled Inputs" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "mb-4", children: [_jsx(Input, { placeholder: "Controlled input", value: inputValue, onChange: (event) => setInputValue(event.target.value) }), _jsxs(Typography, { variant: "p", size: "sm", className: "mt-2 text-text-secondary", children: ["Value: ", inputValue || '(empty)'] })] }), _jsx(CodeBlock, { code: `const [value, setValue] = useState(''); <Input placeholder="Controlled input" value={value} onChange={(event) => setValue(event.target.value)} />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Textarea" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsx("div", { className: "mb-4", children: _jsx(Input, { as: "textarea", placeholder: "Enter your message...", value: textareaValue, onChange: (event) => setTextareaValue(event.target.value) }) }), _jsx(CodeBlock, { code: `<Input as="textarea" placeholder="Enter your message..." value={textareaValue} onChange={(event) => setTextareaValue(event.target.value)} />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Date Input" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { type: "date", placeholder: "Select a date", value: dateValue, onChange: (event) => setDateValue(event.target.value) }), _jsx(Input, { type: "date", placeholder: "Birth date", leftIcon: "user", leftIconSize: "sm" }), _jsx(Input, { type: "date", placeholder: "Event date", minDate: "2024-01-01", maxDate: "2024-12-31" })] }), _jsx(CodeBlock, { code: `<Input type="date" placeholder="Select a date" /> <Input type="date" placeholder="Birth date" leftIcon="user" leftIconSize="sm" /> <Input type="date" placeholder="Event date" minDate="2024-01-01" maxDate="2024-12-31" />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "File Input" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { type: "file", accept: ".pdf,.doc,.docx" }), _jsx(Input, { type: "file", accept: "image/*", multiple: true })] }), _jsx(CodeBlock, { code: `<Input type="file" accept=".pdf,.doc,.docx" /> <Input type="file" accept="image/*" multiple />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Rounded Inputs" }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap gap-4 items-center mb-4", children: [_jsx(Input, { placeholder: "Rounded input", isRounded: true }), _jsx(Input, { placeholder: "Rounded with icon", leftIcon: "search", leftIconSize: "sm", isRounded: true })] }), _jsx(CodeBlock, { code: `<Input placeholder="Rounded input" isRounded /> <Input placeholder="Rounded with icon" leftIcon="search" leftIconSize="sm" isRounded />`, language: "tsx" })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Form Examples" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs(Card, { variant: "neutral", style: "elevated", className: "p-6", children: [_jsx(Typography, { variant: "h3", size: "md", weight: "semibold", className: "mb-4", children: "Contact Form" }), _jsxs("form", { className: "flex flex-col gap-4", children: [_jsxs("div", { children: [_jsx(Typography, { variant: "label", size: "sm", weight: "medium", className: "mb-2 block", children: "Name" }), _jsx(Input, { placeholder: "Enter your full name", leftIcon: "user", leftIconSize: "sm" })] }), _jsxs("div", { children: [_jsx(Typography, { variant: "label", size: "sm", weight: "medium", className: "mb-2 block", children: "Email" }), _jsx(Input, { type: "email", placeholder: "Enter your email", leftIcon: "mail", leftIconSize: "sm", value: emailValue, onChange: (event) => setEmailValue(event.target.value) })] }), _jsxs("div", { children: [_jsx(Typography, { variant: "label", size: "sm", weight: "medium", className: "mb-2 block", children: "Message" }), _jsx(Input, { as: "textarea", placeholder: "Enter your message...", value: textareaValue, onChange: (event) => setTextareaValue(event.target.value) })] })] })] }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "p-6", children: [_jsx(Typography, { variant: "h3", size: "md", weight: "semibold", className: "mb-4", children: "Login Form" }), _jsxs("form", { className: "flex flex-col gap-4", children: [_jsxs("div", { children: [_jsx(Typography, { variant: "label", size: "sm", weight: "medium", className: "mb-2 block", children: "Email" }), _jsx(Input, { type: "email", placeholder: "Enter your email", leftIcon: "mail", leftIconSize: "sm", value: emailValue, onChange: (event) => setEmailValue(event.target.value) })] }), _jsxs("div", { children: [_jsx(Typography, { variant: "label", size: "sm", weight: "medium", className: "mb-2 block", children: "Password" }), _jsx(Input, { type: "password", placeholder: "Enter your password", leftIcon: "lock", leftIconSize: "sm", showPasswordToggle: true, value: passwordValue, onChange: (event) => setPasswordValue(event.target.value) })] })] })] })] })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Props" }), _jsx(Card, { variant: "neutral", style: "elevated", className: "mb-6 p-6", children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full border-collapse text-sm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { className: "p-2 text-left border-b border-border font-semibold text-text-primary", children: "Prop" }), _jsx("th", { className: "p-2 text-left border-b border-border font-semibold text-text-primary", children: "Type" }), _jsx("th", { className: "p-2 text-left border-b border-border font-semibold text-text-primary", children: "Default" }), _jsx("th", { className: "p-2 text-left border-b border-border font-semibold text-text-primary", children: "Description" })] }) }), _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "as" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "'input' | 'textarea'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "'input'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Render as 'input' or 'textarea'" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "size" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "'sm' | 'md' | 'lg'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "'md'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Input size" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "leftIcon" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "ReactNode | IconName" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Icon to display on the left" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "leftIconSize" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "'sm' | 'md' | 'lg'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "'sm'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Size of the left icon" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "rightIcon" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "ReactNode | IconName" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Icon to display on the right" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "rightIconSize" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "'sm' | 'md' | 'lg'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "'sm'" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Size of the right icon" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "isRounded" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "boolean" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "false" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Apply rounded corners" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "showDateIcon" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "boolean" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "true" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Show calendar icon for date inputs" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "minDate" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "string" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Minimum allowed date" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "maxDate" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "string" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Maximum allowed date" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "isInvalid" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "boolean" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "false" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Show invalid state" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "errorMessage" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "string" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Error message to display" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "showPasswordToggle" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "boolean" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "false" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Enable password visibility toggle" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "className" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "string" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "undefined" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "Additional CSS classes" })] }), _jsxs("tr", { children: [_jsx("td", { className: "p-2 border-b border-border font-medium text-text-primary font-mono", children: "...props" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-primary-300", children: "HTMLInputProps | HTMLTextareaProps" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary font-mono text-secondary", children: "-" }), _jsx("td", { className: "p-2 border-b border-border text-text-secondary", children: "All standard HTML input/textarea props" })] })] })] }) }) })] }), _jsxs("section", { className: "mb-12", children: [_jsx(Typography, { variant: "h2", size: "lg", weight: "semibold", className: "mb-4", children: "Best Practices" }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [_jsxs(Card, { variant: "neutral", style: "elevated", className: "p-6", children: [_jsx(Typography, { variant: "h3", size: "md", weight: "semibold", className: "mb-4", children: "\u2705 Do" }), _jsxs("ul", { className: "list-none p-0 m-0", children: [_jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Use appropriate input types (email, password, etc.)" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Provide clear placeholder text" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Use icons to enhance visual clarity" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Show validation states clearly" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Use helper text for complex inputs" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Make inputs accessible with proper labels" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-primary", children: "Use controlled inputs for form state management" })] })] }), _jsxs(Card, { variant: "neutral", style: "elevated", className: "p-6", children: [_jsx(Typography, { variant: "h3", size: "md", weight: "semibold", className: "mb-4", children: "\u274C Don't" }), _jsxs("ul", { className: "list-none p-0 m-0", children: [_jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use vague placeholder text" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use too many icons in one input" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use rounded inputs for formal applications" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't disable inputs without clear indication why" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use validation states without proper feedback" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use inputs without proper labels" }), _jsx("li", { className: "py-1 text-text-secondary relative pl-4 before:content-[''] before:absolute before:left-0 before:top-1/2 before:transform before:-translate-y-1/2 before:w-1.5 before:h-1.5 before:rounded-full before:bg-error", children: "Don't use uncontrolled inputs for important forms" })] })] })] })] })] }) })); };