diff --git a/src/components/TabNav/TabNav.css b/src/components/TabNav/TabNav.css
new file mode 100644
index 00000000..e68e40a6
--- /dev/null
+++ b/src/components/TabNav/TabNav.css
@@ -0,0 +1,19 @@
+.tab {
+ float: left;
+ margin-left: 1rem;
+ font-size: 20px;
+ letter-spacing: -0.5px;
+
+ &:first-child {
+ margin-left: 0;
+ }
+}
+
+.link {
+ text-decoration: none;
+}
+
+.selected {
+ font-weight: bold;
+ text-decoration: underline;
+}
diff --git a/src/components/TabNav/TabNav.example.js b/src/components/TabNav/TabNav.example.js
new file mode 100644
index 00000000..eba655cf
--- /dev/null
+++ b/src/components/TabNav/TabNav.example.js
@@ -0,0 +1,16 @@
+import TabNav from './TabNav';
+
+const selfLinkProps = {
+ name: 'StyleguideComponent',
+ params: { component: 'TabNav' },
+};
+
+export const Empty = {
+ component: TabNav,
+ props: {
+ tabs: [
+ { text: 'Normal', linkProps: selfLinkProps },
+ { text: 'Selected', linkProps: selfLinkProps, selected: true },
+ ],
+ },
+};
diff --git a/src/components/TabNav/TabNav.js b/src/components/TabNav/TabNav.js
new file mode 100644
index 00000000..a9e480a9
--- /dev/null
+++ b/src/components/TabNav/TabNav.js
@@ -0,0 +1,45 @@
+import React, { PropTypes } from 'react';
+import classNames from 'classnames';
+import { NamedLink } from '../../components';
+
+import css from './TabNav.css';
+
+const Tab = props => {
+ const { text, selected, linkProps } = props;
+ const classes = classNames(css.tab, {
+ [css.selected]: selected,
+ });
+ return (
+
+ {text}
+
+ );
+};
+
+Tab.defaultProps = { selected: false };
+
+const { arrayOf, object, string, bool } = PropTypes;
+
+Tab.propTypes = {
+ text: string.isRequired,
+ selected: bool,
+ linkProps: object.isRequired,
+};
+
+const TabNav = props => {
+ const { className, tabs } = props;
+ return (
+
+ );
+};
+
+TabNav.defaultProps = { className: '' };
+
+TabNav.propTypes = {
+ className: string,
+ tabs: arrayOf(object).isRequired,
+};
+
+export default TabNav;
diff --git a/src/components/index.js b/src/components/index.js
index d44f0645..8896e316 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -32,6 +32,7 @@ import RoutesProvider from './RoutesProvider/RoutesProvider';
import SaleDetailsPanel from './SaleDetailsPanel/SaleDetailsPanel';
import SearchResultsPanel from './SearchResultsPanel/SearchResultsPanel';
import StripeBankAccountToken from './StripeBankAccountToken/StripeBankAccountToken';
+import TabNav from './TabNav/TabNav';
import ValidationError from './ValidationError/ValidationError';
export {
@@ -71,5 +72,6 @@ export {
SaleDetailsPanel,
SearchResultsPanel,
StripeBankAccountToken,
+ TabNav,
ValidationError,
};
diff --git a/src/examples.js b/src/examples.js
index 480a03b0..1e5d240d 100644
--- a/src/examples.js
+++ b/src/examples.js
@@ -13,6 +13,7 @@ import * as LocationAutocompleteInput
import * as PaginationLinks from './components/PaginationLinks/PaginationLinks.example';
import * as StripeBankAccountToken
from './components/StripeBankAccountToken/StripeBankAccountToken.example';
+import * as TabNav from './components/TabNav/TabNav.example';
// containers
import * as BookingDatesForm from './containers/BookingDatesForm/BookingDatesForm.example';
@@ -36,7 +37,6 @@ export {
CurrencyInput,
DateInput,
EditListingForm,
- SearchForm,
ListingCard,
LocationAutocompleteInput,
LoginForm,
@@ -46,7 +46,9 @@ export {
NamedLink,
PaginationLinks,
PasswordForgottenForm,
+ SearchForm,
SignupForm,
StripeBankAccountToken,
StripePaymentForm,
+ TabNav,
};