mirror of
https://github.com/logos-co/logos-web.git
synced 2026-08-27 12:11:14 +00:00
* feat: add @repo/funnel package for shared hear-about constants Single source of truth for the "How did you first hear about Logos?" question, options, and id -> label map used by apps/web and apps/civi-crm. * feat: map hear-about answer to a Notion select on intake Unknown option ids are dropped so tampering cannot create new select options; field defs without a CiviCRM fieldName are skipped in buildAfformValues so the Afform payload is unchanged. * feat: add required hear-about field to the three funnel forms Injected below the chat name/service row on coalition-partner, activist-builder and activist-leader-steward. Web/Notion-only: defs without a fieldName are filtered out of the CiviCRM fields payload. * docs: document hear-about field in funnel reference * refactor: extract resolveHearAboutLabel from Notion builder Share the option-id -> label resolution so the route can reuse the builder's exact accept/write predicate. * fix: enforce required hear-about field server-side Reject funnel submissions whose hear-about answer is missing or not a known option id, instead of relying on client-side validation alone.
19 lines
448 B
JSON
19 lines
448 B
JSON
{
|
|
"name": "@repo/funnel",
|
|
"private": true,
|
|
"type": "module",
|
|
"exports": {
|
|
".": "./src/index.ts"
|
|
},
|
|
"scripts": {
|
|
"lint": "eslint . --config ../../packages/config/eslint/base.mjs --max-warnings 0",
|
|
"lint:fix": "eslint . --config ../../packages/config/eslint/base.mjs --fix",
|
|
"check-types": "tsc --noEmit"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^24.12.4",
|
|
"eslint": "^10.2.1",
|
|
"typescript": "^6.0.3"
|
|
}
|
|
}
|