@planningcenter/chat-react-native 1.4.1-rc.0 → 1.4.1-rc.2
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/build/components/conversations.js +3 -29
- package/build/components/conversations.js.map +1 -1
- package/build/components/display/image.d.ts +2 -2
- package/build/components/display/image.d.ts.map +1 -1
- package/build/components/display/image.js.map +1 -1
- package/build/components/display/index.d.ts +1 -0
- package/build/components/display/index.d.ts.map +1 -1
- package/build/components/display/index.js +1 -0
- package/build/components/display/index.js.map +1 -1
- package/build/components/display/text.d.ts +8 -0
- package/build/components/display/text.d.ts.map +1 -0
- package/build/components/display/text.js +47 -0
- package/build/components/display/text.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/screens/display.d.ts +3 -0
- package/build/screens/display.d.ts.map +1 -0
- package/build/screens/display.js +50 -0
- package/build/screens/display.js.map +1 -0
- package/build/screens/index.d.ts +2 -0
- package/build/screens/index.d.ts.map +1 -0
- package/build/screens/index.js +2 -0
- package/build/screens/index.js.map +1 -0
- package/build/vendor/tapestry/tapestry_alias_tokens_color_map.d.ts +12 -0
- package/build/vendor/tapestry/tapestry_alias_tokens_color_map.d.ts.map +1 -1
- package/build/vendor/tapestry/tapestry_alias_tokens_color_map.js +12 -0
- package/build/vendor/tapestry/tapestry_alias_tokens_color_map.js.map +1 -1
- package/package.json +2 -2
- package/src/components/conversations.tsx +3 -34
- package/src/components/display/image.tsx +2 -2
- package/src/components/display/index.ts +1 -0
- package/src/components/display/text.tsx +60 -0
- package/src/index.tsx +1 -0
- package/src/screens/display.tsx +58 -0
- package/src/screens/index.ts +1 -0
- package/src/vendor/tapestry/tapestry_alias_tokens_color_map.ts +18 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useNavigation } from '@react-navigation/native';
|
|
2
2
|
import { QueryErrorResetBoundary, useSuspenseQuery } from '@tanstack/react-query';
|
|
3
3
|
import React, { Suspense, useContext } from 'react';
|
|
4
|
-
import { FlatList, Pressable, StyleSheet
|
|
4
|
+
import { FlatList, Pressable, StyleSheet } from 'react-native';
|
|
5
5
|
import { ChatContext } from '../contexts/chat_context';
|
|
6
6
|
import { useTheme } from '../hooks';
|
|
7
|
-
import {
|
|
7
|
+
import { Text } from './display';
|
|
8
8
|
import ErrorBoundary from './error_boundary';
|
|
9
9
|
export function Conversations() {
|
|
10
10
|
const { token } = useContext(ChatContext);
|
|
@@ -24,19 +24,7 @@ const Loaded = () => {
|
|
|
24
24
|
queryKey: ['/chat/v2/me/conversations'],
|
|
25
25
|
});
|
|
26
26
|
const navigation = useNavigation();
|
|
27
|
-
return (<FlatList data={conversations?.data} contentContainerStyle={styles.container} style={styles.scrollView} ListEmptyComponent={<Text>No conversations found</Text>} ListHeaderComponent={<
|
|
28
|
-
<Text style={styles.foo}>Display Components</Text>
|
|
29
|
-
<View style={[styles.row, styles.spinnerContainer]}>
|
|
30
|
-
<Spinner size={24}/>
|
|
31
|
-
</View>
|
|
32
|
-
<View style={styles.row}>
|
|
33
|
-
<Image source={{ uri: 'https://broken.url' }} style={styles.image}/>
|
|
34
|
-
<Image source={{
|
|
35
|
-
uri: 'https://picsum.photos/seed/picsum/200',
|
|
36
|
-
}} style={styles.image}/>
|
|
37
|
-
</View>
|
|
38
|
-
<Text style={styles.foo}>Conversations</Text>
|
|
39
|
-
</View>} renderItem={({ item }) => (<Pressable onPress={() => navigation.navigate('Settings')}>
|
|
27
|
+
return (<FlatList data={conversations?.data} contentContainerStyle={styles.container} style={styles.scrollView} ListEmptyComponent={<Text>No conversations found</Text>} ListHeaderComponent={<Text style={styles.foo}>Conversations</Text>} renderItem={({ item }) => (<Pressable onPress={() => navigation.navigate('Settings')}>
|
|
40
28
|
<Text style={styles.listItem}>{item.attributes.title}</Text>
|
|
41
29
|
</Pressable>)}/>);
|
|
42
30
|
};
|
|
@@ -47,20 +35,6 @@ const useStyles = () => {
|
|
|
47
35
|
container: { gap: 8, padding: 16 },
|
|
48
36
|
foo: { fontSize: 24, color: colors.testColor },
|
|
49
37
|
listItem: { color: colors.fillColorNeutral020 },
|
|
50
|
-
row: {
|
|
51
|
-
gap: 16,
|
|
52
|
-
flexDirection: 'row',
|
|
53
|
-
alignItems: 'center',
|
|
54
|
-
justifyContent: 'center',
|
|
55
|
-
},
|
|
56
|
-
column: { gap: 16 },
|
|
57
|
-
spinnerContainer: {
|
|
58
|
-
height: 20,
|
|
59
|
-
},
|
|
60
|
-
image: {
|
|
61
|
-
width: 100,
|
|
62
|
-
height: 100,
|
|
63
|
-
},
|
|
64
38
|
});
|
|
65
39
|
};
|
|
66
40
|
//# sourceMappingURL=conversations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/components/conversations.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/components/conversations.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,aAAa,MAAM,kBAAkB,CAAA;AAI5C,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IAEzC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,OAAO,CACL,CAAC,uBAAuB,CACtB;MAAA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACd,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAC5B;UAAA,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAC1C;YAAA,CAAC,MAAM,CAAC,AAAD,EACT;UAAA,EAAE,QAAQ,CACZ;QAAA,EAAE,aAAa,CAAC,CACjB,CACH;IAAA,EAAE,uBAAuB,CAAC,CAC3B,CAAA;AACH,CAAC;AAED,MAAM,MAAM,GAAG,GAAG,EAAE;IAClB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAwB;QACtE,QAAQ,EAAE,CAAC,2BAA2B,CAAC;KACxC,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,OAAO,CACL,CAAC,QAAQ,CACP,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAC1B,qBAAqB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACxC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CACzB,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CACxD,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CACnE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACxB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CACxD;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAC7D;QAAA,EAAE,SAAS,CAAC,CACb,CAAC,EACF,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,mBAAmB,EAAE;QACpE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE;QAC9C,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE;KAChD,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { ConversationResource, JSONAPICollection } from '@planningcenter/chat-core'\nimport { useNavigation } from '@react-navigation/native'\nimport { QueryErrorResetBoundary, useSuspenseQuery } from '@tanstack/react-query'\nimport React, { Suspense, useContext } from 'react'\nimport { FlatList, Pressable, StyleSheet } from 'react-native'\nimport { ChatContext } from '../contexts/chat_context'\nimport { useTheme } from '../hooks'\nimport { Text } from './display'\nimport ErrorBoundary from './error_boundary'\n\ntype ConversationsResponse = JSONAPICollection<ConversationResource>\n\nexport function Conversations() {\n const { token } = useContext(ChatContext)\n\n if (!token) return null\n\n return (\n <QueryErrorResetBoundary>\n {({ reset }) => (\n <ErrorBoundary onReset={reset}>\n <Suspense fallback={<Text>loading...</Text>}>\n <Loaded />\n </Suspense>\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n )\n}\n\nconst Loaded = () => {\n const styles = useStyles()\n const { data: conversations } = useSuspenseQuery<ConversationsResponse>({\n queryKey: ['/chat/v2/me/conversations'],\n })\n const navigation = useNavigation()\n\n return (\n <FlatList\n data={conversations?.data}\n contentContainerStyle={styles.container}\n style={styles.scrollView}\n ListEmptyComponent={<Text>No conversations found</Text>}\n ListHeaderComponent={<Text style={styles.foo}>Conversations</Text>}\n renderItem={({ item }) => (\n <Pressable onPress={() => navigation.navigate('Settings')}>\n <Text style={styles.listItem}>{item.attributes.title}</Text>\n </Pressable>\n )}\n />\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n scrollView: { flex: 1, backgroundColor: colors.fillColorNeutral090 },\n container: { gap: 8, padding: 16 },\n foo: { fontSize: 24, color: colors.testColor },\n listItem: { color: colors.fillColorNeutral020 },\n })\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { ImageProps as
|
|
3
|
-
interface ImageProps extends
|
|
2
|
+
import { ImageProps as ReactNativeImageProps, ViewStyle } from 'react-native';
|
|
3
|
+
interface ImageProps extends ReactNativeImageProps {
|
|
4
4
|
/**
|
|
5
5
|
* Should the image show the loading indicator by default.
|
|
6
6
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/components/display/image.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AACvC,OAAO,EAIL,UAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/components/display/image.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AACvC,OAAO,EAIL,UAAU,IAAI,qBAAqB,EAGnC,SAAS,EACV,MAAM,cAAc,CAAA;AAIrB,UAAU,UAAW,SAAQ,qBAAqB;IAChD;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,uBAAuB,CAAC,EAAE,SAAS,CAAA;CACpC;AAED,wBAAgB,KAAK,CAAC,EACpB,MAAM,EACN,MAAa,EACb,cAAqB,EACrB,UAAe,EACf,uBAAuB,EACvB,KAAK,EACL,GAAG,SAAS,EACb,EAAE,UAAU,qBA2BZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/components/display/image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAGL,KAAK,IAAI,gBAAgB,EAEzB,UAAU,EACV,IAAI,GAEL,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,MAAM,UAAU,KAAK,CAAC,EACpB,MAAM,EACN,MAAM,GAAG,IAAI,EACb,cAAc,GAAG,IAAI,EACrB,UAAU,GAAG,EAAE,EACf,uBAAuB,EACvB,KAAK,EACL,GAAG,SAAS,EACD;IACX,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,WAAW,IAAI,EAAE,CAAA;IAC/E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IAErD,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE;QAClC,UAAU,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACnC,MAAM,CAAC,CAAC,YAAY,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,SAAS,CAAC,EAEhB;MAAA,CAAC,OAAO,IAAI,CACV,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAC/D;UAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAC5B;QAAA,EAAE,IAAI,CAAC,CACR,CACH;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAChB,KAAqB,EACrB,MAAsB,EACtB,YAAoC,EACpC,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,iBAAiB,EAAE;YACjB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,eAAe,EAAE,MAAM,CAAC,mBAAmB;YAC3C,YAAY;YACZ,KAAK;YACL,MAAM;SACP;QACD,KAAK,EAAE;YACL,eAAe,EAAE,aAAa;SAC/B;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { noop } from 'lodash'\nimport React, { useState } from 'react'\nimport {\n AnimatableNumericValue,\n DimensionValue,\n Image as ReactNativeImage,\n ImageProps as
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/components/display/image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAGL,KAAK,IAAI,gBAAgB,EAEzB,UAAU,EACV,IAAI,GAEL,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,MAAM,UAAU,KAAK,CAAC,EACpB,MAAM,EACN,MAAM,GAAG,IAAI,EACb,cAAc,GAAG,IAAI,EACrB,UAAU,GAAG,EAAE,EACf,uBAAuB,EACvB,KAAK,EACL,GAAG,SAAS,EACD;IACX,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IAEtD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,WAAW,IAAI,EAAE,CAAA;IAC/E,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IAErD,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,EAAE;QAClC,UAAU,CAAC,KAAK,CAAC,CAAA;QACjB,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CACnC,MAAM,CAAC,CAAC,YAAY,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,IAAI,SAAS,CAAC,EAEhB;MAAA,CAAC,OAAO,IAAI,CACV,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAC/D;UAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAC5B;QAAA,EAAE,IAAI,CAAC,CACR,CACH;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAChB,KAAqB,EACrB,MAAsB,EACtB,YAAoC,EACpC,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,iBAAiB,EAAE;YACjB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,eAAe,EAAE,MAAM,CAAC,mBAAmB;YAC3C,YAAY;YACZ,KAAK;YACL,MAAM;SACP;QACD,KAAK,EAAE;YACL,eAAe,EAAE,aAAa;SAC/B;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { noop } from 'lodash'\nimport React, { useState } from 'react'\nimport {\n AnimatableNumericValue,\n DimensionValue,\n Image as ReactNativeImage,\n ImageProps as ReactNativeImageProps,\n StyleSheet,\n View,\n ViewStyle,\n} from 'react-native'\nimport { useTheme } from '../../hooks'\nimport { Spinner } from './spinner'\n\ninterface ImageProps extends ReactNativeImageProps {\n /**\n * Should the image show the loading indicator by default.\n */\n defaultLoading?: boolean\n /**\n * Size of the loading spinner.\n */\n loaderSize?: number\n /**\n * Style object for the preload background.\n */\n loadingBackgroundStyles?: ViewStyle\n}\n\nexport function Image({\n source,\n onLoad = noop,\n defaultLoading = true,\n loaderSize = 24,\n loadingBackgroundStyles,\n style,\n ...restProps\n}: ImageProps) {\n const [loading, setLoading] = useState(defaultLoading)\n\n const imageStyles = StyleSheet.flatten(style)\n const { width = '100%', height = '100%', borderRadius = 0 } = imageStyles || {}\n const styles = useStyles(width, height, borderRadius)\n\n const handleOnLoad = (event: any) => {\n setLoading(false)\n onLoad?.(event)\n }\n\n return (\n <View>\n <ReactNativeImage\n style={[styles.image, imageStyles]}\n onLoad={handleOnLoad}\n source={source}\n {...restProps}\n />\n {loading && (\n <View style={[styles.loadingBackground, loadingBackgroundStyles]}>\n <Spinner size={loaderSize} />\n </View>\n )}\n </View>\n )\n}\n\nconst useStyles = (\n width: DimensionValue,\n height: DimensionValue,\n borderRadius: AnimatableNumericValue\n) => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n loadingBackground: {\n position: 'absolute',\n top: 0,\n left: 0,\n backgroundColor: colors.fillColorNeutral070,\n borderRadius,\n width,\n height,\n },\n image: {\n backgroundColor: 'transparent',\n },\n })\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA","sourcesContent":["export { Spinner } from './spinner'\nexport { Image } from './image'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA","sourcesContent":["export { Spinner } from './spinner'\nexport { Image } from './image'\nexport { Text } from './text'\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TextProps as ReactNativeTextProps } from 'react-native';
|
|
3
|
+
interface TextProps extends ReactNativeTextProps {
|
|
4
|
+
variant?: 'plain' | 'secondary' | 'tertiary' | 'footnote';
|
|
5
|
+
}
|
|
6
|
+
export declare function Text({ style, variant, children, ...rest }: TextProps): React.JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/components/display/text.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAIL,SAAS,IAAI,oBAAoB,EAClC,MAAM,cAAc,CAAA;AAErB,UAAU,SAAU,SAAQ,oBAAoB;IAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;CAC1D;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,OAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,qBAc9E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useTheme } from '../../hooks';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Platform, StyleSheet, Text as ReactNativeText, } from 'react-native';
|
|
4
|
+
export function Text({ style, variant = 'plain', children, ...rest }) {
|
|
5
|
+
const styles = useStyles();
|
|
6
|
+
const variantStyleMap = {
|
|
7
|
+
plain: styles.plain,
|
|
8
|
+
secondary: styles.secondary,
|
|
9
|
+
tertiary: styles.tertiary,
|
|
10
|
+
footnote: styles.footnote,
|
|
11
|
+
};
|
|
12
|
+
return (<ReactNativeText style={[styles.global, variantStyleMap[variant], style]} {...rest}>
|
|
13
|
+
{children}
|
|
14
|
+
</ReactNativeText>);
|
|
15
|
+
}
|
|
16
|
+
const useStyles = () => {
|
|
17
|
+
const { colors } = useTheme();
|
|
18
|
+
return StyleSheet.create({
|
|
19
|
+
global: {
|
|
20
|
+
fontFamily: Platform.select({
|
|
21
|
+
ios: 'System',
|
|
22
|
+
android: 'normal',
|
|
23
|
+
}),
|
|
24
|
+
},
|
|
25
|
+
plain: {
|
|
26
|
+
color: colors.textColorDefaultPrimary,
|
|
27
|
+
fontSize: 16,
|
|
28
|
+
lineHeight: 24,
|
|
29
|
+
},
|
|
30
|
+
secondary: {
|
|
31
|
+
color: colors.textColorDefaultPrimary,
|
|
32
|
+
fontSize: 15,
|
|
33
|
+
lineHeight: 22,
|
|
34
|
+
},
|
|
35
|
+
tertiary: {
|
|
36
|
+
color: colors.textColorDefaultPrimary,
|
|
37
|
+
fontSize: 14,
|
|
38
|
+
lineHeight: 20,
|
|
39
|
+
},
|
|
40
|
+
footnote: {
|
|
41
|
+
color: colors.textColorDefaultSecondary,
|
|
42
|
+
fontSize: 13,
|
|
43
|
+
lineHeight: 16,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/components/display/text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,IAAI,IAAI,eAAe,GAExB,MAAM,cAAc,CAAA;AAMrB,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAa;IAC7E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,eAAe,GAAG;QACtB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAA;IAED,OAAO,CACL,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CACjF;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,eAAe,CAAC,CACnB,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE;YACN,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAC1B,GAAG,EAAE,QAAQ;gBACb,OAAO,EAAE,QAAQ;aAClB,CAAC;SACH;QACD,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,uBAAuB;YACrC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf;QACD,SAAS,EAAE;YACT,KAAK,EAAE,MAAM,CAAC,uBAAuB;YACrC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM,CAAC,uBAAuB;YACrC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,MAAM,CAAC,yBAAyB;YACvC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;SACf;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { useTheme } from '../../hooks'\nimport React from 'react'\nimport {\n Platform,\n StyleSheet,\n Text as ReactNativeText,\n TextProps as ReactNativeTextProps,\n} from 'react-native'\n\ninterface TextProps extends ReactNativeTextProps {\n variant?: 'plain' | 'secondary' | 'tertiary' | 'footnote'\n}\n\nexport function Text({ style, variant = 'plain', children, ...rest }: TextProps) {\n const styles = useStyles()\n const variantStyleMap = {\n plain: styles.plain,\n secondary: styles.secondary,\n tertiary: styles.tertiary,\n footnote: styles.footnote,\n }\n\n return (\n <ReactNativeText style={[styles.global, variantStyleMap[variant], style]} {...rest}>\n {children}\n </ReactNativeText>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n global: {\n fontFamily: Platform.select({\n ios: 'System',\n android: 'normal',\n }),\n },\n plain: {\n color: colors.textColorDefaultPrimary,\n fontSize: 16,\n lineHeight: 24,\n },\n secondary: {\n color: colors.textColorDefaultPrimary,\n fontSize: 15,\n lineHeight: 22,\n },\n tertiary: {\n color: colors.textColorDefaultPrimary,\n fontSize: 14,\n lineHeight: 20,\n },\n footnote: {\n color: colors.textColorDefaultSecondary,\n fontSize: 13,\n lineHeight: 16,\n },\n })\n}\n"]}
|
package/build/index.d.ts
CHANGED
|
@@ -3,5 +3,6 @@ import { ChatContext, ChatProvider } from './contexts/chat_context';
|
|
|
3
3
|
import { OAuthToken } from './types';
|
|
4
4
|
import { baseUrlMap, uploadUrlMap } from './utils/session';
|
|
5
5
|
import { TemporaryDefaultColorsType } from './utils/theme';
|
|
6
|
+
export * from './screens';
|
|
6
7
|
export { baseUrlMap, ChatContext, ChatProvider, Conversations, OAuthToken, TemporaryDefaultColorsType, uploadUrlMap, };
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,cAAc,WAAW,CAAA;AAEzB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,0BAA0B,EAC1B,YAAY,GACb,CAAA"}
|
package/build/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Conversations } from './components/conversations';
|
|
2
2
|
import { ChatContext, ChatProvider } from './contexts/chat_context';
|
|
3
3
|
import { baseUrlMap, uploadUrlMap } from './utils/session';
|
|
4
|
+
export * from './screens';
|
|
4
5
|
export { baseUrlMap, ChatContext, ChatProvider, Conversations, uploadUrlMap, };
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE1D,cAAc,WAAW,CAAA;AAEzB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EAGb,YAAY,GACb,CAAA","sourcesContent":["import { Conversations } from './components/conversations'\nimport { ChatContext, ChatProvider } from './contexts/chat_context'\nimport { OAuthToken } from './types'\nimport { baseUrlMap, uploadUrlMap } from './utils/session'\nimport { TemporaryDefaultColorsType } from './utils/theme'\nexport * from './screens'\n\nexport {\n baseUrlMap,\n ChatContext,\n ChatProvider,\n Conversations,\n OAuthToken,\n TemporaryDefaultColorsType,\n uploadUrlMap,\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/screens/display.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,wBAAgB,aAAa,sBA2B5B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ScrollView, StyleSheet, View } from 'react-native';
|
|
3
|
+
import { useTheme } from '../hooks';
|
|
4
|
+
import { Image, Spinner, Text } from '../components/display';
|
|
5
|
+
export function DisplayScreen() {
|
|
6
|
+
const styles = useStyles();
|
|
7
|
+
return (<ScrollView contentContainerStyle={styles.container} style={styles.scrollView}>
|
|
8
|
+
<View style={styles.column}>
|
|
9
|
+
<View style={[styles.row, styles.spinnerContainer]}>
|
|
10
|
+
<Spinner size={24}/>
|
|
11
|
+
</View>
|
|
12
|
+
<View style={styles.row}>
|
|
13
|
+
<Image source={{ uri: 'https://broken.url' }} style={styles.image}/>
|
|
14
|
+
<Image source={{
|
|
15
|
+
uri: 'https://picsum.photos/seed/picsum/200',
|
|
16
|
+
}} style={styles.image}/>
|
|
17
|
+
</View>
|
|
18
|
+
<View style={styles.row}>
|
|
19
|
+
<Text>Plain text</Text>
|
|
20
|
+
<Text variant="secondary">Secondary</Text>
|
|
21
|
+
<Text variant="tertiary">Tertiary</Text>
|
|
22
|
+
<Text variant="footnote">Footnote</Text>
|
|
23
|
+
</View>
|
|
24
|
+
</View>
|
|
25
|
+
</ScrollView>);
|
|
26
|
+
}
|
|
27
|
+
const useStyles = () => {
|
|
28
|
+
const { colors } = useTheme();
|
|
29
|
+
return StyleSheet.create({
|
|
30
|
+
scrollView: { flex: 1, backgroundColor: colors.fillColorNeutral090 },
|
|
31
|
+
container: { gap: 16, padding: 24 },
|
|
32
|
+
listItem: { color: colors.fillColorNeutral020 },
|
|
33
|
+
row: {
|
|
34
|
+
gap: 16,
|
|
35
|
+
flexDirection: 'row',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
justifyContent: 'center',
|
|
38
|
+
flexWrap: 'wrap',
|
|
39
|
+
},
|
|
40
|
+
column: { gap: 32 },
|
|
41
|
+
spinnerContainer: {
|
|
42
|
+
height: 20,
|
|
43
|
+
},
|
|
44
|
+
image: {
|
|
45
|
+
width: 100,
|
|
46
|
+
height: 100,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/screens/display.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAC5E;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CACjD;UAAA,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACpB;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB;UAAA,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAClE;UAAA,CAAC,KAAK,CACJ,MAAM,CAAC,CAAC;YACN,GAAG,EAAE,uCAAuC;SAC7C,CAAC,CACF,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAExB;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB;UAAA,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CACtB;UAAA,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CACzC;UAAA,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CACvC;UAAA,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CACzC;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,UAAU,CAAC,CACd,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,mBAAmB,EAAE;QACpE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACnC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE;QAC/C,GAAG,EAAE;YACH,GAAG,EAAE,EAAE;YACP,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,MAAM;SACjB;QACD,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACnB,gBAAgB,EAAE;YAChB,MAAM,EAAE,EAAE;SACX;QACD,KAAK,EAAE;YACL,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { ScrollView, StyleSheet, View } from 'react-native'\nimport { useTheme } from '../hooks'\nimport { Image, Spinner, Text } from '../components/display'\n\nexport function DisplayScreen() {\n const styles = useStyles()\n\n return (\n <ScrollView contentContainerStyle={styles.container} style={styles.scrollView}>\n <View style={styles.column}>\n <View style={[styles.row, styles.spinnerContainer]}>\n <Spinner size={24} />\n </View>\n <View style={styles.row}>\n <Image source={{ uri: 'https://broken.url' }} style={styles.image} />\n <Image\n source={{\n uri: 'https://picsum.photos/seed/picsum/200',\n }}\n style={styles.image}\n />\n </View>\n <View style={styles.row}>\n <Text>Plain text</Text>\n <Text variant=\"secondary\">Secondary</Text>\n <Text variant=\"tertiary\">Tertiary</Text>\n <Text variant=\"footnote\">Footnote</Text>\n </View>\n </View>\n </ScrollView>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n scrollView: { flex: 1, backgroundColor: colors.fillColorNeutral090 },\n container: { gap: 16, padding: 24 },\n listItem: { color: colors.fillColorNeutral020 },\n row: {\n gap: 16,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n },\n column: { gap: 32 },\n spinnerContainer: {\n height: 20,\n },\n image: {\n width: 100,\n height: 100,\n },\n })\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA","sourcesContent":["export * from './display'\n"]}
|
|
@@ -6,6 +6,12 @@ export declare const tapestryAliasTokensColorMap: {
|
|
|
6
6
|
iconColorDefaultDim: string;
|
|
7
7
|
iconColorDefaultDisabled: string;
|
|
8
8
|
iconColorDefaultInverted: string;
|
|
9
|
+
textColorDefaultHeadline: string;
|
|
10
|
+
textColorDefaultPrimary: string;
|
|
11
|
+
textColorDefaultSecondary: string;
|
|
12
|
+
textColorDefaultDisabled: string;
|
|
13
|
+
textColorDefaultPlaceholder: string;
|
|
14
|
+
textColorDefaultInverted: string;
|
|
9
15
|
fillColorNeutral000: string;
|
|
10
16
|
fillColorNeutral010: string;
|
|
11
17
|
fillColorNeutral020: string;
|
|
@@ -25,6 +31,12 @@ export declare const tapestryAliasTokensColorMap: {
|
|
|
25
31
|
iconColorDefaultDim: string;
|
|
26
32
|
iconColorDefaultDisabled: string;
|
|
27
33
|
iconColorDefaultInverted: string;
|
|
34
|
+
textColorDefaultHeadline: string;
|
|
35
|
+
textColorDefaultPrimary: string;
|
|
36
|
+
textColorDefaultSecondary: string;
|
|
37
|
+
textColorDefaultDisabled: string;
|
|
38
|
+
textColorDefaultPlaceholder: string;
|
|
39
|
+
textColorDefaultInverted: string;
|
|
28
40
|
fillColorNeutral000: string;
|
|
29
41
|
fillColorNeutral010: string;
|
|
30
42
|
fillColorNeutral020: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tapestry_alias_tokens_color_map.d.ts","sourceRoot":"","sources":["../../../src/vendor/tapestry/tapestry_alias_tokens_color_map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tapestry_alias_tokens_color_map.d.ts","sourceRoot":"","sources":["../../../src/vendor/tapestry/tapestry_alias_tokens_color_map.ts"],"names":[],"mappings":"AAgGA,eAAO,MAAM,2BAA2B;;cA5ChC,MAAM;iCACa,MAAM;mCACJ,MAAM;6BACZ,MAAM;kCACD,MAAM;kCACN,MAAM;kCACN,MAAM;iCACP,MAAM;mCACJ,MAAM;kCACP,MAAM;qCACH,MAAM;kCACT,MAAM;6BAvDX,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;iCACF,MAAM;6BACV,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;qCACE,MAAM;;;cAkC7B,MAAM;iCACa,MAAM;mCACJ,MAAM;6BACZ,MAAM;kCACD,MAAM;kCACN,MAAM;kCACN,MAAM;iCACP,MAAM;mCACJ,MAAM;kCACP,MAAM;qCACH,MAAM;kCACT,MAAM;6BAvDX,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;iCACF,MAAM;6BACV,MAAM;6BACN,MAAM;6BACN,MAAM;6BACN,MAAM;qCACE,MAAM;;CAiFpC,CAAA"}
|
|
@@ -34,6 +34,12 @@ const semanticAliasesLight = {
|
|
|
34
34
|
iconColorDefaultDim: neutralsLight.fillColorNeutral030,
|
|
35
35
|
iconColorDefaultDisabled: neutralsLight.fillColorNeutral040,
|
|
36
36
|
iconColorDefaultInverted: neutralsLight.fillColorNeutral100Inverted,
|
|
37
|
+
textColorDefaultHeadline: neutralsLight.fillColorNeutral000,
|
|
38
|
+
textColorDefaultPrimary: neutralsLight.fillColorNeutral010,
|
|
39
|
+
textColorDefaultSecondary: neutralsLight.fillColorNeutral020,
|
|
40
|
+
textColorDefaultDisabled: neutralsLight.fillColorNeutral040,
|
|
41
|
+
textColorDefaultPlaceholder: neutralsLight.fillColorNeutral030,
|
|
42
|
+
textColorDefaultInverted: tokens.colorNeutral100White,
|
|
37
43
|
};
|
|
38
44
|
const semanticAliasesDark = {
|
|
39
45
|
name: 'dark',
|
|
@@ -42,6 +48,12 @@ const semanticAliasesDark = {
|
|
|
42
48
|
iconColorDefaultDim: neutralsDark.fillColorNeutral030,
|
|
43
49
|
iconColorDefaultDisabled: neutralsDark.fillColorNeutral040,
|
|
44
50
|
iconColorDefaultInverted: neutralsDark.fillColorNeutral100Inverted,
|
|
51
|
+
textColorDefaultHeadline: neutralsDark.fillColorNeutral000,
|
|
52
|
+
textColorDefaultPrimary: neutralsDark.fillColorNeutral010,
|
|
53
|
+
textColorDefaultSecondary: neutralsDark.fillColorNeutral020,
|
|
54
|
+
textColorDefaultDisabled: neutralsDark.fillColorNeutral040,
|
|
55
|
+
textColorDefaultPlaceholder: neutralsDark.fillColorNeutral030,
|
|
56
|
+
textColorDefaultInverted: tokens.colorNeutral7,
|
|
45
57
|
};
|
|
46
58
|
export const tapestryAliasTokensColorMap = {
|
|
47
59
|
light: { ...neutralsLight, ...semanticAliasesLight },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tapestry_alias_tokens_color_map.js","sourceRoot":"","sources":["../../../src/vendor/tapestry/tapestry_alias_tokens_color_map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAqBjC,MAAM,aAAa,GAAkB;IACnC,IAAI,EAAE,OAAO;IACb,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,uBAAuB,EAAE,MAAM,CAAC,cAAc;IAC9C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,2BAA2B,EAAE,MAAM,CAAC,oBAAoB;CACzD,CAAA;AAED,MAAM,YAAY,GAAkB;IAClC,IAAI,EAAE,MAAM;IACZ,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,uBAAuB,EAAE,MAAM,CAAC,cAAc;IAC9C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,2BAA2B,EAAE,MAAM,CAAC,aAAa;CAClD,CAAA;
|
|
1
|
+
{"version":3,"file":"tapestry_alias_tokens_color_map.js","sourceRoot":"","sources":["../../../src/vendor/tapestry/tapestry_alias_tokens_color_map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAqBjC,MAAM,aAAa,GAAkB;IACnC,IAAI,EAAE,OAAO;IACb,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,uBAAuB,EAAE,MAAM,CAAC,cAAc;IAC9C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,2BAA2B,EAAE,MAAM,CAAC,oBAAoB;CACzD,CAAA;AAED,MAAM,YAAY,GAAkB;IAClC,IAAI,EAAE,MAAM;IACZ,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,uBAAuB,EAAE,MAAM,CAAC,cAAc;IAC9C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,mBAAmB,EAAE,MAAM,CAAC,cAAc;IAC1C,2BAA2B,EAAE,MAAM,CAAC,aAAa;CAClD,CAAA;AAiBD,MAAM,oBAAoB,GAA0B;IAClD,IAAI,EAAE,OAAO;IACb,uBAAuB,EAAE,aAAa,CAAC,mBAAmB;IAC1D,yBAAyB,EAAE,aAAa,CAAC,mBAAmB;IAC5D,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;IACtD,wBAAwB,EAAE,aAAa,CAAC,mBAAmB;IAC3D,wBAAwB,EAAE,aAAa,CAAC,2BAA2B;IACnE,wBAAwB,EAAE,aAAa,CAAC,mBAAmB;IAC3D,uBAAuB,EAAE,aAAa,CAAC,mBAAmB;IAC1D,yBAAyB,EAAE,aAAa,CAAC,mBAAmB;IAC5D,wBAAwB,EAAE,aAAa,CAAC,mBAAmB;IAC3D,2BAA2B,EAAE,aAAa,CAAC,mBAAmB;IAC9D,wBAAwB,EAAE,MAAM,CAAC,oBAAoB;CACtD,CAAA;AAED,MAAM,mBAAmB,GAA0B;IACjD,IAAI,EAAE,MAAM;IACZ,uBAAuB,EAAE,YAAY,CAAC,mBAAmB;IACzD,yBAAyB,EAAE,YAAY,CAAC,mBAAmB;IAC3D,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;IACrD,wBAAwB,EAAE,YAAY,CAAC,mBAAmB;IAC1D,wBAAwB,EAAE,YAAY,CAAC,2BAA2B;IAClE,wBAAwB,EAAE,YAAY,CAAC,mBAAmB;IAC1D,uBAAuB,EAAE,YAAY,CAAC,mBAAmB;IACzD,yBAAyB,EAAE,YAAY,CAAC,mBAAmB;IAC3D,wBAAwB,EAAE,YAAY,CAAC,mBAAmB;IAC1D,2BAA2B,EAAE,YAAY,CAAC,mBAAmB;IAC7D,wBAAwB,EAAE,MAAM,CAAC,aAAa;CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,oBAAoB,EAAE;IACpD,IAAI,EAAE,EAAE,GAAG,YAAY,EAAE,GAAG,mBAAmB,EAAE;CAClD,CAAA","sourcesContent":["import { tokens } from './tokens'\n\n// Copied from `@planningcenter/tapestry` package.\n// Defining these tokens locally is a temporary solution until the package supports mobile.\n// Tokens Reference: https://planningcenter.github.io/tapestry/?path=/docs/foundations-design-tokens--docs\n\ninterface NeutralColors {\n name: string\n fillColorNeutral000: string\n fillColorNeutral010: string\n fillColorNeutral020: string\n fillColorNeutral030: string\n fillColorNeutral040: string\n fillColorNeutral050Base: string\n fillColorNeutral060: string\n fillColorNeutral070: string\n fillColorNeutral080: string\n fillColorNeutral090: string\n fillColorNeutral100Inverted: string\n}\n\nconst neutralsLight: NeutralColors = {\n name: 'light',\n fillColorNeutral000: tokens.colorNeutral12,\n fillColorNeutral010: tokens.colorNeutral24,\n fillColorNeutral020: tokens.colorNeutral45,\n fillColorNeutral030: tokens.colorNeutral58,\n fillColorNeutral040: tokens.colorNeutral81,\n fillColorNeutral050Base: tokens.colorNeutral88,\n fillColorNeutral060: tokens.colorNeutral93,\n fillColorNeutral070: tokens.colorNeutral95,\n fillColorNeutral080: tokens.colorNeutral97,\n fillColorNeutral090: tokens.colorNeutral98,\n fillColorNeutral100Inverted: tokens.colorNeutral100White,\n}\n\nconst neutralsDark: NeutralColors = {\n name: 'dark',\n fillColorNeutral000: tokens.colorNeutral98,\n fillColorNeutral010: tokens.colorNeutral88,\n fillColorNeutral020: tokens.colorNeutral68,\n fillColorNeutral030: tokens.colorNeutral50,\n fillColorNeutral040: tokens.colorNeutral32,\n fillColorNeutral050Base: tokens.colorNeutral24,\n fillColorNeutral060: tokens.colorNeutral19,\n fillColorNeutral070: tokens.colorNeutral17,\n fillColorNeutral080: tokens.colorNeutral15,\n fillColorNeutral090: tokens.colorNeutral12,\n fillColorNeutral100Inverted: tokens.colorNeutral7,\n}\n\ninterface SemanticAliasesColors {\n name: string\n iconColorDefaultPrimary: string\n iconColorDefaultSecondary: string\n iconColorDefaultDim: string\n iconColorDefaultDisabled: string\n iconColorDefaultInverted: string\n textColorDefaultHeadline: string\n textColorDefaultPrimary: string\n textColorDefaultSecondary: string\n textColorDefaultDisabled: string\n textColorDefaultPlaceholder: string\n textColorDefaultInverted: string\n}\n\nconst semanticAliasesLight: SemanticAliasesColors = {\n name: 'light',\n iconColorDefaultPrimary: neutralsLight.fillColorNeutral010,\n iconColorDefaultSecondary: neutralsLight.fillColorNeutral020,\n iconColorDefaultDim: neutralsLight.fillColorNeutral030,\n iconColorDefaultDisabled: neutralsLight.fillColorNeutral040,\n iconColorDefaultInverted: neutralsLight.fillColorNeutral100Inverted,\n textColorDefaultHeadline: neutralsLight.fillColorNeutral000,\n textColorDefaultPrimary: neutralsLight.fillColorNeutral010,\n textColorDefaultSecondary: neutralsLight.fillColorNeutral020,\n textColorDefaultDisabled: neutralsLight.fillColorNeutral040,\n textColorDefaultPlaceholder: neutralsLight.fillColorNeutral030,\n textColorDefaultInverted: tokens.colorNeutral100White,\n}\n\nconst semanticAliasesDark: SemanticAliasesColors = {\n name: 'dark',\n iconColorDefaultPrimary: neutralsDark.fillColorNeutral010,\n iconColorDefaultSecondary: neutralsDark.fillColorNeutral020,\n iconColorDefaultDim: neutralsDark.fillColorNeutral030,\n iconColorDefaultDisabled: neutralsDark.fillColorNeutral040,\n iconColorDefaultInverted: neutralsDark.fillColorNeutral100Inverted,\n textColorDefaultHeadline: neutralsDark.fillColorNeutral000,\n textColorDefaultPrimary: neutralsDark.fillColorNeutral010,\n textColorDefaultSecondary: neutralsDark.fillColorNeutral020,\n textColorDefaultDisabled: neutralsDark.fillColorNeutral040,\n textColorDefaultPlaceholder: neutralsDark.fillColorNeutral030,\n textColorDefaultInverted: tokens.colorNeutral7,\n}\n\nexport const tapestryAliasTokensColorMap = {\n light: { ...neutralsLight, ...semanticAliasesLight },\n dark: { ...neutralsDark, ...semanticAliasesDark },\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planningcenter/chat-react-native",
|
|
3
|
-
"version": "1.4.1-rc.
|
|
3
|
+
"version": "1.4.1-rc.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"prettier": "^3.4.2",
|
|
39
39
|
"react-native": "0.74.5"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "47f16f52c26422fb06f7ee7bdf5a1d9166955d37"
|
|
42
42
|
}
|
|
@@ -2,10 +2,10 @@ import { ConversationResource, JSONAPICollection } from '@planningcenter/chat-co
|
|
|
2
2
|
import { useNavigation } from '@react-navigation/native'
|
|
3
3
|
import { QueryErrorResetBoundary, useSuspenseQuery } from '@tanstack/react-query'
|
|
4
4
|
import React, { Suspense, useContext } from 'react'
|
|
5
|
-
import { FlatList, Pressable, StyleSheet
|
|
5
|
+
import { FlatList, Pressable, StyleSheet } from 'react-native'
|
|
6
6
|
import { ChatContext } from '../contexts/chat_context'
|
|
7
7
|
import { useTheme } from '../hooks'
|
|
8
|
-
import {
|
|
8
|
+
import { Text } from './display'
|
|
9
9
|
import ErrorBoundary from './error_boundary'
|
|
10
10
|
|
|
11
11
|
type ConversationsResponse = JSONAPICollection<ConversationResource>
|
|
@@ -41,24 +41,7 @@ const Loaded = () => {
|
|
|
41
41
|
contentContainerStyle={styles.container}
|
|
42
42
|
style={styles.scrollView}
|
|
43
43
|
ListEmptyComponent={<Text>No conversations found</Text>}
|
|
44
|
-
ListHeaderComponent={
|
|
45
|
-
<View style={styles.column}>
|
|
46
|
-
<Text style={styles.foo}>Display Components</Text>
|
|
47
|
-
<View style={[styles.row, styles.spinnerContainer]}>
|
|
48
|
-
<Spinner size={24} />
|
|
49
|
-
</View>
|
|
50
|
-
<View style={styles.row}>
|
|
51
|
-
<Image source={{ uri: 'https://broken.url' }} style={styles.image} />
|
|
52
|
-
<Image
|
|
53
|
-
source={{
|
|
54
|
-
uri: 'https://picsum.photos/seed/picsum/200',
|
|
55
|
-
}}
|
|
56
|
-
style={styles.image}
|
|
57
|
-
/>
|
|
58
|
-
</View>
|
|
59
|
-
<Text style={styles.foo}>Conversations</Text>
|
|
60
|
-
</View>
|
|
61
|
-
}
|
|
44
|
+
ListHeaderComponent={<Text style={styles.foo}>Conversations</Text>}
|
|
62
45
|
renderItem={({ item }) => (
|
|
63
46
|
<Pressable onPress={() => navigation.navigate('Settings')}>
|
|
64
47
|
<Text style={styles.listItem}>{item.attributes.title}</Text>
|
|
@@ -76,19 +59,5 @@ const useStyles = () => {
|
|
|
76
59
|
container: { gap: 8, padding: 16 },
|
|
77
60
|
foo: { fontSize: 24, color: colors.testColor },
|
|
78
61
|
listItem: { color: colors.fillColorNeutral020 },
|
|
79
|
-
row: {
|
|
80
|
-
gap: 16,
|
|
81
|
-
flexDirection: 'row',
|
|
82
|
-
alignItems: 'center',
|
|
83
|
-
justifyContent: 'center',
|
|
84
|
-
},
|
|
85
|
-
column: { gap: 16 },
|
|
86
|
-
spinnerContainer: {
|
|
87
|
-
height: 20,
|
|
88
|
-
},
|
|
89
|
-
image: {
|
|
90
|
-
width: 100,
|
|
91
|
-
height: 100,
|
|
92
|
-
},
|
|
93
62
|
})
|
|
94
63
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
AnimatableNumericValue,
|
|
5
5
|
DimensionValue,
|
|
6
6
|
Image as ReactNativeImage,
|
|
7
|
-
ImageProps as
|
|
7
|
+
ImageProps as ReactNativeImageProps,
|
|
8
8
|
StyleSheet,
|
|
9
9
|
View,
|
|
10
10
|
ViewStyle,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import { useTheme } from '../../hooks'
|
|
13
13
|
import { Spinner } from './spinner'
|
|
14
14
|
|
|
15
|
-
interface ImageProps extends
|
|
15
|
+
interface ImageProps extends ReactNativeImageProps {
|
|
16
16
|
/**
|
|
17
17
|
* Should the image show the loading indicator by default.
|
|
18
18
|
*/
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useTheme } from '../../hooks'
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import {
|
|
4
|
+
Platform,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
Text as ReactNativeText,
|
|
7
|
+
TextProps as ReactNativeTextProps,
|
|
8
|
+
} from 'react-native'
|
|
9
|
+
|
|
10
|
+
interface TextProps extends ReactNativeTextProps {
|
|
11
|
+
variant?: 'plain' | 'secondary' | 'tertiary' | 'footnote'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function Text({ style, variant = 'plain', children, ...rest }: TextProps) {
|
|
15
|
+
const styles = useStyles()
|
|
16
|
+
const variantStyleMap = {
|
|
17
|
+
plain: styles.plain,
|
|
18
|
+
secondary: styles.secondary,
|
|
19
|
+
tertiary: styles.tertiary,
|
|
20
|
+
footnote: styles.footnote,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<ReactNativeText style={[styles.global, variantStyleMap[variant], style]} {...rest}>
|
|
25
|
+
{children}
|
|
26
|
+
</ReactNativeText>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const useStyles = () => {
|
|
31
|
+
const { colors } = useTheme()
|
|
32
|
+
return StyleSheet.create({
|
|
33
|
+
global: {
|
|
34
|
+
fontFamily: Platform.select({
|
|
35
|
+
ios: 'System',
|
|
36
|
+
android: 'normal',
|
|
37
|
+
}),
|
|
38
|
+
},
|
|
39
|
+
plain: {
|
|
40
|
+
color: colors.textColorDefaultPrimary,
|
|
41
|
+
fontSize: 16,
|
|
42
|
+
lineHeight: 24,
|
|
43
|
+
},
|
|
44
|
+
secondary: {
|
|
45
|
+
color: colors.textColorDefaultPrimary,
|
|
46
|
+
fontSize: 15,
|
|
47
|
+
lineHeight: 22,
|
|
48
|
+
},
|
|
49
|
+
tertiary: {
|
|
50
|
+
color: colors.textColorDefaultPrimary,
|
|
51
|
+
fontSize: 14,
|
|
52
|
+
lineHeight: 20,
|
|
53
|
+
},
|
|
54
|
+
footnote: {
|
|
55
|
+
color: colors.textColorDefaultSecondary,
|
|
56
|
+
fontSize: 13,
|
|
57
|
+
lineHeight: 16,
|
|
58
|
+
},
|
|
59
|
+
})
|
|
60
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { ChatContext, ChatProvider } from './contexts/chat_context'
|
|
|
3
3
|
import { OAuthToken } from './types'
|
|
4
4
|
import { baseUrlMap, uploadUrlMap } from './utils/session'
|
|
5
5
|
import { TemporaryDefaultColorsType } from './utils/theme'
|
|
6
|
+
export * from './screens'
|
|
6
7
|
|
|
7
8
|
export {
|
|
8
9
|
baseUrlMap,
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { ScrollView, StyleSheet, View } from 'react-native'
|
|
3
|
+
import { useTheme } from '../hooks'
|
|
4
|
+
import { Image, Spinner, Text } from '../components/display'
|
|
5
|
+
|
|
6
|
+
export function DisplayScreen() {
|
|
7
|
+
const styles = useStyles()
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<ScrollView contentContainerStyle={styles.container} style={styles.scrollView}>
|
|
11
|
+
<View style={styles.column}>
|
|
12
|
+
<View style={[styles.row, styles.spinnerContainer]}>
|
|
13
|
+
<Spinner size={24} />
|
|
14
|
+
</View>
|
|
15
|
+
<View style={styles.row}>
|
|
16
|
+
<Image source={{ uri: 'https://broken.url' }} style={styles.image} />
|
|
17
|
+
<Image
|
|
18
|
+
source={{
|
|
19
|
+
uri: 'https://picsum.photos/seed/picsum/200',
|
|
20
|
+
}}
|
|
21
|
+
style={styles.image}
|
|
22
|
+
/>
|
|
23
|
+
</View>
|
|
24
|
+
<View style={styles.row}>
|
|
25
|
+
<Text>Plain text</Text>
|
|
26
|
+
<Text variant="secondary">Secondary</Text>
|
|
27
|
+
<Text variant="tertiary">Tertiary</Text>
|
|
28
|
+
<Text variant="footnote">Footnote</Text>
|
|
29
|
+
</View>
|
|
30
|
+
</View>
|
|
31
|
+
</ScrollView>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const useStyles = () => {
|
|
36
|
+
const { colors } = useTheme()
|
|
37
|
+
|
|
38
|
+
return StyleSheet.create({
|
|
39
|
+
scrollView: { flex: 1, backgroundColor: colors.fillColorNeutral090 },
|
|
40
|
+
container: { gap: 16, padding: 24 },
|
|
41
|
+
listItem: { color: colors.fillColorNeutral020 },
|
|
42
|
+
row: {
|
|
43
|
+
gap: 16,
|
|
44
|
+
flexDirection: 'row',
|
|
45
|
+
alignItems: 'center',
|
|
46
|
+
justifyContent: 'center',
|
|
47
|
+
flexWrap: 'wrap',
|
|
48
|
+
},
|
|
49
|
+
column: { gap: 32 },
|
|
50
|
+
spinnerContainer: {
|
|
51
|
+
height: 20,
|
|
52
|
+
},
|
|
53
|
+
image: {
|
|
54
|
+
width: 100,
|
|
55
|
+
height: 100,
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './display'
|
|
@@ -56,6 +56,12 @@ interface SemanticAliasesColors {
|
|
|
56
56
|
iconColorDefaultDim: string
|
|
57
57
|
iconColorDefaultDisabled: string
|
|
58
58
|
iconColorDefaultInverted: string
|
|
59
|
+
textColorDefaultHeadline: string
|
|
60
|
+
textColorDefaultPrimary: string
|
|
61
|
+
textColorDefaultSecondary: string
|
|
62
|
+
textColorDefaultDisabled: string
|
|
63
|
+
textColorDefaultPlaceholder: string
|
|
64
|
+
textColorDefaultInverted: string
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
const semanticAliasesLight: SemanticAliasesColors = {
|
|
@@ -65,6 +71,12 @@ const semanticAliasesLight: SemanticAliasesColors = {
|
|
|
65
71
|
iconColorDefaultDim: neutralsLight.fillColorNeutral030,
|
|
66
72
|
iconColorDefaultDisabled: neutralsLight.fillColorNeutral040,
|
|
67
73
|
iconColorDefaultInverted: neutralsLight.fillColorNeutral100Inverted,
|
|
74
|
+
textColorDefaultHeadline: neutralsLight.fillColorNeutral000,
|
|
75
|
+
textColorDefaultPrimary: neutralsLight.fillColorNeutral010,
|
|
76
|
+
textColorDefaultSecondary: neutralsLight.fillColorNeutral020,
|
|
77
|
+
textColorDefaultDisabled: neutralsLight.fillColorNeutral040,
|
|
78
|
+
textColorDefaultPlaceholder: neutralsLight.fillColorNeutral030,
|
|
79
|
+
textColorDefaultInverted: tokens.colorNeutral100White,
|
|
68
80
|
}
|
|
69
81
|
|
|
70
82
|
const semanticAliasesDark: SemanticAliasesColors = {
|
|
@@ -74,6 +86,12 @@ const semanticAliasesDark: SemanticAliasesColors = {
|
|
|
74
86
|
iconColorDefaultDim: neutralsDark.fillColorNeutral030,
|
|
75
87
|
iconColorDefaultDisabled: neutralsDark.fillColorNeutral040,
|
|
76
88
|
iconColorDefaultInverted: neutralsDark.fillColorNeutral100Inverted,
|
|
89
|
+
textColorDefaultHeadline: neutralsDark.fillColorNeutral000,
|
|
90
|
+
textColorDefaultPrimary: neutralsDark.fillColorNeutral010,
|
|
91
|
+
textColorDefaultSecondary: neutralsDark.fillColorNeutral020,
|
|
92
|
+
textColorDefaultDisabled: neutralsDark.fillColorNeutral040,
|
|
93
|
+
textColorDefaultPlaceholder: neutralsDark.fillColorNeutral030,
|
|
94
|
+
textColorDefaultInverted: tokens.colorNeutral7,
|
|
77
95
|
}
|
|
78
96
|
|
|
79
97
|
export const tapestryAliasTokensColorMap = {
|