@planningcenter/chat-react-native 3.14.0-rc.5 → 3.14.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.
Files changed (67) hide show
  1. package/build/components/display/action_button.d.ts.map +1 -1
  2. package/build/components/display/action_button.js +2 -1
  3. package/build/components/display/action_button.js.map +1 -1
  4. package/build/components/display/badge.js +5 -5
  5. package/build/components/display/badge.js.map +1 -1
  6. package/build/components/display/platform_modal_header_buttons.d.ts +4 -4
  7. package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
  8. package/build/components/display/platform_modal_header_buttons.js +2 -2
  9. package/build/components/display/platform_modal_header_buttons.js.map +1 -1
  10. package/build/components/display/text.d.ts +10 -2
  11. package/build/components/display/text.d.ts.map +1 -1
  12. package/build/components/display/text.js +0 -3
  13. package/build/components/display/text.js.map +1 -1
  14. package/build/components/display/toggle_button.d.ts.map +1 -1
  15. package/build/components/display/toggle_button.js +2 -2
  16. package/build/components/display/toggle_button.js.map +1 -1
  17. package/build/components/page/error_boundary.d.ts.map +1 -1
  18. package/build/components/page/error_boundary.js +11 -46
  19. package/build/components/page/error_boundary.js.map +1 -1
  20. package/build/components/primitive/avatar_primitive.d.ts.map +1 -1
  21. package/build/components/primitive/avatar_primitive.js +14 -6
  22. package/build/components/primitive/avatar_primitive.js.map +1 -1
  23. package/build/components/primitive/blank_state_primitive.d.ts +5 -2
  24. package/build/components/primitive/blank_state_primitive.d.ts.map +1 -1
  25. package/build/components/primitive/blank_state_primitive.js +6 -1
  26. package/build/components/primitive/blank_state_primitive.js.map +1 -1
  27. package/build/navigation/index.d.ts.map +1 -1
  28. package/build/navigation/index.js +6 -6
  29. package/build/navigation/index.js.map +1 -1
  30. package/build/screens/bug_report_screen.js +4 -4
  31. package/build/screens/bug_report_screen.js.map +1 -1
  32. package/build/screens/conversation_details_screen.d.ts.map +1 -1
  33. package/build/screens/conversation_details_screen.js +3 -3
  34. package/build/screens/conversation_details_screen.js.map +1 -1
  35. package/build/screens/conversation_new/components/filter_by_plan.js +2 -2
  36. package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
  37. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  38. package/build/screens/conversations/components/list_header_component.js +2 -1
  39. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  40. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  41. package/build/screens/conversations/conversations_screen.js +2 -2
  42. package/build/screens/conversations/conversations_screen.js.map +1 -1
  43. package/build/utils/styles.d.ts +1 -0
  44. package/build/utils/styles.d.ts.map +1 -1
  45. package/build/utils/styles.js +1 -0
  46. package/build/utils/styles.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/components/display/action_button.tsx +2 -0
  49. package/src/components/display/badge.tsx +5 -5
  50. package/src/components/display/platform_modal_header_buttons.tsx +6 -6
  51. package/src/components/display/text.tsx +30 -2
  52. package/src/components/display/toggle_button.tsx +6 -2
  53. package/src/components/page/error_boundary.tsx +16 -47
  54. package/src/components/primitive/avatar_primitive.tsx +14 -6
  55. package/src/components/primitive/blank_state_primitive.tsx +17 -0
  56. package/src/navigation/index.tsx +6 -6
  57. package/src/screens/bug_report_screen.tsx +5 -5
  58. package/src/screens/conversation_details_screen.tsx +13 -4
  59. package/src/screens/conversation_new/components/filter_by_plan.tsx +2 -2
  60. package/src/screens/conversations/components/list_header_component.tsx +6 -1
  61. package/src/screens/conversations/conversations_screen.tsx +6 -2
  62. package/src/utils/styles.ts +1 -0
  63. package/build/navigation/header.d.ts +0 -10
  64. package/build/navigation/header.d.ts.map +0 -1
  65. package/build/navigation/header.js +0 -16
  66. package/build/navigation/header.js.map +0 -1
  67. package/src/navigation/header.tsx +0 -24
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_primitive.js","sourceRoot":"","sources":["../../../src/components/primitive/avatar_primitive.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react'\nimport { StyleSheet, View, ViewProps } from 'react-native'\nimport { useTheme } from '../../hooks'\nimport { Icon, IconString } from '../display/icon'\nimport { Image, ImageProps } from '../display/image'\nimport { Spinner } from '../display/spinner'\n\n// =================================\n// ====== Exports ==================\n// =================================\n\nconst Avatar = {\n Root: AvatarRoot,\n Image: AvatarImage,\n ImageFallback: AvatarImageFallback,\n Presence: AvatarPresence,\n Group: AvatarGroup,\n GroupLoader: AvatarGroupLoader,\n Mask: AvatarMask,\n} as const\n\ntype AvatarComponents = {\n Root: React.FC<AvatarRootProps>\n Image: React.FC<AvatarImageProps>\n ImageFallback: React.FC<AvatarImageFallbackProps>\n Presence: React.FC<AvatarPresenceProps>\n Group: React.FC<AvatarGroupProps>\n GroupLoader: React.FC<Record<string, never>>\n Mask: React.FC<AvatarMaskProps>\n}\n\nexport default Avatar as AvatarComponents\nexport type {\n AvatarImageProps,\n AvatarImageFallbackProps,\n AvatarPresenceProps,\n AvatarGroupProps,\n AvatarMaskProps,\n AvatarRootProps,\n}\n\n// =================================\n// ====== Constants & Types ========\n// =================================\n\nconst AVATAR_SIZES = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const\n\nconst AVATAR_PRESENCE_TYPES = {\n online: 'online',\n offline: 'offline',\n} as const\n\n// Progrmatically creates type unions\ntype AvatarSize = (typeof AVATAR_SIZES)[keyof typeof AVATAR_SIZES]\ntype AvatarPresenceType = (typeof AVATAR_PRESENCE_TYPES)[keyof typeof AVATAR_PRESENCE_TYPES]\n\nconst AVATAR_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 24,\n [AVATAR_SIZES.md]: 32,\n [AVATAR_SIZES.lg]: 40,\n}\n\nconst AVATAR_PRESENCE_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 10,\n [AVATAR_SIZES.md]: 12,\n [AVATAR_SIZES.lg]: 14,\n}\n\nconst AVATAR_FALLBACK_ICON_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 12,\n [AVATAR_SIZES.md]: 16,\n [AVATAR_SIZES.lg]: 20,\n}\n\n// =================================\n// ====== Context ==================\n// =================================\n\ninterface AvatarContextType {\n size: AvatarSize\n allImagesLoaded: boolean\n setAllImagesLoaded: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nconst AvatarContext = createContext<AvatarContextType | null>(null)\n\nfunction useAvatarContext() {\n const context = useContext(AvatarContext)\n if (!context) {\n throw new Error('Avatar components must be used within Avatar.Root')\n }\n return context\n}\n\n// =================================\n// ====== AvatarRoot ===============\n// =================================\n\ninterface AvatarRootProps {\n children: React.ReactNode\n size?: AvatarSize\n}\n\nfunction AvatarRoot({ children, size = 'md' }: AvatarRootProps) {\n const [allImagesLoaded, setAllImagesLoaded] = useState(false)\n const styles = useStyles({ size })\n\n return (\n <AvatarContext.Provider value={{ size, allImagesLoaded, setAllImagesLoaded }}>\n <View style={styles.rootContainer}>{children}</View>\n </AvatarContext.Provider>\n )\n}\n\nAvatarRoot.displayName = 'Avatar.Root'\n\n// =================================\n// ====== AvatarMask ===============\n// =================================\n\ntype AvatarMaskProps = ViewProps\n\nfunction AvatarMask({ children, ...props }: AvatarMaskProps) {\n const styles = useStyles()\n\n return (\n <View style={styles.mask} {...props}>\n {children}\n </View>\n )\n}\n\nAvatarMask.displayName = 'Avatar.Mask'\n\n// =================================\n// ====== AvatarImage ============\n// =================================\n\ninterface AvatarImageProps extends Omit<ImageProps, 'source' | 'alt'> {\n sourceUri: string\n}\n\nfunction AvatarImage({ sourceUri, ...props }: AvatarImageProps) {\n const { size } = useAvatarContext()\n\n return <Image source={{ uri: sourceUri }} loaderSize={AVATAR_PX[size]} {...props} alt=\"\" />\n}\n\nAvatarImage.displayName = 'Avatar.Image'\n\ninterface AvatarGroupImageProps {\n sourceUri: string\n style?: ImageProps['wrapperStyle']\n onLoad?: () => void\n}\n\nfunction AvatarGroupImage({ sourceUri, style, onLoad }: AvatarGroupImageProps) {\n return (\n <Image source={{ uri: sourceUri }} hideLoader wrapperStyle={style} onLoad={onLoad} alt=\"\" />\n )\n}\n\ninterface AvatarImageFallbackProps {\n name?: IconString\n}\n\nfunction AvatarImageFallback({ name = 'general.person' }: AvatarImageFallbackProps) {\n const { size } = useAvatarContext()\n const styles = useStyles()\n\n return (\n <View style={styles.fallbackContainer}>\n <Icon\n name={name}\n size={AVATAR_FALLBACK_ICON_PX[size]}\n style={styles.fallbackIcon}\n accessibilityElementsHidden={true}\n />\n </View>\n )\n}\n\nAvatarImageFallback.displayName = 'Avatar.ImageFallback'\n\n// =================================\n// ====== AvatarGroup ============\n// =================================\n\ninterface AvatarGroupProps {\n sourceUris: string[]\n}\n\ntype AvatarIndex = 0 | 1 | 2 | 3\n\nfunction AvatarGroup({ sourceUris }: AvatarGroupProps) {\n const styles = useStyles()\n const { setAllImagesLoaded } = useAvatarContext()\n const [loadingStatus, setLoadingStatus] = useState<Record<AvatarIndex, boolean>>({\n 0: false,\n 1: false,\n 2: false,\n 3: false,\n })\n const displayUris = sourceUris.slice(0, 4)\n const hasDisplayUris = displayUris.length > 0\n\n const handleImageLoaded = (index: AvatarIndex) => {\n setLoadingStatus(prev => ({\n ...prev,\n [index]: true,\n }))\n }\n\n useEffect(() => {\n const allImagesLoaded =\n hasDisplayUris &&\n displayUris.every((_, index) => loadingStatus[index as AvatarIndex] === true)\n\n setAllImagesLoaded(allImagesLoaded)\n }, [displayUris, hasDisplayUris, loadingStatus, setAllImagesLoaded])\n\n if (displayUris.length === 1) {\n return <AvatarGroupImage sourceUri={displayUris[0]} onLoad={() => handleImageLoaded(0)} />\n }\n\n if (displayUris.length === 2) {\n return (\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n </View>\n )\n }\n\n if (displayUris.length === 3) {\n return (\n <View style={styles.groupColumn}>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <View style={styles.groupColumn}>\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.fullWidthHalfHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[2]}\n style={styles.fullWidthHalfHeight}\n onLoad={() => handleImageLoaded(2)}\n />\n </View>\n </View>\n </View>\n )\n }\n\n return (\n <View style={styles.groupColumn}>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n </View>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[2]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(2)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[3]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(3)}\n />\n </View>\n </View>\n )\n}\n\nAvatarGroup.displayName = 'Avatar.Group'\n\n// =================================\n// ====== AvatarGroupLoader =========\n// =================================\n\nfunction AvatarGroupLoader() {\n const { size, allImagesLoaded } = useAvatarContext()\n const styles = useStyles({ size })\n\n if (allImagesLoaded) return null\n\n return (\n <View style={styles.groupLoader}>\n <Spinner size={AVATAR_PX[size]} />\n </View>\n )\n}\n\nAvatarGroupLoader.displayName = 'Avatar.GroupLoader'\n\n// =================================\n// ====== AvatarPresence =========\n// =================================\n\ninterface AvatarPresenceProps extends ViewProps {\n presence: AvatarPresenceType\n}\n\nfunction AvatarPresence({ presence, ...props }: AvatarPresenceProps) {\n const { size } = useAvatarContext()\n const styles = useStyles({ size, presence })\n\n return <View style={styles.presence} {...props} />\n}\n\nAvatarPresence.displayName = 'Avatar.Presence'\n\n// =================================\n// ====== Styles ===================\n// =================================\n\ninterface Styles {\n size?: AvatarSize\n presence?: AvatarPresenceType\n}\n\nconst useStyles = ({ size = 'md', presence = 'offline' }: Styles = {}) => {\n const { colors } = useTheme()\n const PRESENCE_COLOR = {\n online: colors.fillColorInteractionOnlineDefault,\n offline: colors.iconColorDefaultDisabled,\n }\n const presenceDiameter = AVATAR_PRESENCE_PX[size]\n const avatarDiameter = AVATAR_PX[size]\n const groupGap = 1\n\n return StyleSheet.create({\n rootContainer: {\n height: avatarDiameter,\n width: avatarDiameter,\n },\n mask: {\n borderRadius: avatarDiameter,\n overflow: 'hidden',\n width: '100%',\n height: '100%',\n },\n presence: {\n height: presenceDiameter,\n width: presenceDiameter,\n backgroundColor: PRESENCE_COLOR[presence],\n borderColor: colors.fillColorNeutral100Inverted,\n borderWidth: 2,\n borderRadius: presenceDiameter,\n position: 'absolute',\n bottom: -1,\n right: -1,\n },\n groupLoader: {\n position: 'absolute',\n borderRadius: avatarDiameter,\n width: avatarDiameter,\n height: avatarDiameter,\n },\n groupColumn: {\n flex: 1,\n gap: groupGap,\n },\n groupRow: {\n flexDirection: 'row',\n flex: 1,\n gap: groupGap,\n },\n halfWidthFullHeight: {\n width: '50%',\n height: '100%',\n },\n fullWidthHalfHeight: {\n width: '100%',\n height: '50%',\n },\n fallbackContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: colors.fillColorNeutral070,\n },\n fallbackIcon: {\n color: colors.iconColorDefaultDim,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"avatar_primitive.js","sourceRoot":"","sources":["../../../src/components/primitive/avatar_primitive.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react'\nimport { StyleSheet, View, ViewProps } from 'react-native'\nimport { useFontScale, useTheme } from '../../hooks'\nimport { Icon, IconString } from '../display/icon'\nimport { Image, ImageProps } from '../display/image'\nimport { Spinner } from '../display/spinner'\nimport { MAX_FONT_SIZE_MULTIPLIER } from '../../utils'\n\n// =================================\n// ====== Exports ==================\n// =================================\n\nconst Avatar = {\n Root: AvatarRoot,\n Image: AvatarImage,\n ImageFallback: AvatarImageFallback,\n Presence: AvatarPresence,\n Group: AvatarGroup,\n GroupLoader: AvatarGroupLoader,\n Mask: AvatarMask,\n} as const\n\ntype AvatarComponents = {\n Root: React.FC<AvatarRootProps>\n Image: React.FC<AvatarImageProps>\n ImageFallback: React.FC<AvatarImageFallbackProps>\n Presence: React.FC<AvatarPresenceProps>\n Group: React.FC<AvatarGroupProps>\n GroupLoader: React.FC<Record<string, never>>\n Mask: React.FC<AvatarMaskProps>\n}\n\nexport default Avatar as AvatarComponents\nexport type {\n AvatarImageProps,\n AvatarImageFallbackProps,\n AvatarPresenceProps,\n AvatarGroupProps,\n AvatarMaskProps,\n AvatarRootProps,\n}\n\n// =================================\n// ====== Constants & Types ========\n// =================================\n\nconst AVATAR_SIZES = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const\n\nconst AVATAR_PRESENCE_TYPES = {\n online: 'online',\n offline: 'offline',\n} as const\n\n// Progrmatically creates type unions\ntype AvatarSize = (typeof AVATAR_SIZES)[keyof typeof AVATAR_SIZES]\ntype AvatarPresenceType = (typeof AVATAR_PRESENCE_TYPES)[keyof typeof AVATAR_PRESENCE_TYPES]\n\nconst AVATAR_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 24,\n [AVATAR_SIZES.md]: 32,\n [AVATAR_SIZES.lg]: 40,\n}\n\nconst AVATAR_PRESENCE_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 10,\n [AVATAR_SIZES.md]: 12,\n [AVATAR_SIZES.lg]: 14,\n}\n\nconst AVATAR_FALLBACK_ICON_PX: Record<AvatarSize, number> = {\n [AVATAR_SIZES.sm]: 12,\n [AVATAR_SIZES.md]: 16,\n [AVATAR_SIZES.lg]: 20,\n}\n\n// =================================\n// ====== Context ==================\n// =================================\n\ninterface AvatarContextType {\n size: AvatarSize\n allImagesLoaded: boolean\n setAllImagesLoaded: React.Dispatch<React.SetStateAction<boolean>>\n}\n\nconst AvatarContext = createContext<AvatarContextType | null>(null)\n\nfunction useAvatarContext() {\n const context = useContext(AvatarContext)\n if (!context) {\n throw new Error('Avatar components must be used within Avatar.Root')\n }\n return context\n}\n\n// =================================\n// ====== AvatarRoot ===============\n// =================================\n\ninterface AvatarRootProps {\n children: React.ReactNode\n size?: AvatarSize\n}\n\nfunction AvatarRoot({ children, size = 'md' }: AvatarRootProps) {\n const [allImagesLoaded, setAllImagesLoaded] = useState(false)\n const styles = useStyles({ size })\n\n return (\n <AvatarContext.Provider value={{ size, allImagesLoaded, setAllImagesLoaded }}>\n <View style={styles.rootContainer}>{children}</View>\n </AvatarContext.Provider>\n )\n}\n\nAvatarRoot.displayName = 'Avatar.Root'\n\n// =================================\n// ====== AvatarMask ===============\n// =================================\n\ntype AvatarMaskProps = ViewProps\n\nfunction AvatarMask({ children, ...props }: AvatarMaskProps) {\n const styles = useStyles()\n\n return (\n <View style={styles.mask} {...props}>\n {children}\n </View>\n )\n}\n\nAvatarMask.displayName = 'Avatar.Mask'\n\n// =================================\n// ====== AvatarImage ============\n// =================================\n\ninterface AvatarImageProps extends Omit<ImageProps, 'source' | 'alt'> {\n sourceUri: string\n}\n\nfunction AvatarImage({ sourceUri, ...props }: AvatarImageProps) {\n const { size } = useAvatarContext()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })\n const scaledAvatarSize = AVATAR_PX[size] * fontScale\n\n return <Image source={{ uri: sourceUri }} loaderSize={scaledAvatarSize} {...props} alt=\"\" />\n}\n\nAvatarImage.displayName = 'Avatar.Image'\n\ninterface AvatarGroupImageProps {\n sourceUri: string\n style?: ImageProps['wrapperStyle']\n onLoad?: () => void\n}\n\nfunction AvatarGroupImage({ sourceUri, style, onLoad }: AvatarGroupImageProps) {\n return (\n <Image source={{ uri: sourceUri }} hideLoader wrapperStyle={style} onLoad={onLoad} alt=\"\" />\n )\n}\n\ninterface AvatarImageFallbackProps {\n name?: IconString\n}\n\nfunction AvatarImageFallback({ name = 'general.person' }: AvatarImageFallbackProps) {\n const { size } = useAvatarContext()\n const styles = useStyles()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })\n const scaledIconSize = AVATAR_FALLBACK_ICON_PX[size] * fontScale\n\n return (\n <View style={styles.fallbackContainer}>\n <Icon\n name={name}\n size={scaledIconSize}\n style={styles.fallbackIcon}\n accessibilityElementsHidden={true}\n />\n </View>\n )\n}\n\nAvatarImageFallback.displayName = 'Avatar.ImageFallback'\n\n// =================================\n// ====== AvatarGroup ============\n// =================================\n\ninterface AvatarGroupProps {\n sourceUris: string[]\n}\n\ntype AvatarIndex = 0 | 1 | 2 | 3\n\nfunction AvatarGroup({ sourceUris }: AvatarGroupProps) {\n const styles = useStyles()\n const { setAllImagesLoaded } = useAvatarContext()\n const [loadingStatus, setLoadingStatus] = useState<Record<AvatarIndex, boolean>>({\n 0: false,\n 1: false,\n 2: false,\n 3: false,\n })\n const displayUris = sourceUris.slice(0, 4)\n const hasDisplayUris = displayUris.length > 0\n\n const handleImageLoaded = (index: AvatarIndex) => {\n setLoadingStatus(prev => ({\n ...prev,\n [index]: true,\n }))\n }\n\n useEffect(() => {\n const allImagesLoaded =\n hasDisplayUris &&\n displayUris.every((_, index) => loadingStatus[index as AvatarIndex] === true)\n\n setAllImagesLoaded(allImagesLoaded)\n }, [displayUris, hasDisplayUris, loadingStatus, setAllImagesLoaded])\n\n if (displayUris.length === 1) {\n return <AvatarGroupImage sourceUri={displayUris[0]} onLoad={() => handleImageLoaded(0)} />\n }\n\n if (displayUris.length === 2) {\n return (\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n </View>\n )\n }\n\n if (displayUris.length === 3) {\n return (\n <View style={styles.groupColumn}>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <View style={styles.groupColumn}>\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.fullWidthHalfHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[2]}\n style={styles.fullWidthHalfHeight}\n onLoad={() => handleImageLoaded(2)}\n />\n </View>\n </View>\n </View>\n )\n }\n\n return (\n <View style={styles.groupColumn}>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[0]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(0)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[1]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(1)}\n />\n </View>\n <View style={styles.groupRow}>\n <AvatarGroupImage\n sourceUri={displayUris[2]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(2)}\n />\n <AvatarGroupImage\n sourceUri={displayUris[3]}\n style={styles.halfWidthFullHeight}\n onLoad={() => handleImageLoaded(3)}\n />\n </View>\n </View>\n )\n}\n\nAvatarGroup.displayName = 'Avatar.Group'\n\n// =================================\n// ====== AvatarGroupLoader =========\n// =================================\n\nfunction AvatarGroupLoader() {\n const { size, allImagesLoaded } = useAvatarContext()\n const styles = useStyles({ size })\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })\n const scaledSpinnerSize = AVATAR_PX[size] * fontScale\n\n if (allImagesLoaded) return null\n\n return (\n <View style={styles.groupLoader}>\n <Spinner size={scaledSpinnerSize} />\n </View>\n )\n}\n\nAvatarGroupLoader.displayName = 'Avatar.GroupLoader'\n\n// =================================\n// ====== AvatarPresence =========\n// =================================\n\ninterface AvatarPresenceProps extends ViewProps {\n presence: AvatarPresenceType\n}\n\nfunction AvatarPresence({ presence, ...props }: AvatarPresenceProps) {\n const { size } = useAvatarContext()\n const styles = useStyles({ size, presence })\n\n return <View style={styles.presence} {...props} />\n}\n\nAvatarPresence.displayName = 'Avatar.Presence'\n\n// =================================\n// ====== Styles ===================\n// =================================\n\ninterface Styles {\n size?: AvatarSize\n presence?: AvatarPresenceType\n}\n\nconst useStyles = ({ size = 'md', presence = 'offline' }: Styles = {}) => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER })\n const PRESENCE_COLOR = {\n online: colors.fillColorInteractionOnlineDefault,\n offline: colors.iconColorDefaultDisabled,\n }\n const presenceDiameter = AVATAR_PRESENCE_PX[size] * fontScale\n const avatarDiameter = AVATAR_PX[size] * fontScale\n const groupGap = 1\n\n return StyleSheet.create({\n rootContainer: {\n height: avatarDiameter,\n width: avatarDiameter,\n },\n mask: {\n borderRadius: avatarDiameter,\n overflow: 'hidden',\n width: '100%',\n height: '100%',\n },\n presence: {\n height: presenceDiameter,\n width: presenceDiameter,\n backgroundColor: PRESENCE_COLOR[presence],\n borderColor: colors.fillColorNeutral100Inverted,\n borderWidth: 2,\n borderRadius: presenceDiameter,\n position: 'absolute',\n bottom: -1,\n right: -1,\n },\n groupLoader: {\n position: 'absolute',\n borderRadius: avatarDiameter,\n width: avatarDiameter,\n height: avatarDiameter,\n },\n groupColumn: {\n flex: 1,\n gap: groupGap,\n },\n groupRow: {\n flexDirection: 'row',\n flex: 1,\n gap: groupGap,\n },\n halfWidthFullHeight: {\n width: '50%',\n height: '100%',\n },\n fullWidthHalfHeight: {\n width: '100%',\n height: '50%',\n },\n fallbackContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: colors.fillColorNeutral070,\n },\n fallbackIcon: {\n color: colors.iconColorDefaultDim,\n },\n })\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { FC, ReactNode } from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
- import { type ButtonProps, type HeadingProps, type IconString, type IconStyle, type TextProps } from '../display';
3
+ import { type ButtonProps, type HeadingProps, type IconString, type IconStyle, type TextButtonProps, type TextProps } from '../display';
4
4
  type BlankStateComponents = {
5
5
  Root: FC<BlankStateRootProps>;
6
6
  Imagery: FC<BlankStateImageryProps>;
@@ -8,10 +8,11 @@ type BlankStateComponents = {
8
8
  Heading: FC<BlankStateHeadingProps>;
9
9
  Text: FC<BlankStateTextProps>;
10
10
  Button: FC<BlankStateButtonProps>;
11
+ TextButton: FC<BlankStateTextButtonProps>;
11
12
  };
12
13
  declare const _default: BlankStateComponents;
13
14
  export default _default;
14
- export type { BlankStateRootProps, BlankStateImageryProps, BlankStateContentProps, BlankStateHeadingProps, BlankStateTextProps, BlankStateButtonProps, };
15
+ export type { BlankStateRootProps, BlankStateImageryProps, BlankStateContentProps, BlankStateHeadingProps, BlankStateTextProps, BlankStateButtonProps, BlankStateTextButtonProps, };
15
16
  interface BlankStateRootProps {
16
17
  children: ReactNode;
17
18
  style?: ViewStyle;
@@ -35,4 +36,6 @@ interface BlankStateTextProps {
35
36
  }
36
37
  interface BlankStateButtonProps extends ButtonProps {
37
38
  }
39
+ interface BlankStateTextButtonProps extends TextButtonProps {
40
+ }
38
41
  //# sourceMappingURL=blank_state_primitive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blank_state_primitive.d.ts","sourceRoot":"","sources":["../../../src/components/primitive/blank_state_primitive.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,YAAY,CAAA;AAenB,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAA;IAC7B,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAA;IAC7B,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAA;CAClC,CAAA;wBAE4B,oBAAoB;AAAjD,wBAAiD;AACjD,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,GACtB,CAAA;AAMD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAcD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAsBD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAcD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;CAC9B;AAkBD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;CAC3B;AAkBD,UAAU,qBAAsB,SAAQ,WAAW;CAAG"}
1
+ {"version":3,"file":"blank_state_primitive.d.ts","sourceRoot":"","sources":["../../../src/components/primitive/blank_state_primitive.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,YAAY,CAAA;AAgBnB,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAA;IAC7B,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAA;IACnC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAA;IAC7B,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAA;IACjC,UAAU,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAA;CAC1C,CAAA;wBAE4B,oBAAoB;AAAjD,wBAAiD;AACjD,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,CAAA;AAMD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAcD,UAAU,sBAAsB;IAC9B,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAsBD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAcD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;CAC9B;AAkBD,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAA;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;CAC3B;AAkBD,UAAU,qBAAsB,SAAQ,WAAW;CAAG;AAYtD,UAAU,yBAA0B,SAAQ,eAAe;CAAG"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, StyleSheet } from 'react-native';
3
3
  import { useTheme } from '../../hooks';
4
- import { Button, Heading, Icon, Text, } from '../display';
4
+ import { Button, Heading, Icon, TextButton, Text, } from '../display';
5
5
  // ========================================
6
6
  // ====== Exports =========================
7
7
  // ========================================
@@ -12,6 +12,7 @@ const BlankState = {
12
12
  Heading: BlankStateHeading,
13
13
  Text: BlankStateText,
14
14
  Button: BlankStateButton,
15
+ TextButton: BlankStateTextButton,
15
16
  };
16
17
  export default BlankState;
17
18
  function BlankStateRoot({ children, style }) {
@@ -54,6 +55,10 @@ function BlankStateButton(props) {
54
55
  return <Button variant="outline" size="sm" {...props}/>;
55
56
  }
56
57
  BlankStateButton.displayName = 'BlankState.Button';
58
+ function BlankStateTextButton(props) {
59
+ return <TextButton variant="tertiary" {...props}/>;
60
+ }
61
+ BlankStateTextButton.displayName = 'BlankState.TextButton';
57
62
  // ========================================
58
63
  // ====== Styles ==========================
59
64
  // ========================================
@@ -1 +1 @@
1
- {"version":3,"file":"blank_state_primitive.js","sourceRoot":"","sources":["../../../src/components/primitive/blank_state_primitive.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, ReactNode } from 'react'\nimport { View, StyleSheet, ViewStyle } from 'react-native'\nimport { useTheme } from '../../hooks'\nimport {\n Button,\n Heading,\n Icon,\n Text,\n type ButtonProps,\n type HeadingProps,\n type IconString,\n type IconStyle,\n type TextProps,\n} from '../display'\n\n// ========================================\n// ====== Exports =========================\n// ========================================\n\nconst BlankState = {\n Root: BlankStateRoot,\n Imagery: BlankStateImagery,\n Content: BlankStateContent,\n Heading: BlankStateHeading,\n Text: BlankStateText,\n Button: BlankStateButton,\n} as const\n\ntype BlankStateComponents = {\n Root: FC<BlankStateRootProps>\n Imagery: FC<BlankStateImageryProps>\n Content: FC<BlankStateContentProps>\n Heading: FC<BlankStateHeadingProps>\n Text: FC<BlankStateTextProps>\n Button: FC<BlankStateButtonProps>\n}\n\nexport default BlankState as BlankStateComponents\nexport type {\n BlankStateRootProps,\n BlankStateImageryProps,\n BlankStateContentProps,\n BlankStateHeadingProps,\n BlankStateTextProps,\n BlankStateButtonProps,\n}\n\n// ========================================\n// ====== BlankStateRoot ==================\n// ========================================\n\ninterface BlankStateRootProps {\n children: ReactNode\n style?: ViewStyle\n}\n\nfunction BlankStateRoot({ children, style }: BlankStateRootProps) {\n const styles = useStyles()\n\n return <View style={[styles.container, style]}>{children}</View>\n}\n\nBlankStateRoot.displayName = 'BlankState.Root'\n\n// ========================================\n// ====== BlankStateImagery ===============\n// ========================================\n\ninterface BlankStateImageryProps {\n name: IconString\n size?: number\n style?: IconStyle\n}\n\nfunction BlankStateImagery({ name, size = 32, style }: BlankStateImageryProps) {\n const styles = useStyles()\n\n /*\n NOTE:\n BlankState.Imagery will eventually return more then just an Icon component\n Eventually it will need to return SVG illustrations from the theme or internally for Services Mobile.\n This first step of using a more abstract component just allows us to keep this component open to change, without being overly perscriptive on how the change should be implomented.\n\n*/\n\n return <Icon name={name} size={size} style={[styles.imagery, style]} />\n}\n\nBlankStateImagery.displayName = 'BlankState.Imagery'\n\n// ========================================\n// ====== BlankStateContent ===============\n// ========================================\n\ninterface BlankStateContentProps {\n children: ReactNode\n style?: ViewStyle\n}\n\nfunction BlankStateContent({ children, style }: BlankStateContentProps) {\n const styles = useStyles()\n\n return <View style={[styles.content, style]}>{children}</View>\n}\n\nBlankStateContent.displayName = 'BlankState.Content'\n\n// ========================================\n// ====== BlankStateHeading ===============\n// ========================================\n\ninterface BlankStateHeadingProps {\n children: ReactNode\n style?: HeadingProps['style']\n}\n\nfunction BlankStateHeading({ children, style }: BlankStateHeadingProps) {\n const styles = useStyles()\n\n return (\n <Heading variant=\"h3\" style={[styles.heading, style]}>\n {children}\n </Heading>\n )\n}\n\nBlankStateHeading.displayName = 'BlankState.Heading'\n\n// ========================================\n// ====== BlankStateText ==================\n// ========================================\n\ninterface BlankStateTextProps {\n children: ReactNode\n style?: TextProps['style']\n}\n\nfunction BlankStateText({ children, style }: BlankStateTextProps) {\n const styles = useStyles()\n\n return (\n <Text variant=\"tertiary\" style={[styles.text, style]}>\n {children}\n </Text>\n )\n}\n\nBlankStateText.displayName = 'BlankState.Text'\n\n// ========================================\n// ====== BlankStateButton ================\n// ========================================\n\ninterface BlankStateButtonProps extends ButtonProps {}\n\nfunction BlankStateButton(props: BlankStateButtonProps) {\n return <Button variant=\"outline\" size=\"sm\" {...props} />\n}\n\nBlankStateButton.displayName = 'BlankState.Button'\n\n// ========================================\n// ====== Styles ==========================\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 imagery: {\n color: colors.iconColorDefaultDisabled,\n },\n content: {\n alignItems: 'center',\n gap: 4,\n maxWidth: 250,\n },\n heading: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n text: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"blank_state_primitive.js","sourceRoot":"","sources":["../../../src/components/primitive/blank_state_primitive.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { FC, ReactNode } from 'react'\nimport { View, StyleSheet, ViewStyle } from 'react-native'\nimport { useTheme } from '../../hooks'\nimport {\n Button,\n Heading,\n Icon,\n TextButton,\n Text,\n type ButtonProps,\n type HeadingProps,\n type IconString,\n type IconStyle,\n type TextButtonProps,\n type TextProps,\n} from '../display'\n\n// ========================================\n// ====== Exports =========================\n// ========================================\n\nconst BlankState = {\n Root: BlankStateRoot,\n Imagery: BlankStateImagery,\n Content: BlankStateContent,\n Heading: BlankStateHeading,\n Text: BlankStateText,\n Button: BlankStateButton,\n TextButton: BlankStateTextButton,\n} as const\n\ntype BlankStateComponents = {\n Root: FC<BlankStateRootProps>\n Imagery: FC<BlankStateImageryProps>\n Content: FC<BlankStateContentProps>\n Heading: FC<BlankStateHeadingProps>\n Text: FC<BlankStateTextProps>\n Button: FC<BlankStateButtonProps>\n TextButton: FC<BlankStateTextButtonProps>\n}\n\nexport default BlankState as BlankStateComponents\nexport type {\n BlankStateRootProps,\n BlankStateImageryProps,\n BlankStateContentProps,\n BlankStateHeadingProps,\n BlankStateTextProps,\n BlankStateButtonProps,\n BlankStateTextButtonProps,\n}\n\n// ========================================\n// ====== BlankStateRoot ==================\n// ========================================\n\ninterface BlankStateRootProps {\n children: ReactNode\n style?: ViewStyle\n}\n\nfunction BlankStateRoot({ children, style }: BlankStateRootProps) {\n const styles = useStyles()\n\n return <View style={[styles.container, style]}>{children}</View>\n}\n\nBlankStateRoot.displayName = 'BlankState.Root'\n\n// ========================================\n// ====== BlankStateImagery ===============\n// ========================================\n\ninterface BlankStateImageryProps {\n name: IconString\n size?: number\n style?: IconStyle\n}\n\nfunction BlankStateImagery({ name, size = 32, style }: BlankStateImageryProps) {\n const styles = useStyles()\n\n /*\n NOTE:\n BlankState.Imagery will eventually return more then just an Icon component\n Eventually it will need to return SVG illustrations from the theme or internally for Services Mobile.\n This first step of using a more abstract component just allows us to keep this component open to change, without being overly perscriptive on how the change should be implomented.\n\n*/\n\n return <Icon name={name} size={size} style={[styles.imagery, style]} />\n}\n\nBlankStateImagery.displayName = 'BlankState.Imagery'\n\n// ========================================\n// ====== BlankStateContent ===============\n// ========================================\n\ninterface BlankStateContentProps {\n children: ReactNode\n style?: ViewStyle\n}\n\nfunction BlankStateContent({ children, style }: BlankStateContentProps) {\n const styles = useStyles()\n\n return <View style={[styles.content, style]}>{children}</View>\n}\n\nBlankStateContent.displayName = 'BlankState.Content'\n\n// ========================================\n// ====== BlankStateHeading ===============\n// ========================================\n\ninterface BlankStateHeadingProps {\n children: ReactNode\n style?: HeadingProps['style']\n}\n\nfunction BlankStateHeading({ children, style }: BlankStateHeadingProps) {\n const styles = useStyles()\n\n return (\n <Heading variant=\"h3\" style={[styles.heading, style]}>\n {children}\n </Heading>\n )\n}\n\nBlankStateHeading.displayName = 'BlankState.Heading'\n\n// ========================================\n// ====== BlankStateText ==================\n// ========================================\n\ninterface BlankStateTextProps {\n children: ReactNode\n style?: TextProps['style']\n}\n\nfunction BlankStateText({ children, style }: BlankStateTextProps) {\n const styles = useStyles()\n\n return (\n <Text variant=\"tertiary\" style={[styles.text, style]}>\n {children}\n </Text>\n )\n}\n\nBlankStateText.displayName = 'BlankState.Text'\n\n// ========================================\n// ====== BlankStateButton ================\n// ========================================\n\ninterface BlankStateButtonProps extends ButtonProps {}\n\nfunction BlankStateButton(props: BlankStateButtonProps) {\n return <Button variant=\"outline\" size=\"sm\" {...props} />\n}\n\nBlankStateButton.displayName = 'BlankState.Button'\n\n// ========================================\n// ====== BlankStateTextButton ================\n// ========================================\n\ninterface BlankStateTextButtonProps extends TextButtonProps {}\n\nfunction BlankStateTextButton(props: BlankStateTextButtonProps) {\n return <TextButton variant=\"tertiary\" {...props} />\n}\n\nBlankStateTextButton.displayName = 'BlankState.TextButton'\n\n// ========================================\n// ====== Styles ==========================\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 imagery: {\n color: colors.iconColorDefaultDisabled,\n },\n content: {\n alignItems: 'center',\n gap: 4,\n maxWidth: 250,\n },\n heading: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n text: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAOnF,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAS7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAA;AACjG,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EACL,yBAAyB,EAE1B,MAAM,sDAAsD,CAAA;AAI7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOhE,eAAO,MAAM,oBAAoB;;;;;;;;;uOAvCpB,mBAAmB;;;;;;;;;;;;;uBA8O2vT,gBAAiB,KAAK;;;qCA5LpxT,2BAA2B;;;;;;;;;uBA4LmuT,gBAAiB,KAAK;;;qCAlLpxT,2BAA2B;;;;;;;;uBAkLmuT,gBAAiB,KAAK;;;qCArKpxT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;uBAqKmuT,gBAAiB,KAAK;;;;qCAnJpxT,2BAA2B;;;;EAUtD,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;uBAuIqwT,gBAAiB,KAAK;;;;qCA5HpxT,2BAA2B;;;;;;;;;;;;uBA4HmuT,gBAAiB,KAAK;;qCA5GpxT,2BAA2B;qCAc3B,2BAA2B;;;;;;;;;;;;;;;;;uBA8FmuT,gBAAiB,KAAK;;;;qCAxDpxT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;mDAwDovT,KAAK;;;iDA5LpxT,2BAA2B;;;;;;;;;mDA4LovT,KAAK;;;iDAlLpxT,2BAA2B;;;;;;;;mDAkLovT,KAAK;;;iDArKpxT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;mDAqKovT,KAAK;;;;iDAnJpxT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0ItD,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAOnF,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAS7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAA;AACjG,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EACL,yBAAyB,EAE1B,MAAM,sDAAsD,CAAA;AAI7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAOhE,eAAO,MAAM,oBAAoB;;;;;;;;;uOAvCpB,mBAAmB;;;;;;;;;;;;;uBA8OuwT,gBAAiB,KAAK;;;qCA5LhyT,2BAA2B;;;;;;;;;uBA4L+uT,gBAAiB,KAAK;;;qCAlLhyT,2BAA2B;;;;;;;;uBAkL+uT,gBAAiB,KAAK;;;qCArKhyT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;uBAqK+uT,gBAAiB,KAAK;;;;qCAnJhyT,2BAA2B;;;;EAUtD,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;uBAuIixT,gBAAiB,KAAK;;;;qCA5HhyT,2BAA2B;;;;;;;;;;;;uBA4H+uT,gBAAiB,KAAK;;qCA5GhyT,2BAA2B;qCAc3B,2BAA2B;;;;;;;;;;;;;;;;;uBA8F+uT,gBAAiB,KAAK;;;;qCAxDhyT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;mDAwDgwT,KAAK;;;iDA5LhyT,2BAA2B;;;;;;;;;mDA4LgwT,KAAK;;;iDAlLhyT,2BAA2B;;;;;;;;mDAkLgwT,KAAK;;;iDArKhyT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;mDAqKgwT,KAAK;;;;iDAnJhyT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0ItD,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}
@@ -21,7 +21,7 @@ import { AttachmentActionsScreen } from '../screens/attachment_actions/attachmen
21
21
  import { BugReportScreen, BugReportScreenOptions } from '../screens/bug_report_screen';
22
22
  import { MessageReadReceiptsScreen, MessageReadReceiptsScreenOptions, } from '../screens/conversation/message_read_receipts_screen';
23
23
  import { Platform } from 'react-native';
24
- import { HeaderSubmitButton } from '../components/display/platform_modal_header_buttons';
24
+ import { HeaderTextButton } from '../components/display/platform_modal_header_buttons';
25
25
  import { TeamConversationScreen } from '../screens/team_conversation_screen';
26
26
  import { CardStyleInterpolators } from '@react-navigation/stack';
27
27
  const HEADER_BACK_BUTTON_LAYOUT_RESET_STYLES = {
@@ -39,7 +39,7 @@ export const NewConversationStack = createNativeStackNavigator({
39
39
  screen: ConversationSelectRecipientsScreen,
40
40
  options: ({ navigation }) => ({
41
41
  title: 'New conversation',
42
- headerRight: (props) => (<HeaderSubmitButton {...props} onPress={navigation.goBack} title="Cancel"/>),
42
+ headerRight: (props) => (<HeaderTextButton {...props} onPress={navigation.goBack} title="Cancel"/>),
43
43
  headerBackVisible: false,
44
44
  }),
45
45
  },
@@ -47,14 +47,14 @@ export const NewConversationStack = createNativeStackNavigator({
47
47
  screen: ConversationSelectGroupRecipientsScreen,
48
48
  options: ({ navigation, route }) => ({
49
49
  title: 'New conversation',
50
- headerRight: (props) => (<HeaderSubmitButton {...props} onPress={() => navigation.popTo('Conversations', route.params)} title="Cancel"/>),
50
+ headerRight: (props) => (<HeaderTextButton {...props} onPress={() => navigation.popTo('Conversations', route.params)} title="Cancel"/>),
51
51
  }),
52
52
  },
53
53
  ConversationSelectTeamsILeadRecipients: {
54
54
  screen: ConversationSelectTeamsILeadRecipientsScreen,
55
55
  options: ({ navigation, route }) => ({
56
56
  title: 'New conversation',
57
- headerRight: (props) => (<HeaderSubmitButton {...props} onPress={() => navigation.popTo('Conversations', route.params)} title="Cancel"/>),
57
+ headerRight: (props) => (<HeaderTextButton {...props} onPress={() => navigation.popTo('Conversations', route.params)} title="Cancel"/>),
58
58
  }),
59
59
  },
60
60
  ConversationFilterRecipients: {
@@ -66,7 +66,7 @@ export const NewConversationStack = createNativeStackNavigator({
66
66
  options: ({ navigation }) => ({
67
67
  title: 'New conversation',
68
68
  headerLeft: () => null,
69
- headerRight: (props) => (<HeaderSubmitButton {...props} onPress={() => navigation.getParent()?.goBack()} title="Cancel"/>),
69
+ headerRight: (props) => (<HeaderTextButton {...props} onPress={() => navigation.getParent()?.goBack()} title="Cancel"/>),
70
70
  }),
71
71
  },
72
72
  },
@@ -125,7 +125,7 @@ export const ChatStack = createNativeStackNavigator({
125
125
  options: ({ navigation }) => ({
126
126
  presentation: 'modal',
127
127
  title: 'Conversation details',
128
- headerRight: (props) => (<HeaderSubmitButton {...props} onPress={navigation.goBack} title="Done"/>),
128
+ headerRight: (props) => (<HeaderTextButton {...props} onPress={navigation.goBack} title="Done"/>),
129
129
  }),
130
130
  },
131
131
  New: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HeaderBackButton } from '@react-navigation/elements'\nimport { StaticParamList } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackHeaderRightProps,\n} from '@react-navigation/native-stack'\nimport React from 'react'\nimport { Icon } from '../components'\nimport { ConversationDetailsScreen } from '../screens/conversation_details_screen'\nimport {\n ConversationRouteProps,\n ConversationScreen,\n ConversationScreenTitle,\n} from '../screens/conversation_screen'\nimport { ConversationsScreen } from '../screens/conversations/conversations_screen'\nimport { ConversationNewScreen } from '../screens/conversation_new/conversation_new_screen'\nimport {\n ConversationFilterReceipientsScreenOptions,\n ConversationFilterRecipientsScreen,\n} from '../screens/conversation_filter_recipients/conversation_filter_recipients_screen'\nimport { ConversationSelectRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_recipients_screen'\nimport {\n MessageActionsScreen,\n MessageActionsScreenOptions,\n} from '../screens/message_actions_screen'\nimport { SendGiphyScreen, SendGiphyScreenOptions } from '../screens/send_giphy_screen'\nimport { NotFound } from '../screens/not_found'\nimport { ReactionsScreen, ReactionsScreenOptions } from '../screens/reactions_screen'\nimport { ScreenLayout } from './screenLayout'\nimport {\n ConversationFiltersScreen,\n ConversationFiltersScreenOptions,\n} from '../screens/conversation_filters_screen'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport { ConversationSelectGroupRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_group_recipients_screen'\nimport { ConversationSelectTeamsILeadRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen'\nimport { AttachmentActionsScreenOptions } from '../screens/attachment_actions/attachment_actions_screen'\nimport { AttachmentActionsScreen } from '../screens/attachment_actions/attachment_actions_screen'\nimport { BugReportScreen, BugReportScreenOptions } from '../screens/bug_report_screen'\nimport {\n MessageReadReceiptsScreen,\n MessageReadReceiptsScreenOptions,\n} from '../screens/conversation/message_read_receipts_screen'\nimport { Platform } from 'react-native'\nimport { HeaderSubmitButton } from '../components/display/platform_modal_header_buttons'\nimport { TeamConversationScreen } from '../screens/team_conversation_screen'\nimport { CardStyleInterpolators } from '@react-navigation/stack'\n\nconst HEADER_BACK_BUTTON_LAYOUT_RESET_STYLES = {\n marginLeft: Platform.select({ ios: -8, default: -3 }),\n marginRight: Platform.select({ ios: 0, default: 30 }),\n}\n\nexport const NewConversationStack = createNativeStackNavigator({\n initialRouteName: 'ConversationSelectRecipients',\n screenOptions: {\n headerBackButtonDisplayMode: 'minimal',\n },\n screenLayout: ScreenLayout,\n screens: {\n ConversationSelectRecipients: {\n screen: ConversationSelectRecipientsScreen,\n options: ({ navigation }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderSubmitButton {...props} onPress={navigation.goBack} title=\"Cancel\" />\n ),\n headerBackVisible: false,\n }),\n },\n ConversationSelectGroupRecipients: {\n screen: ConversationSelectGroupRecipientsScreen,\n options: ({ navigation, route }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderSubmitButton\n {...props}\n onPress={() => navigation.popTo('Conversations', route.params)}\n title=\"Cancel\"\n />\n ),\n }),\n },\n ConversationSelectTeamsILeadRecipients: {\n screen: ConversationSelectTeamsILeadRecipientsScreen,\n options: ({ navigation, route }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderSubmitButton\n {...props}\n onPress={() => navigation.popTo('Conversations', route.params)}\n title=\"Cancel\"\n />\n ),\n }),\n },\n ConversationFilterRecipients: {\n screen: ConversationFilterRecipientsScreen,\n options: ConversationFilterReceipientsScreenOptions,\n },\n ConversationNew: {\n screen: ConversationNewScreen,\n options: ({ navigation }) => ({\n title: 'New conversation',\n headerLeft: () => null,\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderSubmitButton\n {...props}\n onPress={() => navigation.getParent()?.goBack()}\n title=\"Cancel\"\n />\n ),\n }),\n },\n },\n})\n\nexport const ChatStack = createNativeStackNavigator({\n screenOptions: {\n headerBackButtonDisplayMode: 'minimal',\n },\n screenLayout: ScreenLayout,\n screens: {\n Conversations: {\n screen: ConversationsScreen,\n options: ({ route, navigation }) => ({\n headerTitle: (route.params as { title?: string })?.title ?? 'Chat',\n headerBackVisible: false,\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderBackButton\n backImage={() => <Icon name=\"general.x\" size={18} color={props.tintColor} />}\n onPress={navigation.goBack}\n {...props}\n />\n ),\n }),\n },\n ConversationFilters: {\n screen: ConversationFiltersScreen,\n options: ConversationFiltersScreenOptions,\n },\n Conversation: {\n screen: ConversationScreen,\n options: ({ route, navigation }) => ({\n headerTitle: (props: NativeStackHeaderRightProps) => {\n const { conversation_id, title, badge, deleted } = route.params as ConversationRouteProps\n\n return (\n <ConversationScreenTitle\n conversation_id={conversation_id}\n badge={badge}\n deleted={deleted}\n {...props}\n >\n {title ?? 'Conversation'}\n </ConversationScreenTitle>\n )\n },\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderBackButton\n backImage={() => <Icon name=\"general.x\" size={18} color={props.tintColor} />}\n onPress={() => navigation.getParent()?.goBack()}\n />\n ),\n headerLeft: props => (\n <HeaderBackButton\n style={HEADER_BACK_BUTTON_LAYOUT_RESET_STYLES}\n displayMode=\"minimal\"\n onPress={() => {\n const params = route.params as ConversationRouteProps\n if ((params as ConversationFiltersParams)?.chat_group_graph_id) {\n // Ensure that conversations with a graph id pass them back to the conversation list\n const { chat_group_graph_id } = params\n navigation.popTo('Conversations', { chat_group_graph_id })\n } else {\n navigation.goBack()\n }\n }}\n {...props}\n />\n ),\n }),\n },\n TeamConversation: {\n screen: TeamConversationScreen,\n options: {\n title: 'Finding conversation...',\n animation: 'none',\n cardStyleInterpolator: CardStyleInterpolators.forNoAnimation,\n },\n },\n ConversationDetails: {\n screen: ConversationDetailsScreen,\n options: ({ navigation }) => ({\n presentation: 'modal',\n title: 'Conversation details',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderSubmitButton {...props} onPress={navigation.goBack} title=\"Done\" />\n ),\n }),\n },\n New: {\n screen: NewConversationStack,\n options: {\n headerShown: false,\n presentation: 'modal',\n },\n },\n SendGiphy: {\n screen: SendGiphyScreen,\n options: SendGiphyScreenOptions,\n },\n MessageActions: {\n screen: MessageActionsScreen,\n // Something about sheetAllowedDetents declared inline breaks TS\n options: MessageActionsScreenOptions,\n },\n AttachmentActions: {\n screen: AttachmentActionsScreen,\n options: AttachmentActionsScreenOptions,\n },\n Reactions: {\n screen: ReactionsScreen,\n options: ReactionsScreenOptions,\n },\n MessageReadReceipts: {\n screen: MessageReadReceiptsScreen,\n options: MessageReadReceiptsScreenOptions,\n },\n BugReport: {\n screen: BugReportScreen,\n options: BugReportScreenOptions,\n },\n NotFound: {\n screen: NotFound,\n options: {\n title: '404',\n },\n linking: {\n path: '*',\n },\n },\n },\n})\n\ntype ChatStackParamList = StaticParamList<typeof ChatStack>\n\ndeclare global {\n namespace ReactNavigation {\n interface RootParamList extends ChatStackParamList {}\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HeaderBackButton } from '@react-navigation/elements'\nimport { StaticParamList } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackHeaderRightProps,\n} from '@react-navigation/native-stack'\nimport React from 'react'\nimport { Icon } from '../components'\nimport { ConversationDetailsScreen } from '../screens/conversation_details_screen'\nimport {\n ConversationRouteProps,\n ConversationScreen,\n ConversationScreenTitle,\n} from '../screens/conversation_screen'\nimport { ConversationsScreen } from '../screens/conversations/conversations_screen'\nimport { ConversationNewScreen } from '../screens/conversation_new/conversation_new_screen'\nimport {\n ConversationFilterReceipientsScreenOptions,\n ConversationFilterRecipientsScreen,\n} from '../screens/conversation_filter_recipients/conversation_filter_recipients_screen'\nimport { ConversationSelectRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_recipients_screen'\nimport {\n MessageActionsScreen,\n MessageActionsScreenOptions,\n} from '../screens/message_actions_screen'\nimport { SendGiphyScreen, SendGiphyScreenOptions } from '../screens/send_giphy_screen'\nimport { NotFound } from '../screens/not_found'\nimport { ReactionsScreen, ReactionsScreenOptions } from '../screens/reactions_screen'\nimport { ScreenLayout } from './screenLayout'\nimport {\n ConversationFiltersScreen,\n ConversationFiltersScreenOptions,\n} from '../screens/conversation_filters_screen'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport { ConversationSelectGroupRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_group_recipients_screen'\nimport { ConversationSelectTeamsILeadRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen'\nimport { AttachmentActionsScreenOptions } from '../screens/attachment_actions/attachment_actions_screen'\nimport { AttachmentActionsScreen } from '../screens/attachment_actions/attachment_actions_screen'\nimport { BugReportScreen, BugReportScreenOptions } from '../screens/bug_report_screen'\nimport {\n MessageReadReceiptsScreen,\n MessageReadReceiptsScreenOptions,\n} from '../screens/conversation/message_read_receipts_screen'\nimport { Platform } from 'react-native'\nimport { HeaderTextButton } from '../components/display/platform_modal_header_buttons'\nimport { TeamConversationScreen } from '../screens/team_conversation_screen'\nimport { CardStyleInterpolators } from '@react-navigation/stack'\n\nconst HEADER_BACK_BUTTON_LAYOUT_RESET_STYLES = {\n marginLeft: Platform.select({ ios: -8, default: -3 }),\n marginRight: Platform.select({ ios: 0, default: 30 }),\n}\n\nexport const NewConversationStack = createNativeStackNavigator({\n initialRouteName: 'ConversationSelectRecipients',\n screenOptions: {\n headerBackButtonDisplayMode: 'minimal',\n },\n screenLayout: ScreenLayout,\n screens: {\n ConversationSelectRecipients: {\n screen: ConversationSelectRecipientsScreen,\n options: ({ navigation }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderTextButton {...props} onPress={navigation.goBack} title=\"Cancel\" />\n ),\n headerBackVisible: false,\n }),\n },\n ConversationSelectGroupRecipients: {\n screen: ConversationSelectGroupRecipientsScreen,\n options: ({ navigation, route }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderTextButton\n {...props}\n onPress={() => navigation.popTo('Conversations', route.params)}\n title=\"Cancel\"\n />\n ),\n }),\n },\n ConversationSelectTeamsILeadRecipients: {\n screen: ConversationSelectTeamsILeadRecipientsScreen,\n options: ({ navigation, route }) => ({\n title: 'New conversation',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderTextButton\n {...props}\n onPress={() => navigation.popTo('Conversations', route.params)}\n title=\"Cancel\"\n />\n ),\n }),\n },\n ConversationFilterRecipients: {\n screen: ConversationFilterRecipientsScreen,\n options: ConversationFilterReceipientsScreenOptions,\n },\n ConversationNew: {\n screen: ConversationNewScreen,\n options: ({ navigation }) => ({\n title: 'New conversation',\n headerLeft: () => null,\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderTextButton\n {...props}\n onPress={() => navigation.getParent()?.goBack()}\n title=\"Cancel\"\n />\n ),\n }),\n },\n },\n})\n\nexport const ChatStack = createNativeStackNavigator({\n screenOptions: {\n headerBackButtonDisplayMode: 'minimal',\n },\n screenLayout: ScreenLayout,\n screens: {\n Conversations: {\n screen: ConversationsScreen,\n options: ({ route, navigation }) => ({\n headerTitle: (route.params as { title?: string })?.title ?? 'Chat',\n headerBackVisible: false,\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderBackButton\n backImage={() => <Icon name=\"general.x\" size={18} color={props.tintColor} />}\n onPress={navigation.goBack}\n {...props}\n />\n ),\n }),\n },\n ConversationFilters: {\n screen: ConversationFiltersScreen,\n options: ConversationFiltersScreenOptions,\n },\n Conversation: {\n screen: ConversationScreen,\n options: ({ route, navigation }) => ({\n headerTitle: (props: NativeStackHeaderRightProps) => {\n const { conversation_id, title, badge, deleted } = route.params as ConversationRouteProps\n\n return (\n <ConversationScreenTitle\n conversation_id={conversation_id}\n badge={badge}\n deleted={deleted}\n {...props}\n >\n {title ?? 'Conversation'}\n </ConversationScreenTitle>\n )\n },\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderBackButton\n backImage={() => <Icon name=\"general.x\" size={18} color={props.tintColor} />}\n onPress={() => navigation.getParent()?.goBack()}\n />\n ),\n headerLeft: props => (\n <HeaderBackButton\n style={HEADER_BACK_BUTTON_LAYOUT_RESET_STYLES}\n displayMode=\"minimal\"\n onPress={() => {\n const params = route.params as ConversationRouteProps\n if ((params as ConversationFiltersParams)?.chat_group_graph_id) {\n // Ensure that conversations with a graph id pass them back to the conversation list\n const { chat_group_graph_id } = params\n navigation.popTo('Conversations', { chat_group_graph_id })\n } else {\n navigation.goBack()\n }\n }}\n {...props}\n />\n ),\n }),\n },\n TeamConversation: {\n screen: TeamConversationScreen,\n options: {\n title: 'Finding conversation...',\n animation: 'none',\n cardStyleInterpolator: CardStyleInterpolators.forNoAnimation,\n },\n },\n ConversationDetails: {\n screen: ConversationDetailsScreen,\n options: ({ navigation }) => ({\n presentation: 'modal',\n title: 'Conversation details',\n headerRight: (props: NativeStackHeaderRightProps) => (\n <HeaderTextButton {...props} onPress={navigation.goBack} title=\"Done\" />\n ),\n }),\n },\n New: {\n screen: NewConversationStack,\n options: {\n headerShown: false,\n presentation: 'modal',\n },\n },\n SendGiphy: {\n screen: SendGiphyScreen,\n options: SendGiphyScreenOptions,\n },\n MessageActions: {\n screen: MessageActionsScreen,\n // Something about sheetAllowedDetents declared inline breaks TS\n options: MessageActionsScreenOptions,\n },\n AttachmentActions: {\n screen: AttachmentActionsScreen,\n options: AttachmentActionsScreenOptions,\n },\n Reactions: {\n screen: ReactionsScreen,\n options: ReactionsScreenOptions,\n },\n MessageReadReceipts: {\n screen: MessageReadReceiptsScreen,\n options: MessageReadReceiptsScreenOptions,\n },\n BugReport: {\n screen: BugReportScreen,\n options: BugReportScreenOptions,\n },\n NotFound: {\n screen: NotFound,\n options: {\n title: '404',\n },\n linking: {\n path: '*',\n },\n },\n },\n})\n\ntype ChatStackParamList = StaticParamList<typeof ChatStack>\n\ndeclare global {\n namespace ReactNavigation {\n interface RootParamList extends ChatStackParamList {}\n }\n}\n"]}
@@ -7,7 +7,7 @@ import { useTheme } from '../hooks';
7
7
  import { useUploadClient } from '../hooks/use_upload_client';
8
8
  import { ImagePicker, platformFontWeightBold } from '../utils';
9
9
  import { useReportBugAction } from '../hooks/use_report_bug_action';
10
- import { HeaderCancelButton, HeaderSubmitButton, } from '../components/display/platform_modal_header_buttons';
10
+ import { HeaderDismissButton, HeaderTextButton, } from '../components/display/platform_modal_header_buttons';
11
11
  import { DefaultLoading } from '../components/page/loading';
12
12
  import { startsWith } from 'lodash';
13
13
  import { VideoAttachmentPreview } from '../components/display/video_attachment_preview';
@@ -26,7 +26,7 @@ const BUG_TYPE_OPTIONS = [
26
26
  export const BugReportScreenOptions = ({ navigation, }) => ({
27
27
  presentation: 'modal',
28
28
  title: 'Report a bug',
29
- headerLeft: () => <HeaderCancelButton title="Cancel" onPress={() => navigation.goBack()}/>,
29
+ headerLeft: () => <HeaderDismissButton title="Cancel" onPress={() => navigation.goBack()}/>,
30
30
  });
31
31
  export function BugReportScreen() {
32
32
  const styles = useStyles();
@@ -112,7 +112,7 @@ ${stepsToResolve}`;
112
112
  useLayoutEffect(() => {
113
113
  navigation.setOptions({
114
114
  // eslint-disable-next-line react/no-unstable-nested-components
115
- headerRight: () => (<HeaderSubmitButton title="Submit" onPress={handleSubmit} disabled={!formValid}/>),
115
+ headerRight: () => (<HeaderTextButton title="Submit" onPress={handleSubmit} disabled={!formValid}/>),
116
116
  });
117
117
  }, [formValid, handleSubmit, navigation]);
118
118
  if (status === 'pending') {
@@ -168,7 +168,7 @@ ${stepsToResolve}`;
168
168
  <SafeAreaModal visible={showBugTypePicker} animationType="slide" presentationStyle="pageSheet" onRequestClose={() => setShowBugTypePicker(false)}>
169
169
  <View style={styles.modalContainer}>
170
170
  <View style={styles.modalHeader}>
171
- <HeaderCancelButton title="Cancel" onPress={() => setShowBugTypePicker(false)}/>
171
+ <HeaderDismissButton title="Cancel" onPress={() => setShowBugTypePicker(false)}/>
172
172
  <Text style={styles.modalTitle}>Select Bug Type</Text>
173
173
  <View style={styles.modalHeaderSpacer}/>
174
174
  </View>
@@ -1 +1 @@
1
- {"version":3,"file":"bug_report_screen.js","sourceRoot":"","sources":["../../src/screens/bug_report_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useLayoutEffect, useState } from 'react'\nimport { View, StyleSheet, TextInput, Linking, ScrollView, TouchableOpacity } from 'react-native'\nimport type {\n NativeStackNavigationOptions,\n NativeStackScreenProps,\n} from '@react-navigation/native-stack'\nimport { useNavigation } from '@react-navigation/native'\nimport {\n Button,\n Spinner,\n Text,\n TextInlineButton,\n ImageAttachmentPreview,\n Icon,\n KeyboardView,\n} from '../components'\nimport BlankState from '../components/primitive/blank_state_primitive'\nimport { useTheme } from '../hooks'\nimport { useUploadClient } from '../hooks/use_upload_client'\nimport { ImagePicker, ImagePickerResult, platformFontWeightBold } from '../utils'\nimport { useReportBugAction } from '../hooks/use_report_bug_action'\nimport {\n HeaderCancelButton,\n HeaderSubmitButton,\n} from '../components/display/platform_modal_header_buttons'\nimport { DefaultLoading } from '../components/page/loading'\nimport { startsWith } from 'lodash'\nimport { VideoAttachmentPreview } from '../components/display/video_attachment_preview'\nimport { SafeAreaModal } from '../components/safe_area_modal'\n\nconst MAX_DESCRIPTION_LENGTH = 2000\n\nconst BUG_TYPE_OPTIONS = [\n 'Issues sending or receiving messages',\n 'Trouble starting a new conversation',\n \"Notifications aren't working\",\n 'Incorrect read receipts or unread counts',\n 'Problems with file attachments',\n \"Something isn't displaying properly\",\n 'App is slow or crashes',\n 'Other',\n]\n\nexport const BugReportScreenOptions = ({\n navigation,\n}: NativeStackScreenProps<any>): NativeStackNavigationOptions => ({\n presentation: 'modal',\n title: 'Report a bug',\n headerLeft: () => <HeaderCancelButton title=\"Cancel\" onPress={() => navigation.goBack()} />,\n})\n\ninterface Attachment {\n id: string\n name: string\n type: string\n}\n\nexport function BugReportScreen() {\n const styles = useStyles()\n const navigation = useNavigation()\n const [bugType, setBugType] = useState('')\n const [showBugTypePicker, setShowBugTypePicker] = useState(false)\n const [whatWereDoing, setWhatWereDoing] = useState('')\n const [whatExpected, setWhatExpected] = useState('')\n const [stepsToResolve, setStepsToResolve] = useState('')\n const uploadApi = useUploadClient()\n const [uploading, setUploading] = useState(false)\n const [attachment, setAttachment] = useState<Attachment | null>(null)\n const [uploadError, setUploadError] = useState<string | null>(null)\n const mutation = useReportBugAction()\n const { mutate, status } = mutation\n const formValid =\n bugType.trim().length > 0 &&\n whatWereDoing.trim().length > 0 &&\n whatExpected.trim().length > 0 &&\n stepsToResolve.trim().length > 0 &&\n status === 'idle' &&\n !uploading\n const [imagePreviewURI, setImagePreviewURI] = useState<string>('')\n\n const isImageAttachment = startsWith(attachment?.type, 'image/')\n\n const handleSubmit = useCallback(() => {\n const description = `${whatWereDoing.substring(0, 100)}\n\n## What kind of bug did you experience?\n${bugType}\n\n## What were you trying to do when you encountered the bug?\n${whatWereDoing}\n\n## What did you expect to happen? What actually happened?\n${whatExpected}\n\n## What steps have you tried to resolve the issue?\n${stepsToResolve}`\n\n mutate({\n description,\n description_json: JSON.stringify({\n bugType,\n whatWereDoing,\n whatExpected,\n stepsToResolve,\n }),\n attachmentIds: attachment ? [attachment.id] : [],\n })\n }, [attachment, bugType, whatWereDoing, whatExpected, stepsToResolve, mutate])\n\n const handleRemoveAttachment = useCallback(() => {\n setAttachment(null)\n setImagePreviewURI('')\n }, [])\n\n function uploadImagePickerResult(result: ImagePickerResult) {\n if (result.canceled || result.assets.length === 0) {\n setUploading(false)\n return\n }\n\n const asset = result.assets[0]\n\n uploadApi\n ?.uploadFile({\n uri: asset.uri,\n name: asset.fileName as string,\n type: asset.mimeType as string,\n })\n .then(uploadedResource => {\n setUploading(false)\n setImagePreviewURI(asset.uri)\n setAttachment({\n id: uploadedResource.id,\n name: asset.fileName || 'File',\n type: asset.mimeType as string,\n })\n })\n .catch(() => {\n setUploading(false)\n setUploadError(`Failed to upload attachment`)\n })\n }\n\n function pickImage() {\n setUploading(true)\n return ImagePicker.openImageLibraryAsync().then(result => uploadImagePickerResult(result))\n }\n\n useLayoutEffect(() => {\n navigation.setOptions({\n // eslint-disable-next-line react/no-unstable-nested-components\n headerRight: () => (\n <HeaderSubmitButton title=\"Submit\" onPress={handleSubmit} disabled={!formValid} />\n ),\n })\n }, [formValid, handleSubmit, navigation])\n\n if (status === 'pending') {\n return (\n <View style={[styles.container, styles.fullHeight]}>\n <DefaultLoading />\n </View>\n )\n }\n\n if (status === 'success') {\n return (\n <BlankState.Root>\n <BlankState.Imagery name=\"general.checkCircle\" style={styles.successIcon} />\n <BlankState.Content>\n <BlankState.Heading style={styles.successTitle}>Thank you!</BlankState.Heading>\n <BlankState.Text style={styles.successSubtitle}>\n We appreciate you taking the time to help improve chat! We'll take a look at the issue\n you reported.\n </BlankState.Text>\n </BlankState.Content>\n <BlankState.Button\n title=\"Return to chat\"\n onPress={navigation.goBack}\n size=\"lg\"\n variant=\"fill\"\n />\n </BlankState.Root>\n )\n }\n\n if (status === 'error') {\n return (\n <View style={styles.container}>\n <Text>\n This is embarrassing, we can't submit your bug report right now. If you still need help or\n would like to submit this bug report another way please{' '}\n <TextInlineButton\n accessibilityRole=\"link\"\n onPress={() =>\n Linking.openURL('https://support.planningcenteronline.com/hc/en-us/requests/new')\n }\n >\n contact our help center\n </TextInlineButton>\n .\n </Text>\n <Button title=\"Return to chat\" onPress={navigation.goBack} variant=\"fill\" size=\"lg\" />\n </View>\n )\n }\n\n return (\n <KeyboardView>\n <ScrollView contentContainerStyle={styles.container}>\n <Text style={styles.description}>\n Thanks for helping us improve chat. Please provide details about the issue you've\n encountered. We read every submission and your feedback helps us improve the experience.\n </Text>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What kind of bug did you experience? <Text style={styles.required}>*</Text>\n </Text>\n <TouchableOpacity style={styles.pickerButton} onPress={() => setShowBugTypePicker(true)}>\n <Text style={[styles.pickerText, !bugType && styles.pickerPlaceholder]}>\n {bugType || 'Select the bug type'}\n </Text>\n <Icon\n name=\"general.downChevron\"\n style={styles.pickerArrow}\n accessibilityElementsHidden\n />\n </TouchableOpacity>\n </View>\n\n <SafeAreaModal\n visible={showBugTypePicker}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={() => setShowBugTypePicker(false)}\n >\n <View style={styles.modalContainer}>\n <View style={styles.modalHeader}>\n <HeaderCancelButton title=\"Cancel\" onPress={() => setShowBugTypePicker(false)} />\n <Text style={styles.modalTitle}>Select Bug Type</Text>\n <View style={styles.modalHeaderSpacer} />\n </View>\n <ScrollView style={styles.modalContent}>\n {BUG_TYPE_OPTIONS.map(option => (\n <TouchableOpacity\n key={option}\n style={styles.modalOption}\n onPress={() => {\n setBugType(option)\n setShowBugTypePicker(false)\n }}\n >\n <Text style={styles.modalOptionText}>{option}</Text>\n {bugType === option && (\n <Icon\n name=\"general.check\"\n style={styles.modalCheckmark}\n accessibilityElementsHidden\n />\n )}\n </TouchableOpacity>\n ))}\n </ScrollView>\n </View>\n </SafeAreaModal>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What were you trying to do when you encountered the bug?{' '}\n <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={whatWereDoing}\n onChangeText={setWhatWereDoing}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {whatWereDoing.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {whatWereDoing.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What did you expect to happen? What actually happened?{' '}\n <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={whatExpected}\n onChangeText={setWhatExpected}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {whatExpected.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {whatExpected.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What steps have you tried to resolve the issue? <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={stepsToResolve}\n onChangeText={setStepsToResolve}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {stepsToResolve.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {stepsToResolve.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.attachmentSection}>\n <View style={styles.attachmentHeader}>\n <Text style={styles.attachmentLabel}>\n Attachment <Text style={styles.subLabel}>(optional)</Text>\n </Text>\n {uploading && <Spinner />}\n </View>\n {uploadError && <Text style={styles.attachmentErrorText}>{uploadError}</Text>}\n {attachment ? (\n <View style={styles.attachmentPreviewContainer}>\n {isImageAttachment ? (\n <ImageAttachmentPreview\n uri={imagePreviewURI}\n fileName={attachment.name}\n onRemovePress={handleRemoveAttachment}\n />\n ) : (\n <VideoAttachmentPreview\n name={attachment.name}\n onRemovePress={handleRemoveAttachment}\n />\n )}\n </View>\n ) : (\n <Button\n title=\"Attach a screenshot\"\n accessibilityHint=\"Opens your device's image gallery\"\n iconNameLeft=\"general.paperclip\"\n onPress={pickImage}\n size=\"sm\"\n variant=\"outline\"\n style={styles.attachButton}\n disabled={uploading || Boolean(attachment)}\n />\n )}\n </View>\n\n <View style={styles.footer}>\n <Text variant=\"footnote\">\n We can’t respond to every submission, but we may reach out if we have additional\n questions.\n </Text>\n\n <Text variant=\"footnote\">\n For details on how we process your data and ensure its security, please refer to our{' '}\n <TextInlineButton\n accessibilityRole=\"link\"\n variant=\"footnote\"\n onPress={() => Linking.openURL('https://www.planningcenter.com/privacy')}\n >\n Privacy Policy\n </TextInlineButton>\n .\n </Text>\n </View>\n </ScrollView>\n </KeyboardView>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n container: {\n padding: 16,\n paddingBottom: 16,\n gap: 24,\n },\n fullHeight: {\n flex: 1,\n },\n description: {\n color: colors.textColorDefaultSecondary,\n },\n textInputContainer: {\n gap: 8,\n },\n fieldLabel: {\n fontSize: 16,\n fontWeight: platformFontWeightBold,\n color: colors.textColorDefaultPrimary,\n },\n required: {\n color: colors.statusErrorText,\n },\n pickerButton: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderColor: colors.borderColorDefaultBase,\n borderRadius: 8,\n paddingHorizontal: 16,\n paddingVertical: 12,\n backgroundColor: colors.surfaceColor100,\n minHeight: 48,\n },\n pickerText: {\n fontSize: 16,\n color: colors.textColorDefaultPrimary,\n flex: 1,\n },\n pickerPlaceholder: {\n color: colors.textColorDefaultSecondary,\n },\n pickerArrow: {\n fontSize: 12,\n color: colors.iconColorDefaultSecondary,\n marginLeft: 8,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: colors.surfaceColor100,\n },\n modalHeader: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n modalTitle: {\n fontSize: 18,\n fontWeight: platformFontWeightBold,\n color: colors.textColorDefaultPrimary,\n },\n modalHeaderSpacer: {\n width: 50, // Same width as cancel button to center title\n },\n modalContent: {\n flex: 1,\n },\n modalOption: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n paddingVertical: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n modalOptionText: {\n fontSize: 16,\n color: colors.textColorDefaultPrimary,\n flex: 1,\n },\n modalCheckmark: {\n fontSize: 16,\n color: colors.statusSuccessIcon,\n },\n textInput: {\n color: colors.textColorDefaultPrimary,\n fontSize: 16,\n textAlignVertical: 'top',\n minHeight: 120,\n maxHeight: 200,\n borderWidth: 1,\n borderColor: colors.borderColorDefaultBase,\n borderRadius: 8,\n paddingHorizontal: 16,\n paddingVertical: 12,\n backgroundColor: colors.surfaceColor100,\n },\n attachmentSection: {\n gap: 8,\n },\n attachmentHeader: {\n flexDirection: 'row',\n gap: 4,\n alignItems: 'center',\n },\n attachmentLabel: { fontWeight: platformFontWeightBold },\n subLabel: { fontWeight: 'normal', color: colors.textColorDefaultSecondary },\n attachmentPreviewContainer: {\n gap: 4,\n },\n attachmentErrorText: {\n color: colors.statusErrorText,\n },\n attachButton: {\n alignSelf: 'flex-start',\n },\n footer: { gap: 8 },\n successIcon: {\n color: colors.statusSuccessIcon,\n fontSize: 48,\n },\n successTitle: {\n fontSize: 24,\n marginBottom: 4,\n },\n successSubtitle: {\n fontSize: 16,\n marginBottom: 4,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"bug_report_screen.js","sourceRoot":"","sources":["../../src/screens/bug_report_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useLayoutEffect, useState } from 'react'\nimport { View, StyleSheet, TextInput, Linking, ScrollView, TouchableOpacity } from 'react-native'\nimport type {\n NativeStackNavigationOptions,\n NativeStackScreenProps,\n} from '@react-navigation/native-stack'\nimport { useNavigation } from '@react-navigation/native'\nimport {\n Button,\n Spinner,\n Text,\n TextInlineButton,\n ImageAttachmentPreview,\n Icon,\n KeyboardView,\n} from '../components'\nimport BlankState from '../components/primitive/blank_state_primitive'\nimport { useTheme } from '../hooks'\nimport { useUploadClient } from '../hooks/use_upload_client'\nimport { ImagePicker, ImagePickerResult, platformFontWeightBold } from '../utils'\nimport { useReportBugAction } from '../hooks/use_report_bug_action'\nimport {\n HeaderDismissButton,\n HeaderTextButton,\n} from '../components/display/platform_modal_header_buttons'\nimport { DefaultLoading } from '../components/page/loading'\nimport { startsWith } from 'lodash'\nimport { VideoAttachmentPreview } from '../components/display/video_attachment_preview'\nimport { SafeAreaModal } from '../components/safe_area_modal'\n\nconst MAX_DESCRIPTION_LENGTH = 2000\n\nconst BUG_TYPE_OPTIONS = [\n 'Issues sending or receiving messages',\n 'Trouble starting a new conversation',\n \"Notifications aren't working\",\n 'Incorrect read receipts or unread counts',\n 'Problems with file attachments',\n \"Something isn't displaying properly\",\n 'App is slow or crashes',\n 'Other',\n]\n\nexport const BugReportScreenOptions = ({\n navigation,\n}: NativeStackScreenProps<any>): NativeStackNavigationOptions => ({\n presentation: 'modal',\n title: 'Report a bug',\n headerLeft: () => <HeaderDismissButton title=\"Cancel\" onPress={() => navigation.goBack()} />,\n})\n\ninterface Attachment {\n id: string\n name: string\n type: string\n}\n\nexport function BugReportScreen() {\n const styles = useStyles()\n const navigation = useNavigation()\n const [bugType, setBugType] = useState('')\n const [showBugTypePicker, setShowBugTypePicker] = useState(false)\n const [whatWereDoing, setWhatWereDoing] = useState('')\n const [whatExpected, setWhatExpected] = useState('')\n const [stepsToResolve, setStepsToResolve] = useState('')\n const uploadApi = useUploadClient()\n const [uploading, setUploading] = useState(false)\n const [attachment, setAttachment] = useState<Attachment | null>(null)\n const [uploadError, setUploadError] = useState<string | null>(null)\n const mutation = useReportBugAction()\n const { mutate, status } = mutation\n const formValid =\n bugType.trim().length > 0 &&\n whatWereDoing.trim().length > 0 &&\n whatExpected.trim().length > 0 &&\n stepsToResolve.trim().length > 0 &&\n status === 'idle' &&\n !uploading\n const [imagePreviewURI, setImagePreviewURI] = useState<string>('')\n\n const isImageAttachment = startsWith(attachment?.type, 'image/')\n\n const handleSubmit = useCallback(() => {\n const description = `${whatWereDoing.substring(0, 100)}\n\n## What kind of bug did you experience?\n${bugType}\n\n## What were you trying to do when you encountered the bug?\n${whatWereDoing}\n\n## What did you expect to happen? What actually happened?\n${whatExpected}\n\n## What steps have you tried to resolve the issue?\n${stepsToResolve}`\n\n mutate({\n description,\n description_json: JSON.stringify({\n bugType,\n whatWereDoing,\n whatExpected,\n stepsToResolve,\n }),\n attachmentIds: attachment ? [attachment.id] : [],\n })\n }, [attachment, bugType, whatWereDoing, whatExpected, stepsToResolve, mutate])\n\n const handleRemoveAttachment = useCallback(() => {\n setAttachment(null)\n setImagePreviewURI('')\n }, [])\n\n function uploadImagePickerResult(result: ImagePickerResult) {\n if (result.canceled || result.assets.length === 0) {\n setUploading(false)\n return\n }\n\n const asset = result.assets[0]\n\n uploadApi\n ?.uploadFile({\n uri: asset.uri,\n name: asset.fileName as string,\n type: asset.mimeType as string,\n })\n .then(uploadedResource => {\n setUploading(false)\n setImagePreviewURI(asset.uri)\n setAttachment({\n id: uploadedResource.id,\n name: asset.fileName || 'File',\n type: asset.mimeType as string,\n })\n })\n .catch(() => {\n setUploading(false)\n setUploadError(`Failed to upload attachment`)\n })\n }\n\n function pickImage() {\n setUploading(true)\n return ImagePicker.openImageLibraryAsync().then(result => uploadImagePickerResult(result))\n }\n\n useLayoutEffect(() => {\n navigation.setOptions({\n // eslint-disable-next-line react/no-unstable-nested-components\n headerRight: () => (\n <HeaderTextButton title=\"Submit\" onPress={handleSubmit} disabled={!formValid} />\n ),\n })\n }, [formValid, handleSubmit, navigation])\n\n if (status === 'pending') {\n return (\n <View style={[styles.container, styles.fullHeight]}>\n <DefaultLoading />\n </View>\n )\n }\n\n if (status === 'success') {\n return (\n <BlankState.Root>\n <BlankState.Imagery name=\"general.checkCircle\" style={styles.successIcon} />\n <BlankState.Content>\n <BlankState.Heading style={styles.successTitle}>Thank you!</BlankState.Heading>\n <BlankState.Text style={styles.successSubtitle}>\n We appreciate you taking the time to help improve chat! We'll take a look at the issue\n you reported.\n </BlankState.Text>\n </BlankState.Content>\n <BlankState.Button\n title=\"Return to chat\"\n onPress={navigation.goBack}\n size=\"lg\"\n variant=\"fill\"\n />\n </BlankState.Root>\n )\n }\n\n if (status === 'error') {\n return (\n <View style={styles.container}>\n <Text>\n This is embarrassing, we can't submit your bug report right now. If you still need help or\n would like to submit this bug report another way please{' '}\n <TextInlineButton\n accessibilityRole=\"link\"\n onPress={() =>\n Linking.openURL('https://support.planningcenteronline.com/hc/en-us/requests/new')\n }\n >\n contact our help center\n </TextInlineButton>\n .\n </Text>\n <Button title=\"Return to chat\" onPress={navigation.goBack} variant=\"fill\" size=\"lg\" />\n </View>\n )\n }\n\n return (\n <KeyboardView>\n <ScrollView contentContainerStyle={styles.container}>\n <Text style={styles.description}>\n Thanks for helping us improve chat. Please provide details about the issue you've\n encountered. We read every submission and your feedback helps us improve the experience.\n </Text>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What kind of bug did you experience? <Text style={styles.required}>*</Text>\n </Text>\n <TouchableOpacity style={styles.pickerButton} onPress={() => setShowBugTypePicker(true)}>\n <Text style={[styles.pickerText, !bugType && styles.pickerPlaceholder]}>\n {bugType || 'Select the bug type'}\n </Text>\n <Icon\n name=\"general.downChevron\"\n style={styles.pickerArrow}\n accessibilityElementsHidden\n />\n </TouchableOpacity>\n </View>\n\n <SafeAreaModal\n visible={showBugTypePicker}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={() => setShowBugTypePicker(false)}\n >\n <View style={styles.modalContainer}>\n <View style={styles.modalHeader}>\n <HeaderDismissButton title=\"Cancel\" onPress={() => setShowBugTypePicker(false)} />\n <Text style={styles.modalTitle}>Select Bug Type</Text>\n <View style={styles.modalHeaderSpacer} />\n </View>\n <ScrollView style={styles.modalContent}>\n {BUG_TYPE_OPTIONS.map(option => (\n <TouchableOpacity\n key={option}\n style={styles.modalOption}\n onPress={() => {\n setBugType(option)\n setShowBugTypePicker(false)\n }}\n >\n <Text style={styles.modalOptionText}>{option}</Text>\n {bugType === option && (\n <Icon\n name=\"general.check\"\n style={styles.modalCheckmark}\n accessibilityElementsHidden\n />\n )}\n </TouchableOpacity>\n ))}\n </ScrollView>\n </View>\n </SafeAreaModal>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What were you trying to do when you encountered the bug?{' '}\n <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={whatWereDoing}\n onChangeText={setWhatWereDoing}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {whatWereDoing.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {whatWereDoing.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What did you expect to happen? What actually happened?{' '}\n <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={whatExpected}\n onChangeText={setWhatExpected}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {whatExpected.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {whatExpected.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.textInputContainer}>\n <Text style={styles.fieldLabel}>\n What steps have you tried to resolve the issue? <Text style={styles.required}>*</Text>\n </Text>\n <TextInput\n style={styles.textInput}\n multiline\n placeholder=\"Description\"\n value={stepsToResolve}\n onChangeText={setStepsToResolve}\n maxLength={MAX_DESCRIPTION_LENGTH}\n />\n {stepsToResolve.length >= MAX_DESCRIPTION_LENGTH - 100 && (\n <Text variant=\"footnote\">\n {stepsToResolve.length}/{MAX_DESCRIPTION_LENGTH}\n </Text>\n )}\n </View>\n\n <View style={styles.attachmentSection}>\n <View style={styles.attachmentHeader}>\n <Text style={styles.attachmentLabel}>\n Attachment <Text style={styles.subLabel}>(optional)</Text>\n </Text>\n {uploading && <Spinner />}\n </View>\n {uploadError && <Text style={styles.attachmentErrorText}>{uploadError}</Text>}\n {attachment ? (\n <View style={styles.attachmentPreviewContainer}>\n {isImageAttachment ? (\n <ImageAttachmentPreview\n uri={imagePreviewURI}\n fileName={attachment.name}\n onRemovePress={handleRemoveAttachment}\n />\n ) : (\n <VideoAttachmentPreview\n name={attachment.name}\n onRemovePress={handleRemoveAttachment}\n />\n )}\n </View>\n ) : (\n <Button\n title=\"Attach a screenshot\"\n accessibilityHint=\"Opens your device's image gallery\"\n iconNameLeft=\"general.paperclip\"\n onPress={pickImage}\n size=\"sm\"\n variant=\"outline\"\n style={styles.attachButton}\n disabled={uploading || Boolean(attachment)}\n />\n )}\n </View>\n\n <View style={styles.footer}>\n <Text variant=\"footnote\">\n We can’t respond to every submission, but we may reach out if we have additional\n questions.\n </Text>\n\n <Text variant=\"footnote\">\n For details on how we process your data and ensure its security, please refer to our{' '}\n <TextInlineButton\n accessibilityRole=\"link\"\n variant=\"footnote\"\n onPress={() => Linking.openURL('https://www.planningcenter.com/privacy')}\n >\n Privacy Policy\n </TextInlineButton>\n .\n </Text>\n </View>\n </ScrollView>\n </KeyboardView>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n return StyleSheet.create({\n container: {\n padding: 16,\n paddingBottom: 16,\n gap: 24,\n },\n fullHeight: {\n flex: 1,\n },\n description: {\n color: colors.textColorDefaultSecondary,\n },\n textInputContainer: {\n gap: 8,\n },\n fieldLabel: {\n fontSize: 16,\n fontWeight: platformFontWeightBold,\n color: colors.textColorDefaultPrimary,\n },\n required: {\n color: colors.statusErrorText,\n },\n pickerButton: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderColor: colors.borderColorDefaultBase,\n borderRadius: 8,\n paddingHorizontal: 16,\n paddingVertical: 12,\n backgroundColor: colors.surfaceColor100,\n minHeight: 48,\n },\n pickerText: {\n fontSize: 16,\n color: colors.textColorDefaultPrimary,\n flex: 1,\n },\n pickerPlaceholder: {\n color: colors.textColorDefaultSecondary,\n },\n pickerArrow: {\n fontSize: 12,\n color: colors.iconColorDefaultSecondary,\n marginLeft: 8,\n },\n modalContainer: {\n flex: 1,\n backgroundColor: colors.surfaceColor100,\n },\n modalHeader: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n modalTitle: {\n fontSize: 18,\n fontWeight: platformFontWeightBold,\n color: colors.textColorDefaultPrimary,\n },\n modalHeaderSpacer: {\n width: 50, // Same width as cancel button to center title\n },\n modalContent: {\n flex: 1,\n },\n modalOption: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 16,\n paddingVertical: 16,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n modalOptionText: {\n fontSize: 16,\n color: colors.textColorDefaultPrimary,\n flex: 1,\n },\n modalCheckmark: {\n fontSize: 16,\n color: colors.statusSuccessIcon,\n },\n textInput: {\n color: colors.textColorDefaultPrimary,\n fontSize: 16,\n textAlignVertical: 'top',\n minHeight: 120,\n maxHeight: 200,\n borderWidth: 1,\n borderColor: colors.borderColorDefaultBase,\n borderRadius: 8,\n paddingHorizontal: 16,\n paddingVertical: 12,\n backgroundColor: colors.surfaceColor100,\n },\n attachmentSection: {\n gap: 8,\n },\n attachmentHeader: {\n flexDirection: 'row',\n gap: 4,\n alignItems: 'center',\n },\n attachmentLabel: { fontWeight: platformFontWeightBold },\n subLabel: { fontWeight: 'normal', color: colors.textColorDefaultSecondary },\n attachmentPreviewContainer: {\n gap: 4,\n },\n attachmentErrorText: {\n color: colors.statusErrorText,\n },\n attachButton: {\n alignSelf: 'flex-start',\n },\n footer: { gap: 8 },\n successIcon: {\n color: colors.statusSuccessIcon,\n fontSize: 48,\n },\n successTitle: {\n fontSize: 24,\n marginBottom: 4,\n },\n successSubtitle: {\n fontSize: 16,\n marginBottom: 4,\n },\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_details_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_details_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAQN,MAAM,OAAO,CAAA;AA+Dd,MAAM,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC7D,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC,CAAA;AAEF,wBAAgB,yBAAyB,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,qBAwSlF"}
1
+ {"version":3,"file":"conversation_details_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_details_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AACzF,OAAO,KAQN,MAAM,OAAO,CAAA;AAwEd,MAAM,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC7D,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC,CAAA;AAEF,wBAAgB,yBAAyB,CAAC,EAAE,KAAK,EAAE,EAAE,8BAA8B,qBAwSlF"}
@@ -2,11 +2,11 @@ import { StackActions, useNavigation } from '@react-navigation/native';
2
2
  import React, { useCallback, useEffect, useState, useRef, } from 'react';
3
3
  import { StyleSheet, TextInput, View, Pressable, Alert, Platform, } from 'react-native';
4
4
  import { HeaderTitle as ElementsHeaderTitle } from '@react-navigation/elements';
5
- import { Badge, ChildNotice, Heading, Icon, Person, Switch, Text, TextButton } from '../components';
5
+ import { Badge, ChildNotice, Heading, Icon, Person, Switch, Text, TextButton, } from '../components';
6
6
  import { useSuspensePaginator, useTheme } from '../hooks';
7
7
  import { useConversation, useConversationDelete, useConversationDisableReplies, useConversationMute, useConversationUpdate, } from '../hooks/use_conversation';
8
8
  import { isDefined } from '../types';
9
- import { HeaderSubmitButton } from '../components/display/platform_modal_header_buttons';
9
+ import { HeaderTextButton } from '../components/display/platform_modal_header_buttons';
10
10
  import { FlashList } from '@shopify/flash-list';
11
11
  import { tokens } from '../vendor/tapestry/tokens';
12
12
  // =========================================
@@ -103,7 +103,7 @@ export function ConversationDetailsScreen({ route }) {
103
103
  </View>);
104
104
  }, [name, productName, resourceType, styles.headerTitleBadge, styles.headerTitleContainer]);
105
105
  const HeaderRight = useCallback(() => {
106
- return (<HeaderSubmitButton onPress={() => {
106
+ return (<HeaderTextButton onPress={() => {
107
107
  saveTitle({ title: trimmedTitle || conversation.title });
108
108
  navigation.goBack();
109
109
  }} title="Done"/>);