Training.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import theme from '../../styles/theme'
  2. import TrainingBlock from './TrainingBlock'
  3. import Link from 'next/link'
  4. import { ITraining } from '../types'
  5. import TrainingMeta from './TrainingMeta'
  6. import { useRouter } from 'next/router'
  7. import { useTrainingLazyQuery } from '../../gql'
  8. const Training = ({ training }: { training: ITraining }) => {
  9. return (
  10. <article>
  11. <h2>{training.title}</h2>
  12. <TrainingMeta training={training} />
  13. <section>
  14. <h2>Program</h2>
  15. <Link href='/timer'>
  16. <button>Start Timer</button>
  17. </Link>
  18. {training.blocks &&
  19. training.blocks
  20. .sort(block => block.sequence || 0)
  21. .map(block => <TrainingBlock key={block.id} block={block} />)}
  22. </section>
  23. <style jsx>
  24. {`
  25. article {
  26. display: grid;
  27. grid-template-areas:
  28. 'title title'
  29. 'information placeholder'
  30. 'content content';
  31. grid-template-columns: 1fr 2fr;
  32. background-image: url('media/man_working_out.jpg');
  33. background-size: auto 400px;
  34. background-repeat: no-repeat;
  35. margin: 2em 0;
  36. }
  37. article > * {
  38. padding: 0.2em 1em;
  39. margin: 0;
  40. }
  41. article > h2 {
  42. grid-area: title;
  43. font-weight: 900;
  44. font-size: 120%;
  45. background: ${theme.colors.darkerblue};
  46. color: ${theme.colors.offWhite};
  47. }
  48. section {
  49. grid-area: content;
  50. padding: 1em 2em;
  51. }
  52. span.caption {
  53. }
  54. button {
  55. border: none;
  56. background: ${theme.colors.darkblue};
  57. color: ${theme.colors.offWhite};
  58. font-weight: 900;
  59. padding: 0.5rem;
  60. cursor: pointer;
  61. }
  62. `}
  63. </style>
  64. </article>
  65. )
  66. }
  67. export default Training