@evelan/jexity-widget 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,10 +10,15 @@ interface MagiclineFormMessageProps {
10
10
  * Three states driven by `message.magiclineForm.status`:
11
11
  * - `submitted` → read-only success card (NOT re-submittable).
12
12
  * - `failed` → read-only failure card.
13
- * - `open` → renders the interactive trial form. v1 is trial-only — the
13
+ * - `open` → renders the interactive form: `trialSessionBooking`
14
+ * TrialSessionBookingForm, `contractCreation` → ContractCreationForm. The
14
15
  * dormant `leadApplication` action is intentionally NOT routed (the file stays
15
16
  * on disk but is no longer imported).
16
17
  *
18
+ * `contractCreation` is routed for EVERY status (not just `open`): its submit
19
+ * action flips the row to `submitted` at claim time, so the form must stay
20
+ * mounted to render its own result envelope (customer number / terminal notice).
21
+ *
17
22
  * 409 retry: when a `slot_unavailable` 409 reopens the form (status flips
18
23
  * back to `open` while the linked submission carries `errorCode === "slot_unavailable"`),
19
24
  * the form shows a "pick another time" notice and reloads slots. This is detected
@@ -1 +1 @@
1
- {"version":3,"file":"MagiclineFormMessage.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/MagiclineFormMessage.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAExE,UAAU,yBAAyB;IACjC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAA;IAC7B,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,yBAAyB,uCAyEhG"}
1
+ {"version":3,"file":"MagiclineFormMessage.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/components/MagiclineFormMessage.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAExE,UAAU,yBAAyB;IACjC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,CAAA;IAC7B,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,yBAAyB,uCAgGhG"}
@@ -0,0 +1,34 @@
1
+ import type { Id } from '@repo/backend/convex/_generated/dataModel';
2
+ interface ContractCreationFormProps {
3
+ formMessageId: Id<'conversations'>;
4
+ sessionId: Id<'contactSessions'>;
5
+ visitorId: string;
6
+ projectId: Id<'projects'>;
7
+ /**
8
+ * The reactive form-row status. The submit flips this to `submitted` at claim
9
+ * time, so the LIVE result envelope (held in component state) always wins; this
10
+ * is only consulted when there is no live result — i.e. a resumed/cold session
11
+ * landing on an already-terminal row.
12
+ */
13
+ formStatus: 'open' | 'submitted' | 'failed';
14
+ }
15
+ /**
16
+ * Inline Magicline membership-signup STEP WIZARD. Renders the contract-creation
17
+ * flow as internal steps inside ONE chat card:
18
+ *
19
+ * Offer → Personal → Address → Payment → Review
20
+ *
21
+ * All form state (offers, selected term, personal/address/payment fields,
22
+ * consents, server preview) lives in `useContractCreationState`, mounted ONCE
23
+ * here above the step switch so navigating steps never refetches offers.
24
+ *
25
+ * The submit action is synchronous and authoritative: it claims the submission
26
+ * (which flips the form row to `submitted` reactively), then dispatches and
27
+ * returns a result envelope. Because the reactive flip would otherwise unmount
28
+ * this form mid-await, the component owns its OWN `submitResult` and renders the
29
+ * success / terminal UI from the returned envelope — `MagiclineFormMessage`
30
+ * keeps this form mounted while it owns a live result.
31
+ */
32
+ export declare function ContractCreationForm({ formMessageId, sessionId, visitorId, projectId, formStatus, }: ContractCreationFormProps): import("preact").JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=ContractCreationForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractCreationForm.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chat/components/magicline/ContractCreationForm.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAuBnE,UAAU,yBAAyB;IACjC,aAAa,EAAE,EAAE,CAAC,eAAe,CAAC,CAAA;IAClC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;IACzB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;CAC5C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE,yBAAyB,gCAqb3B"}
@@ -1,3 +1,4 @@
1
+ import type { WidgetStrings } from '../../../../i18n/locales/en';
1
2
  export declare function isValidEmail(value: string): boolean;
2
3
  /**
3
4
  * Whole-years age from an ISO `YYYY-MM-DD` date-of-birth string at `now`.
@@ -20,4 +21,85 @@ export declare function todayIsoDate(now?: Date): string;
20
21
  * default.
21
22
  */
22
23
  export declare function resolvePrivacyUrl(): string;
24
+ /** Strip whitespace and uppercase — the canonical IBAN form for validation. */
25
+ export declare function normalizeIban(raw: string): string;
26
+ /**
27
+ * Client-side IBAN check mirroring the backend `validateIban` exactly:
28
+ * 1. length against the per-country table (or the generic 15–34 bound);
29
+ * 2. the ISO 13616 mod-97 check (move first 4 chars to the end, expand
30
+ * letters A=10..Z=35, chunked reduction to stay in safe-integer range).
31
+ *
32
+ * Pure UX gate — the backend re-validates. The raw IBAN is never logged here.
33
+ */
34
+ export declare function isValidIban(raw: string): boolean;
35
+ /**
36
+ * Mask an IBAN for the review summary: show the first 4 and last 4 characters
37
+ * of the normalized value, bullets in between, regrouped into 4-char blocks.
38
+ * e.g. `DE89 3704 0044 0532 0130 00` → `DE89 •••• •••• •••• •••• 00`. Used for
39
+ * display ONLY — the raw IBAN never leaves component memory through this path.
40
+ */
41
+ export declare function maskIban(raw: string): string;
42
+ /**
43
+ * Format a Magicline money amount with its currency code, localised to the
44
+ * widget locale. Magicline rate-bundle / flat-fee prices are decimal MAJOR
45
+ * units (e.g. `29` → "29,00 €"), so the value is rendered as-is — never divided.
46
+ * Falls back to a bare numeric string when the currency code is unsupported by
47
+ * the runtime's `Intl`.
48
+ */
49
+ export declare function formatContractMoney(amount: number, currencyCode: string, widgetLocale: 'en' | 'de'): string;
50
+ /**
51
+ * Localised "{value} {unit}" period label, e.g. "12 months" / "12 Monate". The
52
+ * Magicline period unit is an uppercase enum (`DAY` / `WEEK` / `MONTH` / `YEAR`);
53
+ * unknown units fall back to a lowercased raw unit so the label degrades safely.
54
+ */
55
+ export declare function formatContractPeriod(value: number, unit: string, widgetLocale: 'en' | 'de'): string;
56
+ /**
57
+ * Format an ISO date (`YYYY-MM-DD` or a full datetime) for display in the
58
+ * review summary, localised to the widget locale. Falls back to the raw value
59
+ * when unparseable so a malformed start date never blanks the summary row.
60
+ */
61
+ export declare function formatContractDate(isoDate: string, widgetLocale: 'en' | 'de'): string;
62
+ /**
63
+ * Recurring-price frequency suffix for a rate-bundle term price, e.g.
64
+ * "per week" / "pro Woche" (value === 1) or "every 3 weeks" / "alle 3 Wochen"
65
+ * (value > 1). Used as a suffix after a formatted money amount in offer cards
66
+ * and the review base-price line.
67
+ *
68
+ * Supported units: DAY / WEEK / MONTH / YEAR (Magicline uppercase enum).
69
+ * Unknown units fall back to a lowercased raw unit so the label degrades safely.
70
+ */
71
+ export declare function formatPaymentFrequency(value: number, unit: string, widgetLocale: 'en' | 'de'): string;
72
+ /**
73
+ * Formatted price label for an optional module, combining the money amount with
74
+ * the appropriate frequency or type suffix. Mirrors Fit Inn's formatPriceLabel.
75
+ *
76
+ * paymentFrequencyType values:
77
+ * "TERM_BASED" → "{money} per term"
78
+ * "RECURRING" → "{money} " + formatPaymentFrequency(1, recurringUnit)
79
+ * "NON_RECURRING" → "{money} one-time"
80
+ * "MONTH_DAY" → "{money} one-time"
81
+ * "FREE" → "included"
82
+ * null / other → bare money string
83
+ */
84
+ export declare function formatModulePrice(amount: number, currencyCode: string, paymentFrequencyType: string | null, recurringUnit: string | null, widgetLocale: 'en' | 'de'): string;
85
+ /**
86
+ * Localize a raw Magicline flat-fee name. When the normalized name is in the
87
+ * known-fee map, the locale string for that key is returned. Otherwise the
88
+ * original raw name is returned unchanged so unmapped fees degrade safely.
89
+ */
90
+ export declare function localizeFeeName(rawName: string, t: WidgetStrings): string;
91
+ /**
92
+ * Renewal label for an optional module extension type. Returns an empty string
93
+ * when the type produces no visible renewal line (SUBSEQUENT_RATE_DETAIL, null).
94
+ *
95
+ * extensionType values:
96
+ * "NONE" → "No automatic renewal"
97
+ * "TERM_EXTENSION" → "Renewal: {n} {unit}" (via the period table)
98
+ * "SUBSEQUENT_RATE_DETAIL"→ "" (no line rendered)
99
+ * null → "" (no line rendered)
100
+ */
101
+ export declare function formatModuleRenewal(extensionType: string | null, termExtension: {
102
+ value: number;
103
+ unit: string;
104
+ } | null, widgetLocale: 'en' | 'de'): string;
23
105
  //# sourceMappingURL=formUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formUtils.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chat/components/magicline/formUtils.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,GAAG,IAAI,CA8BrF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAK3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
1
+ {"version":3,"file":"formUtils.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chat/components/magicline/formUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAQhE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,GAAG,IAAI,CA8BrF;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAK3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AA4BD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgChD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,IAAI,GAAG,IAAI,GACxB,MAAM,CAUR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,IAAI,GAAG,IAAI,GACxB,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAWrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,IAAI,GAAG,IAAI,GACxB,MAAM,CAuBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,oBAAoB,EAAE,MAAM,GAAG,IAAI,EACnC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,YAAY,EAAE,IAAI,GAAG,IAAI,GACxB,MAAM,CAmBR;AAeD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAOzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,aAAa,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EACrD,YAAY,EAAE,IAAI,GAAG,IAAI,GACxB,MAAM,CAYR"}
@@ -0,0 +1,152 @@
1
+ import { type ContractFlatFee, type ContractPeriod, type ContractPreviewModule, type ContractVolume, type RateBundleTermCard } from '../../hooks/useMagicline';
2
+ import type { Id } from '@repo/backend/convex/_generated/dataModel';
3
+ /**
4
+ * Offers lifecycle. `empty` (healthy, zero eligible terms) is split from
5
+ * `error` (unavailable / network rejection) so the Offer step shows a friendly
6
+ * no-offers message on `empty` and a Retry affordance on `error`.
7
+ */
8
+ export type OffersState = {
9
+ phase: 'loading';
10
+ } | {
11
+ phase: 'ready';
12
+ terms: RateBundleTermCard[];
13
+ } | {
14
+ phase: 'empty';
15
+ } | {
16
+ phase: 'error';
17
+ };
18
+ /**
19
+ * Server-resolved pricing for the Review step. Fetched on entering Review and
20
+ * re-fetched after a `price_changed` outcome. The `fingerprint` is replayed to
21
+ * the submit action so the backend can confirm the price the visitor saw.
22
+ */
23
+ export interface ContractPricing {
24
+ basePrice: number;
25
+ preUseCharge: number;
26
+ currencyCode: string;
27
+ flatFees: ContractFlatFee[];
28
+ modules: ContractPreviewModule[];
29
+ contractVolume: ContractVolume | null;
30
+ startDate: string;
31
+ /** Payment frequency of the revalidated term; renders the base-price period. */
32
+ paymentFrequency: ContractPeriod;
33
+ fingerprint: string;
34
+ }
35
+ /**
36
+ * Preview lifecycle. `idle` is the pre-Review state (no fetch yet). A non-ok
37
+ * preview status is surfaced as the `error` phase carrying the status code so
38
+ * the view can route an `offer_unavailable` back to the Offer step.
39
+ */
40
+ export type PreviewState = {
41
+ phase: 'idle';
42
+ } | {
43
+ phase: 'loading';
44
+ } | {
45
+ phase: 'ready';
46
+ pricing: ContractPricing;
47
+ } | {
48
+ phase: 'error';
49
+ code: 'consent_required' | 'invalid_fields' | 'offer_unavailable' | 'unavailable';
50
+ };
51
+ /** Personal detail fields — all required by the backend. */
52
+ export interface ContractPersonalFields {
53
+ firstName: string;
54
+ lastName: string;
55
+ email: string;
56
+ dateOfBirth: string;
57
+ gender: string;
58
+ phone: string;
59
+ }
60
+ /** Address fields — country is a static "Deutschland"/"Germany", not collected. */
61
+ export interface ContractAddressFields {
62
+ street: string;
63
+ houseNumber: string;
64
+ zipCode: string;
65
+ city: string;
66
+ }
67
+ /**
68
+ * Payment fields. `accountHolderTouched` tracks whether the visitor has edited
69
+ * the account holder so the firstname+lastname prefill only auto-fills once and
70
+ * never clobbers a manual edit. The IBAN lives ONLY here, in memory — it is
71
+ * never persisted to sessionStorage and never logged.
72
+ */
73
+ export interface ContractPaymentFields {
74
+ accountHolder: string;
75
+ accountHolderTouched: boolean;
76
+ iban: string;
77
+ }
78
+ /** Consent flags — both must be accepted before submit. */
79
+ export interface ContractConsentFields {
80
+ privacy: boolean;
81
+ sepa: boolean;
82
+ }
83
+ export interface ContractFormFields {
84
+ termId: number | null;
85
+ /** Chosen paid optional-module ids for the current term. */
86
+ selectedModuleIds: number[];
87
+ /**
88
+ * Acceptance of required confirmations, keyed by ackKey. Carries both contract
89
+ * text-block acknowledgements and selected-module consents — a single source
90
+ * of truth for every gating tick across the wizard.
91
+ */
92
+ acknowledgedBlocks: Record<string, boolean>;
93
+ personal: ContractPersonalFields;
94
+ address: ContractAddressFields;
95
+ payment: ContractPaymentFields;
96
+ consents: ContractConsentFields;
97
+ }
98
+ export interface UseContractCreationStateOptions {
99
+ sessionId: Id<'contactSessions'>;
100
+ visitorId: string;
101
+ }
102
+ export interface ContractCreationState {
103
+ fields: ContractFormFields;
104
+ offersState: OffersState;
105
+ previewState: PreviewState;
106
+ /** The currently selected term card (or null when none is chosen). */
107
+ selectedTerm: RateBundleTermCard | null;
108
+ /**
109
+ * ackKeys that MUST be acknowledged before submit for the current term:
110
+ * required text blocks ∪ the consents of SELECTED modules that carry one.
111
+ */
112
+ requiredAckKeys: string[];
113
+ /** True when every `requiredAckKeys` entry is currently acknowledged. */
114
+ allAcknowledged: boolean;
115
+ setTermId: (termId: number) => void;
116
+ setPersonal: (key: keyof ContractPersonalFields, value: string) => void;
117
+ setAddress: (key: keyof ContractAddressFields, value: string) => void;
118
+ /**
119
+ * Add/remove a paid optional module from the current term. Pass the module's
120
+ * consent ackKey so deselecting clears its acknowledgement in one dispatch.
121
+ */
122
+ toggleModule: (moduleId: number, selected: boolean, consentAckKey?: string) => void;
123
+ /** Set the acknowledgement for a contract block or module consent by ackKey. */
124
+ setBlockAck: (ackKey: string, value: boolean) => void;
125
+ setAccountHolder: (value: string) => void;
126
+ setIban: (value: string) => void;
127
+ setConsent: (key: keyof ContractConsentFields, value: boolean) => void;
128
+ clearIban: () => void;
129
+ /** Clears the selected term so a stale selection does not survive an offer refetch. */
130
+ clearTermId: () => void;
131
+ /** Re-run the offers fetch (Retry button + `offer_unavailable` recovery). */
132
+ refetchOffers: () => void;
133
+ /** Fetch the server pricing for the selected term (called entering Review). */
134
+ fetchPreview: () => void;
135
+ /** Reset the preview back to idle (e.g. when leaving Review). */
136
+ resetPreview: () => void;
137
+ }
138
+ /**
139
+ * Single fetch-once container for the membership-signup wizard.
140
+ *
141
+ * - Offers are fetched ONCE on mount and again on `refetchOffers` (Retry /
142
+ * `offer_unavailable` recovery). A `offersKey` counter drives the effect.
143
+ * - The preview is NOT fetched until `fetchPreview` runs (entering Review). A
144
+ * `previewKey` counter re-runs it for `price_changed` recovery.
145
+ * - The account holder auto-prefills from firstname+lastname the first time both
146
+ * are present and the field is still untouched.
147
+ *
148
+ * The IBAN is held only in this hook's in-memory reducer state — it is never
149
+ * written to sessionStorage and never logged.
150
+ */
151
+ export declare function useContractCreationState({ sessionId, visitorId, }: UseContractCreationStateOptions): ContractCreationState;
152
+ //# sourceMappingURL=useContractCreationState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useContractCreationState.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chat/components/magicline/useContractCreationState.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAEnE;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,kBAAkB,EAAE,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAEtB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAChC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,gBAAgB,EAAE,cAAc,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAC5C;IACE,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,aAAa,CAAA;CAClF,CAAA;AAEL,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,QAAQ,EAAE,sBAAsB,CAAA;IAChC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,OAAO,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,EAAE,qBAAqB,CAAA;CAChC;AAsID,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,YAAY,CAAA;IAC1B,sEAAsE;IACtE,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACvC;;;OAGG;IACH,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,sBAAsB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvE,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,qBAAqB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrE;;;OAGG;IACH,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnF,gFAAgF;IAChF,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,qBAAqB,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACtE,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,uFAAuF;IACvF,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,iEAAiE;IACjE,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,SAAS,GACV,EAAE,+BAA+B,GAAG,qBAAqB,CAqPzD"}
@@ -77,7 +77,7 @@ export declare function useMagiclineSubmit(): import("convex/react").ReactMutati
77
77
  fields: Record<string, string | number | boolean | null>;
78
78
  visitorId: string;
79
79
  sessionId: import("convex/values").GenericId<"contactSessions">;
80
- action: "trialSessionBooking" | "leadApplication";
80
+ action: "trialSessionBooking" | "leadApplication" | "contractCreation";
81
81
  formMessageId: import("convex/values").GenericId<"conversations">;
82
82
  }, {
83
83
  submissionId: import("convex/values").GenericId<"magiclineSubmissions">;
@@ -85,4 +85,224 @@ export declare function useMagiclineSubmit(): import("convex/react").ReactMutati
85
85
  }, string | undefined>>;
86
86
  export declare function useTrialConfig(): GetTrialConfig;
87
87
  export declare function useTrialSlots(): ListTrialSlots;
88
+ /** A one-time / flat fee attached to a rate-bundle term. */
89
+ export interface ContractFlatFee {
90
+ name: string;
91
+ price: number;
92
+ isStarterPackage: boolean;
93
+ paymentFrequencyLabel: string | null;
94
+ identifier: string | null;
95
+ }
96
+ /** Attachment kind carried by a renderable text block. */
97
+ export type ContractAttachmentType = 'NONE' | 'URL' | 'FILE';
98
+ /**
99
+ * A free-text block (terms, conditions) attached to a rate-bundle term. A block
100
+ * flagged `isConfirmationRequired` must be acknowledged before submit; the
101
+ * widget echoes its `ackKey` back in `acknowledgedAckKeys`.
102
+ */
103
+ export interface ContractTextBlock {
104
+ id: number | null;
105
+ title: string;
106
+ text: string;
107
+ isConfirmationRequired: boolean;
108
+ attachmentType: ContractAttachmentType;
109
+ attachmentLabel: string | null;
110
+ attachmentUrl: string | null;
111
+ ackKey: string;
112
+ }
113
+ /** Consent block attached to a single paid optional module. */
114
+ export interface ContractModuleConsent {
115
+ ackKey: string;
116
+ title: string;
117
+ text: string;
118
+ attachmentLabel: string | null;
119
+ attachmentUrl: string | null;
120
+ }
121
+ /** Payment-frequency classification for a paid optional module. */
122
+ export type ModulePaymentFrequencyType = 'RECURRING' | 'NON_RECURRING' | 'MONTH_DAY' | 'TERM_BASED' | 'FREE';
123
+ /** Renewal classification for a paid optional module's duration. */
124
+ export type ModuleExtensionType = 'NONE' | 'TERM_EXTENSION' | 'SUBSEQUENT_RATE_DETAIL';
125
+ /**
126
+ * A paid optional module the visitor can add to a term. `price`/`currencyCode`
127
+ * render with the same money formatter as the base price. When a `consent` is
128
+ * present and the module is selected, its `ackKey` joins the required set. The
129
+ * four display-only fields drive the price/renewal wording: `paymentFrequencyType`
130
+ * + `recurringUnit` come from the payment-frequency path, `extensionType` +
131
+ * `termExtension` from the duration path.
132
+ */
133
+ export interface ContractOptionalModule {
134
+ id: number;
135
+ name: string;
136
+ description: string | null;
137
+ price: number;
138
+ currencyCode: string;
139
+ termLabel: string | null;
140
+ paymentFrequencyType: ModulePaymentFrequencyType | null;
141
+ recurringUnit: 'DAY' | 'WEEK' | 'MONTH' | 'YEAR' | null;
142
+ extensionType: ModuleExtensionType | null;
143
+ termExtension: {
144
+ value: number;
145
+ unit: string;
146
+ } | null;
147
+ consent: ContractModuleConsent | null;
148
+ }
149
+ /** A recurring period (payment frequency / cancellation period). */
150
+ export interface ContractPeriod {
151
+ value: number;
152
+ unit: string;
153
+ }
154
+ /**
155
+ * One selectable membership offer — a rate-bundle TERM card. Terms are grouped
156
+ * by `bundleId` / `bundleName` in the Offer step; each term is the radio-select
157
+ * unit (its `termId` is what the preview + submit actions consume).
158
+ */
159
+ export interface RateBundleTermCard {
160
+ bundleId: number;
161
+ bundleName: string;
162
+ bundleDescription: string | null;
163
+ bundleSubDescription: string | null;
164
+ footnote: string | null;
165
+ termId: number;
166
+ termValue: number;
167
+ termUnit: string;
168
+ price: number;
169
+ currencyCode: string;
170
+ paymentFrequency: ContractPeriod;
171
+ cancellationPeriod: ContractPeriod | null;
172
+ defaultContractStartDate: string | null;
173
+ flatFees: ContractFlatFee[];
174
+ includedModuleNames: string[];
175
+ optionalModules: ContractOptionalModule[];
176
+ textBlocks: ContractTextBlock[];
177
+ }
178
+ /**
179
+ * Result of `getRateBundles`. `ok` carries the eligible term cards (an EMPTY
180
+ * list is still `ok` → the widget shows a friendly no-offers state).
181
+ * `unavailable` covers ownership / availability / network failures.
182
+ */
183
+ export type RateBundlesResult = {
184
+ status: 'ok';
185
+ terms: RateBundleTermCard[];
186
+ } | {
187
+ status: 'unavailable';
188
+ message: string;
189
+ };
190
+ export type GetRateBundles = (args: {
191
+ sessionId: Id<'contactSessions'>;
192
+ visitorId: string;
193
+ }) => Promise<RateBundlesResult>;
194
+ /** Personal + address fields shared by the preview action (no bank data). */
195
+ export interface ContractCustomerFields {
196
+ firstname: string;
197
+ lastname: string;
198
+ email: string;
199
+ dateOfBirth: string;
200
+ gender: string;
201
+ phone: string;
202
+ street: string;
203
+ houseNumber: string;
204
+ zipCode: string;
205
+ city: string;
206
+ }
207
+ /** One selected paid module row in the preview pricing breakdown. */
208
+ export interface ContractPreviewModule {
209
+ moduleId: number;
210
+ name: string;
211
+ amount: number;
212
+ currencyCode: string;
213
+ paymentFrequencyLabel: string | null;
214
+ }
215
+ /** Aggregate contract-volume totals; null when Magicline omits them. */
216
+ export interface ContractVolume {
217
+ total: number | null;
218
+ averagePerMonth: number | null;
219
+ averagePerFrequencyTerm: number | null;
220
+ }
221
+ /**
222
+ * Result of `getContractPreview`. `ok` carries the server-resolved pricing
223
+ * (base, fees, selected `modules`, aggregate `contractVolume`) plus the
224
+ * `pricingFingerprint` the submit action re-verifies. The non-ok branch
225
+ * distinguishes a missing-consent / invalid-field client error from an
226
+ * `offer_unavailable` (re-fetch offers) or a generic `unavailable`.
227
+ */
228
+ export type ContractPreviewResult = {
229
+ status: 'ok';
230
+ basePrice: number;
231
+ preUseCharge: number;
232
+ currencyCode: string;
233
+ flatFees: ContractFlatFee[];
234
+ modules: ContractPreviewModule[];
235
+ contractVolume: ContractVolume | null;
236
+ startDate: string;
237
+ /** Payment frequency of the revalidated term; renders the base-price period. */
238
+ paymentFrequency: ContractPeriod;
239
+ pricingFingerprint: string;
240
+ } | {
241
+ status: 'consent_required' | 'invalid_fields' | 'offer_unavailable' | 'unavailable';
242
+ message: string;
243
+ };
244
+ export type GetContractPreview = (args: {
245
+ sessionId: Id<'contactSessions'>;
246
+ visitorId: string;
247
+ termId: number;
248
+ startDate: string;
249
+ fields: ContractCustomerFields;
250
+ /** Chosen paid optional-module ids; omitted/empty when none selected. */
251
+ selectedModuleIds?: number[];
252
+ privacyConsent: boolean;
253
+ sepaConsent: boolean;
254
+ }) => Promise<ContractPreviewResult>;
255
+ /**
256
+ * Result of `submitContractCreation`. `succeeded` carries the safe identifiers
257
+ * (Magicline customer number for the success bubble). `failed` carries a safe
258
+ * `errorCode` and a `retryable` flag — pre-dispatch failures may be retried by
259
+ * the visitor; post-dispatch outcomes (`unknown_outcome`) never are.
260
+ */
261
+ export type ContractSubmitResult = {
262
+ status: 'succeeded';
263
+ externalId: string | null;
264
+ customerNumber: string | null;
265
+ } | {
266
+ status: 'failed';
267
+ errorCode: string;
268
+ message: string;
269
+ retryable: boolean;
270
+ };
271
+ /**
272
+ * Submit args. `bankAccount` (accountHolder + IBAN) is the ONLY place the IBAN
273
+ * ever travels — it is a transient action arg, never persisted or logged.
274
+ */
275
+ export type SubmitContractCreation = (args: {
276
+ sessionId: Id<'contactSessions'>;
277
+ visitorId: string;
278
+ projectId: Id<'projects'>;
279
+ formMessageId: Id<'conversations'>;
280
+ fields: {
281
+ firstname: string;
282
+ lastname: string;
283
+ email: string;
284
+ phone: string;
285
+ dateOfBirth: string;
286
+ gender: string;
287
+ street: string;
288
+ houseNumber: string;
289
+ zipCode: string;
290
+ city: string;
291
+ rateBundleTermId: number;
292
+ privacyConsent: boolean;
293
+ sepaConsent: boolean;
294
+ };
295
+ bankAccount: {
296
+ accountHolder: string;
297
+ iban: string;
298
+ };
299
+ /** Chosen paid optional-module ids; omitted/empty when none selected. */
300
+ selectedModuleIds?: number[];
301
+ /** ackKeys the visitor confirmed (required text blocks + selected-module consents). */
302
+ acknowledgedAckKeys?: string[];
303
+ pricingFingerprint: string;
304
+ }) => Promise<ContractSubmitResult>;
305
+ export declare function useRateBundles(): GetRateBundles;
306
+ export declare function useContractPreview(): GetContractPreview;
307
+ export declare function useSubmitContractCreation(): SubmitContractCreation;
88
308
  //# sourceMappingURL=useMagicline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMagicline.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/hooks/useMagicline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2CAA2C,CAAA;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,GAAG,aAAa,GAAG,eAAe,CAAA;IAC9C,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAClC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;CACzB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE/B,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,cAAc,CAAA;IACzB,QAAQ,EAAE,cAAc,CAAA;IACxB,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,cAAc,CAAA;IAC3B,MAAM,EAAE,cAAc,CAAA;IACtB,0DAA0D;IAC1D,OAAO,EAAE,cAAc,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,MAAM,EAAE,IAAI,CAAA;IACZ,IAAI,EAAE,eAAe,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uEAAuE;IACvE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa,CAAA;IACtD,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAEL,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAClC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEhC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB;;;;;;;;;wBAEjC;AAED,wBAAgB,cAAc,IAAI,cAAc,CAE/C;AAED,wBAAgB,aAAa,IAAI,cAAc,CAE9C"}
1
+ {"version":3,"file":"useMagicline.d.ts","sourceRoot":"","sources":["../../../../../src/features/chat/hooks/useMagicline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/de.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,aAsJhB,CAAA"}
1
+ {"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/de.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEzC,eAAO,MAAM,EAAE,EAAE,aAwNhB,CAAA"}