@uplifted/react 0.25.0 → 0.26.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/CHANGELOG.md +24 -0
- package/dist/AddClientSheet.d.ts +4 -4
- package/dist/AddClientSheet.d.ts.map +1 -1
- package/dist/AddClientSheet.js.map +1 -1
- package/dist/ChannelBadge.d.ts +5 -1
- package/dist/ChannelBadge.d.ts.map +1 -1
- package/dist/ChannelBadge.js +8 -4
- package/dist/ChannelBadge.js.map +1 -1
- package/dist/ChannelControl.d.ts +24 -0
- package/dist/ChannelControl.d.ts.map +1 -0
- package/dist/ChannelControl.js +96 -0
- package/dist/ChannelControl.js.map +1 -0
- package/dist/ChannelExplainer.d.ts +1 -1
- package/dist/ChannelExplainer.d.ts.map +1 -1
- package/dist/ClientChat.d.ts +37 -0
- package/dist/ClientChat.d.ts.map +1 -0
- package/dist/ClientChat.js +365 -0
- package/dist/ClientChat.js.map +1 -0
- package/dist/Composer.d.ts +1 -1
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +7 -5
- package/dist/Composer.js.map +1 -1
- package/dist/ConnectClientSheet.d.ts +5 -3
- package/dist/ConnectClientSheet.d.ts.map +1 -1
- package/dist/ConnectClientSheet.js +2 -2
- package/dist/ConnectClientSheet.js.map +1 -1
- package/dist/ConversationPane.d.ts +5 -1
- package/dist/ConversationPane.d.ts.map +1 -1
- package/dist/ConversationPane.js +5 -3
- package/dist/ConversationPane.js.map +1 -1
- package/dist/HostPreviewPane.d.ts.map +1 -1
- package/dist/HostPreviewPane.js +1 -0
- package/dist/HostPreviewPane.js.map +1 -1
- package/dist/ThreadFeed.d.ts.map +1 -1
- package/dist/ThreadFeed.js +3 -2
- package/dist/ThreadFeed.js.map +1 -1
- package/dist/UpliftPanel.d.ts +7 -1
- package/dist/UpliftPanel.d.ts.map +1 -1
- package/dist/UpliftPanel.js +20 -3
- package/dist/UpliftPanel.js.map +1 -1
- package/dist/build-info.json +3 -3
- package/dist/channels.d.ts +1 -1
- package/dist/channels.d.ts.map +1 -1
- package/dist/chatStrings.d.ts +56 -0
- package/dist/chatStrings.d.ts.map +1 -0
- package/dist/chatStrings.js +50 -0
- package/dist/chatStrings.js.map +1 -0
- package/dist/icons.d.ts +1 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +1 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/labels.js +1 -1
- package/dist/labels.js.map +1 -1
- package/dist/styles.d.ts +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +96 -0
- package/dist/styles.js.map +1 -1
- package/dist/useChatUnread.d.ts +8 -0
- package/dist/useChatUnread.d.ts.map +1 -0
- package/dist/useChatUnread.js +63 -0
- package/dist/useChatUnread.js.map +1 -0
- package/dist/useClientChat.d.ts +57 -0
- package/dist/useClientChat.d.ts.map +1 -0
- package/dist/useClientChat.js +360 -0
- package/dist/useClientChat.js.map +1 -0
- package/dist/useStickToBottom.d.ts +2 -0
- package/dist/useStickToBottom.d.ts.map +1 -1
- package/dist/useStickToBottom.js +5 -1
- package/dist/useStickToBottom.js.map +1 -1
- package/dist/useThread.d.ts +3 -1
- package/dist/useThread.d.ts.map +1 -1
- package/dist/useThread.js +4 -1
- package/dist/useThread.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
Newest first. Every version is published by CI. `dist/build-info.json` in the package, and the annotated git tag `@uplifted/react@<version>`, record the source commit, build command and tarball integrity.
|
|
4
4
|
|
|
5
|
+
## 0.26.0 (2026-10-21)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* change a client's channel and connect by app chat (web chat, coach side)
|
|
11
|
+
* ClientChat and ChatClient (web chat, client side)
|
|
12
|
+
* **react:** <ClientChat> lets your clients message their coach in your app
|
|
13
|
+
* **react:** change a client's channel from the conversation header, and connect by app chat
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Fixes
|
|
17
|
+
|
|
18
|
+
* **react:** the thread feed no longer passes isPinned and scrollToBottom to the DOM
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Dependencies
|
|
22
|
+
|
|
23
|
+
* The following workspace dependencies were updated
|
|
24
|
+
* devDependencies
|
|
25
|
+
* @uplifted/sdk bumped from 0.11.0 to 0.12.0
|
|
26
|
+
* peerDependencies
|
|
27
|
+
* @uplifted/sdk bumped from ^0.11.0 to ^0.12.0
|
|
28
|
+
|
|
5
29
|
## 0.25.0 (2026-10-20)
|
|
6
30
|
|
|
7
31
|
|
package/dist/AddClientSheet.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Channel, Client, UpliftError } from "@uplifted/sdk";
|
|
1
|
+
import type { Channel, PhoneChannel, Client, UpliftError } from "@uplifted/sdk";
|
|
2
2
|
export interface AddClientSheetProps {
|
|
3
3
|
onClose: () => void;
|
|
4
4
|
onAdded: (client: Client) => void;
|
|
@@ -24,7 +24,7 @@ export interface AddClientSheetProps {
|
|
|
24
24
|
existing?: ReadonlyArray<{
|
|
25
25
|
id?: string;
|
|
26
26
|
name: string;
|
|
27
|
-
phone: string;
|
|
27
|
+
phone: string | null;
|
|
28
28
|
}> | undefined;
|
|
29
29
|
hostName: string;
|
|
30
30
|
}
|
|
@@ -32,14 +32,14 @@ export interface AddClientSheetProps {
|
|
|
32
32
|
export interface AddAttempt {
|
|
33
33
|
name: string;
|
|
34
34
|
phone: string;
|
|
35
|
-
channel:
|
|
35
|
+
channel: PhoneChannel;
|
|
36
36
|
hostClientId?: string;
|
|
37
37
|
}
|
|
38
38
|
/** Why Uplift refused an add, worded for the phone field or the form. Plan refusals are the caller's. */
|
|
39
39
|
export declare function describeAddError(ue: UpliftError, phone: string, existing?: ReadonlyArray<{
|
|
40
40
|
id?: string;
|
|
41
41
|
name: string;
|
|
42
|
-
phone: string;
|
|
42
|
+
phone: string | null;
|
|
43
43
|
}>): {
|
|
44
44
|
phone?: string;
|
|
45
45
|
form?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddClientSheet.d.ts","sourceRoot":"","sources":["../src/AddClientSheet.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"AddClientSheet.d.ts","sourceRoot":"","sources":["../src/AddClientSheet.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQhF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,yHAAyH;IACzH,WAAW,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,cAAc,GAAG,eAAe,CAAC;QAAC,OAAO,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9F,qEAAqE;IACrE,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,kGAAkG;IAClG,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACjE;kGAC8F;IAC9F,WAAW,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACtE,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAC1F,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE;AAEzG,yGAAyG;AACzG,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBjL;AAED,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,mBAAmB,+BAgH3J"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddClientSheet.js","sourceRoot":"","sources":["../src/AddClientSheet.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAuBhD,yGAAyG;AACzG,MAAM,UAAU,gBAAgB,CAAC,EAAe,EAAE,KAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"AddClientSheet.js","sourceRoot":"","sources":["../src/AddClientSheet.tsx"],"names":[],"mappings":"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"}
|
package/dist/ChannelBadge.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import type { Channel } from "@uplifted/sdk";
|
|
|
2
2
|
/**
|
|
3
3
|
* Corner badge on a client's avatar showing the channel they message through, ported from
|
|
4
4
|
* the native Uplift app's channel badge: WhatsApp green with the official glyph,
|
|
5
|
-
* SMS a speech bubble on the highlight colour
|
|
5
|
+
* SMS a speech bubble on the highlight colour, app chat a phone in the text colour. A missing channel is
|
|
6
|
+
* SMS, the platform default.
|
|
6
7
|
*/
|
|
7
8
|
export declare function WhatsAppGlyph({ size }: {
|
|
8
9
|
size?: number;
|
|
@@ -10,6 +11,9 @@ export declare function WhatsAppGlyph({ size }: {
|
|
|
10
11
|
export declare function SmsGlyph({ size }: {
|
|
11
12
|
size?: number;
|
|
12
13
|
}): import("react").JSX.Element;
|
|
14
|
+
export declare function AppGlyph({ size }: {
|
|
15
|
+
size?: number;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
13
17
|
export declare function ChannelBadge({ channel }: {
|
|
14
18
|
channel: Channel | null | undefined;
|
|
15
19
|
}): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelBadge.d.ts","sourceRoot":"","sources":["../src/ChannelBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C
|
|
1
|
+
{"version":3,"file":"ChannelBadge.d.ts","sourceRoot":"","sources":["../src/ChannelBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAM7D;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAMxD;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAMxD;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,+BAQhF"}
|
package/dist/ChannelBadge.js
CHANGED
|
@@ -3,7 +3,8 @@ import { channelLabel } from "./labels.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Corner badge on a client's avatar showing the channel they message through, ported from
|
|
5
5
|
* the native Uplift app's channel badge: WhatsApp green with the official glyph,
|
|
6
|
-
* SMS a speech bubble on the highlight colour
|
|
6
|
+
* SMS a speech bubble on the highlight colour, app chat a phone in the text colour. A missing channel is
|
|
7
|
+
* SMS, the platform default.
|
|
7
8
|
*/
|
|
8
9
|
export function WhatsAppGlyph({ size = 10 }) {
|
|
9
10
|
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.149-.174.198-.298.297-.497.1-.198.05-.371-.025-.52-.074-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z" }) }));
|
|
@@ -11,9 +12,12 @@ export function WhatsAppGlyph({ size = 10 }) {
|
|
|
11
12
|
export function SmsGlyph({ size = 10 }) {
|
|
12
13
|
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12 2C6.48 2 2 5.94 2 10.8c0 2.8 1.5 5.29 3.83 6.9-.14 1.13-.6 2.4-1.62 3.5-.2.22-.03.58.27.55 2.05-.2 3.66-1.05 4.79-1.93.87.21 1.79.33 2.73.33 5.52 0 10-3.94 10-8.8S17.52 2 12 2Z" }) }));
|
|
13
14
|
}
|
|
15
|
+
export function AppGlyph({ size = 10 }) {
|
|
16
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M7 1h10a3 3 0 0 1 3 3v16a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V4a3 3 0 0 1 3-3Zm0 3v14h10V4H7Zm5 15.2a1.2 1.2 0 1 0 0 2.4 1.2 1.2 0 0 0 0-2.4Z" }) }));
|
|
17
|
+
}
|
|
14
18
|
export function ChannelBadge({ channel }) {
|
|
15
|
-
const
|
|
16
|
-
const label = channelLabel(
|
|
17
|
-
return (_jsx("span", { className: `u-chan-badge ${
|
|
19
|
+
const ch = channel === "whatsapp" || channel === "webchat" ? channel : "sms";
|
|
20
|
+
const label = channelLabel(ch);
|
|
21
|
+
return (_jsx("span", { className: `u-chan-badge ${ch === "whatsapp" ? "u-chan-wa" : ch === "webchat" ? "u-chan-app" : "u-chan-sms"}`, title: `Messages via ${label}`, "aria-label": `Channel: ${label}`, role: "img", children: ch === "whatsapp" ? _jsx(WhatsAppGlyph, {}) : ch === "webchat" ? _jsx(AppGlyph, {}) : _jsx(SmsGlyph, {}) }));
|
|
18
22
|
}
|
|
19
23
|
//# sourceMappingURL=ChannelBadge.js.map
|
package/dist/ChannelBadge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelBadge.js","sourceRoot":"","sources":["../src/ChannelBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"ChannelBadge.js","sourceRoot":"","sources":["../src/ChannelBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IAC5D,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,iBAAa,MAAM,YACxF,eAAM,CAAC,EAAC,ylCAAylC,GAAG,GAChmC,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IACvD,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,iBAAa,MAAM,YACxF,eAAM,CAAC,EAAC,sLAAsL,GAAG,GAC7L,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,EAAqB;IACvD,OAAO,CACL,cAAK,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,iBAAa,MAAM,YACxF,eAAM,CAAC,EAAC,wIAAwI,GAAG,GAC/I,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAA2C;IAC/E,MAAM,EAAE,GAAY,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACtF,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,CACL,eAAM,SAAS,EAAE,gBAAgB,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,gBAAgB,KAAK,EAAE,gBAAc,YAAY,KAAK,EAAE,EAAE,IAAI,EAAC,KAAK,YAC7L,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,KAAC,aAAa,KAAG,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,CAAC,CAAC,CAAC,KAAC,QAAQ,KAAG,GAClF,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ChatReachability, Client } from "@uplifted/sdk";
|
|
2
|
+
export interface ChannelControlProps {
|
|
3
|
+
client: Client;
|
|
4
|
+
/** From the thread: whether a web chat client can be reached. */
|
|
5
|
+
reachability: ChatReachability | null;
|
|
6
|
+
/** The host shows <ClientChat> to its clients, so App chat is offered. A client already on it always sees it. */
|
|
7
|
+
appChat: boolean;
|
|
8
|
+
/** The switch is saved; the client now has this channel. */
|
|
9
|
+
onSwitched: (client: Client) => void;
|
|
10
|
+
announce: (text: string) => void;
|
|
11
|
+
/** A line for under the header: the reminder after a move, or why it failed. Null clears it. */
|
|
12
|
+
onNote: (note: {
|
|
13
|
+
text: string;
|
|
14
|
+
err?: boolean;
|
|
15
|
+
} | null) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Design 7D: the channel in the conversation header is a control. SMS and WhatsApp need a phone, so a
|
|
19
|
+
* phone-less client sees them disabled with "Add a phone number first". A web chat client shows whether
|
|
20
|
+
* they can be reached. Leaving web chat while they have unread messages asks first. Uplift tells the
|
|
21
|
+
* client nothing about a move, so the panel reminds the coach to.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ChannelControl({ client, reachability, appChat, onSwitched, announce, onNote: setNote }: ChannelControlProps): import("react").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=ChannelControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelControl.d.ts","sourceRoot":"","sources":["../src/ChannelControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,gBAAgB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,iHAAiH;IACjH,OAAO,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gGAAgG;IAChG,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAChE;AAWD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,mBAAmB,+BAqH3H"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { asUpliftError } from "./errors.js";
|
|
4
|
+
import { IconChevronDown } from "./icons.js";
|
|
5
|
+
import { channelLabel, firstName } from "./labels.js";
|
|
6
|
+
import { Sheet } from "./Sheet.js";
|
|
7
|
+
import { useUplift } from "./UpliftProvider.js";
|
|
8
|
+
const REACH = {
|
|
9
|
+
notifications_on: { text: "Notifications on", kind: "ok", title: "They get a notification for each message" },
|
|
10
|
+
notifications_off: { text: "Notifications off", kind: "warn", title: "They see messages the next time they open the app" },
|
|
11
|
+
never_opened: { text: "Never opened", kind: "warn", title: "They haven't opened the chat yet, so they won't see messages until they do" },
|
|
12
|
+
};
|
|
13
|
+
/** What the move is called in the confirm sheet: "Switching to text hides the chat input for them". */
|
|
14
|
+
const moveName = (c) => (c === "sms" ? "text" : channelLabel(c));
|
|
15
|
+
/**
|
|
16
|
+
* Design 7D: the channel in the conversation header is a control. SMS and WhatsApp need a phone, so a
|
|
17
|
+
* phone-less client sees them disabled with "Add a phone number first". A web chat client shows whether
|
|
18
|
+
* they can be reached. Leaving web chat while they have unread messages asks first. Uplift tells the
|
|
19
|
+
* client nothing about a move, so the panel reminds the coach to.
|
|
20
|
+
*/
|
|
21
|
+
export function ChannelControl({ client, reachability, appChat, onSwitched, announce, onNote: setNote }) {
|
|
22
|
+
const { client: api } = useUplift();
|
|
23
|
+
const [open, setOpen] = useState(false);
|
|
24
|
+
const [busy, setBusy] = useState(false);
|
|
25
|
+
const [confirm, setConfirm] = useState(null);
|
|
26
|
+
const box = useRef(null);
|
|
27
|
+
const button = useRef(null);
|
|
28
|
+
const menuId = useId();
|
|
29
|
+
const first = firstName(client.name);
|
|
30
|
+
const options = appChat || client.channel === "webchat" ? ["sms", "whatsapp", "webchat"] : ["sms", "whatsapp"];
|
|
31
|
+
// Closes on a click or tap anywhere else, and on Escape (focus goes back to the button).
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!open)
|
|
34
|
+
return;
|
|
35
|
+
const away = (e) => { if (!box.current?.contains(e.target))
|
|
36
|
+
setOpen(false); };
|
|
37
|
+
const key = (e) => { if (e.key === "Escape") {
|
|
38
|
+
e.stopPropagation();
|
|
39
|
+
setOpen(false);
|
|
40
|
+
button.current?.focus();
|
|
41
|
+
} };
|
|
42
|
+
document.addEventListener("pointerdown", away);
|
|
43
|
+
document.addEventListener("keydown", key, true);
|
|
44
|
+
return () => { document.removeEventListener("pointerdown", away); document.removeEventListener("keydown", key, true); };
|
|
45
|
+
}, [open]);
|
|
46
|
+
// Opening moves focus to the current channel's item.
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (open)
|
|
49
|
+
box.current?.querySelector('[role="menuitemradio"][aria-checked="true"]')?.focus();
|
|
50
|
+
}, [open]);
|
|
51
|
+
const switchTo = async (channel, confirmed = false) => {
|
|
52
|
+
setOpen(false);
|
|
53
|
+
if (channel === client.channel)
|
|
54
|
+
return;
|
|
55
|
+
setBusy(true);
|
|
56
|
+
setNote(null);
|
|
57
|
+
try {
|
|
58
|
+
const res = await api.switchChannel(client.id, channel, confirmed ? { confirm: true } : {});
|
|
59
|
+
setConfirm(null);
|
|
60
|
+
onSwitched({ ...client, channel: res.channel });
|
|
61
|
+
const msg = `${first} now gets messages by ${channelLabel(res.channel)}. Uplift doesn't tell ${first}, so let them know.`;
|
|
62
|
+
setNote({ text: msg });
|
|
63
|
+
announce(msg);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const ue = asUpliftError(err);
|
|
67
|
+
const reason = ue.details?.reason;
|
|
68
|
+
if (ue.code === "conflict" && reason === "unread_messages") {
|
|
69
|
+
setConfirm({ channel, unread: Number(ue.details?.unread) || 0 });
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
setConfirm(null);
|
|
73
|
+
setNote({ text: reason === "phone_required" ? "Add a phone number first" : ue.message || "Couldn't change the channel. Try again.", err: true });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
setBusy(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const onMenuKey = (e) => {
|
|
81
|
+
if (e.key !== "ArrowDown" && e.key !== "ArrowUp" && e.key !== "Home" && e.key !== "End")
|
|
82
|
+
return;
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
const items = Array.from(box.current?.querySelectorAll('[role="menuitemradio"]') ?? []);
|
|
85
|
+
const i = items.indexOf(document.activeElement);
|
|
86
|
+
const next = e.key === "Home" ? 0 : e.key === "End" ? items.length - 1 : (i + (e.key === "ArrowDown" ? 1 : -1) + items.length) % items.length;
|
|
87
|
+
items[next]?.focus();
|
|
88
|
+
};
|
|
89
|
+
const reach = client.channel === "webchat" && reachability ? REACH[reachability] : null;
|
|
90
|
+
return (_jsxs(_Fragment, { children: [_jsxs("span", { className: "u-chan-ctl", ref: box, children: [_jsxs("button", { ref: button, type: "button", className: "u-chan-pick", "aria-haspopup": "menu", "aria-expanded": open, "aria-controls": open ? menuId : undefined, "aria-label": `Channel: ${channelLabel(client.channel)}. Change channel`, disabled: busy, "aria-busy": busy, onClick: () => setOpen((o) => !o), children: [channelLabel(client.channel), _jsx(IconChevronDown, {})] }), reach && _jsx("span", { className: `u-tag u-${reach.kind} u-chan-reach`, title: reach.title, children: reach.text }), open && (_jsx("span", { className: "u-chan-menu", role: "menu", id: menuId, "aria-label": "Channel", onKeyDown: onMenuKey, children: options.map((c) => {
|
|
91
|
+
const needsPhone = c !== "webchat" && !client.phone;
|
|
92
|
+
return (_jsxs("button", { type: "button", role: "menuitemradio", "aria-checked": client.channel === c, "aria-disabled": needsPhone || undefined, tabIndex: -1, className: "u-chan-item", onClick: () => { if (!needsPhone)
|
|
93
|
+
void switchTo(c); }, children: [_jsx("span", { children: channelLabel(c) }), needsPhone && _jsx("small", { children: "Add a phone number first" })] }, c));
|
|
94
|
+
}) }))] }), confirm && (_jsxs(Sheet, { labelledBy: "u-chan-confirm-title", onClose: () => setConfirm(null), children: [_jsxs("h3", { id: "u-chan-confirm-title", children: ["Switch ", first, " to ", channelLabel(confirm.channel), "?"] }), _jsxs("p", { className: "u-lede", children: [client.name, " has ", confirm.unread, " unread message", confirm.unread === 1 ? "" : "s", " in the app. Switching to ", moveName(confirm.channel), " hides the chat input for them. Switch anyway?"] }), _jsxs("div", { className: "u-actions", children: [_jsx("button", { type: "button", className: "u-secondary", onClick: () => setConfirm(null), children: "Cancel" }), _jsx("span", { className: "u-sp" }), _jsx("button", { type: "button", className: "u-send", disabled: busy, "aria-busy": busy, onClick: () => { void switchTo(confirm.channel, true); }, children: busy ? "Switching…" : "Switch anyway" })] })] }))] }));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=ChannelControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelControl.js","sourceRoot":"","sources":["../src/ChannelControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Channel } from "@uplifted/sdk";
|
|
1
|
+
import type { PhoneChannel as Channel } from "@uplifted/sdk";
|
|
2
2
|
/**
|
|
3
3
|
* How a channel works, a port of native Uplift's ChannelDisclaimerModal: WhatsApp's 24-hour window
|
|
4
4
|
* with phone mockups of both sides in both states, and SMS's US/Canada and media limits.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelExplainer.d.ts","sourceRoot":"","sources":["../src/ChannelExplainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelExplainer.d.ts","sourceRoot":"","sources":["../src/ChannelExplainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAoC7D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,+BA6C/F;AAED,oDAAoD;AACpD,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,+BAM9H"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChatClient, type ChatError, type ChatMessage, type ChatOutboxStore, type ChatPass } from "@uplifted/sdk";
|
|
2
|
+
import { type ChatStrings } from "./chatStrings.js";
|
|
3
|
+
export interface ClientChatProps {
|
|
4
|
+
/** A ChatClient you made. Or pass `baseUrl` and `getPass` and the chat makes one. */
|
|
5
|
+
client?: ChatClient;
|
|
6
|
+
/** Uplift origin, e.g. https://platform.trainuplifted.com. */
|
|
7
|
+
baseUrl?: string;
|
|
8
|
+
/** Returns a chat pass from your server. Called again with `{ refresh: true }` when it needs a new one. */
|
|
9
|
+
getPass?: (opts: {
|
|
10
|
+
refresh: boolean;
|
|
11
|
+
}) => ChatPass | Promise<ChatPass>;
|
|
12
|
+
/** Where unsent messages wait. Default: IndexedDB, so they survive a reload. */
|
|
13
|
+
outbox?: ChatOutboxStore;
|
|
14
|
+
/** "full" shows the coach's name (and a back chevron when `onBack` is set); "none" when your app owns the bar. */
|
|
15
|
+
header?: "full" | "none";
|
|
16
|
+
onBack?: () => void;
|
|
17
|
+
/** Replace any phrase. */
|
|
18
|
+
strings?: Partial<ChatStrings>;
|
|
19
|
+
/** BCP 47 locale for dates. Default: the browser's. */
|
|
20
|
+
locale?: string;
|
|
21
|
+
/** Pad the composer for the home indicator. Turn off when your layout already does. Default true. */
|
|
22
|
+
safeArea?: boolean;
|
|
23
|
+
/** Coach messages the client has not seen. Use it for your tab badge or `navigator.setAppBadge`. */
|
|
24
|
+
onUnreadChange?: (count: number) => void;
|
|
25
|
+
/** Called for each new coach message that arrives while the chat is open. */
|
|
26
|
+
onNewMessage?: (message: ChatMessage) => void;
|
|
27
|
+
/** The pass was refused and a fresh one did not help: sign the client in again. */
|
|
28
|
+
onAuthError?: (error: ChatError) => void;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A client's chat with their coach, for the host's client app. Fills the box the host gives it:
|
|
33
|
+
* header (optional), the thread (the only scroller), and the composer pinned at the bottom.
|
|
34
|
+
* Colours come from `--u-*` tokens and the font from the host (see docs/react.md).
|
|
35
|
+
*/
|
|
36
|
+
export declare function ClientChat(props: ClientChatProps): import("react").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=ClientChat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientChat.d.ts","sourceRoot":"","sources":["../src/ClientChat.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwC,KAAK,SAAS,EAAe,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrK,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMjE,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2GAA2G;IAC3G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvE,gFAAgF;IAChF,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oGAAoG;IACpG,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,mFAAmF;IACnF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAoEhD"}
|