https://github.com/bjornpagen/hono-forms
hono-forms is a powerful and flexible library designed to simplify form creation and validation in Hono applications. It provides an intuitive API for building forms, generating HTML, and handling form submissions with built-in validation using Zod.
https://github.com/bjornpagen/hono-forms
Last synced: about 2 months ago
JSON representation
hono-forms is a powerful and flexible library designed to simplify form creation and validation in Hono applications. It provides an intuitive API for building forms, generating HTML, and handling form submissions with built-in validation using Zod.
- Host: GitHub
- URL: https://github.com/bjornpagen/hono-forms
- Owner: bjornpagen
- License: 0bsd
- Created: 2024-08-05T16:27:51.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-08-09T20:38:54.000Z (10 months ago)
- Last Synced: 2025-03-12T23:33:45.601Z (2 months ago)
- Language: TypeScript
- Homepage:
- Size: 68.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hono-forms
A form builder and validator library for Hono applications
## Description
hono-forms is a powerful and flexible library designed to simplify form creation and validation in Hono applications. It provides an intuitive API for building forms, generating HTML, and handling form submissions with built-in validation using Zod.
## Features
- Easy-to-use form builder API
- Automatic HTML generation for forms
- Built-in validation using Zod
- TypeScript support
- Seamless integration with Hono applications## Installation
```bash
npm install hono-forms
```## Usage
Here's a basic example of how to use hono-forms:
```typescript
import { Hono } from "hono"
import { FormBuilder } from "hono-forms"const app = new Hono()
const loginForm = new FormBuilder("/login", "POST")
.addText("username", "Username", { minLength: 3, maxLength: 20 })
.addPassword("password", "Password", { minLength: 8 })
.setSuccessHandler(async (c) => {
// Handle successful form submission
return c.text("Login successful")
})
.setErrorHandler(async (c, error) => {
// Handle validation errors
return c.text(`Login failed: ${error.message}`)
})
.build()app.get("/login", (c) => c.html(loginForm.render()))
loginForm.decorateRoute(app)export default app
```## API Reference
### `FormBuilder`
The main class for building forms.
#### Methods
- `addText(name: string, label: string, options?: TextFieldOptions): FormBuilder`
- `addPassword(name: string, label: string, options?: PasswordFieldOptions): FormBuilder`
- `addEmail(name: string, label: string, options?: EmailFieldOptions): FormBuilder`
- `addNumber(name: string, label: string, options?: NumberFieldOptions): FormBuilder`
- `addCheckbox(name: string, label: string, options?: CheckboxFieldOptions): FormBuilder`
- `addSelect(name: string, label: string, options: SelectFieldOptions): FormBuilder`
- `setSuccessHandler(fn: SuccessHandler): FormBuilder`
- `setErrorHandler(fn: ErrorHandler): FormBuilder`
- `build(): Form`### `Form`
The result of building a form with `FormBuilder`.
#### Methods
- `render(options?: RenderOptions): string`
- `decorateRoute(app: Hono): void`## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the 0BSD License - see the [LICENSE](LICENSE) file for details.
## Author
Bjorn Pagen <[email protected]>
## Links
- [GitHub Repository](https://github.com/bjornpagen/hono-forms)
- [npm Package](https://www.npmjs.com/package/@bjornpagen/hono-forms)
- [Hono Framework](https://hono.dev/)
- [Zod Validation Library](https://github.com/colinhacks/zod)