633028354f
• Fixed: - link to terms in GlobalFooter component
200 lines
6.7 KiB
JavaScript
200 lines
6.7 KiB
JavaScript
import Button from './button'
|
|
import Heading from './heading'
|
|
import Icon from './icon'
|
|
import Text from './text'
|
|
import ResponsiveClassesComponent from '../features/ui/util/responsive_classes_component'
|
|
|
|
export default class GlobalFooter extends PureComponent {
|
|
|
|
render() {
|
|
|
|
return (
|
|
<div className={[_s.default, _s.z4, _s.width100PC].join(' ')}>
|
|
<div className={[_s.default, _s.left0, _s.right0, _s.bottom0, _s.width100PC, _s.bgSubtle, _s.borderTop1PX, _s.alignItemsCenter, _s.borderColorSecondary].join(' ')}>
|
|
|
|
<div className={[_s.default, _s.mt15, _s.mb15].join(' ')}>
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.width1255PX, _s.flexRow, _s.py15, _s.mt15, _s.mb15].join(' ')}
|
|
classNamesSmall={[_s.default, _s.width1255PX, _s.alignItemsCenter, _s.pt15, _s.px15, _s.mt15].join(' ')}
|
|
>
|
|
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.width330PX].join(' ')}
|
|
classNamesSmall={[_s.default, _s.alignItemsCenter].join(' ')}
|
|
>
|
|
<div className={[_s.default, _s.mb10].join(' ')}>
|
|
<Icon id='logo' />
|
|
</div>
|
|
<div className={[_s.default, _s.pr15, _s.maxWidth640PX].join(' ')}>
|
|
<Text size='medium'>We build Freedom Of Speech Software. We champion free speech, individual liberty and the free flow of information online. All are welcome.</Text>
|
|
</div>
|
|
</ResponsiveClassesComponent>
|
|
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.flexRow, _s.flexGrow1, _s.pl15].join(' ')}
|
|
classNamesSmall={[_s.default, _s.py15, _s.width100PC, _s.px15].join(' ')}
|
|
>
|
|
|
|
<GlobalFooterColumn
|
|
title='Join'
|
|
items={[
|
|
{
|
|
href: 'https://gab.com',
|
|
title: 'Gab Social',
|
|
},
|
|
{
|
|
href: 'https://dissenter.com',
|
|
title: 'Dissenter Browser',
|
|
},
|
|
{
|
|
href: 'https://chat.gab.com',
|
|
title: 'Gab Chat',
|
|
},
|
|
]}
|
|
/>
|
|
|
|
<GlobalFooterColumn
|
|
title='Stay Informed'
|
|
items={[
|
|
{
|
|
href: 'https://trends.gab.com',
|
|
title: 'Gab Trends',
|
|
},
|
|
{
|
|
href: 'https://news.gab.com',
|
|
title: 'Gab News',
|
|
},
|
|
{
|
|
href: 'https://apps.gab.com',
|
|
title: 'Gab Apps',
|
|
},
|
|
]}
|
|
/>
|
|
|
|
<GlobalFooterColumn
|
|
title='Support Us'
|
|
items={[
|
|
{
|
|
href: 'https://pro.gab.com',
|
|
title: 'Go PRO',
|
|
},
|
|
{
|
|
href: 'https://shop.dissenter.com',
|
|
title: 'Merch Store',
|
|
},
|
|
{
|
|
href: 'https://news.gab.com/support-gab',
|
|
title: 'Affiliates',
|
|
},
|
|
]}
|
|
/>
|
|
|
|
<GlobalFooterColumn
|
|
title='Legal'
|
|
items={[
|
|
{
|
|
to: '/about/tos',
|
|
title: 'Terms of Service',
|
|
},
|
|
{
|
|
to: '/about/privacy',
|
|
title: 'Privacy Policy',
|
|
},
|
|
{
|
|
to: '/about/dmca',
|
|
title: 'Copyright Policy',
|
|
},
|
|
{
|
|
href: 'https://help.gab.com',
|
|
title: 'Contact Us',
|
|
},
|
|
]}
|
|
/>
|
|
|
|
</ResponsiveClassesComponent>
|
|
</ResponsiveClassesComponent>
|
|
</div>
|
|
|
|
<div className={[_s.default, _s.alignItemsCenter, _s.bgSecondary, _s.height100PC, _s.heightMin58PX, _s.width100PC, _s.saveAreaInsetPB, _s.justifyContentSpaceAround].join(' ')}>
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.width1255PX, _s.flexRow, _s.alignItemsCenter].join(' ')}
|
|
classNamesXS={[_s.default, _s.width1255PX, _s.alignItemsCenter, _s.px15, _s.pt15].join(' ')}
|
|
>
|
|
|
|
<div classNames={[_s.default, _s.flexRow, _s.alignItemsCenter].join(' ')}>
|
|
<Text weight='bold'>
|
|
© 2020
|
|
</Text>
|
|
<Text>
|
|
Copyright |
|
|
</Text>
|
|
<Button
|
|
isText
|
|
color='primary'
|
|
backgroundColor='none'
|
|
className={_s.displayInline}
|
|
href='https://gab.com'
|
|
>
|
|
<Text>Gab AI Inc.</Text>
|
|
</Button>
|
|
</div>
|
|
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.alignItemsCenter, _s.mlAuto].join(' ')}
|
|
classNamesXS={[_s.default, _s.alignItemsCenter, _s.py15].join(' ')}
|
|
>
|
|
<Text>
|
|
Made in USA 🇺🇸
|
|
</Text>
|
|
</ResponsiveClassesComponent>
|
|
|
|
</ResponsiveClassesComponent>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
}
|
|
|
|
class GlobalFooterColumn extends PureComponent {
|
|
|
|
static propTypes = {
|
|
title: PropTypes.string,
|
|
items: PropTypes.array,
|
|
}
|
|
|
|
componentWillMount() {
|
|
this.buttonOptions = {
|
|
backgroundColor: 'none',
|
|
color: 'primary',
|
|
isText: true,
|
|
}
|
|
}
|
|
|
|
render() {
|
|
const { title, items } = this.props
|
|
const { buttonOptions } = this
|
|
|
|
return (
|
|
<ResponsiveClassesComponent
|
|
classNames={[_s.default, _s.flexNormal].join(' ')}
|
|
classNamesSmall={[_s.default, _s.width100PC, _s.alignItemsCenter, _s.mt15, _s.mb5, _s.pt15, _s.borderTop1PX, _s.borderColorSecondary].join(' ')}
|
|
>
|
|
<div className={_s.mb10}>
|
|
<Heading size='h3'>{title}</Heading>
|
|
</div>
|
|
{
|
|
items.map((item, i) => (
|
|
<Button {...buttonOptions} to={item.to} href={item.href} key={`global-footer-column-${title}-${i}`}>
|
|
<Text color='secondary' className={[_s.lineHeight15, _s.pt2].join(' ')}>{item.title}</Text>
|
|
</Button>
|
|
))
|
|
}
|
|
</ResponsiveClassesComponent>
|
|
)
|
|
|
|
}
|
|
|
|
} |