# TallStackUI: Pin
> TallStackUI is a TALL Stack (Tailwind CSS, Alpine.js, Laravel, Livewire)
> component library providing 65+ Blade components for building modern web interfaces.
A PIN/OTP input component that renders individual character boxes with automatic focus navigation, paste support, optional numeric or letter-only masks, a static prefix, and a clear button.
## Basic Usage
```blade
```
```blade
```
```blade
```
```blade
```
```blade
```
## Attributes
| Attribute | Type | Default | Description |
|------------|-----------------------------|---------|-------------------------------------------------------------------------------------|
| label | string\|ComponentSlot\|null | null | Label text displayed above the pin input |
| hint | string\|ComponentSlot\|null | null | Hint text displayed below the pin input |
| length | int\|null | null | Number of pin input boxes (required) |
| prefix | string\|null | null | Static text prefix displayed before the pin boxes (max 3 characters) |
| clear | bool\|null | null | Shows a clear button to reset all pin inputs |
| invalidate | bool\|null | null | Prevents displaying validation error messages |
| numbers | bool\|null | null | Restricts input to numbers only (applies Alpine.js mask) |
| letters | bool\|null | null | Restricts input to letters only (applies Alpine.js mask) |
| smart | bool\|null | null | Enables smart paste: automatically distributes a pasted string across all pin boxes |
## Alpine.js Events
| Event | Description |
|-------------|--------------------------------------------|
| x-on:filled | Triggered when all pin boxes are filled |
| x-on:clear | Triggered when the clear button is clicked |
## Validation Constraints
- The `length` is mandatory and must be set.
- The `prefix` must be 3 characters or less.
## Event Payload Details
```blade
```
### Smart Auto-Submit
When `smart` is enabled, the form auto-submits when all pin fields are filled:
```blade
```
## Soft Customization
Soft customization allows you to override default Tailwind CSS classes used by this component at runtime, either through a service provider or scoped per-instance.
### Customization
```php
TallStackUi::customize()
->form('pin')
->block('input.base', 'your-tailwind-classes');
```
### Available Blocks
| Block Name | Purpose |
|------------------------|--------------------------------------------------------|
| wrapper | Outer flex container for pin boxes |
| input.size.prefix | Width of the prefix input box |
| input.size.base | Width of each pin input box |
| input.base | Core pin input styles (rounding, text alignment, font) |
| input.color.base | Default border, ring, and text colors |
| input.color.background | Background color |
| input.color.error | Error state border, ring, and text colors |
| button | Clear button icon size and color |