@appsupportkit/support-sdk 0.1.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/lib/commonjs/api.js +93 -0
- package/lib/commonjs/api.js.map +1 -0
- package/lib/commonjs/components/BottomSheet.js +158 -0
- package/lib/commonjs/components/BottomSheet.js.map +1 -0
- package/lib/commonjs/components/SupportButton.js +244 -0
- package/lib/commonjs/components/SupportButton.js.map +1 -0
- package/lib/commonjs/components/icons.js +236 -0
- package/lib/commonjs/components/icons.js.map +1 -0
- package/lib/commonjs/components/primitives.js +284 -0
- package/lib/commonjs/components/primitives.js.map +1 -0
- package/lib/commonjs/components/screens/ComposeScreen.js +171 -0
- package/lib/commonjs/components/screens/ComposeScreen.js.map +1 -0
- package/lib/commonjs/components/screens/HomeScreen.js +227 -0
- package/lib/commonjs/components/screens/HomeScreen.js.map +1 -0
- package/lib/commonjs/components/screens/ThreadScreen.js +213 -0
- package/lib/commonjs/components/screens/ThreadScreen.js.map +1 -0
- package/lib/commonjs/index.js +58 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme.js +29 -0
- package/lib/commonjs/theme.js.map +1 -0
- package/lib/commonjs/types.js +14 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils.js +63 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/module/api.js +84 -0
- package/lib/module/api.js.map +1 -0
- package/lib/module/components/BottomSheet.js +153 -0
- package/lib/module/components/BottomSheet.js.map +1 -0
- package/lib/module/components/SupportButton.js +240 -0
- package/lib/module/components/SupportButton.js.map +1 -0
- package/lib/module/components/icons.js +225 -0
- package/lib/module/components/icons.js.map +1 -0
- package/lib/module/components/primitives.js +270 -0
- package/lib/module/components/primitives.js.map +1 -0
- package/lib/module/components/screens/ComposeScreen.js +167 -0
- package/lib/module/components/screens/ComposeScreen.js.map +1 -0
- package/lib/module/components/screens/HomeScreen.js +223 -0
- package/lib/module/components/screens/HomeScreen.js.map +1 -0
- package/lib/module/components/screens/ThreadScreen.js +209 -0
- package/lib/module/components/screens/ThreadScreen.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/theme.js +23 -0
- package/lib/module/theme.js.map +1 -0
- package/lib/module/types.js +10 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils.js +57 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/api.d.ts +37 -0
- package/lib/typescript/api.d.ts.map +1 -0
- package/lib/typescript/components/BottomSheet.d.ts +9 -0
- package/lib/typescript/components/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/components/SupportButton.d.ts +8 -0
- package/lib/typescript/components/SupportButton.d.ts.map +1 -0
- package/lib/typescript/components/icons.d.ts +32 -0
- package/lib/typescript/components/icons.d.ts.map +1 -0
- package/lib/typescript/components/primitives.d.ts +60 -0
- package/lib/typescript/components/primitives.d.ts.map +1 -0
- package/lib/typescript/components/screens/ComposeScreen.d.ts +10 -0
- package/lib/typescript/components/screens/ComposeScreen.d.ts.map +1 -0
- package/lib/typescript/components/screens/HomeScreen.d.ts +13 -0
- package/lib/typescript/components/screens/HomeScreen.d.ts.map +1 -0
- package/lib/typescript/components/screens/ThreadScreen.d.ts +10 -0
- package/lib/typescript/components/screens/ThreadScreen.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +6 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/theme.d.ts +13 -0
- package/lib/typescript/theme.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +61 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/utils.d.ts +11 -0
- package/lib/typescript/utils.d.ts.map +1 -0
- package/package.json +51 -0
- package/src/api.ts +125 -0
- package/src/components/BottomSheet.tsx +173 -0
- package/src/components/SupportButton.tsx +265 -0
- package/src/components/icons.tsx +189 -0
- package/src/components/primitives.tsx +298 -0
- package/src/components/screens/ComposeScreen.tsx +163 -0
- package/src/components/screens/HomeScreen.tsx +234 -0
- package/src/components/screens/ThreadScreen.tsx +227 -0
- package/src/index.tsx +24 -0
- package/src/theme.ts +39 -0
- package/src/types.ts +71 -0
- package/src/utils.ts +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ScrollView","Text","View","QUERY_TYPE_LABEL","relativeTime","Chevron","CloseIcon","EmptyState","ErrorState","PressableRow","SkeletonBlock","textStyles","typeColor","typeIcon","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","COMPOSE_TYPES","ThreadRow","thread","theme","onPress","preview","last_message","body","accessibilityLabel","type","style","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","colors","border","children","flexDirection","alignItems","gap","unread_count","width","height","borderRadius","backgroundColor","accent","fontSize","fontWeight","color","meta","marginLeft","created_at","marginTop","numberOfLines","flex","textPrimary","textSecondary","textTertiary","HomeScreen","threads","loading","error","onRetry","onCompose","onOpenThread","onClose","open","filter","t","status","resolved","paddingBottom","title","padding","radii","control","size","marginHorizontal","borderWidth","borderColor","card","surface","overflow","map","i","toLowerCase","borderTopWidth","borderTopColor","message","paddingTop","length","textTransform","letterSpacing","id"],"sourceRoot":"../../../../src","sources":["components/screens/HomeScreen.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAGrD,SAASC,gBAAgB,QAAQ,aAAa;AAC9C,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,OAAO,EAAEC,SAAS,QAAQ,UAAU;AAC7C,SACEC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,QAAQ,QACH,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAEvB,MAAMC,aAA0B,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,CAAC;AAEhF,SAASC,SAASA,CAAC;EACjBC,MAAM;EACNC,KAAK;EACLC;AAKF,CAAC,EAAE;EACD,MAAMC,OAAO,GAAGH,MAAM,CAACI,YAAY,EAAEC,IAAI,IAAI,EAAE;EAC/C,oBACEV,KAAA,CAACR,YAAY;IACXe,OAAO,EAAEA,OAAQ;IACjBD,KAAK,EAAEA,KAAM;IACbK,kBAAkB,EAAE,GAAGzB,gBAAgB,CAACmB,MAAM,CAACO,IAAI,CAAC,SAAU;IAC9DC,KAAK,EAAE;MACLC,iBAAiB,EAAE,EAAE;MACrBC,eAAe,EAAE,EAAE;MACnBC,iBAAiB,EAAE,CAAC;MACpBC,iBAAiB,EAAEX,KAAK,CAACY,MAAM,CAACC;IAClC,CAAE;IAAAC,QAAA,gBAEFpB,KAAA,CAACf,IAAI;MAAC4B,KAAK,EAAE;QAAEQ,aAAa,EAAE,KAAK;QAAEC,UAAU,EAAE,QAAQ;QAAEC,GAAG,EAAE;MAAE,CAAE;MAAAH,QAAA,GACjEf,MAAM,CAACmB,YAAY,GAAG,CAAC,iBACtB1B,IAAA,CAACb,IAAI;QACH4B,KAAK,EAAE;UACLY,KAAK,EAAE,CAAC;UACRC,MAAM,EAAE,CAAC;UACTC,YAAY,EAAE,CAAC;UACfC,eAAe,EAAEtB,KAAK,CAACY,MAAM,CAACW;QAChC;MAAE,CACH,CACF,eACD/B,IAAA,CAACd,IAAI;QAAC6B,KAAK,EAAE;UAAEiB,QAAQ,EAAE,EAAE;UAAEC,UAAU,EAAE,KAAK;UAAEC,KAAK,EAAErC,SAAS,CAACU,MAAM,CAACO,IAAI,EAAEN,KAAK;QAAE,CAAE;QAAAc,QAAA,EACpFlC,gBAAgB,CAACmB,MAAM,CAACO,IAAI;MAAC,CAC1B,CAAC,eACPd,IAAA,CAACd,IAAI;QAAC6B,KAAK,EAAE,CAACnB,UAAU,CAACuC,IAAI,CAAC3B,KAAK,CAAC,EAAE;UAAE4B,UAAU,EAAE;QAAO,CAAC,CAAE;QAAAd,QAAA,EAC3Df,MAAM,CAACI,YAAY,GAChBtB,YAAY,CAACkB,MAAM,CAACI,YAAY,CAAC0B,UAAU,CAAC,GAC5ChD,YAAY,CAACkB,MAAM,CAAC8B,UAAU;MAAC,CAC/B,CAAC;IAAA,CACH,CAAC,eACPnC,KAAA,CAACf,IAAI;MAAC4B,KAAK,EAAE;QAAEQ,aAAa,EAAE,KAAK;QAAEC,UAAU,EAAE,QAAQ;QAAEC,GAAG,EAAE,CAAC;QAAEa,SAAS,EAAE;MAAE,CAAE;MAAAhB,QAAA,gBAChFtB,IAAA,CAACd,IAAI;QACHqD,aAAa,EAAE,CAAE;QACjBxB,KAAK,EAAE;UACLyB,IAAI,EAAE,CAAC;UACPR,QAAQ,EAAE,EAAE;UACZE,KAAK,EACH3B,MAAM,CAACmB,YAAY,GAAG,CAAC,GACnBlB,KAAK,CAACY,MAAM,CAACqB,WAAW,GACxBjC,KAAK,CAACY,MAAM,CAACsB,aAAa;UAChCT,UAAU,EAAE1B,MAAM,CAACmB,YAAY,GAAG,CAAC,GAAG,KAAK,GAAG;QAChD,CAAE;QAAAJ,QAAA,EAEDZ;MAAO,CACJ,CAAC,eACPV,IAAA,CAACV,OAAO;QAAC4C,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACuB;MAAa,CAAE,CAAC;IAAA,CACzC,CAAC;EAAA,CACK,CAAC;AAEnB;AAEA,OAAO,SAASC,UAAUA,CAAC;EACzBpC,KAAK;EACLqC,OAAO;EACPC,OAAO;EACPC,KAAK;EACLC,OAAO;EACPC,SAAS;EACTC,YAAY;EACZC;AAUF,CAAC,EAAE;EACD,MAAMC,IAAI,GAAG,CAACP,OAAO,IAAI,EAAE,EAAEQ,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,KAAK,MAAM,CAAC;EAC/D,MAAMC,QAAQ,GAAG,CAACX,OAAO,IAAI,EAAE,EAAEQ,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,KAAK,UAAU,CAAC;EAEvE,oBACErD,KAAA,CAACf,IAAI;IAAC4B,KAAK,EAAE;MAAEyB,IAAI,EAAE;IAAE,CAAE;IAAAlB,QAAA,gBAEvBpB,KAAA,CAACf,IAAI;MACH4B,KAAK,EAAE;QACLQ,aAAa,EAAE,KAAK;QACpBC,UAAU,EAAE,QAAQ;QACpBR,iBAAiB,EAAE,EAAE;QACrByC,aAAa,EAAE;MACjB,CAAE;MAAAnC,QAAA,gBAEFtB,IAAA,CAACd,IAAI;QAAC6B,KAAK,EAAEnB,UAAU,CAAC8D,KAAK,CAAClD,KAAK,CAAE;QAAAc,QAAA,EAAC;MAAO,CAAM,CAAC,eACpDtB,IAAA,CAACN,YAAY;QACXe,OAAO,EAAE0C,OAAQ;QACjB3C,KAAK,EAAEA,KAAM;QACbK,kBAAkB,EAAC,OAAO;QAC1BE,KAAK,EAAE;UAAEqB,UAAU,EAAE,MAAM;UAAEuB,OAAO,EAAE,CAAC;UAAE9B,YAAY,EAAErB,KAAK,CAACoD,KAAK,CAACC;QAAQ,CAAE;QAAAvC,QAAA,eAE7EtB,IAAA,CAACT,SAAS;UAAC2C,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACsB,aAAc;UAACoB,IAAI,EAAE;QAAG,CAAE;MAAC,CAC9C,CAAC;IAAA,CACX,CAAC,eAEP5D,KAAA,CAACjB,UAAU;MAAC8B,KAAK,EAAE;QAAEyB,IAAI,EAAE;MAAE,CAAE;MAAAlB,QAAA,gBAE7BtB,IAAA,CAACb,IAAI;QACH4B,KAAK,EAAE;UACLgD,gBAAgB,EAAE,EAAE;UACpBC,WAAW,EAAE,CAAC;UACdC,WAAW,EAAEzD,KAAK,CAACY,MAAM,CAACC,MAAM;UAChCQ,YAAY,EAAErB,KAAK,CAACoD,KAAK,CAACM,IAAI;UAC9BpC,eAAe,EAAEtB,KAAK,CAACY,MAAM,CAAC+C,OAAO;UACrCC,QAAQ,EAAE;QACZ,CAAE;QAAA9C,QAAA,EAEDjB,aAAa,CAACgE,GAAG,CAAC,CAACvD,IAAI,EAAEwD,CAAC,kBACzBpE,KAAA,CAACR,YAAY;UAEXe,OAAO,EAAEA,CAAA,KAAMwC,SAAS,CAACnC,IAAI,CAAE;UAC/BN,KAAK,EAAEA,KAAM;UACbK,kBAAkB,EAAE,OAAOzB,gBAAgB,CAAC0B,IAAI,CAAC,CAACyD,WAAW,CAAC,CAAC,EAAG;UAClExD,KAAK,EAAE;YACLQ,aAAa,EAAE,KAAK;YACpBC,UAAU,EAAE,QAAQ;YACpBC,GAAG,EAAE,EAAE;YACPT,iBAAiB,EAAE,EAAE;YACrBC,eAAe,EAAE,EAAE;YACnBuD,cAAc,EAAEF,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAC/BG,cAAc,EAAEjE,KAAK,CAACY,MAAM,CAACC;UAC/B,CAAE;UAAAC,QAAA,GAEDxB,QAAQ,CAACgB,IAAI,EAAEjB,SAAS,CAACiB,IAAI,EAAEN,KAAK,CAAC,CAAC,eACvCR,IAAA,CAACd,IAAI;YAAC6B,KAAK,EAAE;cAAEiB,QAAQ,EAAE,EAAE;cAAEE,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACqB,WAAW;cAAED,IAAI,EAAE;YAAE,CAAE;YAAAlB,QAAA,EACrElC,gBAAgB,CAAC0B,IAAI;UAAC,CACnB,CAAC,eACPd,IAAA,CAACV,OAAO;YAAC4C,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACuB;UAAa,CAAE,CAAC;QAAA,GAlBxC7B,IAmBO,CACf;MAAC,CACE,CAAC,EAGNiC,KAAK,gBACJ/C,IAAA,CAACP,UAAU;QAACiF,OAAO,EAAE3B,KAAM;QAACC,OAAO,EAAEA,OAAQ;QAACxC,KAAK,EAAEA;MAAM,CAAE,CAAC,GAC5DsC,OAAO,IAAID,OAAO,KAAK,IAAI,gBAC7B3C,KAAA,CAACf,IAAI;QAAC4B,KAAK,EAAE;UAAEC,iBAAiB,EAAE,EAAE;UAAE2D,UAAU,EAAE,EAAE;UAAElD,GAAG,EAAE;QAAG,CAAE;QAAAH,QAAA,gBAC9DtB,IAAA,CAACL,aAAa;UAACgC,KAAK,EAAE,EAAG;UAACC,MAAM,EAAE,EAAG;UAACpB,KAAK,EAAEA;QAAM,CAAE,CAAC,eACtDR,IAAA,CAACL,aAAa;UAACgC,KAAK,EAAC,MAAM;UAACC,MAAM,EAAE,EAAG;UAACpB,KAAK,EAAEA;QAAM,CAAE,CAAC,eACxDR,IAAA,CAACL,aAAa;UAACgC,KAAK,EAAC,MAAM;UAACC,MAAM,EAAE,EAAG;UAACpB,KAAK,EAAEA;QAAM,CAAE,CAAC;MAAA,CACpD,CAAC,GACL,CAACqC,OAAO,IAAI,EAAE,EAAE+B,MAAM,KAAK,CAAC,gBAC9B5E,IAAA,CAACR,UAAU;QAACkF,OAAO,EAAC,gBAAgB;QAAClE,KAAK,EAAEA;MAAM,CAAE,CAAC,gBAErDN,KAAA,CAAAE,SAAA;QAAAkB,QAAA,GACG8B,IAAI,CAACwB,MAAM,GAAG,CAAC,iBACd1E,KAAA,CAAAE,SAAA;UAAAkB,QAAA,gBACEtB,IAAA,CAACd,IAAI;YACH6B,KAAK,EAAE;cACLiB,QAAQ,EAAE,EAAE;cACZC,UAAU,EAAE,KAAK;cACjB4C,aAAa,EAAE,WAAW;cAC1BC,aAAa,EAAE,GAAG;cAClB5C,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACuB,YAAY;cAChC3B,iBAAiB,EAAE,EAAE;cACrB2D,UAAU,EAAE,EAAE;cACdlB,aAAa,EAAE;YACjB,CAAE;YAAAnC,QAAA,EACH;UAED,CAAM,CAAC,EACN8B,IAAI,CAACiB,GAAG,CAAEf,CAAC,iBACVtD,IAAA,CAACM,SAAS;YAERC,MAAM,EAAE+C,CAAE;YACV9C,KAAK,EAAEA,KAAM;YACbC,OAAO,EAAEA,CAAA,KAAMyC,YAAY,CAACI,CAAC;UAAE,GAH1BA,CAAC,CAACyB,EAIR,CACF,CAAC;QAAA,CACF,CACH,EACAvB,QAAQ,CAACoB,MAAM,GAAG,CAAC,iBAClB1E,KAAA,CAAAE,SAAA;UAAAkB,QAAA,gBACEtB,IAAA,CAACd,IAAI;YACH6B,KAAK,EAAE;cACLiB,QAAQ,EAAE,EAAE;cACZC,UAAU,EAAE,KAAK;cACjB4C,aAAa,EAAE,WAAW;cAC1BC,aAAa,EAAE,GAAG;cAClB5C,KAAK,EAAE1B,KAAK,CAACY,MAAM,CAACuB,YAAY;cAChC3B,iBAAiB,EAAE,EAAE;cACrB2D,UAAU,EAAE,EAAE;cACdlB,aAAa,EAAE;YACjB,CAAE;YAAAnC,QAAA,EACH;UAED,CAAM,CAAC,EACNkC,QAAQ,CAACa,GAAG,CAAEf,CAAC,iBACdtD,IAAA,CAACM,SAAS;YAERC,MAAM,EAAE+C,CAAE;YACV9C,KAAK,EAAEA,KAAM;YACbC,OAAO,EAAEA,CAAA,KAAMyC,YAAY,CAACI,CAAC;UAAE,GAH1BA,CAAC,CAACyB,EAIR,CACF,CAAC;QAAA,CACF,CACH,eACD/E,IAAA,CAACb,IAAI;UAAC4B,KAAK,EAAE;YAAEa,MAAM,EAAE;UAAG;QAAE,CAAE,CAAC;MAAA,CAC/B,CACH;IAAA,CACS,CAAC;EAAA,CACT,CAAC;AAEX","ignoreList":[]}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { KeyboardAvoidingView, Platform, ScrollView, Text, TextInput, View } from 'react-native';
|
|
5
|
+
import { USER_MESSAGE_MAX, USER_MESSAGE_MIN } from '../../types';
|
|
6
|
+
import { formatDate, relativeTime } from '../../utils';
|
|
7
|
+
import { Chevron } from '../icons';
|
|
8
|
+
import { PressableRow, PrimaryButton, StatusIndicator, textStyles, TypeChipView } from '../primitives';
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
|
+
export function ThreadScreen({
|
|
11
|
+
theme,
|
|
12
|
+
thread,
|
|
13
|
+
onBack,
|
|
14
|
+
onSend
|
|
15
|
+
}) {
|
|
16
|
+
const [draft, setDraft] = useState('');
|
|
17
|
+
const [sending, setSending] = useState(false);
|
|
18
|
+
const [failed, setFailed] = useState(false);
|
|
19
|
+
const scrollRef = useRef(null);
|
|
20
|
+
const resolved = thread.status === 'resolved';
|
|
21
|
+
const trimmed = draft.trim();
|
|
22
|
+
const valid = trimmed.length >= USER_MESSAGE_MIN && trimmed.length <= USER_MESSAGE_MAX;
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
scrollRef.current?.scrollToEnd({
|
|
25
|
+
animated: false
|
|
26
|
+
});
|
|
27
|
+
}, [thread.messages.length]);
|
|
28
|
+
async function handleSend() {
|
|
29
|
+
if (!valid || sending || resolved) return;
|
|
30
|
+
setSending(true);
|
|
31
|
+
setFailed(false);
|
|
32
|
+
const ok = await onSend(trimmed);
|
|
33
|
+
setSending(false);
|
|
34
|
+
if (ok) setDraft('');else setFailed(true);
|
|
35
|
+
}
|
|
36
|
+
return /*#__PURE__*/_jsxs(KeyboardAvoidingView, {
|
|
37
|
+
style: {
|
|
38
|
+
flex: 1
|
|
39
|
+
},
|
|
40
|
+
behavior: Platform.OS === 'ios' ? 'padding' : undefined,
|
|
41
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
42
|
+
style: {
|
|
43
|
+
flexDirection: 'row',
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
gap: 8,
|
|
46
|
+
paddingHorizontal: 12,
|
|
47
|
+
paddingBottom: 10,
|
|
48
|
+
borderBottomWidth: 1,
|
|
49
|
+
borderBottomColor: theme.colors.border
|
|
50
|
+
},
|
|
51
|
+
children: [/*#__PURE__*/_jsx(PressableRow, {
|
|
52
|
+
onPress: onBack,
|
|
53
|
+
theme: theme,
|
|
54
|
+
accessibilityLabel: "Back",
|
|
55
|
+
style: {
|
|
56
|
+
padding: 6,
|
|
57
|
+
borderRadius: theme.radii.control
|
|
58
|
+
},
|
|
59
|
+
children: /*#__PURE__*/_jsx(Chevron, {
|
|
60
|
+
color: theme.colors.textSecondary,
|
|
61
|
+
direction: "left",
|
|
62
|
+
size: 12
|
|
63
|
+
})
|
|
64
|
+
}), /*#__PURE__*/_jsx(TypeChipView, {
|
|
65
|
+
type: thread.type,
|
|
66
|
+
theme: theme
|
|
67
|
+
}), /*#__PURE__*/_jsx(StatusIndicator, {
|
|
68
|
+
status: thread.status,
|
|
69
|
+
theme: theme
|
|
70
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
71
|
+
style: [textStyles.meta(theme), {
|
|
72
|
+
marginLeft: 'auto'
|
|
73
|
+
}],
|
|
74
|
+
children: relativeTime(thread.created_at)
|
|
75
|
+
})]
|
|
76
|
+
}), /*#__PURE__*/_jsxs(ScrollView, {
|
|
77
|
+
ref: scrollRef,
|
|
78
|
+
style: {
|
|
79
|
+
flex: 1
|
|
80
|
+
},
|
|
81
|
+
contentContainerStyle: {
|
|
82
|
+
padding: 16,
|
|
83
|
+
gap: 10
|
|
84
|
+
},
|
|
85
|
+
children: [thread.messages.map(m => {
|
|
86
|
+
const own = m.sender === 'user';
|
|
87
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
88
|
+
style: {
|
|
89
|
+
maxWidth: '85%',
|
|
90
|
+
alignSelf: own ? 'flex-end' : 'flex-start',
|
|
91
|
+
alignItems: own ? 'flex-end' : 'flex-start',
|
|
92
|
+
gap: 3
|
|
93
|
+
},
|
|
94
|
+
children: [!own && /*#__PURE__*/_jsx(Text, {
|
|
95
|
+
style: textStyles.meta(theme),
|
|
96
|
+
children: m.admin_name ?? 'Support'
|
|
97
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
98
|
+
style: {
|
|
99
|
+
borderRadius: theme.radii.card,
|
|
100
|
+
paddingHorizontal: 12,
|
|
101
|
+
paddingVertical: 8,
|
|
102
|
+
backgroundColor: own ? theme.colors.accentMuted : theme.colors.surface,
|
|
103
|
+
borderWidth: own ? 0 : 1,
|
|
104
|
+
borderColor: theme.colors.border
|
|
105
|
+
},
|
|
106
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
107
|
+
style: textStyles.body(theme),
|
|
108
|
+
children: m.body
|
|
109
|
+
})
|
|
110
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
111
|
+
style: textStyles.meta(theme),
|
|
112
|
+
children: relativeTime(m.created_at)
|
|
113
|
+
})]
|
|
114
|
+
}, m.id);
|
|
115
|
+
}), resolved && thread.resolved_at && /*#__PURE__*/_jsxs(View, {
|
|
116
|
+
style: {
|
|
117
|
+
flexDirection: 'row',
|
|
118
|
+
alignItems: 'center',
|
|
119
|
+
gap: 10,
|
|
120
|
+
marginVertical: 6
|
|
121
|
+
},
|
|
122
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
123
|
+
style: {
|
|
124
|
+
flex: 1,
|
|
125
|
+
height: 1,
|
|
126
|
+
backgroundColor: theme.colors.border
|
|
127
|
+
}
|
|
128
|
+
}), /*#__PURE__*/_jsxs(Text, {
|
|
129
|
+
style: textStyles.meta(theme),
|
|
130
|
+
children: ["Resolved by ", thread.resolved_by_name ?? 'support', " \xB7", ' ', formatDate(thread.resolved_at)]
|
|
131
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
132
|
+
style: {
|
|
133
|
+
flex: 1,
|
|
134
|
+
height: 1,
|
|
135
|
+
backgroundColor: theme.colors.border
|
|
136
|
+
}
|
|
137
|
+
})]
|
|
138
|
+
})]
|
|
139
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
140
|
+
style: {
|
|
141
|
+
borderTopWidth: 1,
|
|
142
|
+
borderTopColor: theme.colors.border,
|
|
143
|
+
paddingHorizontal: 16,
|
|
144
|
+
paddingTop: 10
|
|
145
|
+
},
|
|
146
|
+
children: resolved ? /*#__PURE__*/_jsx(Text, {
|
|
147
|
+
style: [textStyles.meta(theme), {
|
|
148
|
+
textAlign: 'center',
|
|
149
|
+
paddingVertical: 8
|
|
150
|
+
}],
|
|
151
|
+
children: "This thread is resolved and read-only"
|
|
152
|
+
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
|
153
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
154
|
+
value: draft,
|
|
155
|
+
onChangeText: v => {
|
|
156
|
+
setDraft(v);
|
|
157
|
+
setFailed(false);
|
|
158
|
+
},
|
|
159
|
+
multiline: true,
|
|
160
|
+
placeholder: "Reply",
|
|
161
|
+
placeholderTextColor: theme.colors.textTertiary,
|
|
162
|
+
style: {
|
|
163
|
+
minHeight: 60,
|
|
164
|
+
maxHeight: 120,
|
|
165
|
+
borderWidth: 1,
|
|
166
|
+
borderColor: theme.colors.border,
|
|
167
|
+
borderRadius: theme.radii.control,
|
|
168
|
+
backgroundColor: theme.colors.surface,
|
|
169
|
+
color: theme.colors.textPrimary,
|
|
170
|
+
fontSize: 14,
|
|
171
|
+
lineHeight: 20,
|
|
172
|
+
padding: 10,
|
|
173
|
+
textAlignVertical: 'top'
|
|
174
|
+
}
|
|
175
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
176
|
+
style: {
|
|
177
|
+
flexDirection: 'row',
|
|
178
|
+
alignItems: 'center',
|
|
179
|
+
gap: 12,
|
|
180
|
+
paddingVertical: 8
|
|
181
|
+
},
|
|
182
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
183
|
+
style: [textStyles.meta(theme), draft.length > USER_MESSAGE_MAX && {
|
|
184
|
+
color: theme.colors.statusDanger
|
|
185
|
+
}],
|
|
186
|
+
children: [draft.length, "/", USER_MESSAGE_MAX]
|
|
187
|
+
}), failed && /*#__PURE__*/_jsx(Text, {
|
|
188
|
+
style: {
|
|
189
|
+
fontSize: 11,
|
|
190
|
+
color: theme.colors.statusDanger
|
|
191
|
+
},
|
|
192
|
+
children: "Couldn't send \u2014 try again"
|
|
193
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
194
|
+
style: {
|
|
195
|
+
marginLeft: 'auto'
|
|
196
|
+
},
|
|
197
|
+
children: /*#__PURE__*/_jsx(PrimaryButton, {
|
|
198
|
+
label: sending ? 'Sending…' : 'Send',
|
|
199
|
+
onPress: handleSend,
|
|
200
|
+
disabled: !valid || sending,
|
|
201
|
+
theme: theme
|
|
202
|
+
})
|
|
203
|
+
})]
|
|
204
|
+
})]
|
|
205
|
+
})
|
|
206
|
+
})]
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=ThreadScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","KeyboardAvoidingView","Platform","ScrollView","Text","TextInput","View","USER_MESSAGE_MAX","USER_MESSAGE_MIN","formatDate","relativeTime","Chevron","PressableRow","PrimaryButton","StatusIndicator","textStyles","TypeChipView","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ThreadScreen","theme","thread","onBack","onSend","draft","setDraft","sending","setSending","failed","setFailed","scrollRef","resolved","status","trimmed","trim","valid","length","current","scrollToEnd","animated","messages","handleSend","ok","style","flex","behavior","OS","undefined","children","flexDirection","alignItems","gap","paddingHorizontal","paddingBottom","borderBottomWidth","borderBottomColor","colors","border","onPress","accessibilityLabel","padding","borderRadius","radii","control","color","textSecondary","direction","size","type","meta","marginLeft","created_at","ref","contentContainerStyle","map","m","own","sender","maxWidth","alignSelf","admin_name","card","paddingVertical","backgroundColor","accentMuted","surface","borderWidth","borderColor","body","id","resolved_at","marginVertical","height","resolved_by_name","borderTopWidth","borderTopColor","paddingTop","textAlign","value","onChangeText","v","multiline","placeholder","placeholderTextColor","textTertiary","minHeight","maxHeight","textPrimary","fontSize","lineHeight","textAlignVertical","statusDanger","label","disabled"],"sourceRoot":"../../../../src","sources":["components/screens/ThreadScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export { SupportButton } from './components/SupportButton';
|
|
4
|
+
export { supportDarkTheme, supportLightTheme, resolveTheme } from './theme';
|
|
5
|
+
export { SupportApiError } from './api';
|
|
6
|
+
export { QUERY_TYPE_LABEL, USER_MESSAGE_MAX, USER_MESSAGE_MIN } from './types';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SupportButton","supportDarkTheme","supportLightTheme","resolveTheme","SupportApiError","QUERY_TYPE_LABEL","USER_MESSAGE_MAX","USER_MESSAGE_MIN"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,SACEC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,QAEP,SAAS;AAChB,SAASC,eAAe,QAAQ,OAAO;AAYvC,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,gBAAgB,QACX,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// The SDK consumes the same design tokens as the admin dashboard, so both
|
|
4
|
+
// surfaces look like one product.
|
|
5
|
+
import { darkColors, lightColors, motion, radii, spacing } from '@appsupportkit/design-tokens';
|
|
6
|
+
export const supportDarkTheme = {
|
|
7
|
+
name: 'dark',
|
|
8
|
+
colors: darkColors,
|
|
9
|
+
spacing,
|
|
10
|
+
radii,
|
|
11
|
+
motion
|
|
12
|
+
};
|
|
13
|
+
export const supportLightTheme = {
|
|
14
|
+
name: 'light',
|
|
15
|
+
colors: lightColors,
|
|
16
|
+
spacing,
|
|
17
|
+
radii,
|
|
18
|
+
motion
|
|
19
|
+
};
|
|
20
|
+
export function resolveTheme(name) {
|
|
21
|
+
return name === 'light' ? supportLightTheme : supportDarkTheme;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["darkColors","lightColors","motion","radii","spacing","supportDarkTheme","name","colors","supportLightTheme","resolveTheme"],"sourceRoot":"../../src","sources":["theme.ts"],"mappings":";;AAAA;AACA;AACA,SACEA,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,KAAK,EACLC,OAAO,QAEF,8BAA8B;AAWrC,OAAO,MAAMC,gBAA8B,GAAG;EAC5CC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAEP,UAAU;EAClBI,OAAO;EACPD,KAAK;EACLD;AACF,CAAC;AAED,OAAO,MAAMM,iBAA+B,GAAG;EAC7CF,IAAI,EAAE,OAAO;EACbC,MAAM,EAAEN,WAAW;EACnBG,OAAO;EACPD,KAAK;EACLD;AACF,CAAC;AAED,OAAO,SAASO,YAAYA,CAACH,IAA2B,EAAgB;EACtE,OAAOA,IAAI,KAAK,OAAO,GAAGE,iBAAiB,GAAGH,gBAAgB;AAChE","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["QUERY_TYPE_LABEL","feedback","feature_request","bug_report","USER_MESSAGE_MIN","USER_MESSAGE_MAX"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AA+DA,OAAO,MAAMA,gBAA2C,GAAG;EACzDC,QAAQ,EAAE,UAAU;EACpBC,eAAe,EAAE,iBAAiB;EAClCC,UAAU,EAAE;AACd,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAG,EAAE;AAClC,OAAO,MAAMC,gBAAgB,GAAG,GAAG","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** "2h ago" relative time — mirrors the web dashboard's formatting. */
|
|
4
|
+
export function relativeTime(iso) {
|
|
5
|
+
const then = new Date(iso).getTime();
|
|
6
|
+
const seconds = Math.max(0, Math.floor((Date.now() - then) / 1000));
|
|
7
|
+
if (seconds < 60) return 'just now';
|
|
8
|
+
const minutes = Math.floor(seconds / 60);
|
|
9
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
10
|
+
const hours = Math.floor(minutes / 60);
|
|
11
|
+
if (hours < 24) return `${hours}h ago`;
|
|
12
|
+
const days = Math.floor(hours / 24);
|
|
13
|
+
if (days < 7) return `${days}d ago`;
|
|
14
|
+
const weeks = Math.floor(days / 7);
|
|
15
|
+
if (weeks < 5) return `${weeks}w ago`;
|
|
16
|
+
const months = Math.floor(days / 30);
|
|
17
|
+
if (months < 12) return `${months}mo ago`;
|
|
18
|
+
return `${Math.floor(days / 365)}y ago`;
|
|
19
|
+
}
|
|
20
|
+
export function formatDate(iso) {
|
|
21
|
+
return new Date(iso).toLocaleDateString(undefined, {
|
|
22
|
+
year: 'numeric',
|
|
23
|
+
month: 'short',
|
|
24
|
+
day: 'numeric'
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Dev-mode prop validation with actionable messages. */
|
|
29
|
+
export function validateProps(props) {
|
|
30
|
+
if (typeof props.appName !== 'string' || props.appName.length === 0) {
|
|
31
|
+
return 'SupportButton: `appName` is required — the app name registered in the admin dashboard.';
|
|
32
|
+
}
|
|
33
|
+
if (typeof props.apiKey !== 'string' || props.apiKey.length === 0) {
|
|
34
|
+
return 'SupportButton: `apiKey` is required — the key shown once when the app was registered.';
|
|
35
|
+
}
|
|
36
|
+
if (typeof props.supabaseUrl !== 'string' || !/^https?:\/\//.test(props.supabaseUrl)) {
|
|
37
|
+
return 'SupportButton: `supabaseUrl` is required — your Supabase project URL, e.g. "https://abcd1234.supabase.co".';
|
|
38
|
+
}
|
|
39
|
+
const user = props.user;
|
|
40
|
+
if (!user || typeof user !== 'object') {
|
|
41
|
+
return 'SupportButton: `user` is required — { name, isPaid, revenuecatId, appVersion }.';
|
|
42
|
+
}
|
|
43
|
+
if (typeof user.name !== 'string' || user.name.length === 0) {
|
|
44
|
+
return 'SupportButton: `user.name` is required (string).';
|
|
45
|
+
}
|
|
46
|
+
if (typeof user.isPaid !== 'boolean') {
|
|
47
|
+
return 'SupportButton: `user.isPaid` is required (boolean).';
|
|
48
|
+
}
|
|
49
|
+
if (typeof user.revenuecatId !== 'string' || user.revenuecatId.length === 0) {
|
|
50
|
+
return 'SupportButton: `user.revenuecatId` is required (string) — the RevenueCat app user id.';
|
|
51
|
+
}
|
|
52
|
+
if (typeof user.appVersion !== 'string' || user.appVersion.length === 0) {
|
|
53
|
+
return 'SupportButton: `user.appVersion` is required (string), e.g. "2.4.1".';
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["relativeTime","iso","then","Date","getTime","seconds","Math","max","floor","now","minutes","hours","days","weeks","months","formatDate","toLocaleDateString","undefined","year","month","day","validateProps","props","appName","length","apiKey","supabaseUrl","test","user","name","isPaid","revenuecatId","appVersion"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { QueryType, ThreadsResponse } from './types';
|
|
2
|
+
export interface ApiConfig {
|
|
3
|
+
supabaseUrl: string;
|
|
4
|
+
apiKey: string;
|
|
5
|
+
appName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class SupportApiError extends Error {
|
|
8
|
+
status: number | null;
|
|
9
|
+
/** True for network-level failures (likely offline). */
|
|
10
|
+
offline: boolean;
|
|
11
|
+
constructor(message: string, status: number | null, offline?: boolean);
|
|
12
|
+
}
|
|
13
|
+
export declare function getThreads(config: ApiConfig, revenuecatId: string): Promise<ThreadsResponse>;
|
|
14
|
+
export declare function submitQuery(config: ApiConfig, input: {
|
|
15
|
+
queryType: QueryType;
|
|
16
|
+
message: string;
|
|
17
|
+
userName: string;
|
|
18
|
+
isPaid: boolean;
|
|
19
|
+
revenuecatId: string;
|
|
20
|
+
appVersion: string;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
query_id: string;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function postMessage(config: ApiConfig, input: {
|
|
25
|
+
queryId: string;
|
|
26
|
+
revenuecatId: string;
|
|
27
|
+
message: string;
|
|
28
|
+
}): Promise<{
|
|
29
|
+
message_id: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function markRead(config: ApiConfig, input: {
|
|
32
|
+
queryId: string;
|
|
33
|
+
revenuecatId: string;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
ok: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;gBAEL,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,UAAQ;CAMpE;AA2CD,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAK1B;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;IACL,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAa/B;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CASjC;AAED,wBAAgB,QAAQ,CACtB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAQ1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { SupportTheme } from '../theme';
|
|
3
|
+
export declare function BottomSheet({ visible, onClose, theme, children, }: {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
theme: SupportTheme;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): import("react").JSX.Element | null;
|
|
9
|
+
//# sourceMappingURL=BottomSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/components/BottomSheet.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,sCA6IA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SupportButtonProps } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* The single entry point of the SDK: a button with an unread badge that
|
|
4
|
+
* opens the support bottom sheet. Polls get-threads on mount and whenever
|
|
5
|
+
* the sheet opens (no websockets in v1).
|
|
6
|
+
*/
|
|
7
|
+
export declare function SupportButton(props: SupportButtonProps): import("react").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=SupportButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SupportButton.d.ts","sourceRoot":"","sources":["../../../src/components/SupportButton.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,kBAAkB,EAAU,MAAM,UAAU,CAAC;AAatE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,sCAkPtD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare function ChatIcon({ color, size }: {
|
|
2
|
+
color: string;
|
|
3
|
+
size?: number;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
export declare function PlusCircleIcon({ color, size }: {
|
|
6
|
+
color: string;
|
|
7
|
+
size?: number;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
export declare function AlertCircleIcon({ color, size }: {
|
|
10
|
+
color: string;
|
|
11
|
+
size?: number;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
/** Chevron built from two borders, rotated. direction: right | left | down. */
|
|
14
|
+
export declare function Chevron({ color, size, direction, }: {
|
|
15
|
+
color: string;
|
|
16
|
+
size?: number;
|
|
17
|
+
direction?: 'right' | 'left' | 'down';
|
|
18
|
+
}): import("react").JSX.Element;
|
|
19
|
+
export declare function CloseIcon({ color, size }: {
|
|
20
|
+
color: string;
|
|
21
|
+
size?: number;
|
|
22
|
+
}): import("react").JSX.Element;
|
|
23
|
+
export declare function CheckIcon({ color, size }: {
|
|
24
|
+
color: string;
|
|
25
|
+
size?: number;
|
|
26
|
+
}): import("react").JSX.Element;
|
|
27
|
+
/** The chat-bubble mark on the floating support button. */
|
|
28
|
+
export declare function BubbleMark({ color, size }: {
|
|
29
|
+
color: string;
|
|
30
|
+
size?: number;
|
|
31
|
+
}): import("react").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../src/components/icons.tsx"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BA0B9E;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAyBpF;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAyBrF;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAS,EACT,SAAmB,GACpB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACvC,+BAeA;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAc/E;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAc/E;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,+BAwChF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type StyleProp, type TextStyle, type ViewStyle } from 'react-native';
|
|
3
|
+
import type { SupportTheme } from '../theme';
|
|
4
|
+
import type { QueryStatus, QueryType } from '../types';
|
|
5
|
+
export declare function typeIcon(type: QueryType, color: string, size?: number): ReactNode;
|
|
6
|
+
export declare function typeColor(type: QueryType, theme: SupportTheme): string;
|
|
7
|
+
/** Status dot + label — same visual language as the dashboard. */
|
|
8
|
+
export declare function StatusIndicator({ status, theme, }: {
|
|
9
|
+
status: QueryStatus;
|
|
10
|
+
theme: SupportTheme;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
/** Pressable row with the standard hover/press wash. */
|
|
13
|
+
export declare function PressableRow({ onPress, children, theme, style, accessibilityLabel, }: {
|
|
14
|
+
onPress: () => void;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
theme: SupportTheme;
|
|
17
|
+
style?: StyleProp<ViewStyle>;
|
|
18
|
+
accessibilityLabel?: string;
|
|
19
|
+
}): import("react").JSX.Element;
|
|
20
|
+
export declare function PrimaryButton({ label, onPress, disabled, theme, }: {
|
|
21
|
+
label: string;
|
|
22
|
+
onPress: () => void;
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
theme: SupportTheme;
|
|
25
|
+
}): import("react").JSX.Element;
|
|
26
|
+
export declare function SecondaryButton({ label, onPress, theme, }: {
|
|
27
|
+
label: string;
|
|
28
|
+
onPress: () => void;
|
|
29
|
+
theme: SupportTheme;
|
|
30
|
+
}): import("react").JSX.Element;
|
|
31
|
+
/** Small muted icon + one line — no illustrations. */
|
|
32
|
+
export declare function EmptyState({ message, theme, icon, }: {
|
|
33
|
+
message: string;
|
|
34
|
+
theme: SupportTheme;
|
|
35
|
+
icon?: ReactNode;
|
|
36
|
+
}): import("react").JSX.Element;
|
|
37
|
+
/** Inline failure state with retry — errors are designed, not toasted. */
|
|
38
|
+
export declare function ErrorState({ message, onRetry, theme, }: {
|
|
39
|
+
message: string;
|
|
40
|
+
onRetry: () => void;
|
|
41
|
+
theme: SupportTheme;
|
|
42
|
+
}): import("react").JSX.Element;
|
|
43
|
+
/** Pulsing block matching final layout dimensions. */
|
|
44
|
+
export declare function SkeletonBlock({ width, height, theme, style, }: {
|
|
45
|
+
width: number | `${number}%`;
|
|
46
|
+
height: number;
|
|
47
|
+
theme: SupportTheme;
|
|
48
|
+
style?: StyleProp<ViewStyle>;
|
|
49
|
+
}): import("react").JSX.Element;
|
|
50
|
+
export declare const textStyles: {
|
|
51
|
+
title: (theme: SupportTheme) => TextStyle;
|
|
52
|
+
body: (theme: SupportTheme) => TextStyle;
|
|
53
|
+
secondary: (theme: SupportTheme) => TextStyle;
|
|
54
|
+
meta: (theme: SupportTheme) => TextStyle;
|
|
55
|
+
};
|
|
56
|
+
export declare function TypeChipView({ type, theme, }: {
|
|
57
|
+
type: QueryType;
|
|
58
|
+
theme: SupportTheme;
|
|
59
|
+
}): import("react").JSX.Element;
|
|
60
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../src/components/primitives.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIvD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,SAAS,CAI7E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAItE;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,KAAK,GACN,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB,+BAaA;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,EACL,kBAAkB,GACnB,EAAE;IACD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,+BAcA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;CACrB,+BA6BA;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB,+BAuBA;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,EACL,IAAI,GACL,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,+BASA;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB,+BASA;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,MAAM,EACN,KAAK,EACL,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,+BAoCA;AAED,eAAO,MAAM,UAAU;mBACN,YAAY,KAAG,SAAS;kBAMzB,YAAY,KAAG,SAAS;uBAKnB,YAAY,KAAG,SAAS;kBAI7B,YAAY,KAAG,SAAS;CAKvC,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,KAAK,GACN,EAAE;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;CACrB,+BA2BA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SupportTheme } from '../../theme';
|
|
2
|
+
import type { QueryType } from '../../types';
|
|
3
|
+
export declare function ComposeScreen({ theme, type, onBack, onSubmit, }: {
|
|
4
|
+
theme: SupportTheme;
|
|
5
|
+
type: QueryType;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
/** Resolves true on success. */
|
|
8
|
+
onSubmit: (message: string) => Promise<boolean>;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=ComposeScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposeScreen.d.ts","sourceRoot":"","sources":["../../../../src/components/screens/ComposeScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,gCAAgC;IAChC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD,+BA+IA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SupportTheme } from '../../theme';
|
|
2
|
+
import type { QueryType, Thread } from '../../types';
|
|
3
|
+
export declare function HomeScreen({ theme, threads, loading, error, onRetry, onCompose, onOpenThread, onClose, }: {
|
|
4
|
+
theme: SupportTheme;
|
|
5
|
+
threads: Thread[] | null;
|
|
6
|
+
loading: boolean;
|
|
7
|
+
error: string | null;
|
|
8
|
+
onRetry: () => void;
|
|
9
|
+
onCompose: (type: QueryType) => void;
|
|
10
|
+
onOpenThread: (thread: Thread) => void;
|
|
11
|
+
onClose: () => void;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=HomeScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HomeScreen.d.ts","sourceRoot":"","sources":["../../../../src/components/screens/HomeScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA+ErD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAsIA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SupportTheme } from '../../theme';
|
|
2
|
+
import type { Thread } from '../../types';
|
|
3
|
+
export declare function ThreadScreen({ theme, thread, onBack, onSend, }: {
|
|
4
|
+
theme: SupportTheme;
|
|
5
|
+
thread: Thread;
|
|
6
|
+
onBack: () => void;
|
|
7
|
+
/** Resolves true on success. */
|
|
8
|
+
onSend: (message: string) => Promise<boolean>;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=ThreadScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadScreen.d.ts","sourceRoot":"","sources":["../../../../src/components/screens/ThreadScreen.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAY1C,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C,+BAiMA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { SupportButton } from './components/SupportButton';
|
|
2
|
+
export { supportDarkTheme, supportLightTheme, resolveTheme, type SupportTheme, } from './theme';
|
|
3
|
+
export { SupportApiError } from './api';
|
|
4
|
+
export type { MessageSender, QueryStatus, QueryType, SupportButtonProps, SupportUser, Thread, ThreadMessage, ThreadsResponse, ThemeName, } from './types';
|
|
5
|
+
export { QUERY_TYPE_LABEL, USER_MESSAGE_MAX, USER_MESSAGE_MIN, } from './types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,YAAY,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,MAAM,EACN,aAAa,EACb,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { motion, radii, spacing, type ThemeColors } from '@appsupportkit/design-tokens';
|
|
2
|
+
import type { ThemeName } from './types';
|
|
3
|
+
export interface SupportTheme {
|
|
4
|
+
name: ThemeName;
|
|
5
|
+
colors: ThemeColors;
|
|
6
|
+
spacing: typeof spacing;
|
|
7
|
+
radii: typeof radii;
|
|
8
|
+
motion: typeof motion;
|
|
9
|
+
}
|
|
10
|
+
export declare const supportDarkTheme: SupportTheme;
|
|
11
|
+
export declare const supportLightTheme: SupportTheme;
|
|
12
|
+
export declare function resolveTheme(name: ThemeName | undefined): SupportTheme;
|
|
13
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/theme.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,MAAM,EAAE,OAAO,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,YAM9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,YAM/B,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAEtE"}
|