@tachui/forms
v0.8.1-alpha
Published
Unified form components and validation system for tachUI (formerly @tachui/forms + @tachui/advanced-forms)
Maintainers
Readme
@tachui/forms
Comprehensive form components and validation system for tachUI - unified package combining all form functionality.
What's New in v2.0
- Unified Package: All 27 form components in one optimized package
- 20% Bundle Reduction: From 488KB to ~390KB through build optimization
- Tree Shaking: Import only the components you need
- Backwards Compatible: Maintains all existing APIs
Installation
pnpm add @tachui/formsQuick Start
import { Form, TextField, DatePicker, validation } from '@tachui/forms'
// Or use granular imports for optimal bundle size
import { TextField } from '@tachui/forms/text-input'
import { DatePicker } from '@tachui/forms/date-picker'
import { required, email } from '@tachui/forms/validation'Components (27 total)
Form Container (2 components)
Form- Form state management and submissionFormSection- Logical grouping of form fields
Text Input (14 components)
TextField- Basic text inputTextArea- Multi-line text inputEmailField- Email validation and formattingPasswordField- Password input with visibility toggleSearchField- Search input with clear buttonURLField- URL validation and formattingPhoneField- Phone number formatting and validationNumberField- Numeric input with validationCreditCardField- Credit card formatting and validationSSNField- Social Security Number formattingPostalCodeField- Postal/ZIP code validationDateField- Simple date text inputTimeField- Time input and validationColorField- Color picker input
Selection (8 components)
Checkbox- Single checkbox inputCheckboxGroup- Multiple checkbox groupSwitch- Toggle switch inputRadio- Single radio buttonRadioGroup- Radio button groupSelect- Single select dropdownMultiSelect- Multiple selection dropdownCombobox- Searchable select input
Advanced (3 components)
DatePicker- Rich calendar interfaceStepper- Numeric increment/decrementSlider- Range input with marks
Tree-Shaking Examples
// Import entire package (390KB)
import { TextField, DatePicker, validation } from '@tachui/forms'
// Import specific categories (~180KB for text inputs)
import * as TextInputs from '@tachui/forms/text-input'
import * as Validation from '@tachui/forms/validation'
// Import individual components (~20-30KB each)
import { TextField } from '@tachui/forms/text-input'
import { required, email } from '@tachui/forms/validation'Migration from v1.x
From @tachui/forms + @tachui/advanced-forms
// Old approach (488KB total)
import { TextField, Form } from '@tachui/forms'
import { DatePicker, Stepper } from '@tachui/advanced-forms'
// New unified approach (390KB total)
import { TextField, Form, DatePicker, Stepper } from '@tachui/forms'
// Or with tree-shaking (as needed)
import { TextField, Form } from '@tachui/forms/text-input'
import { DatePicker } from '@tachui/forms/date-picker'
import { Stepper } from '@tachui/forms/advanced'Backwards Compatibility
All existing APIs remain unchanged. Migration is optional and can be done incrementally.
Validation System
Comprehensive validation with 20+ built-in rules:
import { validation } from '@tachui/forms'
const schema = validation.object({
email: validation.string().email().required(),
password: validation.string().min(8).required(),
confirmPassword: validation.string().matches('password'),
age: validation.number().min(18).max(120),
})Bundle Size Comparison
| Package | v1.x (Split) | v2.0 (Unified) | Savings | | -------------- | -------------- | -------------- | --------- | | Text Inputs | 149KB | 120KB | 19% | | Advanced Forms | 268KB | 80KB | 70% | | Date Picker | Included above | 60KB | Optimized | | Total | 488KB | 390KB | 20% |
