Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Registration design changes #1517

Open
wants to merge 22 commits into
base: main
Choose a base branch
from

Conversation

travjenkins
Copy link
Member

@travjenkins travjenkins commented Mar 18, 2025

Issues

#1512

Changes

1512

  • Update language on registration page
  • Update the "where did you hear..." choices
  • Update choices to be chips
  • Remove the other input
  • Update cta language
  • Add a cancel button
  • Add logo to entire process
  • Add a progress bar to each step showing how many there are

Tests

Manually tested

  • scenarios you manually tested

Automated tests

  • unit testing covered

Playwright tests ran locally

  • Admin
  • Captures
  • Collections
  • HomePage
  • Login
  • Materialization

Screenshots

Login Page

image

Register Page

image

SSO Page

image

legal stuff

Initial State
image

Client Error State
image

Loading State
image

Outdated state (this ONLY happens on the first load - otherwise we view this as an in progress directive and display this page like normal)
image

tenant

Initial state
image

Client Error State
image

Loading State
image

Server Error State
image

Server AND Client Error State
image

Selected Option State
image

Adding a `back` button to log user out during register
Sharing the getting started header
Starting to wire that back up
adding back in images as reference
Switching to the original customer quote image
Better event tracking
Not showing progress if the directive is `outdated`
Updating typing
Updating typing to make it more strict
Comment on lines 104 to 109

// Handle tracking right away
fireGtmEvent('RegisterFailed', {
tenantAlreadyTaken,
tenant: requestedTenant,
});
Copy link
Member Author

Choose a reason for hiding this comment

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

New event for gtm

Comment on lines -115 to -118
const nameAlreadyUsed = useMemo(
() => serverError?.includes(nameTaken),
[serverError]
);
Copy link
Member Author

Choose a reason for hiding this comment

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

Since we now pass this boolean to gtm I decided to just use state and figure it out inside the callback up above.

status={status}
/>

<HeaderMessage isRegister />
Copy link
Member Author

Choose a reason for hiding this comment

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

The designs had the logo always stay so now just sharing that logo and message component

Comment on lines +160 to +174
{nameMissing ? (
<Box>
<AlertBox
short
severity="error"
title={<FormattedMessage id="error.title" />}
>
<Typography>
{intl.formatMessage({
id: 'tenant.errorMessage.empty',
})}
</Typography>
</AlertBox>
</Box>
) : null}
Copy link
Member Author

Choose a reason for hiding this comment

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

I flipped the order of the errors around. It was kinda weird to have the error that is 100% directly related to the input further away. So moved server error to the top.

return null;
} else {
return (
// TODO (customer quote) should switch this to HTML to load faster
Copy link
Member Author

Choose a reason for hiding this comment

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

Worked on converting the image into HTML and did not want to lose that work. It looks alright doing it with HTML. However, we'd need to add a new font/typography/something for the quote as having it render with the same fonts as other stuff was kind of weird.

@@ -30,7 +70,7 @@ function CustomerQuote({ hideQuote }: Props) {
: customerQuoteDark
}
width="85%"
alt={intl.formatMessage({ id: 'company' })}
alt={intl.formatMessage({ id: 'tenant.customer.quote' })}
Copy link
Member Author

Choose a reason for hiding this comment

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

This should not have had the alt of Estuary so just typed up the quote.

Copy link
Member

Choose a reason for hiding this comment

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

Previously, the image was solely the Estuary logo so the alternative text, I would argue, was appropriate.

Copy link
Member Author

Choose a reason for hiding this comment

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

What do you mean? This file looks to have always been pointing to the customer quote.

image

Comment on lines 33 to 41
const originOptions: string[] = useConstant(() => [
intl.formatMessage({ id: 'tenant.origin.radio.browserSearch.label' }),
intl.formatMessage({ id: 'tenant.origin.radio.socialMedia.label' }),
intl.formatMessage({ id: 'tenant.origin.radio.paidAdvertising.label' }),
intl.formatMessage({ id: 'tenant.origin.radio.content.label' }),
intl.formatMessage({ id: 'tenant.origin.radio.referral.label' }),
intl.formatMessage({ id: 'tenant.origin.radio.webinar.label' }),
surveyOptionOther,
]);
Copy link
Member Author

Choose a reason for hiding this comment

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

Kept as many messageIds as possible but switched some to the new values.

Comment on lines +40 to +45
<Grid
container
sx={{
p: 2,
}}
>
Copy link
Member Author

Choose a reason for hiding this comment

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

Eventually we're going to have a grid on all the login pages so using it here to make sure it works.

Comment on lines +337 to +343
export const hiddenButAccessibleRadio: SxProps<Theme> = {
'& .MuiRadio-root, & .MuiRadio-root input': {
position: 'fixed',
opacity: 0,
pointerEvents: 'none',
},
};
Copy link
Member Author

Choose a reason for hiding this comment

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

This is kinda here because of spreading sx related props into one another is a pain. But it also keeps us from having to repeat the same selectors over and over.

Comment on lines +43 to +46
<HeaderMessage
headerMessageId={headerMessageId}
isRegister={isRegister}
/>
Copy link
Member Author

Choose a reason for hiding this comment

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

The HeaderMessage component is based off this.

'tenant.message.1': `The organization name will be used as a prefix for everything you create within Estuary. It will only be public if you share data with other organizations.`,

'tenant.expectations': `You can use ${CommonMessages['catalogName.limitations']}`,
'tenant.expectations.error': `Sorry, only letters(a-z), numbers(0-9), periods(.), underscores(_), and hyphens(-) allowed.`,

'tenant.input.label': `Organization Name`,
'tenant.input.placeholder': `acmeCo`,
'tenant.errorMessage.empty': `You must provide a name before continuing.`,
'tenant.errorMessage.empty': `You must provide an organization name before continuing.`,
Copy link
Member Author

Choose a reason for hiding this comment

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

Missed updating this back when we changed from Name to Organization Name

@travjenkins travjenkins marked this pull request as ready for review March 20, 2025 18:19
@travjenkins travjenkins requested a review from a team as a code owner March 20, 2025 18:19
Copy link
Member

@kiahna-tucker kiahna-tucker left a comment

Choose a reason for hiding this comment

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

Should the AcceptGrant component be updated in a similar fashion (i.e., displaying the company logo at the top of the card, showing a progress indicator)?

image

Copy link
Member

Choose a reason for hiding this comment

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

The headers of the two sections are different sizes. Could you unify them?

Copy link
Member Author

Choose a reason for hiding this comment

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

Screenshot please

Copy link
Member

Choose a reason for hiding this comment

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

Organization Name and Where did you hear about Estuary? are two different sizes, 20pt and 16pt respectively.

image

Copy link
Member Author

Choose a reason for hiding this comment

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

This is on purpose

@@ -30,7 +70,7 @@ function CustomerQuote({ hideQuote }: Props) {
: customerQuoteDark
}
width="85%"
alt={intl.formatMessage({ id: 'company' })}
alt={intl.formatMessage({ id: 'tenant.customer.quote' })}
Copy link
Member

Choose a reason for hiding this comment

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

Previously, the image was solely the Estuary logo so the alternative text, I would argue, was appropriate.

@travjenkins travjenkins added the change:planned This is a planned change label Mar 21, 2025
Copy link
Member

@kiahna-tucker kiahna-tucker left a comment

Choose a reason for hiding this comment

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

Approved with moderate testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
change:planned This is a planned change
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants