@rileybathurst/paddle 1.9.31 → 1.9.33

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rileybathurst/paddle",
3
3
  "private": false,
4
- "version": "1.9.31",
4
+ "version": "1.9.33",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "tsc --noEmit && stay-gold && vite",
@@ -10,6 +10,7 @@
10
10
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
11
11
  "preview": "vite preview",
12
12
  "storybook": "tsc --noEmit && stay-gold && storybook dev -p 6006",
13
+ "storybook-dirty": "storybook dev -p 6006",
13
14
  "build-storybook": "storybook build",
14
15
  "release": "npm version patch && npm login && npm publish",
15
16
  "stay-gold": "stay-gold"
package/src/App.tsx CHANGED
@@ -4,6 +4,7 @@ import { useState } from 'react'
4
4
  import reactLogo from './assets/react.svg'
5
5
  import viteLogo from '/vite.svg'
6
6
  import { PaddlePricingChart } from './paddle-pricing-chart'
7
+ import { PaddleCompare } from './paddle-compare'
7
8
 
8
9
  function App() {
9
10
  const [count, setCount] = useState(0)
@@ -31,7 +32,7 @@ function App() {
31
32
  Click on the Vite and React logos to learn more
32
33
  </p>
33
34
 
34
- {/* testing */}
35
+ {/* // TODO: testing */}
35
36
  <PaddlePricingChart
36
37
  rentalRates={{
37
38
  nodes: [
@@ -94,6 +95,61 @@ function App() {
94
95
  slug: 'tahoe-city'
95
96
  }}
96
97
  />
98
+
99
+ <PaddleCompare
100
+ peek_base="123"
101
+ strapiBranchName="south-tahoe"
102
+ tours={[
103
+ {
104
+ id: 1,
105
+ name: "Tour 1",
106
+ slug: "tour-1",
107
+ sport: "Paddleboarding",
108
+ duration: "2 hours",
109
+ timeframe: "Morning",
110
+ start: "9:00 AM",
111
+ finish: "11:00 AM",
112
+ fitness: "Easy",
113
+ location: "Lake Tahoe",
114
+ excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
115
+ minimum: 2,
116
+ price: 100,
117
+ peek: "456"
118
+ },
119
+ {
120
+ id: 2,
121
+ name: "Tour 2",
122
+ slug: "tour-2",
123
+ sport: "Paddleboarding",
124
+ duration: "3 hours",
125
+ timeframe: "Afternoon",
126
+ start: "1:00 PM",
127
+ finish: "4:00 PM",
128
+ fitness: "Moderate",
129
+ location: "Lake Tahoe",
130
+ excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
131
+ minimum: 2,
132
+ price: 150,
133
+ peek: "789"
134
+ },
135
+ {
136
+ id: 3,
137
+ name: "Tour 3",
138
+ slug: "tour-3",
139
+ sport: "Paddleboarding",
140
+ duration: "4 hours",
141
+ timeframe: "Evening",
142
+ start: "5:00 PM",
143
+ finish: "9:00 PM",
144
+ fitness: "Hard",
145
+ location: "Lake Tahoe",
146
+ excerpt: "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
147
+ minimum: 2,
148
+ price: 200,
149
+ peek: "101112"
150
+ }
151
+ ]}
152
+ />
97
153
  </>
98
154
  )
99
155
  }
@@ -1,13 +1,14 @@
1
1
  // ! this is the next fix
2
2
 
3
- import React from 'react';
3
+ import React, { useState } from "react";
4
4
 
5
- import { PaddleTime } from './paddle-time';
5
+ // import { PaddleTime } from './paddle-time';
6
6
  import { PaddleBookNow } from './paddle-book-now';
7
7
  import type { PaddleCompareTypes } from './types/paddle-compare-types';
8
8
 
9
- type CompareDetailsProps = {
9
+ type CompareDetailsTypes = {
10
10
  title: string;
11
+ onTourChange: (value: string) => void;
11
12
  link: string;
12
13
  sport: string;
13
14
  duration?: string;
@@ -22,10 +23,28 @@ type CompareDetailsProps = {
22
23
  peeks?: string;
23
24
  peek_base: string;
24
25
  strapiBranchName: string;
26
+
27
+ // ? this can maybe loop from itself?
28
+ tours: {
29
+ id: React.Key;
30
+ name: string;
31
+ slug: string;
32
+ sport: string;
33
+ duration?: string;
34
+ timeframe?: string;
35
+ start?: string;
36
+ finish?: string;
37
+ excerpt?: string;
38
+ minimum?: number;
39
+ price?: number;
40
+ peek?: string;
41
+ fitness?: string;
42
+ }[];
25
43
  };
26
44
 
27
- const CompareDetails = ({
45
+ const CompareDetails = ({
28
46
  title,
47
+ onTourChange,
29
48
  link,
30
49
  sport,
31
50
  // duration,
@@ -39,30 +58,36 @@ const CompareDetails = ({
39
58
  price,
40
59
  peeks,
41
60
  peek_base,
42
- strapiBranchName }: CompareDetailsProps) => {
61
+ strapiBranchName,
62
+ tours
63
+ }: CompareDetailsTypes) => {
43
64
  return (
44
65
  <section>
45
- {/* <select
66
+ <select
46
67
  name="tour1"
47
68
  id={title}
48
69
  className="comparesheet_select"
49
70
  aria-label="Select first tour or lesson"
71
+ value={title}
72
+ onChange={(e) => onTourChange(e.target.value)}
50
73
  >
51
- {Array.from({ length: faker.number.int({ min: 1, max: 10 }) }).map(() => (
74
+ {tours.map((tour) => (
52
75
  <option
53
- key={faker.string.uuid()}
54
- value={faker.food.dish()}
76
+ key={tour.id}
77
+ value={tour.name}
55
78
  >
56
- {faker.food.dish()}
79
+ {tour.name}
57
80
  </option>
58
81
  ))}
59
- </select> */}
82
+ </select>
83
+
60
84
  <h2 className="kilimanjaro">
61
85
  <a href={link}>{title}</a>
62
86
  </h2>
63
87
 
64
88
  <h4 className="capitalize">{sport}</h4>
65
89
 
90
+ {/* // TODO: time is more complex so just get it running first */}
66
91
  {/* <p>
67
92
  <PaddleTime
68
93
  start={start}
@@ -107,31 +132,71 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
107
132
 
108
133
  let id1 = tours[0].id;
109
134
  let id2 = tours[1].id;
110
-
111
- let tour1 = tours[0].name;
112
- let tour2 = tours[1].name;
113
- let link1 = tours[0].slug;
114
- let link2 = tours[1].slug;
115
- let sport1 = tours[0].sport;
116
- let sport2 = tours[1].sport;
117
- let duration1 = tours[0].duration || 'not set';
118
- let duration2 = tours[1].duration || 'not set';
119
- let timeframe1 = tours[0].timeframe || 'not set';
120
- let timeframe2 = tours[1].timeframe || 'not set';
121
- let start1 = tours[0].start || 'not set';
122
- let start2 = tours[1].start || 'not set';
123
- let finish1 = tours[0].finish || 'not set';
124
- let finish2 = tours[1].finish || 'not set';
125
- let excerpt1 = tours[0].excerpt || 'not set';
126
- let excerpt2 = tours[1].excerpt || 'not set';
127
- let minimum1 = tours[0].minimum || 0;
128
- let minimum2 = tours[1].minimum || 0;
129
- let price1 = tours[0].price || 0;
130
- let price2 = tours[1].price || 0;
131
- let peeks1 = tours[0].peek || 'not set';
132
- let peeks2 = tours[1].peek || 'not set';
133
- let fitness1 = tours[0].fitness || 'fitness';
134
- let fitness2 = tours[1].fitness || 'fitness';
135
+
136
+ let [tour1, setTour1] = useState(tours[0].name || "Tour 1");
137
+ let [tour2, setTour2] = useState(tours[1].name || "Tour 2");
138
+ let [link1, setLink1] = useState(tours[0].slug || "not set");
139
+ let [link2, setLink2] = useState(tours[1].slug || "not set");
140
+ let [sport1, setSport1] = useState(tours[0].sport || "not set");
141
+ let [sport2, setSport2] = useState(tours[1].sport || "not set");
142
+ let [duration1, setDuration1] = useState(tours[0].duration || "not set");
143
+ let [duration2, setDuration2] = useState(tours[1].duration || "not set");
144
+ let [timeframe1, setTimeframe1] = useState(tours[0].timeframe || "not set");
145
+ let [timeframe2, setTimeframe2] = useState(tours[1].timeframe || "not set");
146
+ let [start1, setStart1] = useState(tours[0].start || "not set");
147
+ let [start2, setStart2] = useState(tours[1].start || "not set");
148
+ let [finish1, setFinish1] = useState(tours[0].finish || "not set");
149
+ let [finish2, setFinish2] = useState(tours[1].finish || "not set");
150
+ let [location1, setLocation1] = useState(tours[0].location || strapiBranchName);
151
+ let [location2, setLocation2] = useState(tours[1].location || strapiBranchName);
152
+ let [excerpt1, setExcerpt1] = useState(tours[0].excerpt || "not set");
153
+ let [excerpt2, setExcerpt2] = useState(tours[1].excerpt || "not set");
154
+ let [minimum1, setMinimum1] = useState(tours[0].minimum || 0);
155
+ let [minimum2, setMinimum2] = useState(tours[1].minimum || 0);
156
+ let [price1, setPrice1] = useState(tours[0].price || 0);
157
+ let [price2, setPrice2] = useState(tours[1].price || 0);
158
+ let [peeks1, setPeeks1] = useState(tours[0].peek || "not set");
159
+ let [peeks2, setPeeks2] = useState(tours[1].peek || "not set");
160
+ let [fitness1, setFitness1] = useState(tours[0].fitness || "fitness");
161
+ let [fitness2, setFitness2] = useState(tours[1].fitness || "fitness");
162
+
163
+ const updateTour1 = (selectedName: string) => {
164
+ const selectedTour = tours.find((tour) => tour.name === selectedName);
165
+ if (!selectedTour) return;
166
+
167
+ setTour1(selectedTour.name);
168
+ setLink1(selectedTour.slug || "not set");
169
+ setSport1(selectedTour.sport || "not set");
170
+ setDuration1(selectedTour.duration || "not set");
171
+ setTimeframe1(selectedTour.timeframe || "not set");
172
+ setStart1(selectedTour.start || "not set");
173
+ setFinish1(selectedTour.finish || "not set");
174
+ setLocation1(selectedTour.location || strapiBranchName);
175
+ setExcerpt1(selectedTour.excerpt || "not set");
176
+ setMinimum1(selectedTour.minimum || 0);
177
+ setPrice1(selectedTour.price || 0);
178
+ setPeeks1(selectedTour.peek || "not set");
179
+ setFitness1(selectedTour.fitness || "fitness");
180
+ };
181
+
182
+ const updateTour2 = (selectedName: string) => {
183
+ const selectedTour = tours.find((tour) => tour.name === selectedName);
184
+ if (!selectedTour) return;
185
+
186
+ setTour2(selectedTour.name);
187
+ setLink2(selectedTour.slug || "not set");
188
+ setSport2(selectedTour.sport || "not set");
189
+ setDuration2(selectedTour.duration || "not set");
190
+ setTimeframe2(selectedTour.timeframe || "not set");
191
+ setStart2(selectedTour.start || "not set");
192
+ setFinish2(selectedTour.finish || "not set");
193
+ setLocation2(selectedTour.location || strapiBranchName);
194
+ setExcerpt2(selectedTour.excerpt || "not set");
195
+ setMinimum2(selectedTour.minimum || 0);
196
+ setPrice2(selectedTour.price || 0);
197
+ setPeeks2(selectedTour.peek || "not set");
198
+ setFitness2(selectedTour.fitness || "fitness");
199
+ };
135
200
 
136
201
  return (
137
202
  <>
@@ -152,57 +217,50 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
152
217
  <p className='button-drop'>Book Now</p>
153
218
  </div>
154
219
 
155
- <select
156
- name="tour1"
157
- // id={id1}
158
- className="comparesheet_select"
159
- aria-label="Select first tour or lesson"
160
- >
161
- {tours.map((tour) => (
162
- <option
163
- key={tour.id}
164
- value={tour.id}
165
- >
166
- {tour.name}
167
- </option>
168
- ))}
169
- </select>
170
-
171
220
  <CompareDetails
172
221
  key={id1}
173
222
  title={tour1}
223
+ onTourChange={updateTour1}
174
224
  link={link1}
175
225
  sport={sport1}
176
226
  duration={duration1}
177
227
  timeframe={timeframe1}
178
228
  start={start1}
179
229
  finish={finish1}
180
- location={strapiBranchName}
230
+ location={location1}
181
231
  excerpt={excerpt1}
182
232
  minimum={minimum1}
183
233
  price={price1}
184
234
  peeks={peeks1}
185
235
  fitness={fitness1}
236
+
186
237
  strapiBranchName={strapiBranchName}
187
238
  peek_base={peek_base}
239
+
240
+ tours={tours}
188
241
  />
189
242
  <CompareDetails
190
243
  key={id2}
191
244
  title={tour2}
245
+ onTourChange={updateTour2}
192
246
  link={link2}
193
247
  sport={sport2}
194
248
  duration={duration2}
195
249
  timeframe={timeframe2}
196
250
  start={start2}
197
251
  finish={finish2}
198
- location={strapiBranchName}
252
+ location={location2}
199
253
  excerpt={excerpt2}
200
254
  minimum={minimum2}
201
255
  price={price2}
202
256
  peeks={peeks2}
203
257
  fitness={fitness2}
258
+
204
259
  strapiBranchName={strapiBranchName}
205
260
  peek_base={peek_base}
261
+
262
+ tours={tours}
263
+
206
264
  />
207
265
 
208
266
  </div>