Add sponsor banner

pull/1331/head
Kamran Ahmed 5 years ago
parent 9a515f85c1
commit 8c03aedea1
  1. 23
      components/sponsor-banner/index.js
  2. 37
      components/sponsor-banner/style.js
  3. 12
      layouts/default/global.scss
  4. 13
      layouts/default/index.js

@ -0,0 +1,23 @@
import React from 'react';
import { BannerWrap, CloseSponsor, EmojiWrap } from './style';
export function SponsorBanner({ onCloseBanner = () => null }){
return (
<div className='row'>
<div className='col p-0'>
<BannerWrap href='https://google.com' target='_blank' className='alert alert-info'>
Sponsored by DigitalOcean
<EmojiWrap>😍</EmojiWrap>
Check them out!
<CloseSponsor
onClick={(e) => {
e.preventDefault();
onCloseBanner();
}}
className='close'>&times;</CloseSponsor>
</BannerWrap>
</div>
</div>
);
}

@ -0,0 +1,37 @@
import styled from 'styled-components';
export const BannerWrap = styled.a`
margin-bottom: 0;
background: #101010;
color: white;
border: 0;
border-radius: 0;
padding: 10px 15px;
display: block;
text-align: center;
transition: all 200ms;
&:hover {
color: white;
text-decoration: none;
}
`;
export const EmojiWrap = styled.span`
position: relative;
top: 1px;
margin: 0 0 0 6px;
`;
export const CloseSponsor = styled.span`
color: white;
text-shadow: none;
margin-right: 15px;
position: relative;
top: -2px;
&:hover {
opacity: 1;
color: white;
}
`;

@ -62,3 +62,15 @@ code:not([class]) {
word-wrap: normal; word-wrap: normal;
box-shadow: none; box-shadow: none;
} }
.banner-wrap {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1;
}
.body-wrap.sponsor-banner-visible {
margin-top: 44px;
}

@ -1,8 +1,14 @@
import React from 'react'; import React from 'react';
import classNames from 'classnames';
import './global.scss'; import './global.scss';
import { firePageView } from 'lib/gtag'; import { firePageView } from 'lib/gtag';
import { SponsorBanner } from '../../components/sponsor-banner';
class DefaultLayout extends React.Component { class DefaultLayout extends React.Component {
state = {
isBannerClosed: false
};
componentDidMount() { componentDidMount() {
firePageView(window.location.pathname); firePageView(window.location.pathname);
} }
@ -10,7 +16,12 @@ class DefaultLayout extends React.Component {
render() { render() {
return ( return (
<div> <div>
{ this.props.children } <div className={ classNames('banner-wrap', { 'd-none': this.state.isBannerClosed }) }>
<SponsorBanner onCloseBanner={() => this.setState({ isBannerClosed: true })} />
</div>
<div className={ classNames('body-wrap', { 'sponsor-banner-visible': !this.state.isBannerClosed }) }>
{ this.props.children }
</div>
</div> </div>
); );
} }

Loading…
Cancel
Save