Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:05:04 +08:00
commit 7afdd6601b
69 changed files with 9552 additions and 0 deletions

95
docs/form-inputs/input.md Normal file
View File

@@ -0,0 +1,95 @@
# Input Component Documentation
## Overview
The Input component represents a fundamental UI element within the toolkit, supporting multiple visual presentations, dimensions, and operational states.
## Props Configuration
### InputRoot Properties
| Property | Type | Default | Purpose |
|----------|------|---------|---------|
| `size` | `'sm' \| 'base' \| 'lg'` | `'base'` | Adjusts input dimensions |
| `state` | `'default' \| 'error'` | `'default'` | Visual feedback styling |
| `side` | `'left' \| 'center' \| 'right'` | — | Text positioning and cursor placement |
| `inputClassName` | `string` | — | Custom classes for inner input element |
| Standard input attributes | `ComponentProps<'input'>` | — | Native HTML input properties |
### InputSlot Properties
| Property | Type | Default | Purpose |
|----------|------|---------|---------|
| `side` | `'left' \| 'right'` | `'left'` | Slot positioning |
| Standard div attributes | `ComponentProps<'div'>` | — | Native HTML div properties |
## Type Definitions
```typescript
interface InputRootProps extends ComponentProps<"div">, VariantProps<typeof inputVariants> {
state?: "default" | "error";
side?: "left" | "right" | "center";
asChild?: boolean;
inputClassName?: string;
size?: "sm" | "base" | "lg";
}
interface InputSlotProps extends ComponentProps<"div"> {
side?: "left" | "right";
}
```
## Text Alignment Options
The component accommodates three alignment directions: left (default), center, and right. Slot components enable prefixes and suffixes through positioned elements.
## State Management
**Default State**: Standard appearance for typical interactions
**Error State**: Visual indication for validation failures and user feedback
**Disabled State**: Prevents user interaction and modification
## Input Type Examples
- **Text Input**: Standard character input
- **Number Input**: Numeric values with optional currency symbols
- **Password Input**: Masked character display
- **Email Input**: Email-specific validation
- **Search Input**: Search functionality with supplementary icons
## Interactive Examples
### Character Counter Implementation
```javascript
const [value, setValue] = useState('');
const [count, setCount] = useState(0);
return (
<InputRoot
size="sm"
placeholder="Type something..."
value={value}
onChange={(e) => {
setValue(e.target.value);
setCount(e.target.value.length);
}}
/>
);
```
### Calculation Feature
Combines price and quantity inputs for real-time total computation:
```javascript
const [price, setPrice] = useState('');
const [quantity, setQuantity] = useState('');
const total = (parseFloat(price) || 0) * (parseInt(quantity) || 0);
```
### Form Validation Pattern
Implements error detection and submission handling through state management and conditional styling based on validation results.