Skip to content

Commit

Permalink
Add sponsor banner
Browse files Browse the repository at this point in the history
  • Loading branch information
kamranahmedse committed Feb 1, 2020
1 parent 9a515f8 commit 8c03aed
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 1 deletion.
23 changes: 23 additions & 0 deletions components/sponsor-banner/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>
);
}
37 changes: 37 additions & 0 deletions components/sponsor-banner/style.js
@@ -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;
}
`;
12 changes: 12 additions & 0 deletions layouts/default/global.scss
Expand Up @@ -62,3 +62,15 @@ code:not([class]) {
word-wrap: normal;
box-shadow: none;
}

.banner-wrap {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 1;
}

.body-wrap.sponsor-banner-visible {
margin-top: 44px;
}
13 changes: 12 additions & 1 deletion layouts/default/index.js
@@ -1,16 +1,27 @@
import React from 'react';
import classNames from 'classnames';
import './global.scss';
import { firePageView } from 'lib/gtag';
import { SponsorBanner } from '../../components/sponsor-banner';

class DefaultLayout extends React.Component {
state = {
isBannerClosed: false
};

componentDidMount() {
firePageView(window.location.pathname);
}

render() {
return (
<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>
);
}
Expand Down

0 comments on commit 8c03aed

Please sign in to comment.