@rileybathurst/paddle 1.9.32 → 1.9.34

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.32",
4
+ "version": "1.9.34",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "tsc --noEmit && stay-gold && vite",
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: 120,
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: 180,
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: 240,
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,54 +1,40 @@
1
- // ! this is the next fix
1
+ import React, { useState } from "react";
2
2
 
3
- import React from 'react';
4
-
5
- // import { PaddleTime } from './paddle-time';
3
+ import { PaddleTime } from './paddle-time';
6
4
  import { PaddleBookNow } from './paddle-book-now';
7
5
  import type { PaddleCompareTypes } from './types/paddle-compare-types';
8
6
 
9
- type CompareDetailsProps = {
10
- title: string;
11
- link: string;
12
- sport: string;
13
- duration?: string;
14
- timeframe?: string;
15
- start?: string;
16
- finish?: string;
17
- fitness?: string;
18
- location: string;
19
- excerpt: string;
20
- minimum: number;
21
- price: number;
22
- peeks?: string;
23
- peek_base: string;
24
- strapiBranchName: string;
25
-
26
- // ? this can maybe loop from itself?
27
- tours: {
28
- id: React.Key;
29
- name: string;
30
- slug: string;
31
- sport: string;
32
- duration?: string;
33
- timeframe?: string;
34
- start?: string;
35
- finish?: string;
36
- excerpt?: string;
37
- minimum?: number;
38
- price?: number;
39
- peek?: string;
40
- fitness?: string;
41
- }[];
7
+ type TourType = PaddleCompareTypes["tours"][number];
8
+
9
+ type CompareDetailsTypes = {
10
+ name: TourType["name"];
11
+ onTourChange: (value: TourType["name"]) => void;
12
+ link: TourType["slug"];
13
+ sport: TourType["sport"];
14
+ duration?: TourType["duration"];
15
+ timeframe?: TourType["timeframe"];
16
+ start?: TourType["start"];
17
+ finish?: TourType["finish"];
18
+ fitness?: TourType["fitness"];
19
+ location: TourType["location"];
20
+ excerpt: TourType["excerpt"];
21
+ minimum: TourType["minimum"];
22
+ price: TourType["price"];
23
+ peeks?: TourType["peek"];
24
+ peek_base: PaddleCompareTypes["peek_base"];
25
+ strapiBranchName: PaddleCompareTypes["strapiBranchName"];
26
+ tours: PaddleCompareTypes["tours"];
42
27
  };
43
28
 
44
29
  const CompareDetails = ({
45
- title,
30
+ name,
31
+ onTourChange,
46
32
  link,
47
33
  sport,
48
- // duration,
49
- // timeframe,
50
- // start,
51
- // finish,
34
+ duration,
35
+ timeframe,
36
+ start,
37
+ finish,
52
38
  fitness,
53
39
  location,
54
40
  excerpt,
@@ -58,14 +44,29 @@ const CompareDetails = ({
58
44
  peek_base,
59
45
  strapiBranchName,
60
46
  tours
61
- }: CompareDetailsProps) => {
47
+ }: CompareDetailsTypes) => {
48
+
49
+ const time = PaddleTime({
50
+ start: start,
51
+ finish: finish,
52
+ duration: duration,
53
+ timeframe: timeframe,
54
+ });
55
+
56
+ // TODO: testing
57
+ console.log("time", time);
58
+ console.log(time.entry);
59
+ console.log(time.value);
60
+
62
61
  return (
63
62
  <section>
64
63
  <select
65
64
  name="tour1"
66
- id={title}
65
+ id={name}
67
66
  className="comparesheet_select"
68
67
  aria-label="Select first tour or lesson"
68
+ value={name}
69
+ onChange={(e) => onTourChange(e.target.value)}
69
70
  >
70
71
  {tours.map((tour) => (
71
72
  <option
@@ -76,21 +77,16 @@ const CompareDetails = ({
76
77
  </option>
77
78
  ))}
78
79
  </select>
80
+
79
81
  <h2 className="kilimanjaro">
80
- <a href={link}>{title}</a>
82
+ <a href={link}>{name}</a>
81
83
  </h2>
82
84
 
83
85
  <h4 className="capitalize">{sport}</h4>
84
86
 
85
- {/* // TODO: time is more complex so just get it running first */}
86
- {/* <p>
87
- <PaddleTime
88
- start={start}
89
- finish={finish}
90
- duration={duration}
91
- timeframe={timeframe}
92
- />
93
- </p> */}
87
+ <p>
88
+ {time.value}
89
+ </p>
94
90
 
95
91
  <p className="capitalize">
96
92
  {fitness} <span className="show-below__vulture">&nbsp;fitness</span>
@@ -128,35 +124,75 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
128
124
  let id1 = tours[0].id;
129
125
  let id2 = tours[1].id;
130
126
 
131
- let tour1 = tours[0].name;
132
- let tour2 = tours[1].name;
133
- let link1 = tours[0].slug;
134
- let link2 = tours[1].slug;
135
- let sport1 = tours[0].sport;
136
- let sport2 = tours[1].sport;
137
- let duration1 = tours[0].duration || 'not set';
138
- let duration2 = tours[1].duration || 'not set';
139
- let timeframe1 = tours[0].timeframe || 'not set';
140
- let timeframe2 = tours[1].timeframe || 'not set';
141
- let start1 = tours[0].start || 'not set';
142
- let start2 = tours[1].start || 'not set';
143
- let finish1 = tours[0].finish || 'not set';
144
- let finish2 = tours[1].finish || 'not set';
145
- let excerpt1 = tours[0].excerpt || 'not set';
146
- let excerpt2 = tours[1].excerpt || 'not set';
147
- let minimum1 = tours[0].minimum || 0;
148
- let minimum2 = tours[1].minimum || 0;
149
- let price1 = tours[0].price || 0;
150
- let price2 = tours[1].price || 0;
151
- let peeks1 = tours[0].peek || 'not set';
152
- let peeks2 = tours[1].peek || 'not set';
153
- let fitness1 = tours[0].fitness || 'fitness';
154
- let fitness2 = tours[1].fitness || 'fitness';
127
+ let [tour1, setTour1] = useState(tours[0].name || "Tour 1");
128
+ let [tour2, setTour2] = useState(tours[1].name || "Tour 2");
129
+ let [link1, setLink1] = useState(tours[0].slug || "not set");
130
+ let [link2, setLink2] = useState(tours[1].slug || "not set");
131
+ let [sport1, setSport1] = useState(tours[0].sport || "not set");
132
+ let [sport2, setSport2] = useState(tours[1].sport || "not set");
133
+ let [duration1, setDuration1] = useState(tours[0].duration || 0);
134
+ let [duration2, setDuration2] = useState(tours[1].duration || 0);
135
+ let [timeframe1, setTimeframe1] = useState(tours[0].timeframe || "not set");
136
+ let [timeframe2, setTimeframe2] = useState(tours[1].timeframe || "not set");
137
+ let [start1, setStart1] = useState(tours[0].start || "not set");
138
+ let [start2, setStart2] = useState(tours[1].start || "not set");
139
+ let [finish1, setFinish1] = useState(tours[0].finish || "not set");
140
+ let [finish2, setFinish2] = useState(tours[1].finish || "not set");
141
+ let [location1, setLocation1] = useState(tours[0].location || strapiBranchName);
142
+ let [location2, setLocation2] = useState(tours[1].location || strapiBranchName);
143
+ let [excerpt1, setExcerpt1] = useState(tours[0].excerpt || "not set");
144
+ let [excerpt2, setExcerpt2] = useState(tours[1].excerpt || "not set");
145
+ let [minimum1, setMinimum1] = useState(tours[0].minimum || 0);
146
+ let [minimum2, setMinimum2] = useState(tours[1].minimum || 0);
147
+ let [price1, setPrice1] = useState(tours[0].price || 0);
148
+ let [price2, setPrice2] = useState(tours[1].price || 0);
149
+ let [peeks1, setPeeks1] = useState(tours[0].peek || "not set");
150
+ let [peeks2, setPeeks2] = useState(tours[1].peek || "not set");
151
+ let [fitness1, setFitness1] = useState(tours[0].fitness || "fitness");
152
+ let [fitness2, setFitness2] = useState(tours[1].fitness || "fitness");
153
+
154
+ const updateTour1 = (selectedName: string) => {
155
+ const selectedTour = tours.find((tour) => tour.name === selectedName);
156
+ if (!selectedTour) return;
157
+
158
+ setTour1(selectedTour.name);
159
+ setLink1(selectedTour.slug || "not set");
160
+ setSport1(selectedTour.sport || "not set");
161
+ setDuration1(selectedTour.duration || 0);
162
+ setTimeframe1(selectedTour.timeframe || "not set");
163
+ setStart1(selectedTour.start || "not set");
164
+ setFinish1(selectedTour.finish || "not set");
165
+ setLocation1(selectedTour.location || strapiBranchName);
166
+ setExcerpt1(selectedTour.excerpt || "not set");
167
+ setMinimum1(selectedTour.minimum || 0);
168
+ setPrice1(selectedTour.price || 0);
169
+ setPeeks1(selectedTour.peek || "not set");
170
+ setFitness1(selectedTour.fitness || "fitness");
171
+ };
172
+
173
+ const updateTour2 = (selectedName: string) => {
174
+ const selectedTour = tours.find((tour) => tour.name === selectedName);
175
+ if (!selectedTour) return;
176
+
177
+ setTour2(selectedTour.name);
178
+ setLink2(selectedTour.slug || "not set");
179
+ setSport2(selectedTour.sport || "not set");
180
+ setDuration2(selectedTour.duration || 0);
181
+ setTimeframe2(selectedTour.timeframe || "not set");
182
+ setStart2(selectedTour.start || "not set");
183
+ setFinish2(selectedTour.finish || "not set");
184
+ setLocation2(selectedTour.location || strapiBranchName);
185
+ setExcerpt2(selectedTour.excerpt || "not set");
186
+ setMinimum2(selectedTour.minimum || 0);
187
+ setPrice2(selectedTour.price || 0);
188
+ setPeeks2(selectedTour.peek || "not set");
189
+ setFitness2(selectedTour.fitness || "fitness");
190
+ };
155
191
 
156
192
  return (
157
193
  <>
158
194
  <div className='comparesheet'>
159
- <div className='comparesheet_titles'>
195
+ <div className='comparesheet_names'>
160
196
  <div className="comparesheet__transparent">Compare</div>
161
197
  <h3 className='kilimanjaro comparesheet_freeze'>
162
198
  Tour or<br />
@@ -174,14 +210,15 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
174
210
 
175
211
  <CompareDetails
176
212
  key={id1}
177
- title={tour1}
213
+ name={tour1}
214
+ onTourChange={updateTour1}
178
215
  link={link1}
179
216
  sport={sport1}
180
217
  duration={duration1}
181
218
  timeframe={timeframe1}
182
219
  start={start1}
183
220
  finish={finish1}
184
- location={strapiBranchName}
221
+ location={location1}
185
222
  excerpt={excerpt1}
186
223
  minimum={minimum1}
187
224
  price={price1}
@@ -195,14 +232,15 @@ export const PaddleCompare = ({ tours, strapiBranchName, peek_base }: PaddleComp
195
232
  />
196
233
  <CompareDetails
197
234
  key={id2}
198
- title={tour2}
235
+ name={tour2}
236
+ onTourChange={updateTour2}
199
237
  link={link2}
200
238
  sport={sport2}
201
239
  duration={duration2}
202
240
  timeframe={timeframe2}
203
241
  start={start2}
204
242
  finish={finish2}
205
- location={strapiBranchName}
243
+ location={location2}
206
244
  excerpt={excerpt2}
207
245
  minimum={minimum2}
208
246
  price={price2}
@@ -22,6 +22,7 @@ export const PaddleTicket = ({
22
22
  allStrapiSunsetTourTime,
23
23
  strapiBranchName,
24
24
  }: PaddleTicketTypes) => {
25
+
25
26
  const time = PaddleTime({
26
27
  start: start,
27
28
  finish: finish,
@@ -4,7 +4,7 @@ export type PaddleCompareTypes = {
4
4
  name: string;
5
5
  slug: string;
6
6
  sport: string;
7
- duration?: string;
7
+ duration?: number;
8
8
  timeframe?: string;
9
9
  start?: string;
10
10
  finish?: string;