npm package: @formwerk/core
Description: <p align="center"> <picture>   <source media="(prefers-color-scheme: dark)" srcset="https://formwerk.dev/logo-dark.svg">   <source media="(prefers-color-scheme: light)" srcset="https://formwerk.dev/logo-light.svg">   <img alt="Formwerk Logo" src="https://
Author: Abdelrahman Awad
Latest version: 0.14.4

<p align="center">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://formwerk.dev/logo-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset="https://formwerk.dev/logo-light.svg">
  <img alt="Formwerk Logo" src="https://formwerk.dev/logo-dark.svg" width="340">
</picture>
</p>

<p align="center">
  <a href="https://npmjs.com/package/@formwerk/core">
    <img alt="NPM Version" src="https://img.shields.io/npm/v/%40formwerk%2Fcore">
  </a>
  <a href="https://npmjs.com/package/@formwerk/core">
    <img alt="NPM Downloads" src="https://img.shields.io/npm/dm/%40formwerk%2Fcore">
  </a>
  <a href="https://formwerk.dev">
    <img src="https://img.shields.io/badge/Documentation-02B361?logo=gitbook&logoColor=white" alt="Documentation">
  </a>
  <a href="https://discord.gg/gQ7wqpvT5X">
    <img src="https://img.shields.io/discord/1198932605740003388?logo=discord&logoColor=white" alt="Discord">
  </a>
  <img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/formwerkjs/formwerk/ci.yml?logo=githubactions&logoColor=white">
  <a href="https://github.com/sponsors/logaretm">
    <img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/logaretm?logo=githubsponsors&logoColor=white">
  </a>
  <img alt="License" src="https://img.shields.io/github/license/formwerkjs/formwerk">
  <a href="https://bluesky.social/formwerk.dev">
    <img alt="Follow us on BlueSky" src="https://img.shields.io/badge/Follow%20formwerk.dev-0284c7?style=flat&logo=bluesky&logoColor=white">
  </a>
  <a href="https://x.com/useformwerk">
    <img alt="Follow us on X (formerly Twitter)" src="https://img.shields.io/badge/Follow%20@useformwerk-4b5563?style=flat&logo=x">
  </a>
</p>

<p align="center">
  <a href="https://github.com/sponsors/logaretm">
    <img src='https://sponsors.logaretm.com/sponsors.svg'>
  </a>
</p>

# Formwerk

Formwerk is a Vue.js framework that simplifies forms by providing a comprehensive suite of composables for building accessible, high-quality, and scalable form components.

Unlike other libraries, Formwerk deliberately excludes UI components, recognizing that design needs vary across projects. Instead, it provides a rock-solid foundation of accessibility, validation, state management, and interaction patterns that work seamlessly with your custom styling. This separation allows you to maintain complete creative control while ensuring your forms meet the highest standards of functionality and user experience.

With Formwerk as your foundation, you get high-quality form capabilities without compromising on flexibility. Whether you're creating a design system or a standalone application, Formwerk handles the intricate details of forms, empowering you to create forms that are delightful to use.

## ✨ Features

- 📦 **Comprehensive**: Ready-made composables for all common form elements.
- ♿ **Accessible**: ARIA compliant with full keyboard navigation and semantic markup.
- 🌐 **i18n Ready**: Built-in internationalization with RTL and number formatting support.
- 🔌 **Headless Architecture**: Build form components with complete control over markup and styling.
- ✅ **Form Validation**: Native HTML5 and [Standard Schema](https://github.com/standard-schema/standard-schema) libraries support.
- 🎨 **Styling Agnostic**: Works with any CSS framework or plain CSS.
- 🎮 **Built-in Behaviors**: Native-like keyboard interactions and focus management.
- 🏗 **Organization**: Form groups and repeatable field arrays.
- ⚡ **SSR Ready**: Full support for Server Side Rendering environments.
- 🔄 **State Management**: Automatic form state and value tracking.
- 🌳 **Tree-shakable**: Only include the composables you actually use.
- 🎯 **Type Safe**: Full TypeScript support with generic typing.

## 📚 Documentation

You can find the [documentation and demos here](https://formwerk.dev).

## 🤝 Contributing

You can contribute to Formwerk by reporting bugs, suggesting features, or submitting code changes. If you wish to submit code changes, please first discuss the change you wish to make via [GitHub issues](https://github.com/formwerkjs/formwerk/issues), [Discord](https://discord.gg/gQ7wqpvT5X), or any other method.

You can visit the [contributing guide](./CONTRIBUTING.md) for more information on how to contribute to Formwerk and how to get started.

## 📝 Credits

Formwerk takes great inspiration from multiple projects in the ecosystem, most notably:

- [React Aria](https://react-spectrum.adobe.com/)
- [VeeValidate](https://vee-validate.logaretm.com/)

## ⚖️ License

Formwerk is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.