sforkowany z mirror/soapbox
Add CtaBanner component
rodzic
32a0438f23
commit
a8142d9e2b
|
@ -0,0 +1,30 @@
|
|||
import { Map as ImmutableMap } from 'immutable';
|
||||
import React from 'react';
|
||||
|
||||
import { render, screen } from '../../../../jest/test-helpers';
|
||||
import CtaBanner from '../cta-banner';
|
||||
|
||||
describe('<CtaBanner />', () => {
|
||||
it('renders the banner', () => {
|
||||
render(<CtaBanner />);
|
||||
expect(screen.getByTestId('cta-banner')).toHaveTextContent(/sign up/i);
|
||||
});
|
||||
|
||||
describe('with a logged in user', () => {
|
||||
it('renders empty', () => {
|
||||
const store = { me: true };
|
||||
|
||||
render(<CtaBanner />, null, store);
|
||||
expect(screen.queryAllByTestId('cta-banner')).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe('with singleUserMode enabled', () => {
|
||||
it('renders empty', () => {
|
||||
const store = { soapbox: ImmutableMap({ singleUserMode: true }) };
|
||||
|
||||
render(<CtaBanner />, null, store);
|
||||
expect(screen.queryAllByTestId('cta-banner')).toHaveLength(0);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,37 @@
|
|||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import { Button, HStack, Stack, Text } from 'soapbox/components/ui';
|
||||
import { useAppSelector, useSoapboxConfig } from 'soapbox/hooks';
|
||||
|
||||
const CtaBanner = () => {
|
||||
const { singleUserMode } = useSoapboxConfig();
|
||||
const siteTitle = useAppSelector((state) => state.instance.title);
|
||||
const me = useAppSelector((state) => state.me);
|
||||
|
||||
if (me || singleUserMode) return null;
|
||||
|
||||
return (
|
||||
<div data-testid='cta-banner' className='hidden lg:block fixed bottom-0 left-0 right-0 py-4 bg-primary-600'>
|
||||
<div className='max-w-3xl mx-auto sm:px-6 md:max-w-7xl md:px-8'>
|
||||
<HStack alignItems='center' justifyContent='between'>
|
||||
<Stack>
|
||||
<Text theme='white' size='xl' weight='bold'>
|
||||
<FormattedMessage id='signup_panel.title' defaultMessage='New to {site_title}?' values={{ site_title: siteTitle }} />
|
||||
</Text>
|
||||
|
||||
<Text theme='white' className='opacity-80'>
|
||||
<FormattedMessage id='signup_panel.subtitle' defaultMessage='Sign up now to discuss.' />
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<Button theme='ghost' to='/'>
|
||||
<FormattedMessage id='account.register' defaultMessage='Sign up' />
|
||||
</Button>
|
||||
</HStack>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default CtaBanner;
|
Ładowanie…
Reference in New Issue