@rileybathurst/paddle 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/package.json +4 -2
  2. package/src/App.tsx +0 -1
  3. package/src/PaddleComposition.tsx +54 -0
  4. package/src/PaddleTime.tsx +73 -0
  5. package/src/index.tsx +3 -1
  6. package/src/stories/BookNow.stories.tsx +19 -0
  7. package/src/stories/BookNow.tsx +29 -0
  8. package/src/stories/BrandList.stories.tsx +19 -0
  9. package/src/stories/BrandList.tsx +19 -0
  10. package/src/stories/Button.stories.tsx +1 -0
  11. package/src/stories/Card.stories.tsx +19 -0
  12. package/src/stories/Card.tsx +43 -0
  13. package/src/stories/Colors.stories.tsx +1 -0
  14. package/src/stories/Colors.tsx +24 -2
  15. package/src/stories/Composition.stories.tsx +19 -0
  16. package/src/stories/Composition.tsx +21 -0
  17. package/src/stories/Deal.tsx +31 -0
  18. package/src/stories/Deck.stories.tsx +19 -0
  19. package/src/stories/Deck.tsx +22 -0
  20. package/src/stories/Eyebrow.stories.tsx +19 -0
  21. package/src/stories/Eyebrow.tsx +21 -0
  22. package/src/stories/Footer.stories.tsx +19 -0
  23. package/src/stories/Footer.tsx +112 -0
  24. package/src/stories/Header.stories.ts +7 -7
  25. package/src/stories/Header.tsx +23 -54
  26. package/src/stories/Language.stories.tsx +19 -0
  27. package/src/stories/Language.tsx +22 -0
  28. package/src/stories/Links.stories.tsx +19 -0
  29. package/src/stories/Links.tsx +25 -0
  30. package/src/stories/Location.stories.tsx +19 -0
  31. package/src/stories/Location.tsx +54 -0
  32. package/src/stories/LocationDeck.stories.tsx +19 -0
  33. package/src/stories/LocationDeck.tsx +42 -0
  34. package/src/stories/Logo.stories.tsx +19 -0
  35. package/src/stories/Logo.tsx +60 -0
  36. package/src/stories/Page.stories.ts +6 -15
  37. package/src/stories/Page.tsx +114 -63
  38. package/src/stories/Pricing.stories.tsx +19 -0
  39. package/src/stories/Pricing.tsx +74 -0
  40. package/src/stories/Ticket.stories.tsx +19 -0
  41. package/src/stories/Ticket.tsx +55 -0
  42. package/src/stories/TopBar.stories.tsx +19 -0
  43. package/src/stories/TopBar.tsx +19 -0
  44. package/src/stories/Typography.stories.tsx +19 -0
  45. package/src/stories/Typography.tsx +39 -0
  46. package/src/stories/Widths.stories.tsx +19 -0
  47. package/src/stories/Widths.tsx +67 -0
  48. package/src/styles/a11y.css +10 -0
  49. package/src/styles/app.css +6 -0
  50. package/src/styles/color.css +18 -0
  51. package/src/styles/layout.css +99 -0
  52. package/src/styles/links.css +33 -0
  53. package/src/styles/media.css +53 -0
  54. package/src/styles/typography.css +238 -0
  55. package/src/App.css +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rileybathurst/paddle",
3
3
  "private": false,
4
- "version": "0.0.13",
4
+ "version": "0.0.15",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -12,12 +12,14 @@
12
12
  "build-storybook": "storybook build"
13
13
  },
14
14
  "dependencies": {
15
- "color-cards": "^1.0.13",
15
+ "color-cards": "^1.0.14",
16
16
  "react": "^18.2.0",
17
+ "react-aria-components": "^1.2.1",
17
18
  "react-dom": "^18.2.0"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@chromatic-com/storybook": "^1.3.4",
22
+ "@faker-js/faker": "^8.4.1",
21
23
  "@storybook/addon-essentials": "^8.0.10",
22
24
  "@storybook/addon-interactions": "^8.0.10",
23
25
  "@storybook/addon-links": "^8.0.10",
package/src/App.tsx CHANGED
@@ -1,7 +1,6 @@
1
1
  import { useState } from 'react'
2
2
  import reactLogo from './assets/react.svg'
3
3
  import viteLogo from '/vite.svg'
4
- import './App.css'
5
4
 
6
5
  function App() {
7
6
  const [count, setCount] = useState(0)
@@ -0,0 +1,54 @@
1
+ import * as React from "react"
2
+ import { faker } from '@faker-js/faker';
3
+ // import { GatsbyImage } from "gatsby-plugin-image"
4
+
5
+ // import WaterTexture from "../images/watertexture";
6
+ // import Kayaker from "../images/kayaker";
7
+ // import Supper from "../images/supper";
8
+ // import { useStrapiTextures } from "../hooks/use-strapi-textures"
9
+
10
+ /* // TODO: rename
11
+ interface TopThreeTypes {
12
+ className: string;
13
+ }
14
+ function TopThree({ className }: TopThreeTypes) {
15
+
16
+ // const { query } = useStrapiTextures()
17
+ // console.log(query.baseone);
18
+
19
+ return <GatsbyImage
20
+ image={useStrapiTextures().topthree.image.localFile.childImageSharp.gatsbyImageData}
21
+ alt="deepwater texture"
22
+ className={`texture-slice crops ${props.className}`}
23
+ objectFit="contain"
24
+ />
25
+
26
+ // ! Testing
27
+ return null;
28
+ } */
29
+
30
+ interface CompositionTypes {
31
+ sport?: string;
32
+ }
33
+ const PaddleComposition = ({ sport }: CompositionTypes) => {
34
+ return (
35
+ <div className="composition">
36
+ {/* <WaterTexture className="texture-1" /> */}
37
+ <img
38
+ src={faker.image.urlPlaceholder()}
39
+ alt={faker.location.city()}
40
+ className="texture-1"
41
+ />
42
+ <img
43
+ src={faker.image.urlPlaceholder()}
44
+ alt={faker.location.city()}
45
+ className="texture-2 img-wrapped"
46
+ />
47
+ {/* <TopThree className="texture-2 img__wrapped" /> */}
48
+ {/* {sport === 'paddleboard' ? <Supper className="paddler" /> : <Kayaker className="paddler" />} */}
49
+ {faker.datatype.boolean() ? <>Supper</> : <>Kayaker</>}
50
+ </div >
51
+ )
52
+ }
53
+
54
+ export default PaddleComposition
@@ -0,0 +1,73 @@
1
+ // import * as React from "react"
2
+
3
+ interface TimeTypes {
4
+ start?: string | null;
5
+ finish?: string | null;
6
+ duration?: number | null;
7
+ timeframe?: string | null;
8
+ }
9
+ export const PaddleTime = ({ start, finish, duration, timeframe }: TimeTypes) => {
10
+
11
+ // TODO: sunset is a whole thing
12
+
13
+ const hairSpace = String.fromCharCode(0x200A);
14
+
15
+ if (timeframe) {
16
+ return {
17
+ key: timeframe,
18
+ unit: 'timeframe'
19
+ }
20
+ }
21
+
22
+ if (start && finish) {
23
+
24
+ const startHours = start.split(':')[0];
25
+ let startHoursInt: number = Number.parseInt(startHours);
26
+ const startMins = start.split(':')[1];
27
+ const startMinsInt: number = Number.parseInt(startMins);
28
+ const startAmpm = startHoursInt >= 12 ? 'pm' : 'am';
29
+
30
+ if (startHoursInt > 12) {
31
+ startHoursInt = startHoursInt - 12;
32
+ }
33
+
34
+ const finishHours = finish.split(':')[0];
35
+ let finishHoursInt: number = Number.parseInt(finishHours);
36
+ const finishMins = finish.split(':')[1];
37
+ const finishMinsInt: number = Number.parseInt(finishMins);
38
+ const finishAmpm = finishHoursInt >= 12 ? 'pm' : 'am';
39
+
40
+ if (finishHoursInt > 12) {
41
+ finishHoursInt = finishHoursInt - 12;
42
+ }
43
+
44
+ return {
45
+ key: `${startHoursInt}${startMinsInt > 0 ? `:${startMinsInt}:${hairSpace}` : ''}${hairSpace}${startAmpm}
46
+ -
47
+ ${finishHoursInt}${finishMinsInt > 0 ? `:${finishMinsInt}${hairSpace}` : ''}${hairSpace}${finishAmpm}`,
48
+ unit: "time"
49
+ }
50
+ }
51
+
52
+ if (duration) {
53
+ if (duration > 90) {
54
+ const hours = Math.floor(duration / 60);
55
+ const mins = duration % 60;
56
+
57
+ return {
58
+ key: `${hours}${hairSpace}hrs ${mins > 0 ? `${mins}${hairSpace}mins` : ''}`,
59
+ unit: "duration"
60
+ }
61
+ }
62
+
63
+ return {
64
+ key: `${duration}${hairSpace}mins`,
65
+ unit: "duration"
66
+ }
67
+ }
68
+
69
+ return {
70
+ key: null,
71
+ unit: null
72
+ }
73
+ }
package/src/index.tsx CHANGED
@@ -1,2 +1,4 @@
1
1
  // eslint-disable-next-line react-refresh/only-export-components
2
- export * from "./PaddleBookNow";
2
+ export * from "./PaddleBookNow";
3
+ export * from "./PaddleComposition";
4
+ export * from "./PaddleTime";
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { BookNow } from './BookNow';
5
+
6
+ const meta = {
7
+ component: BookNow,
8
+ title: 'Atoms/BookNow',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof BookNow>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,29 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+ import { faker } from '@faker-js/faker';
4
+
5
+ interface BookNowProps {
6
+ primary?: boolean;
7
+ onClick?: () => void;
8
+ }
9
+
10
+ export const BookNow = ({
11
+ primary = false,
12
+ ...props
13
+ }: BookNowProps) => {
14
+
15
+ return (
16
+ <main
17
+ {...props}
18
+ >
19
+ <a
20
+ href={faker.location.city()}
21
+ rel="noopener noreferrer"
22
+ className="book-now"
23
+ title={`Book now with ${faker.location.city()} kayak and paddleboard`}
24
+ >
25
+ BOOK NOW
26
+ </a>
27
+ </main>
28
+ );
29
+ };
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { BrandList } from './BrandList';
5
+
6
+ const meta = {
7
+ component: BrandList,
8
+ title: 'Molecules/BrandList',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof BrandList>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,19 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+ import { Link } from 'react-aria-components';
4
+ import { faker } from '@faker-js/faker';
5
+
6
+ export const BrandList = () => {
7
+
8
+ return (
9
+ // <ul className='brand_list'>
10
+ <li key='kayak test brand'>
11
+ {/* // ? why test */}
12
+ <Link href={faker.location.city()}>
13
+ <svg viewBox="0 0 201.9 202.6" xmlns="http://www.w3.org/2000/svg"><title>boardworks </title><path d="m201.9 96.5c-67.3 0-134 0-200.6 0 4.6-5.2 7.5-11.6 16.6-11.5 23.7.3 47.3-1.6 70.3-8 8.6-2.4 16.8-6.2 24.7-10.4 5.6-3 10.4-7.8 9.7-15.1-.7-7.4-6.2-11.2-12.4-13.7-16.7-6.6-33-4.3-48.9 2.8-3.1 1.4-6.1 3.1-9.1 4.6-.3-.4-.6-.8-1-1.1 3.5-3.2 7.1-6.3 10.4-9.6 9.7-9.6 19.3-19.3 29-29 7.2-7.1 13.7-7.4 20.8-.3 29.9 29.7 59.6 59.6 89.4 89.5.4.3.5.7 1.1 1.8z" /><path d="m0 106.4h17.2c12.5 0 25 .2 37.5-.1 7.3-.2 13.3 2.4 17.3 8.1 4.1 5.9 7.5 12.5 10.7 19 3.9 8.1 6.9 16.6 11.1 24.5 6.6 12.6 15.4 23.4 29.3 28.5-4.1 4.3-7.9 8.7-12.2 12.5-5.1 4.5-11.2 4.9-17.1 1.1-3.4-2.2-6.5-5.1-9.5-8.1-26.9-27-53.8-54.1-80.7-81.1-1-1.2-2-2.5-3.6-4.4z" /><path d="m81.8 106.5h49.2c-6.6 10.2-8.8 20.8-4.1 31.9 4.8 11.3 13.8 17.1 27 18.2-7 6.9-13.4 13.4-19.9 19.6-.8.8-3 1.1-4.1.6-5.4-2.8-11.8-4.8-15.5-9.1-6.3-7.4-11.4-15.9-15.8-24.6-6.2-11.9-11.2-24.3-16.8-36.6z" /><path d="m202.5 106.4c-1.6 1.9-2.4 3-3.4 4.1-8.4 8.5-16.5 17.4-25.5 25.4-4.3 3.8-9.9 6.7-15.4 8.7-6.8 2.5-13.3.3-18.1-5.2-4.7-5.3-6.2-11.7-4.1-18.6 2.8-9 10.1-14.3 19.4-14.3 15.3-.1 30.6-.1 47.1-.1z" /></svg>
14
+ {faker.location.city()}
15
+ </Link>
16
+ </li>
17
+ // </ul>
18
+ );
19
+ };
@@ -5,6 +5,7 @@ import { Button } from './Button';
5
5
 
6
6
  const meta = {
7
7
  component: Button,
8
+ title: 'Atoms/Button',
8
9
  args: { onClick: fn() },
9
10
  } satisfies Meta<typeof Button>;
10
11
 
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Card } from './Card';
5
+
6
+ const meta = {
7
+ component: Card,
8
+ title: 'Molecules/Card',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof Card>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,43 @@
1
+ // TODO: faker with an internet connection
2
+ // this is the Name.tsx file
3
+ import React from 'react';
4
+ import { Link } from 'react-aria-components';
5
+ import { faker } from '@faker-js/faker';
6
+ import { BookNow } from './BookNow';
7
+
8
+ export const Card = () => {
9
+
10
+ return (
11
+ <div className='deck'>
12
+ <Link href="#" className="card">
13
+ {/* <img
14
+ src='https://tahoe-city-kayak.s3.us-west-1.amazonaws.com/textures/jason-leung-Oc81QL8Crtg-unsplash-hd.webp'
15
+ alt=""
16
+ className='card__placeholder'
17
+ /> */}
18
+ <h4 className="card__title">
19
+ {faker.location.city()}
20
+ </h4>
21
+
22
+ <div className="card__specs">
23
+ <h4>
24
+ {/* <time>
25
+ 18:30 - 20:30
26
+ </time> */}
27
+ </h4>
28
+ <h4>
29
+ {/* // ? does this need capitalization */}
30
+ {faker.helpers.arrayElement(['easy', 'medium', 'hard'])} <span className="card__span">Fitness</span>
31
+ </h4>
32
+ </div>
33
+ <hr />
34
+ <p>{faker.lorem.lines(2)}</p>
35
+ <hr />
36
+ <div className="card__details">
37
+ <h5>${faker.number.int(100)}</h5>
38
+ <BookNow />
39
+ </div>
40
+ </Link>
41
+ </div>
42
+ );
43
+ };
@@ -5,6 +5,7 @@ import { Colors } from './Colors';
5
5
 
6
6
  const meta = {
7
7
  component: Colors,
8
+ title: 'Atoms/Colors',
8
9
  args: { onClick: fn() },
9
10
  } satisfies Meta<typeof Colors>;
10
11
 
@@ -1,6 +1,28 @@
1
1
  // this is the Name.tsx file
2
2
  import React from 'react';
3
- import { ColorCards } from 'color-cards';
3
+
4
+ function ColorCards({ color, variables }) {
5
+ return (
6
+ <div>
7
+ <h2>{color}</h2>
8
+ {variables.map((variable) => (
9
+ <div
10
+ key={variable}
11
+ style={{
12
+ backgroundColor: `var(--${color}-${variable})`,
13
+ padding: '1rem',
14
+ margin: '1rem',
15
+ borderRadius: '0.5rem',
16
+ color: 'white',
17
+ textAlign: 'center',
18
+ }}
19
+ >
20
+ {`--${color}-${variable}`}
21
+ </div>
22
+ ))}
23
+ </div>
24
+ );
25
+ }
4
26
 
5
27
  interface ColorsProps {
6
28
  primary?: boolean;
@@ -18,7 +40,7 @@ export const Colors = ({
18
40
  >
19
41
  {primary ? 'primary' : 'secondary'}
20
42
  <ColorCards
21
- color="red"
43
+ color="navy"
22
44
  variables={[100, 200]}
23
45
  />
24
46
  </main>
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Composition } from './Composition';
5
+
6
+ const meta = {
7
+ component: Composition,
8
+ title: 'Molecules/Composition',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof Composition>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,21 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+
4
+ interface CompositionProps {
5
+ primary?: boolean;
6
+ onClick?: () => void;
7
+ }
8
+
9
+ export const Composition = ({
10
+ primary = false,
11
+ ...props
12
+ }: CompositionProps) => {
13
+
14
+ return (
15
+ <div className="composition">
16
+ {/* <WaterTexture className="texture-1" /> */}
17
+ {/* <TopThree className="texture-2 img__wrapped" /> */}
18
+ {/* {sport === 'paddleboard' ? <Supper className="paddler" /> : <Kayaker className="paddler" />} */}
19
+ </div>
20
+ );
21
+ };
@@ -0,0 +1,31 @@
1
+ // havent figured out how to get this in yet
2
+
3
+ import React from 'react';
4
+ import { faker } from '@faker-js/faker';
5
+
6
+ export const Deal = () => {
7
+ const roll = faker.number.int(10);
8
+ if (roll < 1) {
9
+ return (
10
+ <h1>There are no cards available</h1>
11
+ );
12
+ }
13
+
14
+ // <Ticket key={i} />
15
+ const content = [];
16
+ for (let i = 0; i < roll; i++) {
17
+ content.push(
18
+ { i }
19
+ );
20
+ }
21
+
22
+ console.log(content);
23
+
24
+ return (
25
+ <>
26
+ {content.map((piece) => (
27
+ piece.i
28
+ ))}
29
+ </>
30
+ );
31
+ }
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Deck } from './Deck';
5
+
6
+ const meta = {
7
+ component: Deck,
8
+ title: 'Organisms/Deck',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof Deck>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,22 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+ import { Ticket } from './Ticket';
4
+
5
+ interface DeckProps {
6
+ primary?: boolean;
7
+ onClick?: () => void;
8
+ }
9
+
10
+ export const Deck = ({
11
+ primary = false,
12
+ ...props
13
+ }: DeckProps) => {
14
+
15
+ return (
16
+ <div className='deck'>
17
+ {/* // TODO: deal */}
18
+ <Ticket />
19
+ <Ticket />
20
+ </div>
21
+ );
22
+ };
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Eyebrow } from './Eyebrow';
5
+
6
+ const meta = {
7
+ component: Eyebrow,
8
+ title: 'Atoms/Eyebrow',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof Eyebrow>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,21 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+
4
+ interface EyebrowProps {
5
+ primary?: boolean;
6
+ onClick?: () => void;
7
+ }
8
+
9
+ export const Eyebrow = ({
10
+ primary = false,
11
+ ...props
12
+ }: EyebrowProps) => {
13
+
14
+ return (
15
+ <hgroup className='eyebrow crest'>
16
+ {/* // TODO: fix the metaphor */}
17
+ <p className='eyebrow brow'>Eyebrow</p>
18
+ <h3 className='supra'>Supra</h3>
19
+ </hgroup>
20
+ );
21
+ };
@@ -0,0 +1,19 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { fn } from '@storybook/test';
4
+ import { Footer } from './Footer';
5
+
6
+ const meta = {
7
+ component: Footer,
8
+ title: 'Organisms/Footer',
9
+ args: { onClick: fn() },
10
+ } satisfies Meta<typeof Footer>;
11
+
12
+ export default meta;
13
+ type Story = StoryObj<typeof meta>;
14
+
15
+ export const Primary: Story = {
16
+ args: {
17
+ primary: true,
18
+ },
19
+ };
@@ -0,0 +1,112 @@
1
+ // this is the Name.tsx file
2
+ import React from 'react';
3
+ import { Link } from 'react-aria-components';
4
+ import { faker } from '@faker-js/faker';
5
+
6
+ import { Pricing } from './Pricing';
7
+ import { LocationDeck } from './LocationDeck';
8
+
9
+ function Deal() {
10
+
11
+ const roll = faker.number.int(10);
12
+
13
+ if (roll < 1) {
14
+ return (
15
+ <h1>double zero</h1>
16
+ );
17
+ }
18
+
19
+ const content = [];
20
+ for (let i = 0; i < roll; i++) {
21
+ content.push(
22
+ <li key={faker.location.city()}>
23
+ <a href={faker.location.city()}
24
+ target="_blank"
25
+ rel='noopener noreferrer'
26
+ >
27
+ {faker.location.city()} Kayak &amp; Paddleboard
28
+ </a>
29
+ </li>
30
+ );
31
+ }
32
+
33
+ return content;
34
+ }
35
+
36
+ interface FooterProps {
37
+ primary?: boolean;
38
+ onClick?: () => void;
39
+ }
40
+
41
+ export const Footer = ({
42
+ primary = false,
43
+ ...props
44
+ }: FooterProps) => {
45
+
46
+ return (
47
+ <footer>
48
+ <section>
49
+ <h3 className='sr-only'>
50
+ <Link href="/">{faker.company.name()}</Link>
51
+ </h3>
52
+ <Link href="/" className="logo-link">
53
+ {/* // TODO: */}
54
+ {/* <Logo /> */}
55
+ </Link>
56
+ <p>&copy; {new Date().getFullYear()}</p>
57
+ <hr />
58
+ <nav>
59
+ {/* <MenuList /> */}
60
+ </nav>
61
+ <hr />
62
+ <div className="footer__contact">
63
+ {/* <Phone /> */}
64
+ <a
65
+ href={`mailto:${faker.internet.email()}`}
66
+ rel="norel norefferer"
67
+ className="button"
68
+ >
69
+ {faker.internet.email()}
70
+ </a>
71
+ <div className="social">
72
+ {/* {useSiteMetadata().social?.facebook ?? */}
73
+ <a
74
+ href={faker.location.city()}
75
+ target='_blank' rel='noopener noreferrer'
76
+ aria-label={`${faker.location.city()} facebook`}
77
+ >
78
+ {/* <FacebookIcon /> */}
79
+ </a>
80
+ {/* } */}
81
+ {/* {useSiteMetadata().social?.instagram ?? */}
82
+ <a href={faker.location.city()}
83
+ target='_blank'
84
+ rel='noopener noreferrer'
85
+ aria-label={`${faker.location.city()} instagram`}
86
+ >
87
+ {/* <InstagramIcon /> */}
88
+ </a>
89
+ {/* } */}
90
+ </div>
91
+ </div>
92
+ <hr />
93
+ <div className="footer__locations">
94
+ <h3>Our Partner Locations</h3>
95
+ <ul>
96
+ <Deal />
97
+ </ul>
98
+ </div>
99
+ </section>
100
+ <section>
101
+ <Pricing book={false} />
102
+ <hr />
103
+
104
+ <LocationDeck
105
+ // locations={data.allStrapiLocation}
106
+ background={false}
107
+ />
108
+ </section>
109
+
110
+ </footer >
111
+ );
112
+ };