@planningcenter/chat-react-native 3.14.0-rc.3 → 3.14.0-rc.5

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.
Files changed (85) hide show
  1. package/build/components/conversation/empty_conversation_blank_state.d.ts.map +1 -1
  2. package/build/components/conversation/empty_conversation_blank_state.js +10 -2
  3. package/build/components/conversation/empty_conversation_blank_state.js.map +1 -1
  4. package/build/components/conversations/conversation_actions.js +3 -3
  5. package/build/components/conversations/conversation_actions.js.map +1 -1
  6. package/build/components/conversations/conversations.d.ts.map +1 -1
  7. package/build/components/conversations/conversations.js +7 -2
  8. package/build/components/conversations/conversations.js.map +1 -1
  9. package/build/components/conversations/{action_toggle_button.d.ts → swipeable_toggle_button.d.ts} +3 -3
  10. package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -0
  11. package/build/components/conversations/{action_toggle_button.js → swipeable_toggle_button.js} +7 -3
  12. package/build/components/conversations/swipeable_toggle_button.js.map +1 -0
  13. package/build/components/display/index.d.ts +0 -1
  14. package/build/components/display/index.d.ts.map +1 -1
  15. package/build/components/display/index.js +0 -1
  16. package/build/components/display/index.js.map +1 -1
  17. package/build/components/primitive/blank_state_primitive.d.ts +38 -0
  18. package/build/components/primitive/blank_state_primitive.d.ts.map +1 -0
  19. package/build/components/primitive/blank_state_primitive.js +88 -0
  20. package/build/components/primitive/blank_state_primitive.js.map +1 -0
  21. package/build/hooks/use_conversation.d.ts.map +1 -1
  22. package/build/hooks/use_conversation.js +2 -0
  23. package/build/hooks/use_conversation.js.map +1 -1
  24. package/build/hooks/use_message_create_or_update.d.ts.map +1 -1
  25. package/build/hooks/use_message_create_or_update.js +2 -1
  26. package/build/hooks/use_message_create_or_update.js.map +1 -1
  27. package/build/screens/attachment_actions/hooks/useDeleteAttachment.d.ts.map +1 -1
  28. package/build/screens/attachment_actions/hooks/useDeleteAttachment.js +2 -0
  29. package/build/screens/attachment_actions/hooks/useDeleteAttachment.js.map +1 -1
  30. package/build/screens/bug_report_screen.d.ts.map +1 -1
  31. package/build/screens/bug_report_screen.js +13 -7
  32. package/build/screens/bug_report_screen.js.map +1 -1
  33. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  34. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +8 -2
  35. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  36. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  37. package/build/screens/conversation_new/components/groups_form.js +2 -0
  38. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  39. package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
  40. package/build/screens/conversation_new/components/services_form.js +3 -0
  41. package/build/screens/conversation_new/components/services_form.js.map +1 -1
  42. package/build/screens/conversation_screen.d.ts.map +1 -1
  43. package/build/screens/conversation_screen.js +8 -7
  44. package/build/screens/conversation_screen.js.map +1 -1
  45. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.d.ts.map +1 -1
  46. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js +13 -3
  47. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js.map +1 -1
  48. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  49. package/build/screens/conversations/components/list_header_component.js +2 -0
  50. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  51. package/build/screens/design_system_screen.js +13 -8
  52. package/build/screens/design_system_screen.js.map +1 -1
  53. package/build/screens/message_actions_screen.d.ts.map +1 -1
  54. package/build/screens/message_actions_screen.js +1 -0
  55. package/build/screens/message_actions_screen.js.map +1 -1
  56. package/build/screens/send_giphy_screen.d.ts.map +1 -1
  57. package/build/screens/send_giphy_screen.js +10 -5
  58. package/build/screens/send_giphy_screen.js.map +1 -1
  59. package/package.json +2 -2
  60. package/src/components/conversation/empty_conversation_blank_state.tsx +10 -6
  61. package/src/components/conversations/conversation_actions.tsx +3 -3
  62. package/src/components/conversations/conversations.tsx +7 -2
  63. package/src/components/conversations/{action_toggle_button.tsx → swipeable_toggle_button.tsx} +9 -5
  64. package/src/components/display/index.ts +0 -1
  65. package/src/components/primitive/blank_state_primitive.tsx +194 -0
  66. package/src/hooks/use_conversation.ts +2 -0
  67. package/src/hooks/use_message_create_or_update.ts +3 -0
  68. package/src/screens/attachment_actions/hooks/useDeleteAttachment.tsx +2 -0
  69. package/src/screens/bug_report_screen.tsx +17 -15
  70. package/src/screens/conversation_filter_recipients/conversation_filter_recipients_screen.tsx +11 -2
  71. package/src/screens/conversation_new/components/groups_form.tsx +2 -0
  72. package/src/screens/conversation_new/components/services_form.tsx +2 -0
  73. package/src/screens/conversation_screen.tsx +13 -11
  74. package/src/screens/conversation_select_recipients/conversation_select_recipients_screen.tsx +17 -6
  75. package/src/screens/conversations/components/list_header_component.tsx +2 -0
  76. package/src/screens/design_system_screen.tsx +17 -13
  77. package/src/screens/message_actions_screen.tsx +1 -0
  78. package/src/screens/send_giphy_screen.tsx +10 -11
  79. package/build/components/conversations/action_toggle_button.d.ts.map +0 -1
  80. package/build/components/conversations/action_toggle_button.js.map +0 -1
  81. package/build/components/display/blank_state.d.ts +0 -18
  82. package/build/components/display/blank_state.d.ts.map +0 -1
  83. package/build/components/display/blank_state.js +0 -47
  84. package/build/components/display/blank_state.js.map +0 -1
  85. package/src/components/display/blank_state.tsx +0 -76
@@ -1,7 +1,8 @@
1
1
  import { useNavigation } from '@react-navigation/native'
2
2
  import React from 'react'
3
3
  import { ScrollView, StyleSheet, View } from 'react-native'
4
- import { BlankState, Button, Heading } from '../../components'
4
+ import { Button, Heading } from '../../components'
5
+ import BlankState from '../../components/primitive/blank_state_primitive'
5
6
  import { GroupsGroupResource } from '../../types'
6
7
  import { useGroupsGroups } from '../../hooks/use_groups_groups'
7
8
  import { useSafeAreaInsets } from 'react-native-safe-area-context'
@@ -95,10 +96,7 @@ export const ConversationSelectRecipientsScreen = ({
95
96
  {isGroupsFetching ? (
96
97
  <DefaultLoading />
97
98
  ) : groupsWithCreatePermission.length === 0 ? (
98
- <BlankState
99
- subtitle="Join a group with chat enabled and permissions to start a new conversation."
100
- style={styles.blankState}
101
- />
99
+ <RecipientsBlankState subtitle="Join a group with chat enabled and permissions to start a new conversation." />
102
100
  ) : (
103
101
  <>
104
102
  {visibleGroups.map(group => {
@@ -167,7 +165,7 @@ export const ConversationSelectRecipientsScreen = ({
167
165
  )}
168
166
  </>
169
167
  ) : (
170
- <BlankState subtitle="You don't lead any teams." style={styles.blankState} />
168
+ <RecipientsBlankState subtitle="You don't lead any teams." />
171
169
  )}
172
170
  </View>
173
171
  </View>
@@ -176,6 +174,19 @@ export const ConversationSelectRecipientsScreen = ({
176
174
  )
177
175
  }
178
176
 
177
+ const RecipientsBlankState = ({ subtitle }: { subtitle: string }) => {
178
+ const styles = useStyles()
179
+
180
+ return (
181
+ <BlankState.Root style={styles.blankState}>
182
+ <BlankState.Imagery name="general.outlinedTextMessage" />
183
+ <BlankState.Content>
184
+ <BlankState.Text>{subtitle}</BlankState.Text>
185
+ </BlankState.Content>
186
+ </BlankState.Root>
187
+ )
188
+ }
189
+
179
190
  const useStyles = () => {
180
191
  const { bottom } = useSafeAreaInsets()
181
192
 
@@ -7,6 +7,7 @@ import { useMarkAllRead } from '../../../hooks/use_conversations_actions'
7
7
  import { useCanDisplayGroups } from '../../../hooks/use_groups'
8
8
  import { ConversationsScreenProps } from '../conversations_screen'
9
9
  import { ChatGroupBadge } from './chat_group_badge'
10
+ import { Haptic } from '../../../utils/native_adapters'
10
11
 
11
12
  const ROW_PADDING_HORIZONTAL = 16
12
13
 
@@ -41,6 +42,7 @@ export const ListHeaderComponent = () => {
41
42
 
42
43
  const handleMarkAllRead = useCallback(() => {
43
44
  currentPersonCache.update({ unreadCount: 0 })
45
+ Haptic.notificationSuccess()
44
46
  markAllRead()
45
47
  }, [currentPersonCache, markAllRead])
46
48
 
@@ -8,7 +8,6 @@ import {
8
8
  Badge,
9
9
  Banner,
10
10
  BannerCollapsible,
11
- BlankState,
12
11
  Button,
13
12
  ToggleButton,
14
13
  Heading,
@@ -23,6 +22,7 @@ import {
23
22
  TextInlineButton,
24
23
  ImageAttachmentPreview,
25
24
  } from '../components/display'
25
+ import BlankState from '../components/primitive/blank_state_primitive'
26
26
  import {
27
27
  MAX_FONT_SIZE_MULTIPLIER,
28
28
  platformPressedOpacityStyle,
@@ -1056,20 +1056,24 @@ function MiscComponentsSection({ isLast }: SectionProps) {
1056
1056
  </Group>
1057
1057
  <Group
1058
1058
  title="BlankState"
1059
- description="Displays a title and an optional icon, subtitle, and button. Button can be customized via `buttonProps`."
1059
+ description="Compound component with primitives to display imagary, heading, title, and a button."
1060
1060
  >
1061
1061
  <Column>
1062
- <BlankState
1063
- iconName="general.outlinedTextMessage"
1064
- title="No messages"
1065
- subtitle="Conversation is hidden from everyone until you send a message."
1066
- buttonProps={{
1067
- onPress: buttonPress,
1068
- title: 'Go back',
1069
- accessibilityHint: 'Navigates back to the conversations list',
1070
- accessibilityRole: 'link',
1071
- }}
1072
- />
1062
+ <BlankState.Root>
1063
+ <BlankState.Imagery name="general.outlinedTextMessage" />
1064
+ <BlankState.Content>
1065
+ <BlankState.Heading>No messages</BlankState.Heading>
1066
+ <BlankState.Text>
1067
+ Conversation is hidden from everyone until you send a message.
1068
+ </BlankState.Text>
1069
+ </BlankState.Content>
1070
+ <BlankState.Button
1071
+ onPress={buttonPress}
1072
+ title="Go back"
1073
+ accessibilityHint="Navigates back to the conversations list"
1074
+ accessibilityRole="link"
1075
+ />
1076
+ </BlankState.Root>
1073
1077
  </Column>
1074
1078
  </Group>
1075
1079
  </CollapsableSection>
@@ -82,6 +82,7 @@ export function MessageActionsScreen({ route }: MessageActionsScreenProps) {
82
82
  mutationFn: deleteMessage,
83
83
  onSuccess: () => {
84
84
  refetch()
85
+ Haptic.notificationSuccess()
85
86
  navigation.goBack()
86
87
  },
87
88
  onError: () => {
@@ -1,7 +1,8 @@
1
1
  import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'
2
2
  import React from 'react'
3
3
  import { Image as NativeImage, Platform, StyleSheet, useWindowDimensions, View } from 'react-native'
4
- import { BlankState, Button, IconButton, IconString, TextButton } from '../components'
4
+ import { Button, IconButton, IconString, TextButton } from '../components'
5
+ import BlankState from '../components/primitive/blank_state_primitive'
5
6
  import { DefaultLoading } from '../components/page/loading'
6
7
  import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
7
8
  import { useCreateAndroidRippleColor, useTheme } from '../hooks'
@@ -36,16 +37,14 @@ export function SendGiphyScreen({ route }: SendGiphyScreenProps) {
36
37
  if (!result)
37
38
  return (
38
39
  <FormSheet.Root contentStyle={styles.blankStateContainer}>
39
- <BlankState
40
- style={styles.blankState}
41
- title="No Giphys found"
42
- subtitle="Try a different search term."
43
- iconName="general.bolt"
44
- buttonProps={{
45
- onPress: () => navigation.goBack(),
46
- title: 'Close',
47
- }}
48
- />
40
+ <BlankState.Root style={styles.blankState}>
41
+ <BlankState.Imagery name="general.bolt" />
42
+ <BlankState.Content>
43
+ <BlankState.Heading>No Giphys found</BlankState.Heading>
44
+ <BlankState.Text>Try a different search term.</BlankState.Text>
45
+ </BlankState.Content>
46
+ <BlankState.Button onPress={() => navigation.goBack()} title="Close" />
47
+ </BlankState.Root>
49
48
  </FormSheet.Root>
50
49
  )
51
50
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"action_toggle_button.d.ts","sourceRoot":"","sources":["../../../src/components/conversations/action_toggle_button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAQ,UAAU,EAAiB,MAAM,YAAY,CAAA;AAK5D,UAAU,uBAAwB,SAAQ,cAAc;IACtD,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE;QACb,IAAI,EAAE;YAAE,QAAQ,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;QAC7C,KAAK,EAAE;YAAE,QAAQ,EAAE,UAAU,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAC/C,CAAA;IACD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,eAAe,EACf,OAAO,EACP,aAAa,EACb,QAAgB,EAChB,OAAO,EACP,OAAe,EACf,GAAG,KAAK,EACT,EAAE,uBAAuB,qBA8BzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"action_toggle_button.js","sourceRoot":"","sources":["../../../src/components/conversations/action_toggle_button.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react'\nimport { StyleSheet } from 'react-native'\nimport { Pressable, type PressableProps } from 'react-native-gesture-handler'\nimport { Icon, IconString, Spinner, Text } from '../display'\nimport { useCreateAndroidRippleColor, useTheme } from '../../hooks'\nimport { platformFontWeightMedium, platformPressedOpacityStyle } from '../../utils/styles'\nimport { tokens } from '../../vendor/tapestry/tokens'\n\ninterface ActionToggleButtonProps extends PressableProps {\n backgroundColor: string\n toggled: boolean\n toggleContent: {\n true: { iconName: IconString; label: string }\n false: { iconName: IconString; label: string }\n }\n loading?: boolean\n}\n\nexport function ActionToggleButton({\n backgroundColor,\n onPress,\n toggleContent,\n disabled = false,\n toggled,\n loading = false,\n ...props\n}: ActionToggleButtonProps) {\n const styles = useStyles({ backgroundColor, disabled })\n const androidRippleColor = useCreateAndroidRippleColor({\n color: backgroundColor,\n })\n\n const { iconName, label } = toggleContent[toggled ? 'true' : 'false']\n\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.button, pressed && platformPressedOpacityStyle]}\n android_ripple={{ color: androidRippleColor, borderless: false, foreground: true }}\n disabled={disabled || loading}\n accessibilityRole=\"togglebutton\"\n accessibilityState={{ checked: toggled }}\n {...props}\n >\n {loading ? (\n <Spinner size={20} />\n ) : (\n <>\n <Icon name={iconName} style={styles.icon} size={20} />\n <Text variant=\"footnote\" style={styles.text}>\n {label}\n </Text>\n </>\n )}\n </Pressable>\n )\n}\n\nconst useStyles = ({ backgroundColor, disabled }: Partial<ActionToggleButtonProps>) => {\n const { colors } = useTheme()\n const fillColor = disabled ? colors.textColorDefaultDisabled : tokens.colorNeutral100White\n const buttonBackgroundColor = disabled\n ? colors.fillColorButtonNeutralSolidDisabled\n : backgroundColor\n\n return StyleSheet.create({\n button: {\n flex: 1,\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 4,\n height: '100%',\n backgroundColor: buttonBackgroundColor,\n },\n icon: {\n color: fillColor,\n marginTop: 4,\n },\n text: {\n color: fillColor,\n fontWeight: platformFontWeightMedium,\n },\n })\n}\n"]}
@@ -1,18 +0,0 @@
1
- import { type ViewStyle } from 'react-native';
2
- import { type HeadingProps } from './heading';
3
- import { type IconString, type IconStyle } from './icon';
4
- import { type TextProps } from './text';
5
- import { type ButtonProps } from './button';
6
- interface BlankStateProps {
7
- iconName?: IconString;
8
- iconStyle?: IconStyle;
9
- title?: string;
10
- titleStyle?: HeadingProps['style'];
11
- subtitle?: string;
12
- subtitleStyle?: TextProps['style'];
13
- style?: ViewStyle;
14
- buttonProps?: ButtonProps;
15
- }
16
- export declare const BlankState: ({ iconName, title, titleStyle, subtitle, subtitleStyle, style, iconStyle, buttonProps, }: BlankStateProps) => import("react").JSX.Element;
17
- export {};
18
- //# sourceMappingURL=blank_state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blank_state.d.ts","sourceRoot":"","sources":["../../../src/components/display/blank_state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAc,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AACtD,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAC9D,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAEnD,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,eAAO,MAAM,UAAU,6FASpB,eAAe,gCAsBjB,CAAA"}
@@ -1,47 +0,0 @@
1
- import { View, StyleSheet } from 'react-native';
2
- import { Heading } from './heading';
3
- import { Icon } from './icon';
4
- import { Text } from './text';
5
- import { useTheme } from '../../hooks';
6
- import { Button } from './button';
7
- export const BlankState = ({ iconName, title, titleStyle, subtitle, subtitleStyle, style, iconStyle, buttonProps, }) => {
8
- const styles = useStyles();
9
- return (<View style={[styles.container, style]}>
10
- {iconName && <Icon name={iconName} size={32} style={[styles.icon, iconStyle]}/>}
11
-
12
- <View style={styles.content}>
13
- {title && (<Heading variant="h3" style={[styles.baseText, titleStyle]}>
14
- {title}
15
- </Heading>)}
16
- {subtitle && (<Text variant="tertiary" style={[styles.baseText, subtitleStyle]}>
17
- {subtitle}
18
- </Text>)}
19
- </View>
20
- {buttonProps && <Button variant="outline" size="sm" {...buttonProps}/>}
21
- </View>);
22
- };
23
- const useStyles = () => {
24
- const { colors } = useTheme();
25
- return StyleSheet.create({
26
- container: {
27
- flex: 1,
28
- alignItems: 'center',
29
- justifyContent: 'center',
30
- gap: 16,
31
- padding: 16,
32
- },
33
- icon: {
34
- color: colors.iconColorDefaultDisabled,
35
- },
36
- content: {
37
- alignItems: 'center',
38
- gap: 4,
39
- maxWidth: 250,
40
- },
41
- baseText: {
42
- textAlign: 'center',
43
- color: colors.textColorDefaultSecondary,
44
- },
45
- });
46
- };
47
- //# sourceMappingURL=blank_state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blank_state.js","sourceRoot":"","sources":["../../../src/components/display/blank_state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAqB,MAAM,WAAW,CAAA;AACtD,OAAO,EAAE,IAAI,EAAmC,MAAM,QAAQ,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAkB,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAA;AAanD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,QAAQ,EACR,aAAa,EACb,KAAK,EACL,SAAS,EACT,WAAW,GACK,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACrC;MAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAG,CAEhF;;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B;QAAA,CAAC,KAAK,IAAI,CACR,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CACzD;YAAA,CAAC,KAAK,CACR;UAAA,EAAE,OAAO,CAAC,CACX,CACD;QAAA,CAAC,QAAQ,IAAI,CACX,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAC/D;YAAA,CAAC,QAAQ,CACX;UAAA,EAAE,IAAI,CAAC,CACR,CACH;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAG,CACzE;IAAA,EAAE,IAAI,CAAC,CACR,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,SAAS,EAAE;YACT,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,EAAE;SACZ;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC,wBAAwB;SACvC;QACD,OAAO,EAAE;YACP,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,CAAC;YACN,QAAQ,EAAE,GAAG;SACd;QACD,QAAQ,EAAE;YACR,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,MAAM,CAAC,yBAAyB;SACxC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { View, type ViewStyle, StyleSheet } from 'react-native'\nimport { Heading, type HeadingProps } from './heading'\nimport { Icon, type IconString, type IconStyle } from './icon'\nimport { Text, type TextProps } from './text'\nimport { useTheme } from '../../hooks'\nimport { Button, type ButtonProps } from './button'\n\ninterface BlankStateProps {\n iconName?: IconString\n iconStyle?: IconStyle\n title?: string\n titleStyle?: HeadingProps['style']\n subtitle?: string\n subtitleStyle?: TextProps['style']\n style?: ViewStyle\n buttonProps?: ButtonProps\n}\n\nexport const BlankState = ({\n iconName,\n title,\n titleStyle,\n subtitle,\n subtitleStyle,\n style,\n iconStyle,\n buttonProps,\n}: BlankStateProps) => {\n const styles = useStyles()\n\n return (\n <View style={[styles.container, style]}>\n {iconName && <Icon name={iconName} size={32} style={[styles.icon, iconStyle]} />}\n\n <View style={styles.content}>\n {title && (\n <Heading variant=\"h3\" style={[styles.baseText, titleStyle]}>\n {title}\n </Heading>\n )}\n {subtitle && (\n <Text variant=\"tertiary\" style={[styles.baseText, subtitleStyle]}>\n {subtitle}\n </Text>\n )}\n </View>\n {buttonProps && <Button variant=\"outline\" size=\"sm\" {...buttonProps} />}\n </View>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n gap: 16,\n padding: 16,\n },\n icon: {\n color: colors.iconColorDefaultDisabled,\n },\n content: {\n alignItems: 'center',\n gap: 4,\n maxWidth: 250,\n },\n baseText: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n })\n}\n"]}
@@ -1,76 +0,0 @@
1
- import { View, type ViewStyle, StyleSheet } from 'react-native'
2
- import { Heading, type HeadingProps } from './heading'
3
- import { Icon, type IconString, type IconStyle } from './icon'
4
- import { Text, type TextProps } from './text'
5
- import { useTheme } from '../../hooks'
6
- import { Button, type ButtonProps } from './button'
7
-
8
- interface BlankStateProps {
9
- iconName?: IconString
10
- iconStyle?: IconStyle
11
- title?: string
12
- titleStyle?: HeadingProps['style']
13
- subtitle?: string
14
- subtitleStyle?: TextProps['style']
15
- style?: ViewStyle
16
- buttonProps?: ButtonProps
17
- }
18
-
19
- export const BlankState = ({
20
- iconName,
21
- title,
22
- titleStyle,
23
- subtitle,
24
- subtitleStyle,
25
- style,
26
- iconStyle,
27
- buttonProps,
28
- }: BlankStateProps) => {
29
- const styles = useStyles()
30
-
31
- return (
32
- <View style={[styles.container, style]}>
33
- {iconName && <Icon name={iconName} size={32} style={[styles.icon, iconStyle]} />}
34
-
35
- <View style={styles.content}>
36
- {title && (
37
- <Heading variant="h3" style={[styles.baseText, titleStyle]}>
38
- {title}
39
- </Heading>
40
- )}
41
- {subtitle && (
42
- <Text variant="tertiary" style={[styles.baseText, subtitleStyle]}>
43
- {subtitle}
44
- </Text>
45
- )}
46
- </View>
47
- {buttonProps && <Button variant="outline" size="sm" {...buttonProps} />}
48
- </View>
49
- )
50
- }
51
-
52
- const useStyles = () => {
53
- const { colors } = useTheme()
54
-
55
- return StyleSheet.create({
56
- container: {
57
- flex: 1,
58
- alignItems: 'center',
59
- justifyContent: 'center',
60
- gap: 16,
61
- padding: 16,
62
- },
63
- icon: {
64
- color: colors.iconColorDefaultDisabled,
65
- },
66
- content: {
67
- alignItems: 'center',
68
- gap: 4,
69
- maxWidth: 250,
70
- },
71
- baseText: {
72
- textAlign: 'center',
73
- color: colors.textColorDefaultSecondary,
74
- },
75
- })
76
- }