Skip to content
11 changes: 11 additions & 0 deletions src/ConnectedTokenProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,17 @@ const connectThemeOverrides = (palette: Theme['palette']) => ({
},
},
},
MuiButton: {
styleOverrides: {
// MUI sizes icon slot children off the button size (medium 20px, large 22px),
// which beats the Icon's own size prop. Our chevrons are always 24px.
endIcon: {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are choosing to change this, then shouldn't we change it at the MXUI level? @platypus801

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can make this a local fix instead of a global one. I added it to the global override because both places using endIcon currently need it to be 24px, so it seemed reasonable to handle it globally.

The issue occurs when you set the endIcon size differently from MUI’s default icon size for the button (18/20/22px for small/medium/large). MUI’s size takes precedence, so you end up with 20px instead of the 24px you want. To me, this feels more like an MUI issue than an MXUI issue.

'& > *:nth-of-type(1)': {
fontSize: '24px',
},
},
},
},
MuiChip: {
styleOverrides: {
label: {
Expand Down
9 changes: 2 additions & 7 deletions src/components/InstitutionTile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import { __ } from 'src/utilities/Intl'
import { useTokens } from '@kyper/tokenprovider'

import { Button, Chip } from '@mui/material'
import { ChevronRight } from '@kyper/icon/ChevronRight'
import { InstitutionLogo } from '@mxenabled/mxui'
import { Icon, InstitutionLogo } from '@mxenabled/mxui'

import { formatUrl } from 'src/utilities/FormatUrl'
import {
Expand All @@ -34,11 +33,7 @@ export const InstitutionTile = (props) => {
aria-label={__('Add account with %1', institution.name)}
className={'institutionButton '}
data-test={`${institution.name.replace(/\s+/g, '-')}-row`}
endIcon={
!institution.is_disabled_by_client && (
<ChevronRight color={tokens.TextColor.Default} height={16} width={16} />
)
}
endIcon={!institution.is_disabled_by_client && <Icon name="chevron_right" size={24} />}
fullWidth={true}
onClick={selectInstitution}
startIcon={
Expand Down
5 changes: 2 additions & 3 deletions src/components/support/SupportMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import PropTypes from 'prop-types'

import { useTokens } from '@kyper/tokenprovider'
import { UtilityRow } from '@kyper/utilityrow'
import { ChevronRight } from '@kyper/icon/ChevronRight'
import { Text } from '@mxenabled/mxui'
import { Icon, Text } from '@mxenabled/mxui'

import { __ } from 'src/utilities/Intl'

Expand Down Expand Up @@ -32,7 +31,7 @@ export const SupportMenu = React.forwardRef((props, menuRef) => {
<UtilityRow
borderType="inset-left"
onClick={selectGeneralSupport}
rightChildren={<ChevronRight />}
rightChildren={<Icon name="chevron_right" size={24} />}
subTitle={__('Get help connecting your account')}
title={__('Request support')}
/>
Expand Down
1 change: 1 addition & 0 deletions src/styles/spacing.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
--mui-spacing: 8px;
--spacing-point-25: calc(var(--mui-spacing) * 0.25);
--spacing-point-5: calc(var(--mui-spacing) * 0.5);
--spacing-point-75: calc(var(--mui-spacing) * 0.75);
--spacing-1: calc(var(--mui-spacing) * 1);
--spacing-1-point-25: calc(var(--mui-spacing) * 1.25);
--spacing-1-point-5: calc(var(--mui-spacing) * 1.5);
Expand Down
37 changes: 7 additions & 30 deletions src/views/disclosure/DataRequested.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,8 @@ import React, { Fragment } from 'react'
import { useSelector } from 'react-redux'
import PropTypes from 'prop-types'

import { useTokens } from '@kyper/tokenprovider'
import { Text } from '@mxenabled/mxui'
import { ChevronRight } from '@kyper/icon/ChevronRight'
import { Link } from '@mui/material'
import { Icon, Text } from '@mxenabled/mxui'
import { Link, Stack } from '@mui/material'

import { selectConnectConfig } from 'src/redux/reducers/configSlice'

Expand All @@ -21,6 +19,7 @@ import { DataCluster } from 'src/components/DataCluster'
import { getDelay } from 'src/utilities/getDelay'

import { VIEWS } from 'src/views/disclosure/Interstitial'
import styles from 'src/views/disclosure/DataRequested.module.css'

export const DataRequested = (props) => {
useAnalyticsPath(...PageviewInfo.CONNECT_DISCLOSURE_DATA_REQUESTED)
Expand All @@ -31,8 +30,6 @@ export const DataRequested = (props) => {
aggIdentityDataCluster,
} = getDataClusters()
const connectConfig = useSelector(selectConnectConfig)
const tokens = useTokens()
const styles = getStyles(tokens)
const getNextDelay = getDelay()
const appName = useSelector((state) => state.profiles.client.oauth_app_name || null)

Expand Down Expand Up @@ -64,12 +61,11 @@ export const DataRequested = (props) => {
return (
<Fragment>
<SlideDown delay={getNextDelay()}>
<div style={styles.container}>
<Stack className={styles.container} spacing={0.5}>
<Text
bold={true}
component="h2"
data-test="data-requested-title"
style={styles.title}
truncate={false}
variant="H2"
>
Expand All @@ -78,7 +74,6 @@ export const DataRequested = (props) => {
<Text
component="p"
data-test="data-requested-subtitle"
style={styles.paragraph}
truncate={false}
variant="ParagraphSmall"
>
Expand All @@ -87,41 +82,23 @@ export const DataRequested = (props) => {
appName ? appName : __('Your app'),
)}
</Text>
</div>
</Stack>
{dataClusterElement}
<Link
className={styles.link}
data-test="data-available-button"
onClick={() => {
props.setCurrentView(VIEWS.AVAILABLE_DATA)
}}
style={styles.link}
>
{__('Other available data')}
<ChevronRight style={styles.chevron} />
<Icon name="chevron_right" size={16} />
</Link>
</SlideDown>
</Fragment>
)
}

const getStyles = (tokens) => {
return {
title: {
marginBottom: tokens.Spacing.Tiny,
},
paragraph: {
marginBottom: tokens.Spacing.XSmall,
},
container: {
marginBottom: tokens.Spacing.Large,
},
link: {
fontWeight: tokens.FontWeight.Semibold,
fontSize: tokens.FontSize.Small,
},
}
}

DataRequested.propTypes = {
setCurrentView: PropTypes.func.isRequired,
}
Expand Down
9 changes: 9 additions & 0 deletions src/views/disclosure/DataRequested.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.container:global(.MuiStack-root) {
margin-bottom: var(--spacing-4);
}

.link:global(.MuiLink-root) {
font-size: 13px;
font-weight: 600;
gap: var(--spacing-point-5);
}
94 changes: 24 additions & 70 deletions src/views/disclosure/Interstitial.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ import { useSelector } from 'react-redux'
import PropTypes from 'prop-types'

import { useTokens } from '@kyper/tokenprovider'
import { Text } from '@mxenabled/mxui'
import { Icon, Text } from '@mxenabled/mxui'
import { Link as LinkIcon } from '@kyper/icon/Link'
import { Lock } from '@kyper/icon/Lock'
import { InfoOutline } from '@kyper/icon/InfoOutline'
import { ChevronRight } from '@kyper/icon/ChevronRight'
import { Link, Stack } from '@mui/material'

import { PageviewInfo } from 'src/const/Analytics'
Expand All @@ -23,6 +22,7 @@ import { PrivacyPolicy } from 'src/views/disclosure/PrivacyPolicy'
import { DataRequested } from 'src/views/disclosure/DataRequested'
import { DataAvailable } from 'src/views/disclosure/DataAvailable'
import { getSelectedInstitution } from 'src/redux/selectors/Connect'
import styles from 'src/views/disclosure/Interstitial.module.css'

export const VIEWS = {
AVAILABLE_DATA: 'available_data',
Expand All @@ -35,7 +35,6 @@ export const DisclosureInterstitial = React.forwardRef((props, interstitialNavRe
const { handleGoBack, scrollToTop } = props
useAnalyticsPath(...PageviewInfo.CONNECT_DISCLOSURE)
const tokens = useTokens()
const styles = getStyles(tokens)
const getNextDelay = getDelay()
const institution = useSelector(getSelectedInstitution)
const appName = useSelector((state) => state.profiles.client.oauth_app_name || null)
Expand Down Expand Up @@ -79,43 +78,43 @@ export const DisclosureInterstitial = React.forwardRef((props, interstitialNavRe
return (
<Fragment>
<SlideDown delay={getNextDelay()}>
<div style={styles.logoHeader}>
<div className={styles.logoHeader}>
<ConnectLogoHeader
institutionGuid={institution.guid}
institutionLogo={institution.logo_url}
/>
</div>
</SlideDown>
<SlideDown delay={getNextDelay()}>
<div style={styles.flexGroup}>
<Stack>
<Text
className={styles.title}
component="h2"
data-test="interstitial-header"
style={styles.title}
truncate={false}
variant="H2"
>
{appName && institution.name
? __('%1 trusts MX to connect your %2 account', appName, institution.name)
: __('This app trusts MX to connect your account')}
</Text>
</div>
<div style={styles.iconGroup}>
<LinkIcon color={tokens.TextColor.Default} size={20} style={styles.icon} />
</Stack>
<Stack direction="row">
<LinkIcon className={styles.icon} color={tokens.TextColor.Default} size={20} />
<Text
bold={true}
className={styles.subTitle}
data-test="connect-in-seconds"
style={styles.subTitle}
truncate={false}
variant="Body"
>
{__('Connect in seconds')}
</Text>
</div>
</Stack>
<Text
className={styles.paragraph}
component="p"
data-test="connect-in-seconds-body"
style={styles.paragraph}
truncate={false}
variant={'Paragraph'}
>
Expand All @@ -129,22 +128,22 @@ export const DisclosureInterstitial = React.forwardRef((props, interstitialNavRe
)}
</Text>

<div style={styles.iconGroup}>
<Lock color={tokens.TextColor.Default} size={20} style={styles.icon} />
<Stack direction="row">
<Lock className={styles.icon} color={tokens.TextColor.Default} size={20} />
<Text
bold={true}
className={styles.subTitle}
data-test="private-secure"
style={styles.subTitle}
truncate={false}
variant="Body"
>
{__('Private and secure')}
</Text>
</div>
</Stack>
<Text
className={styles.paragraph}
component="p"
data-test="private-secure-body"
style={styles.paragraph}
truncate={false}
variant={'Paragraph'}
>
Expand All @@ -153,32 +152,33 @@ export const DisclosureInterstitial = React.forwardRef((props, interstitialNavRe
)}
</Text>

<div style={styles.iconGroup}>
<InfoOutline color={tokens.TextColor.Default} size={20} style={styles.icon} />
<Stack direction="row">
<InfoOutline className={styles.icon} color={tokens.TextColor.Default} size={20} />
<Text
bold={true}
className={styles.subTitle}
data-test="learn-more"
style={styles.subTitle}
truncate={false}
variant="Body"
>
{__('Learn more')}
</Text>
</div>
</Stack>
</SlideDown>
<Stack direction={'column'}>
<Link
className={styles.link}
data-test="data-requested-button"
onClick={() => {
setCurrentView(VIEWS.DATA_REQUESTED)
}}
style={styles.link}
variant="ParagraphSmall"
>
{__('Data requested')}
<ChevronRight style={styles.chevron} />
<Icon name="chevron_right" size={16} />
</Link>
<Link
className={styles.link}
data-test="privacy-policy-button"
onClick={() => {
if (showExternalLinkPopup) {
Expand All @@ -193,63 +193,17 @@ export const DisclosureInterstitial = React.forwardRef((props, interstitialNavRe
goToUrlLink(privacyUrl, true)
}
}}
style={styles.link}
variant="ParagraphSmall"
>
{_p('connect/disclosure/policy/link', 'MX Privacy Policy')}

<ChevronRight style={styles.chevron} />
<Icon name="chevron_right" size={16} />
</Link>
</Stack>
</Fragment>
)
})

const getStyles = (tokens) => {
return {
logoHeader: {
marginTop: tokens.Spacing.Medium,
marginBottom: tokens.Spacing.Small,
},
flexGroup: {
display: 'flex',
flexDirection: 'column',
},
title: {
marginTop: tokens.Spacing.Large,
marginBottom: tokens.Spacing.Large,
textAlign: 'center',
},
iconGroup: {
display: 'flex',
},
icon: {
display: 'block',
left: '0%',
right: ' 0%',
top: '0%',
bottom: '-0.01%',
},
subTitle: {
marginLeft: tokens.Spacing.Small,
marginBottom: tokens.Spacing.Tiny,
},
paragraph: {
flexDirection: 'column',
marginLeft: `36px`,
marginBottom: tokens.Spacing.Medium,
},
link: {
fontWeight: tokens.FontWeight.Semibold,
fontSize: tokens.FontSize.Small,
marginLeft: '32px',
marginTop: tokens.Spacing.Medium,
width: 'fit-content',
},
chevron: { marginLeft: '13.02px' },
}
}

DisclosureInterstitial.propTypes = {
handleGoBack: PropTypes.func.isRequired,
scrollToTop: PropTypes.func.isRequired,
Expand Down
Loading
Loading