mirror of
https://github.com/hanzoai/form.js.git
synced 2026-09-30 21:50:42 +00:00
master
A version written into a manifest is written into every manifest that wants it, which is how eslint came to exist in a hundred and four forms across this estate and how a package came to resolve twice at run time. The catalog moves the number out of the manifest: a manifest names the package, the workspace names the version. Four are held below their latest because the newer release cannot be used, and the reason is recorded rather than the version alone: @noble/hashes 2 renamed every subpath the web3 stack imports, @splinetool/runtime 2 depends on a package that was never published, @dynamic-labs 5.4.1 the same, and react-resizable-panels 3 points its types condition at the bundle. Co-authored-by: Hanzo Dev <[email protected]>
Form.js
Automagic form validation and submission.
Install
npm install form.js
Or drop it inside a <form> and let it wire itself to the surrounding fields:
<form>
<script src="https://unpkg.com/form.js" data-key="pk_live_…"></script>
<input name="email">
<button type="submit">Sign up</button>
</form>
Submission
Without a key, form.js is a thin controller around the surrounding form: it emits lifecycle events and hands control back to your page. Set a Hanzo publishable key on the script tag and it POSTs the serialized form to the Hanzo forms ingest instead:
POST https://api.hanzo.ai/v1/forms
Authorization: Bearer pk_live_…
Content-Type: application/json
{ "email": "[email protected]", "metadata": { "name": "Ada" } }
Script-tag options (all data-*):
| attribute | purpose |
|---|---|
data-key |
publishable key (pk_live_… / pk_test_…) |
data-token |
@hanzo/iam access token (takes precedence over key) |
data-endpoint |
override the full submission URL |
data-host |
override the API host (default https://api.hanzo.ai) |
Events
window.Inform is an event emitter — listen with Inform.on / Inform.once:
| event | Inform.Events |
arguments |
|---|---|---|
init-inform-script |
InitScript |
the <script> element |
init-inform-form |
InitForm |
the <form> element |
init-inform-inputs |
InitInputs |
array of input/select nodes |
init-inform-submits |
InitSubmits |
array of submit buttons |
inform-submit |
OnSubmit |
unmanaged: (done, event); managed: (payload, event) |
inform-done |
OnDone |
the submit event, or the API response (managed) |
inform-error |
OnError |
submission error (managed) |
In unmanaged mode, call done() from your OnSubmit listener to let the native
form submit proceed.
License
Languages
CoffeeScript
55.1%
JavaScript
35.7%
HTML
9.2%