@rozie-ui/captcha-lit
v0.1.3
Published
Idiomatic Lit Captcha — one Rozie source compiled to Lit.
Maintainers
Readme
@rozie-ui/captcha-lit
Idiomatic lit Captcha — Cross-framework CAPTCHA / bot-protection widget wrapping Google reCAPTCHA v2, hCaptcha, and Cloudflare Turnstile. Compiled from one Rozie source. This package is generated; do not edit src/ by hand.
This package ships Captcha (the default export) alongside RecaptchaV3 (named export).
Install
npm i @rozie-ui/captcha-litPeer dependencies: lit.
Captcha
Usage
import '@rozie-ui/captcha-lit';
// <rozie-captcha> is a custom element.
const el = document.querySelector('rozie-captcha');
el.provider = 'turnstile';
el.sitekey = 'your-site-key';
el.addEventListener('verify', (e) => console.log('verified', e.detail.token));Props
| Name | Type | Default | Two-way (model) | Required |
| --- | --- | --- | :---: | :---: |
| provider | String | "recaptcha" | | |
| sitekey | String | — | | ✓ |
| token | String | "" | ✓ | |
| theme | String | "light" | | |
| size | String | "normal" | | |
| tabindex | Number | null | | |
| options | Object | {} | | |
Events
| Event | Description |
| --- | --- |
| verify | Fired when the user completes the challenge. Payload { token, provider }. |
| expire | Fired when the verified token expires. Payload { provider }. |
| error | Fired on a challenge or script-load failure. Payload { provider, error? }. |
Imperative handle
This component exposes imperative methods (declared once in the Rozie source via $expose). Grab a handle with the native ref mechanism and call them directly:
// The custom element IS the handle — its exposed methods are public element methods.
document.querySelector('rozie-captcha');| Method | Description |
| --- | --- |
| reset | Reset the widget to its un-challenged state and clear the two-way token. |
| execute | Programmatically run the challenge — drives invisible widgets (size="invisible"). |
| getResponse | Return the current response token on demand (e.g. just before form submit). |
RecaptchaV3
Usage
import { RecaptchaV3 } from '@rozie-ui/captcha-lit';
// <rozie-recaptcha-v3> is a custom element; the element IS the handle.
const captcha = document.querySelector('rozie-recaptcha-v3') as RecaptchaV3;
async function submit() {
const token = await captcha.execute('signup'); // fresh token for THIS action
await fetch('/signup', { method: 'POST', body: JSON.stringify({ token }) });
}Props
| Name | Type | Default | Two-way (model) | Required |
| --- | --- | --- | :---: | :---: |
| sitekey | String | — | | ✓ |
| action | String | "submit" | | |
| token | String | "" | ✓ | |
| executeOnMount | Boolean | false | | |
Events
| Event | Description |
| --- | --- |
| error | Fired on a load timeout, script error, or a rejected execute(). Payload { error? }. |
| verify | Fired on a successful execute(). Payload { token, action }. |
Imperative handle
This component exposes imperative methods (declared once in the Rozie source via $expose). Grab a handle with the native ref mechanism and call them directly:
// The custom element IS the handle — execute() is a public element method.
const el = document.querySelector('rozie-recaptcha-v3');
// const token = await el.execute('submit');| Method | Description |
| --- | --- |
| execute | Run a v3 challenge for the optional action (defaults to the action prop) and resolve with a fresh token; also writes the two-way token and emits @verify. |
