Skip to content

Commit 0a27a49

Browse files
committed
Merge pull request #83 from appirio-tech/dev
Merging new navbar and tooltips into master
2 parents ea9e106 + e3e59f2 commit 0a27a49

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1382
-231
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ coverage
77
.idea
88
.env
99
npm-debug.log
10-
.DS_Store
10+
.DS_Store
11+
dist

.travis.yml

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
language: node_js
22
node_js:
3-
- 5.2.0
3+
- 5.5.0
44
install:
55
- npm install
6+
before_script:
7+
chmod +x setenv.sh && ./setenv.sh
68
script:
7-
- npm run lint
9+
- npm run lint && npm run build-navbar
810
sudo: false
911
before_deploy:
1012
- npm-prepublish --verbose
@@ -14,9 +16,59 @@ deploy:
1416
api_key: "$NPM_API_KEY"
1517
on:
1618
tags: true
19+
- provider: s3
20+
cache_control: private, no-store, no-cache, must-revalidate, max-age=0
21+
detect_encoding: true
22+
access_key_id: "$AWS_KEY"
23+
secret_access_key: "$AWS_SECRET"
24+
bucket: components.topcoder-dev.com
25+
skip_cleanup: true
26+
local_dir: dist
27+
on:
28+
branch: dev
29+
- provider: s3
30+
cache_control: private, no-store, no-cache, must-revalidate, max-age=0
31+
detect_encoding: true
32+
access_key_id: "$QA_AWS_KEY"
33+
secret_access_key: "$QA_AWS_SECRET"
34+
bucket: components.topcoder-qa.com
35+
skip_cleanup: true
36+
local_dir: dist
37+
on:
38+
branch: release
39+
- provider: s3
40+
cache_control: private, no-store, no-cache, must-revalidate, max-age=0
41+
detect_encoding: true
42+
access_key_id: "$PROD_AWS_KEY"
43+
secret_access_key: "$PROD_AWS_SECRET"
44+
bucket: components.topcoder.com
45+
skip_cleanup: true
46+
local_dir: dist
47+
on:
48+
branch: master
1749
env:
50+
matrix:
51+
- CXX=g++-4.8
1852
global:
1953
# NPM_EMAIL
2054
- secure: "kmo0afPY5HwJ5SryNY0XRRRekxd1teBR6lSiw2jtjU64sOdpjN7ZhGWy9q0lReGk6hloPfXewXRlpCbcDRFoxvJUdAbQoAN8gq/BxrwGmWlBepgUew1O6WLkpvqXCMe6lUmPEznjil2anjLHfm/cKiqwaY1n8MI+PSna6eNwAlffx72uPL1TzrijJjb7kKqTtjTHZzNiiUn2jZrc35G+MeryZmnd5xXV7cXgYb+flEMC5sDqhcO2aewYiCGMK2b3f7QDJFbGD4+v+HjN1XispJgCxDLTRLJ0HD8HPj87w/7s7PHqCuRUwga1Z2HTRDniqM7mb7TZ5RK990Olp4d1Fw/ApXhUEe4fwgTdN9PSwOzOrY4VGNyytYvJuMVqSVGIHx6Y2BuCt3gzPeM0ev8bjhE9PItYmDTr5FhNI1XLT7PKu+Ktp72bmdEVqNfnv7jXRKba9AeSBQVk70jKMpYAuGI/d/xXeaD2vImBhCflc0UArYfXf+JYMEwzhiMZQfq6csvg0UV/nlD9xidgBLt8QUGdFaQTjsQLt9CWbwcKM7/yFcfkOKEHrM5By1Do4gtSDxmK5F+81210YMO30OVwllHk/f+jOspti9EJv6r0vAZOkKXXL15VsyKQSrF/p6k+brVf0cQcnUMiSiNsl/aEftNW2ys5VCIRJcEol5bHt90="
2155
# NPM_API_KEY
2256
- secure: "OoRE9rbEzfAomE1h+PRDHJb0SgcyManma54qs72nwlBA3N4D+hV2Swy0xAidnVqdNvBlA4p9QmcrE0km+ZGVacFEhvleUGFDn5weWde2bukzkkdHtbaYQjyhxbrqfLA9G9vzs1BlHjhrR7Arl2TQuT21XnfagFBQ/LCgCRRu9yHHkZ4TejhuYu/9Fgdq08wnBpLZn7wllUq0OtrDgEgjK7avZ+yv5ob6zccxr3NAAchbdPJ2yUo82VvD+YdQaWbLq9ac5cwa0I6f/RuQUiZcLZItk/H3NuQqg32746QdwIqKpw5dh9wzddbckIK3WVsoJmE+7WpGAOgUU/TxmPijH6j1YwQ9uqcBGsax8RUFR+mG7imlS4YpL67K438JPUG7NCPgnN19zN/c+4WkVoKlLYEncyPp0C3sBbmauR0uuuVBWWUJL/1xBCuPyhT9JGXaocms/Ldshxr+TYf1tfQQ3uzs6wO3cniw3wIgXbgMF6NBwQdQpgUlSh++XJKgIG2I228GI3qMq8zJu/N/1oEKVkKkO8Z9Y3Vd5uo2VMbkp0KJJEfXnE8GZBBaajD+F8jONRQqYEDhK8EMYuqKhsQZMw3RgPtvOZNG+bhcnbElNnMjhd8CTKioKXAslkTP6Esi4Ce2PS6YR4CskjZaO7IT9KRqHvVZN42vlIVbhb2J0RI="
57+
# AWS_KEY
58+
- secure: QXxHO6Dt5kGDsN2hjSk//0Rf3eHsjOXBq9CdK1kyePLDks6J1wCUp7hT3PMqZG3wH8yd6i4m8mielDdOurquOHVZgdiWaDRw/FMggRcmOGzCl96Afdz199v4ep6aS1YzndEPmwaKp2jFiCsg8LvByJjlHKtGSWc4Yw7+B1WjSygLoZ1eU4TYeig3xfhHE2ENoIGdnk5DDSjZ2xypqc8upmQIbfFya2dd0nMwA8GjEpVWGAYJy3RhOyKlWKGvO2sW+bf3DVCqnYvLRs8kAGh7qQV//rkkycNWFVUsQZkNd0+mX7bi16aJoaj4HSiW4pR/Z0yDa55Lb7CZKdP0sZgKcojUqkUe8faU8N7LQEkK0RYF7zfSAt2y0ns25Nt7os1xUdY/3Xluw0SMzTR5zX8PiEUVtQyFS33T43GKuQT4joYCseIFCqpZ1a5iYemlR9M7DqZDPQ8TkwHn2yzP59ax25U3FB3AYMz6pd2WuIKsa3XU9irJOiGSHXC3YmS2H70cZpL+r4OxtmsjXVR5RQQWcGEurb3vadk/Iq5S4EXKG9M9HKtLCysGPdynw3/+0GlscdIf+O2eZSvFJfahcVvaPSUxLgyOFM+W3sd0EwjGnTWwXu9zN7LbMr57vqzNUZ0mgSNX7qz2+z9V4jBTNRk5DaG5vRr+7uDHgKdtNQHYWUU=
59+
# AWS_SECRET
60+
- secure: yFpLFrM42STWqxw6dlVvyr0hvBbVAOHhkKQ1yQcuZ4MtTktCUOItUt9hZTExy659sJJxeBsT0YD66FdVggV+rTG8KDFGcBZJ8RZqN2AHa1+PMZfzF5N35bkacOWoKd1aAReRWZcVspvHjC1h6lAlVR69qSRqRhOL7/IMTDYrZMMwuS7/Pqb0jfdCJgiOf8uFwAn1ZVsJvDvC7AcxYYNLMA+GFD6ay7GX4zoqBdHwcyupKU4g+Fwjy3673kZwfWKITtzmwmV18p0SIiqQp68K6lvsZ2H7Hw6TXOEMkvda1YMD+lmV/dcc6o6W6bsDAk2cZx5JxSu3trvhkpYpK9JE6FUJ1I5ITiPkAZYAnIjckSM+rLZ6Vanxtmc0zNL6cxc4DTfu7V8dQ2MlPxHV125rMspYeJcxi8u/nlSRSJy2C8jaPGzaBQmHM9HlzJNhpTeR4A/3YqTcbcRMgMxvuuslHEUXDeTV+lqfhw1pLvD+Ut+Q6IBkNVdMDVBoeLvuwtXwyFF4skuEcTvOezmh9VNNrMgx2ZcPnJR85aUD+A/MoYihn1dPr66rh2vNJSRKp4uQdgRnldtLaHh5JgX3cR0PPtSat99shV/YkhhGG3WGl6lqOLPQTDX9XLLm9mTmOQzAK7p6GjRKM1PVWOc+3VA8dc3XTCMjBaFh9zgtSsfDibs=
61+
# QA_AWS_KEY
62+
- secure: "pQzOYdNLlSsQJ7JChT6KKgT0K7h/g+fvXvlKQzBunAeTWZzbkFm0TQDk2OIq8q5btvmvnMtpiAfaBdEQR1XRVWEFBPfHwXp5nbjSU6HPYYaUYamegXIQHg9fQM6YtGm3sFvAMbGKKzKdaCucSmnm1BiliagVMvgM8o7nQbmWC9fzH//p3ajdIETltBqUmOwKw21cx2DNGWbf/d0E3c7NoGgPBn9WXX4J3ekLKxM/YmSxnPG4/tSKFKbJgUrXne4mhUAPc+oZJZ4rIC21Lj48jeZOdDZ5Ch+8gjIaBjQLJMj/AgWBhz1Wc2ugZ8nLQHiYzjksptoPaBynDTYQa/0xRIzqKwxSVCBN1+KXoGOHhm5NZWo4wEKcEhFCRdcUZbdoOHMZZ7Pfzx5uMcf3z8/wJaT8DagOYQkVhcuGivOjLaoAM8Z0PahZF7kFhufu+QSrWAk8YsTv62g6sWo/BD5ylw0Hl0WYFXSmqh9Z5IfVMQ8Lc0AFs66rTIURrf2UrMVtGGB5uMhE60hHGbaXeK+biIP/Km82d7HRHrRV/D/+1xHLmriNjAcYQGM/O52/42tQhu1d59O4+kMopg50/aNctY7sS9b8q950L3qdz5j18sw+r9oITIBDW0JrN5KTwe60YRCwxOvjaq+WydO8nd5PjealC5zQDeuqWZw0mi4QMwo="
63+
# QA_AWS_SECRET
64+
- secure: "UlNcBJKlpGJPh8uQ1QdSdkdnC+Zgo2nLe0je2ogupinXXrb+xxfhgn+6LGEAVJBwcryHjPDM92bzcEl632xOz6vlfGWe9qvFxm4rYIUwR/6N9kuCFKubq1HoeUZDY6DmNvXqJwm5FewjA2AWLxM0wtchYxoz1ol859TXq8d09Tv1inhlqdIalPNM9WYRdgikURTtqNgIghaF5afxP6sDmLHjlU4dkn9LHC2JhQVZCg97ALmw5AoUDLQaKrjoZ+tF0raNKFr6VlBgpKN88wNkxMR90o9CELtPerS7a4G4XRioLNMSz6Yk9uOZ0uayqb7D+OrMf+gEa5/uqSvnN5a0M7GOlwaC2j2nEBJWXn6fxzNWr4jLb4rBx9M7QNMpWuCTNPmqsqyT1RYAgM87wvC5+XmHCMb9H3XDPQkSqevt1xZ8z+lKZolWkfHNvblbm93PJmLYtSpYfJryZCkV2atU7A25eSEWBohZ+90DvU8gIff/7crLTSYvhiE/PIRukREe+3Iujehs9rbN0ZiRgYBq3QzV1VE/F+VonUPnsTjAzuTmMVmJ0hm04H6lZ5D+RXlo5VPFt8XanJAiWAATTog9V0r3oy5ORzng4s78if9IwR6SDPD9slNBTEBZrvgHTX4F5Mu/vwx2f1BSWoOcjReVdM6ZeIyjbPVCPNA+zX4H3cE="
65+
# PROD_AWS_KEY
66+
- secure: "YRD3JJso8q+Ed2xKaIUS6TlTQeZFtEVOUSPwtQf1JwFuOkZb5NZ+eAO70KXCGuNRtJm4eWNM2bmEEo9REDHxDAMU69br/5QkumoN3I49/6/TNP43l2P44+C4WAGj8Nnwt5uDBmcYaDbdgCTflZ215ny1kXz36zKSy5LKFoXSCU9Ug5rdeo7pDSSYToF9OUBAiA/o+9YtV45q1lmUvJLUE1KNR7w+ts1oQ67iFhOuraSiJMUdhJjYmTKXVUMkEO/kk7iRIAalrWaF3IogqoIGSmsBUk7MeoMsVwh4fnAiSm9zlRPYP+XVNIaQAJVz5thRgzu7LD7XizmbMQY3YHap9TPeRS7dzf6vFGyqpbGe1p4CIxQMEqydgVIy0l1CYjwXN0RGuWfLk6UtOhtxRJmdSm1+0u0saqxhCixSFClj29sSoJbwlhDwUplBfYTCwTJtF86LFUNeSACmkh84F9355A5tf8oSFI5T+NW0zJehZS+92BLKEIzkMamwsjCdKrVB+vbLxTsBe1iiECCK0Izj+TherCBwUPos/JRru+3VwxCATOOSRI+v5qRK5tDaf6a9CVyR1NbMJFWsfq0SOtLKxujmJP2QR/+x32uMwq8uNYJHdLniVrk1VEd/oARP0DHHgFXzKOjmBtKMDj//gjr1wcQp2f+HEW4Tf5Z0YHcqiIA="
67+
# PROD_AWS_SECRET
68+
- secure: "XCVGHnw7eYrE6SdgG4kBNAjLK0ZVgo9mGOzOVSA9+caWx6sQJsLWFq8QJsrU7jxqkRIQxM7899NBPUdhHPV9mRYue+0+aH6OwZ6WyylDeyZtwtoq+pnB6uXKlhEnQiz8NmrgI7P92DomX2Dd70AAjrfDpCAbJCQvowLOoO9zkEyyN1c8JQnhA3TJQFfw81WEeh9GBShMyhfD+y3tnpllb4vUdYHYMHE7wEUl7RMjVtFg538V+pEyk/1tXTf+Tvb/ZuazsXCRyzLVZQyXKP0U6SVNsZCu5SZR4Pb2F0JH8PO0p/wRrUoUrHnd7b0yieIlrTAVS5VGeBs1bTG+fgta09mllo0WxedaDoxQGYl9YrOK09EPbjFGJemp/Q9uKoSWymNrkgggMgZlq2CdL/QFbWUfWqhRs9/BWnh4SuQsUW5tsE99qxbFYC1kfuJwR2g8jN3HWAeV37BWC3ct3f5+oOKIgaKQmk2+lH9Z7kII+QOCt10kM21IF5RxZjhvg6AxoORjoRt8Dia+iMSbW1fnU9QCmSC5S0Vvccynjl9ldnPUHOpjEVaoqQOV/6cUlAEw82ySOakyzYpdS8l5DrLwt2Ik3fQhoIgXQe6l1FabGy6ZixcXqoMnDJJh04rUwUD6Tyzn0PZJp3KziDHJMg/BJSTKXmgODRyV2cGxoqbfy8g="
69+
addons:
70+
apt:
71+
sources:
72+
- ubuntu-toolchain-r-test
73+
packages:
74+
- g++-4.8

components/Carousel/Carousel.jsx

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
require('./Carousel.scss')
2+
import classNames from 'classnames'
3+
4+
import React, { Component } from 'react'
5+
import ReactDOM from 'react-dom'
6+
7+
import LeftArrowIcon from '../Icons/LeftArrowIcon'
8+
import RightArrowIcon from '../Icons/RightArrowIcon'
9+
10+
export default class Carousel extends Component {
11+
componentWillMount() {
12+
this.handleResize = this.handleResize.bind(this)
13+
window.addEventListener('resize', this.handleResize)
14+
this.handlePageUp = this.handlePageUp.bind(this)
15+
this.handlePageDown = this.handlePageDown.bind(this)
16+
this.setState({firstVisibleItem: this.props.firstVisibleItem || 0})
17+
}
18+
19+
componentWillUnmount() {
20+
window.removeEventListener('resize', this.handleResize)
21+
}
22+
23+
handleResize() {
24+
this.validatePagers()
25+
}
26+
27+
componentDidMount() {
28+
this.validatePagers()
29+
}
30+
31+
componentDidUpdate() {
32+
this.validatePagers()
33+
}
34+
35+
validatePagers() {
36+
const pageDownClass = classNames(
37+
'page-down',
38+
{ hidden: this.state.firstVisibleItem === 0 }
39+
)
40+
const pageUpClass = classNames(
41+
'page-up',
42+
{ hidden: this.lastElementVisible(this.state.firstVisibleItem) }
43+
)
44+
const node = ReactDOM.findDOMNode(this)
45+
const pageDownNode = node.querySelector('.page-down')
46+
const pageUpNode = node.querySelector('.page-up')
47+
pageDownNode.className = pageDownClass
48+
pageUpNode.className = pageUpClass
49+
}
50+
51+
52+
lastElementVisible(firstVisibleItem) {
53+
const node = ReactDOM.findDOMNode(this)
54+
const parentNode = node.parentNode
55+
const maxWidth = parentNode.getBoundingClientRect().width
56+
const visibleAreaNode = node.querySelector('.visible-area')
57+
visibleAreaNode.style.width = maxWidth + 'px'
58+
const itemNodes = visibleAreaNode.children
59+
let width = 0
60+
if (firstVisibleItem > 0) {
61+
// if first item is not visible, account 20px for page-down element
62+
width += 20
63+
// account the right margin for page-down (see Carousel.scss)
64+
width += 15
65+
}
66+
for (let i = 0; i < itemNodes.length; i++) {
67+
const itemNode = itemNodes[i]
68+
width += itemNode.getBoundingClientRect().width
69+
if (i < itemNodes.length - 1) {
70+
// account 30px for every carousel-item (see Carousel.scss)
71+
width += 30
72+
}
73+
if (width > maxWidth) {
74+
return false
75+
}
76+
}
77+
return true
78+
}
79+
80+
handlePageUp() {
81+
if (!this.lastElementVisible(this.state.firstVisibleItem + 1)) {
82+
const nextFirstVisibleItem = this.state.firstVisibleItem + 1
83+
this.setState({firstVisibleItem: nextFirstVisibleItem})
84+
}
85+
}
86+
87+
handlePageDown() {
88+
if (this.state.firstVisibleItem > 0) {
89+
const nextFirstVisibleItem = this.state.firstVisibleItem - 1
90+
this.setState({firstVisibleItem: nextFirstVisibleItem})
91+
}
92+
}
93+
94+
render() {
95+
const carouselItem = (item, idx) => {
96+
if (idx < this.state.firstVisibleItem) {
97+
return
98+
}
99+
100+
return (
101+
<div key={idx} className="carousel-item">
102+
{item}
103+
</div>
104+
)
105+
}
106+
107+
return (
108+
<div className="Carousel">
109+
<div className="page-down" onClick={this.handlePageDown}>
110+
<LeftArrowIcon fill="#FFFFFF" />
111+
</div>
112+
<div className="visible-area">
113+
{ this.props.children.map(carouselItem) }
114+
</div>
115+
<div className="page-up" onClick={this.handlePageUp}>
116+
<RightArrowIcon fill="#FFFFFF" />
117+
</div>
118+
</div>
119+
)
120+
}
121+
}

components/Carousel/Carousel.scss

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
@import 'topcoder/tc-includes';
2+
3+
$pager-bg-color: #737380;
4+
5+
.Carousel {
6+
display: flex;
7+
flex-direction: row;
8+
9+
.page-down {
10+
width: 20px;
11+
margin-right: 15px;
12+
background-color: $pager-bg-color;
13+
display: flex;
14+
justify-content: center;
15+
align-items: center;
16+
cursor: pointer;
17+
18+
&.hidden {
19+
display: none;
20+
}
21+
}
22+
23+
.page-up {
24+
width: 20px;
25+
background-color: $pager-bg-color;
26+
display: flex;
27+
justify-content: center;
28+
align-items: center;
29+
cursor: pointer;
30+
31+
&.hidden {
32+
display: none;
33+
}
34+
}
35+
36+
.visible-area {
37+
display: flex;
38+
flex-direction: row;
39+
overflow: hidden;
40+
41+
.carousel-item:not(:first-child) {
42+
margin-left: 30px;
43+
}
44+
}
45+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import React from 'react'
2+
import Carousel from './Carousel'
3+
4+
import StandardListItem from '../StandardListItem/StandardListItem'
5+
6+
require('./CarouselExamples.scss')
7+
8+
9+
const CarouselExamples = () => (
10+
11+
<div className="CarouselExamples">
12+
<p>With limited width</p>
13+
<div className="limited-width">
14+
<Carousel>
15+
<StandardListItem labelText="Community" imgSrc={require('./placeholder.svg')} />
16+
<StandardListItem labelText="Compete" imgSrc={require('./placeholder.svg')} />
17+
<StandardListItem labelText="Learn" imgSrc={require('./placeholder.svg')} />
18+
</Carousel>
19+
</div>
20+
<p>With full width</p>
21+
<div className="full-width">
22+
<Carousel>
23+
<StandardListItem labelText="Community" imgSrc={require('./placeholder.svg')} />
24+
<StandardListItem labelText="Compete" imgSrc={require('./placeholder.svg')} />
25+
<StandardListItem labelText="Learn" imgSrc={require('./placeholder.svg')} />
26+
</Carousel>
27+
</div>
28+
<p>With limited width and custom first visible element</p>
29+
<div className="limited-width">
30+
<Carousel firstVisibleItem={1}>
31+
<StandardListItem labelText="Community" imgSrc={require('./placeholder.svg')} />
32+
<StandardListItem labelText="Compete" imgSrc={require('./placeholder.svg')} />
33+
<StandardListItem labelText="Learn" imgSrc={require('./placeholder.svg')} />
34+
</Carousel>
35+
</div>
36+
</div>
37+
)
38+
39+
module.exports = CarouselExamples
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@import 'topcoder/tc-includes';
2+
3+
.Carousel {
4+
.StandardListItem {
5+
padding: 0px;
6+
}
7+
}
8+
9+
.CarouselExamples {
10+
> p {
11+
border: 1px solid $accent-gray;
12+
margin: 20px 0px;
13+
}
14+
.limited-width {
15+
width: 200px;
16+
}
17+
}
Lines changed: 4 additions & 0 deletions
Loading

components/Icons/HamburgerIcon.jsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import React from 'react'
2+
3+
const HamburgerIcon = ({ width, height, stroke }) => {
4+
const s = (stroke || '#A3A3AE')
5+
return (
6+
<svg width={ width || '22px' } height={ height || '16px' } viewBox="0 0 22 16" version="1.1" xmlns="http://www.w3.org/2000/svg">
7+
<title>ico-hamburger</title>
8+
<desc>Created with Sketch.</desc>
9+
<defs></defs>
10+
<g id="Scaling" stroke="none" strokeWidth="1" fill="none" fill-rule="evenodd" strokeLinecap="round" strokeLinejoin="round">
11+
<g id="Components---Mobile" transform="translate(-1379.000000, -434.000000)" stroke={ s } strokeWidth="2">
12+
<g id="ico-mobile-menu-default" transform="translate(1380.000000, 434.000000)">
13+
<path d="M0,8 L20,8" id="Stroke-5456"></path>
14+
<path d="M0,1 L20,1" id="Stroke-5460"></path>
15+
<path d="M0,15 L20,15" id="Stroke-5461"></path>
16+
</g>
17+
</g>
18+
</g>
19+
</svg>
20+
)
21+
}
22+
23+
export default HamburgerIcon

components/Icons/LeftArrowIcon.jsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import React from 'react'
2+
3+
const LeftArrowIcon = ({ width, height, fill }) => {
4+
const f = (fill || '#A3A3AE')
5+
return (
6+
<svg width={ width || '12px' } height={ height || '19px' } viewBox="0 0 12 19" version="1.1" xmlns="http://www.w3.org/2000/svg">
7+
<title>ico-arrow-big-left</title>
8+
<desc>Created with Sketch.</desc>
9+
<defs></defs>
10+
<g id="ASSETS-EXPORT" stroke="none" strokeWidth="1" fill="none" fill-rule="evenodd">
11+
<g id="Assets" transform="translate(-950.000000, -252.000000)" fill={ f }>
12+
<path d="M959.025853,261.50145 L951.137711,253.305117 C950.841671,253.006868 950.841671,252.524146 951.137711,252.223687 C951.433751,251.925438 951.912055,251.925438 952.208095,252.223687 L960.857325,260.959078 C961.153365,261.258432 961.153365,261.742258 960.857325,262.040508 L952.208095,270.775899 C951.912055,271.075253 951.433751,271.074148 951.137711,270.775899 C950.841671,270.478754 950.841671,269.994927 951.137711,269.694469 L959.025853,261.50145 L959.025853,261.50145 Z" id="ico-arrow-big-left" transform="translate(955.997518, 261.500000) scale(-1, 1) translate(-955.997518, -261.500000) "></path>
13+
</g>
14+
</g>
15+
</svg>
16+
)
17+
}
18+
19+
export default LeftArrowIcon
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import React from 'react'
2+
3+
const MagnifyGlassIcon = ({ width, height, stroke }) => {
4+
const s = (stroke || '#A3A3AE')
5+
return (
6+
<svg width={ width || '22px' } height={ height || '22px' } viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg">
7+
<title>ico-magnify</title>
8+
<defs></defs>
9+
<g id="Scaling" stroke="none" strokeWidth="1" fill="none" fill-rule="evenodd" strokeLinecap="round" strokeLinejoin="round">
10+
<g id="Components---Mobile" transform="translate(-1327.000000, -432.000000)" stroke={ s } strokeWidth="2">
11+
<g id="ico-mobile-search-default" transform="translate(1328.000000, 433.000000)">
12+
<path d="M20,20 L14.632381,14.632381" id="Stroke-5191"></path>
13+
<path d="M0,8.57142857 C0,3.83714286 3.83714286,0 8.57142857,0 C13.3057143,0 17.1428571,3.83714286 17.1428571,8.57142857 C17.1428571,13.3057143 13.3057143,17.1428571 8.57142857,17.1428571 C3.83714286,17.1428571 0,13.3057143 0,8.57142857 L0,8.57142857 Z" id="Stroke-5192"></path>
14+
</g>
15+
</g>
16+
</g>
17+
</svg>
18+
)
19+
}
20+
21+
export default MagnifyGlassIcon

0 commit comments

Comments
 (0)