diff --git a/src/CONST.ts b/src/CONST.ts index 219807587a25..b29456ba170b 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -77,6 +77,12 @@ const CONST = { AVATAR_MAX_WIDTH_PX: 4096, AVATAR_MAX_HEIGHT_PX: 4096, + BREADCRUMB_TYPE: { + ROOT: 'root', + STRONG: 'strong', + NORMAL: 'normal', + }, + DEFAULT_AVATAR_COUNT: 24, OLD_DEFAULT_AVATAR_COUNT: 8, diff --git a/src/components/Breadcrumbs.tsx b/src/components/Breadcrumbs.tsx new file mode 100644 index 000000000000..f3c7de1db882 --- /dev/null +++ b/src/components/Breadcrumbs.tsx @@ -0,0 +1,80 @@ +import React from 'react'; +import {StyleProp, View, ViewStyle} from 'react-native'; +import LogoComponent from '@assets/images/expensify-wordmark.svg'; +import useTheme from '@hooks/useTheme'; +import useThemeStyles from '@hooks/useThemeStyles'; +import variables from '@styles/variables'; +import CONST from '@src/CONST'; +import Header from './Header'; +import Text from './Text'; + +type BreadcrumbHeader = { + type: typeof CONST.BREADCRUMB_TYPE.ROOT; +}; + +type BreadcrumbStrong = { + text: string; + type: typeof CONST.BREADCRUMB_TYPE.STRONG; +}; + +type Breadcrumb = { + text: string; + type?: typeof CONST.BREADCRUMB_TYPE.NORMAL; +}; + +type BreadcrumbsProps = { + /** An array of breadcrumbs consisting of the root/strong breadcrumb, followed by an optional second level breadcrumb */ + breadcrumbs: [BreadcrumbHeader | BreadcrumbStrong, Breadcrumb | undefined]; + + /** Styles to apply to the container */ + style?: StyleProp; +}; + +function Breadcrumbs({breadcrumbs, style}: BreadcrumbsProps) { + const theme = useTheme(); + const styles = useThemeStyles(); + const [primaryBreadcrumb, secondaryBreadcrumb] = breadcrumbs; + + return ( + + {primaryBreadcrumb.type === CONST.BREADCRUMB_TYPE.ROOT ? ( + +
+ } + shouldShowEnvironmentBadge + /> + + ) : ( + + {primaryBreadcrumb.text} + + )} + + {!!secondaryBreadcrumb && ( + <> + / + + {secondaryBreadcrumb.text} + + + )} + + ); +} + +Breadcrumbs.displayName = 'Breadcrumbs'; + +export type {BreadcrumbsProps}; +export default Breadcrumbs; diff --git a/src/components/EnvironmentBadge.tsx b/src/components/EnvironmentBadge.tsx index 6babbf119445..3a8445f62880 100644 --- a/src/components/EnvironmentBadge.tsx +++ b/src/components/EnvironmentBadge.tsx @@ -29,7 +29,7 @@ function EnvironmentBadge() { success={environment === CONST.ENVIRONMENT.STAGING || environment === CONST.ENVIRONMENT.ADHOC} error={environment !== CONST.ENVIRONMENT.STAGING && environment !== CONST.ENVIRONMENT.ADHOC} text={text} - badgeStyles={[styles.alignSelfEnd, styles.headerEnvBadge]} + badgeStyles={[styles.alignSelfStart, styles.headerEnvBadge]} textStyles={[styles.headerEnvBadgeText]} environment={environment} /> diff --git a/src/pages/TeachersUnite/ImTeacherUpdateEmailPage.js b/src/pages/TeachersUnite/ImTeacherUpdateEmailPage.js index e9564bfffe0b..994350629da6 100644 --- a/src/pages/TeachersUnite/ImTeacherUpdateEmailPage.js +++ b/src/pages/TeachersUnite/ImTeacherUpdateEmailPage.js @@ -35,7 +35,7 @@ function ImTeacherUpdateEmailPage() { linkKey="teachersUnitePage.contactMethods" onLinkPress={() => Navigation.navigate(ROUTES.SETTINGS_CONTACT_METHODS.getRoute(activeRoute))} iconWidth={variables.signInLogoWidthLargeScreen} - iconHeight={variables.lhnLogoWidth} + iconHeight={variables.signInLogoHeightLargeScreen} />