@wireai/activation 0.7.0 → 0.9.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.
- package/AGENTS.md +29 -5
- package/CHANGELOG.md +198 -6
- package/README.md +105 -10
- package/dist/analytics/index.d.mts +12 -8
- package/dist/analytics/index.d.ts +12 -8
- package/dist/analytics/index.js +525 -55
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/index.mjs +525 -55
- package/dist/analytics/index.mjs.map +1 -1
- package/dist/coachmarks/index.d.mts +2 -2
- package/dist/coachmarks/index.d.ts +2 -2
- package/dist/coachmarks/index.js.map +1 -1
- package/dist/coachmarks/index.mjs.map +1 -1
- package/dist/{currentSession-CxnP7gAa.d.ts → currentSession-61dcm3V-.d.ts} +19 -3
- package/dist/{currentSession-BJBB7i4-.d.mts → currentSession-Bs2JfTJ8.d.mts} +19 -3
- package/dist/{decision-BzbiKwk3.d.mts → decision-Bl_M2y3r.d.mts} +1 -1
- package/dist/{decision-plDEOCkt.d.ts → decision-Cau5KmP6.d.ts} +1 -1
- package/dist/index.d.mts +620 -13
- package/dist/index.d.ts +620 -13
- package/dist/index.js +1194 -369
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1015 -201
- package/dist/index.mjs.map +1 -1
- package/dist/questionnaire/index.d.mts +69 -23
- package/dist/questionnaire/index.d.ts +69 -23
- package/dist/questionnaire/index.js +643 -172
- package/dist/questionnaire/index.js.map +1 -1
- package/dist/questionnaire/index.mjs +608 -137
- package/dist/questionnaire/index.mjs.map +1 -1
- package/dist/reviews/index.d.mts +24 -12
- package/dist/reviews/index.d.ts +24 -12
- package/dist/reviews/index.js +507 -173
- package/dist/reviews/index.js.map +1 -1
- package/dist/reviews/index.mjs +462 -129
- package/dist/reviews/index.mjs.map +1 -1
- package/dist/showcase/index.d.mts +2 -2
- package/dist/showcase/index.d.ts +2 -2
- package/dist/showcase/index.js.map +1 -1
- package/dist/showcase/index.mjs.map +1 -1
- package/dist/transport-DzU-TqZz.d.ts +86 -0
- package/dist/transport-f5VVB5hH.d.mts +86 -0
- package/dist/{types-GL_hQ0TN.d.mts → types-BcmagF6K.d.mts} +1 -1
- package/dist/{types-GL_hQ0TN.d.ts → types-BcmagF6K.d.ts} +1 -1
- package/dist/{types-BhpXJGlg.d.ts → types-Buj9Lw9t.d.ts} +15 -3
- package/dist/{types-CMuOexw0.d.mts → types-CKFhyrMu.d.mts} +1 -1
- package/dist/{types-CMuOexw0.d.ts → types-CKFhyrMu.d.ts} +1 -1
- package/dist/{types-A6pTxIZV.d.mts → types-CNUqMK0D.d.mts} +15 -3
- package/metro/index.d.ts +18 -1
- package/metro/index.js +80 -0
- package/package.json +9 -1
- package/src/WireOnboarding.tsx +4 -0
- package/src/analytics/analyticsFacade.ts +55 -10
- package/src/analytics/currentSession.ts +1 -1
- package/src/cards/CardGridSelectCard.tsx +253 -0
- package/src/cards/ChipSelectCard.tsx +1 -1
- package/src/cards/SelectionCard.tsx +15 -19
- package/src/cards/index.ts +13 -1
- package/src/cards/optionSchema.ts +65 -0
- package/src/coachmarks/types.ts +1 -1
- package/src/components/CardHandoff.tsx +39 -7
- package/src/components/DoneCheck.tsx +94 -0
- package/src/components/ModalPaneHost.tsx +141 -0
- package/src/components/StepDots.tsx +112 -0
- package/src/context/deviceId.ts +43 -0
- package/src/device/appVersion.ts +29 -8
- package/src/device/deviceContext.ts +14 -1
- package/src/device/deviceModel.ts +106 -0
- package/src/features/cache.ts +1 -1
- package/src/haptics/expo-haptics.d.ts +31 -0
- package/src/haptics/haptics.ts +58 -0
- package/src/icons/IconRegistry.tsx +53 -0
- package/src/icons/WireIcon.tsx +85 -0
- package/src/icons/expoIcons.ts +165 -0
- package/src/icons/index.ts +18 -0
- package/src/icons/vocabulary.ts +154 -0
- package/src/index.ts +22 -0
- package/src/questionnaire/QuestionnaireGate.tsx +315 -164
- package/src/questionnaire/decision.ts +4 -2
- package/src/questionnaire/index.ts +3 -2
- package/src/questionnaire/steps.ts +261 -0
- package/src/questionnaire/types.ts +33 -12
- package/src/reviews/ReviewGate.tsx +250 -152
- package/src/reviews/index.ts +7 -3
- package/src/reviews/transport.ts +77 -3
- package/src/reviews/types.ts +13 -0
- package/src/session/persistedSession.ts +1 -1
- package/src/session-analytics/lifecycle.ts +1 -1
- package/src/session-analytics/useSessionStart.ts +2 -2
- package/src/showcase/FeatureShowcase.tsx +1 -1
- package/src/showcase/showcaseColors.ts +1 -1
- package/src/theme/mergeThemeOver.ts +27 -0
- package/src/types.ts +8 -0
- package/dist/transport-BeO_Brcu.d.mts +0 -40
- package/dist/transport-DLpd1v5_.d.ts +0 -40
package/dist/reviews/index.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { R as ReviewGateProps, a as ReviewPresentation, U as UseReviewGateOptions, b as ReviewGateController, c as ReviewDecision, d as ReviewStoreConfig } from '../types-
|
|
3
|
-
export { e as RatingRoute, f as ReviewConfig, g as
|
|
2
|
+
import { R as ReviewGateProps, a as ReviewPresentation, U as UseReviewGateOptions, b as ReviewGateController, c as ReviewDecision, d as ReviewStoreConfig } from '../types-CNUqMK0D.mjs';
|
|
3
|
+
export { e as RatingRoute, f as ReviewConfig, g as ReviewDecisionResponse, h as ReviewGateEvent, i as ReviewGateEventName, j as ReviewSubmission, k as ReviewTarget } from '../types-CNUqMK0D.mjs';
|
|
4
4
|
export { C as ReviewModal, a as ReviewModalHandle, b as ReviewModalProps } from '../CenteredModal-C3qQBHsA.mjs';
|
|
5
|
-
export { G as GateRules, a as GateSignals, b as buildReviewSubmission, d as decideReview, e as evaluateGate, r as resolveRules, c as routeRating } from '../decision-
|
|
5
|
+
export { G as GateRules, a as GateSignals, b as buildReviewSubmission, d as decideReview, e as evaluateGate, r as resolveRules, c as routeRating } from '../decision-Bl_M2y3r.mjs';
|
|
6
6
|
import { c as OnboardingFonts } from '../types-BKfpdZzX.mjs';
|
|
7
|
-
export { R as ReportAppEventOptions, r as reportAppEvent, s as submitReview } from '../transport-
|
|
8
|
-
import '../types-
|
|
9
|
-
import '../types-
|
|
7
|
+
export { F as FetchReviewDecisionOptions, R as ReportAppEventOptions, f as fetchReviewDecision, r as reportAppEvent, s as submitReview } from '../transport-f5VVB5hH.mjs';
|
|
8
|
+
import '../types-BcmagF6K.mjs';
|
|
9
|
+
import '../types-CKFhyrMu.mjs';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Runtime helpers for the review gate: the `wire_review_*` gate keys and small
|
|
@@ -27,17 +27,29 @@ declare const reviewSessionsKey: (id: string) => string;
|
|
|
27
27
|
*
|
|
28
28
|
* A NEUTRAL prompt ("Enjoying <app>?") over five tappable stars. The honest split:
|
|
29
29
|
* • 5 stars → the native store review (expo-store-review when available, else the
|
|
30
|
-
* configured store URL). Fires `store_review_requested
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* thank-you state,
|
|
30
|
+
* configured store URL). Fires `store_review_requested`, and POSTs a text-less
|
|
31
|
+
* `stars=5` row carrying `meta.store_route` so promoters reach the server too
|
|
32
|
+
* (before 2026-07-16 this route posted nothing — see `pickRating`).
|
|
33
|
+
* • 1-4 stars → a feedback form: the "why this rating" opinion box (~4 lines, MANDATORY
|
|
34
|
+
* as of Malik's 2026-07-16 ruling) and a smaller optional "what can you suggest" box,
|
|
35
|
+
* POSTed to the Wire server (`feedback_text` + `suggestion`). Warm thank-you state,
|
|
36
|
+
* never a dead end.
|
|
37
|
+
*
|
|
38
|
+
* EXACTLY ONE row is POSTed per gate, at the last responsible moment — see `postOnce`. A
|
|
39
|
+
* detractor who abandons instead of typing still has their rating posted (`meta.abandoned`),
|
|
40
|
+
* so forcing the text can never cost us the detractor data it exists to collect.
|
|
36
41
|
*
|
|
37
42
|
* The form NEVER asks for identity (no name / email / contact field): the host already
|
|
38
43
|
* identifies the user via `sessionId` + `meta` (e.g. user_id, device_key), which is all
|
|
39
44
|
* the POST body carries alongside the rating and the free text.
|
|
40
45
|
*
|
|
46
|
+
* Motion (2026-07-16): the three phases used to swap IN PLACE with no transition. They now
|
|
47
|
+
* ride `ModalPaneHost`, the same pane-slide primitive the questionnaire steps use, and the
|
|
48
|
+
* thank-you plays the shared `DoneCheck` payoff before the existing 1500ms auto-close.
|
|
49
|
+
* Picking a star fires a haptic through the lazy, optional `expo-haptics` peer — silently
|
|
50
|
+
* absent when the host has not installed it. The popup's own entrance is unchanged: it is
|
|
51
|
+
* the CenteredModal shell's spring, which already animates.
|
|
52
|
+
*
|
|
41
53
|
* Every visual value comes from the OnboardingTheme (useOnboardingTheme). Analytics are
|
|
42
54
|
* callback-based (mirroring the coachmark convention): the host wires `onEvent` to its own
|
|
43
55
|
* analytics. No PII in events — feedback text goes ONLY in the POST body.
|
package/dist/reviews/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { R as ReviewGateProps, a as ReviewPresentation, U as UseReviewGateOptions, b as ReviewGateController, c as ReviewDecision, d as ReviewStoreConfig } from '../types-
|
|
3
|
-
export { e as RatingRoute, f as ReviewConfig, g as
|
|
2
|
+
import { R as ReviewGateProps, a as ReviewPresentation, U as UseReviewGateOptions, b as ReviewGateController, c as ReviewDecision, d as ReviewStoreConfig } from '../types-Buj9Lw9t.js';
|
|
3
|
+
export { e as RatingRoute, f as ReviewConfig, g as ReviewDecisionResponse, h as ReviewGateEvent, i as ReviewGateEventName, j as ReviewSubmission, k as ReviewTarget } from '../types-Buj9Lw9t.js';
|
|
4
4
|
export { C as ReviewModal, a as ReviewModalHandle, b as ReviewModalProps } from '../CenteredModal-Cdgns6--.js';
|
|
5
|
-
export { G as GateRules, a as GateSignals, b as buildReviewSubmission, d as decideReview, e as evaluateGate, r as resolveRules, c as routeRating } from '../decision-
|
|
5
|
+
export { G as GateRules, a as GateSignals, b as buildReviewSubmission, d as decideReview, e as evaluateGate, r as resolveRules, c as routeRating } from '../decision-Cau5KmP6.js';
|
|
6
6
|
import { c as OnboardingFonts } from '../types-BKfpdZzX.js';
|
|
7
|
-
export { R as ReportAppEventOptions, r as reportAppEvent, s as submitReview } from '../transport-
|
|
8
|
-
import '../types-
|
|
9
|
-
import '../types-
|
|
7
|
+
export { F as FetchReviewDecisionOptions, R as ReportAppEventOptions, f as fetchReviewDecision, r as reportAppEvent, s as submitReview } from '../transport-DzU-TqZz.js';
|
|
8
|
+
import '../types-BcmagF6K.js';
|
|
9
|
+
import '../types-CKFhyrMu.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Runtime helpers for the review gate: the `wire_review_*` gate keys and small
|
|
@@ -27,17 +27,29 @@ declare const reviewSessionsKey: (id: string) => string;
|
|
|
27
27
|
*
|
|
28
28
|
* A NEUTRAL prompt ("Enjoying <app>?") over five tappable stars. The honest split:
|
|
29
29
|
* • 5 stars → the native store review (expo-store-review when available, else the
|
|
30
|
-
* configured store URL). Fires `store_review_requested
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* thank-you state,
|
|
30
|
+
* configured store URL). Fires `store_review_requested`, and POSTs a text-less
|
|
31
|
+
* `stars=5` row carrying `meta.store_route` so promoters reach the server too
|
|
32
|
+
* (before 2026-07-16 this route posted nothing — see `pickRating`).
|
|
33
|
+
* • 1-4 stars → a feedback form: the "why this rating" opinion box (~4 lines, MANDATORY
|
|
34
|
+
* as of Malik's 2026-07-16 ruling) and a smaller optional "what can you suggest" box,
|
|
35
|
+
* POSTed to the Wire server (`feedback_text` + `suggestion`). Warm thank-you state,
|
|
36
|
+
* never a dead end.
|
|
37
|
+
*
|
|
38
|
+
* EXACTLY ONE row is POSTed per gate, at the last responsible moment — see `postOnce`. A
|
|
39
|
+
* detractor who abandons instead of typing still has their rating posted (`meta.abandoned`),
|
|
40
|
+
* so forcing the text can never cost us the detractor data it exists to collect.
|
|
36
41
|
*
|
|
37
42
|
* The form NEVER asks for identity (no name / email / contact field): the host already
|
|
38
43
|
* identifies the user via `sessionId` + `meta` (e.g. user_id, device_key), which is all
|
|
39
44
|
* the POST body carries alongside the rating and the free text.
|
|
40
45
|
*
|
|
46
|
+
* Motion (2026-07-16): the three phases used to swap IN PLACE with no transition. They now
|
|
47
|
+
* ride `ModalPaneHost`, the same pane-slide primitive the questionnaire steps use, and the
|
|
48
|
+
* thank-you plays the shared `DoneCheck` payoff before the existing 1500ms auto-close.
|
|
49
|
+
* Picking a star fires a haptic through the lazy, optional `expo-haptics` peer — silently
|
|
50
|
+
* absent when the host has not installed it. The popup's own entrance is unchanged: it is
|
|
51
|
+
* the CenteredModal shell's spring, which already animates.
|
|
52
|
+
*
|
|
41
53
|
* Every visual value comes from the OnboardingTheme (useOnboardingTheme). Analytics are
|
|
42
54
|
* callback-based (mirroring the coachmark convention): the host wires `onEvent` to its own
|
|
43
55
|
* analytics. No PII in events — feedback text goes ONLY in the POST body.
|