Same core, Angular bindings
The library is a plain async function with no framework dependency. This page renders with Angular through a ~20-line injectable service; the React example is the same wrapper as a hook.
The whole binding
@Injectable({ providedIn: "root" })
export class CheckinService {
readonly status = signal<Status>("idle");
readonly response = signal<SmartCheckinResponse | undefined>(undefined);
async request(input, options?) {
this.status.set("waiting");
try {
this.response.set(await requestCheckin(input, options));
this.status.set("done");
} catch (e) {
this.status.set(
e instanceof CheckinFlowError && e.outcome.status === "declined"
? "declined" : "error");
}
}
}
Compiled in the browser (JIT) so this page needs no Angular build step — which is why the bundle is large. A real app compiles ahead of time and ships only its own code plus this library.