mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-30 14:58:08 +00:00
The last 39 errors were not noise — most marked v8 props that silently did nothing at runtime: - gui 8 renamed `animation` to `transition`; the old name was inert in JSX spreads, so faq's disclosure and page-kit's rise had no easing at all. - v4 media keys are mobile-first: `$gtSm`/`$gtLg` no longer exist, so the wide gutter and grid columns never applied. Now `$sm`/`$lg`. - ModelStatus comparisons tested `contact-sales`/`coming-soon`, which the @zenlm/models union does not contain: dead in both directions — no badge ever rendered, and 8 weightless models linked to fabricated huggingface.co/zenlm/<id> 404s. `cloud-only` is the real status. - gui TextArea emits the VALUE, not a DOM event — onChange handlers typed for textarea routed nothing; now onChangeText. - `theme="active"` names a sub-theme this config does not declare; the primary Export button looked identical to Filter. Emphasis from tokens. - Raw CSS (color-mix, var() tracking/leading, display:grid) moves to the `style` prop — gui's escape hatch — instead of posing as tokens. - hooks/use-toast.ts deleted: the last shadcn artefact; its 3 callers now use @hanzo/ui's toast. - sitemap: explicit encoding on both readdirSync calls, or @types/node resolves the Buffer overloads. tsc: 743 -> 0. typescript.ignoreBuildErrors and eslint.ignoreDuringBuilds are DELETED from next.config.mjs; the build now runs both and exits 0 (709 pages; /models count follows the live catalog — 374 models today). Homepage 46,904 bytes, zero inline <style>. Co-authored-by: Hanzo Dev <[email protected]>
18 lines
1.0 KiB
TypeScript
18 lines
1.0 KiB
TypeScript
/**
|
|
* Canonical A2P consent copy. This EXACT disclosure is reused at every point
|
|
* where Hanzo collects a phone number for messaging — the public opt-in form at
|
|
* /sms-opt-in, and the phone-login / 2FA step in IAM (iam.hanzo.ai) and
|
|
* hanzo.id. Keep the three surfaces in sync; carriers/Twilio review the wording.
|
|
*
|
|
* It lives here rather than in the page because an App Router route module may
|
|
* only export the route contract (default, metadata, generateStaticParams, …).
|
|
* Anything else fails Next's generated route type — which is the right rule:
|
|
* shared copy is not part of a route's interface.
|
|
*/
|
|
export const SMS_CONSENT_TEXT =
|
|
"I agree to receive text messages (SMS) from Hanzo AI at the number provided, " +
|
|
"including one-time passcodes and two-factor authentication, account and security " +
|
|
"alerts, and transactional notifications. Message frequency varies. Message and data " +
|
|
"rates may apply. Reply STOP to opt out at any time, or HELP for help. Consent is not " +
|
|
"a condition of any purchase."
|