redbadger/website-honestly

View on GitHub
site/pages/join-us/badger-testimonials-slice/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
// @flow
import React, { useState } from 'react';
import SwipeableViews from 'react-swipeable-views';
import styles from './style.css';
import ClientOnly from '../../../components/clientOnly';
import Navigator from '../../../components/navigator';
import Testimonial from './testimonial';

import testimonials from './testimonials';

type Props = {
  navPositionBottom?: boolean,
};

const BadgerTestimonialsSlice = ({ navPositionBottom }: Props) => {
  const [currentIndex, setPage] = useState(0);

  const navigator = (
    <Navigator currentIndex={currentIndex} onChange={setPage} maxIndex={testimonials.length - 1} />
  );

  return (
    <div className={styles.testimonials}>
      <div className={styles.container}>
        <ClientOnly>
          {!navPositionBottom && navigator}
          <div className={navPositionBottom ? styles.content__bottomNav : styles.content}>
            <SwipeableViews index={currentIndex} onChangeIndex={setPage}>
              {testimonials.map(t => (
                <Testimonial
                  key={t.content}
                  content={t.content}
                  author={t.author}
                  role={t.role}
                  icon={t.icon}
                />
              ))}
            </SwipeableViews>
            {navPositionBottom && navigator}
          </div>
        </ClientOnly>
      </div>
    </div>
  );
};

export default BadgerTestimonialsSlice;