@rileybathurst/paddle 1.0.0 → 1.0.2

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.0.0",
4
+ "version": "1.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -16,27 +16,29 @@
16
16
  "color-cards": "^1.0.18",
17
17
  "gatsby": "^5.14.3",
18
18
  "gatsby-plugin-image": "^3.14.0",
19
- "react": "^18.2.0",
20
- "react-aria-components": "^1.9.0",
21
- "react-dom": "^18.2.0",
19
+ "postcss-dark-theme-class": "^1.3.0",
20
+ "react": "^18.3.1",
21
+ "react-aria-components": "^1.10.0",
22
+ "react-dom": "^18.3.1",
22
23
  "react-markdown": "^10.1.0"
23
24
  },
24
25
  "devDependencies": {
25
26
  "@chromatic-com/storybook": "^4.0.0",
26
27
  "@faker-js/faker": "^9.8.0",
27
- "@storybook/addon-docs": "^9.0.3",
28
- "@storybook/addon-links": "^9.0.3",
29
- "@storybook/react-vite": "^9.0.3",
28
+ "@storybook/addon-docs": "^9.0.11",
29
+ "@storybook/addon-links": "^9.0.11",
30
+ "@storybook/addon-themes": "^9.0.11",
31
+ "@storybook/react-vite": "^9.0.11",
30
32
  "@types/react": "^19.1.6",
31
- "@types/react-dom": "^19.1.5",
32
- "@typescript-eslint/eslint-plugin": "^8.33.0",
33
- "@typescript-eslint/parser": "^8.33.0",
34
- "@vitejs/plugin-react": "^4.5.0",
33
+ "@types/react-dom": "^19.1.6",
34
+ "@typescript-eslint/eslint-plugin": "^8.33.1",
35
+ "@typescript-eslint/parser": "^8.33.1",
36
+ "@vitejs/plugin-react": "^4.5.1",
35
37
  "eslint": "^9.28.0",
36
38
  "eslint-plugin-react-hooks": "^5.2.0",
37
- "eslint-plugin-react-refresh": "^0.4.6",
38
- "eslint-plugin-storybook": "^9.0.3",
39
- "storybook": "^9.0.3",
39
+ "eslint-plugin-react-refresh": "^0.4.20",
40
+ "eslint-plugin-storybook": "^9.0.11",
41
+ "storybook": "^9.0.11",
40
42
  "typescript": "^5.8.3",
41
43
  "vite": "^6.3.5"
42
44
  },
@@ -48,5 +50,8 @@
48
50
  "files": [
49
51
  "src/*",
50
52
  "!src/stories"
51
- ]
53
+ ],
54
+ "overrides": {
55
+ "storybook": "$storybook"
56
+ }
52
57
  }
@@ -1,8 +1,7 @@
1
+ // TODO: this isnt finished but hasnt been implemented yet
1
2
  import * as React from "react"
2
- // ! this isnt finished it wont have faker when its done
3
3
  import { faker } from '@faker-js/faker';
4
4
 
5
-
6
5
  interface CompositionTypes {
7
6
  sport?: string;
8
7
  }
@@ -39,6 +39,7 @@ function Season({ name, season_start, season_end, opening_time, closing_time, of
39
39
  )
40
40
  }
41
41
 
42
+ // outside of season
42
43
  return (
43
44
  <div>
44
45
  <p>We&apos;re closed for the season</p>
@@ -52,19 +53,17 @@ function Season({ name, season_start, season_end, opening_time, closing_time, of
52
53
  ) : null}
53
54
 
54
55
  {offSeasonDetails ? (
55
- <p>
56
- {offSeasonDetails}
57
- </p>
56
+ <p>{offSeasonDetails}</p>
58
57
  ) : null}
59
58
  </div>
60
59
  )
61
60
  }
62
61
 
62
+ // no season defaults to off season
63
+ // TODO: add some enum error messages here for if this is allowed to not have a season
63
64
  return (
64
65
  <div>
65
- <p>
66
- We&apos;re closed for the season
67
- </p>
66
+ <p>We&apos;re closed for the season</p>
68
67
  {offSeasonDetails ? (
69
68
  <p>{offSeasonDetails}</p>
70
69
  ) : null}
@@ -126,8 +125,16 @@ function Content({ svg, name, address, description, opening_time, closing_time,
126
125
 
127
126
  (<>
128
127
  <h3 className="elbrus">{name}</h3>
129
- <Markdown>
130
- {/* // ! removed for testing className="react-markdown" */}
128
+
129
+ <Markdown
130
+ components={{
131
+ div: ({ children, ...props }) => (
132
+ <div className="react-markdown" {...props}>
133
+ {children}
134
+ </div>
135
+ )
136
+ }}
137
+ >
131
138
  {address.data.address}
132
139
  </Markdown>
133
140
  </>)}
@@ -135,7 +142,6 @@ function Content({ svg, name, address, description, opening_time, closing_time,
135
142
  </div>
136
143
 
137
144
  <div>
138
-
139
145
  {opening_time && closing_time ? (
140
146
  <Season
141
147
  season_start={season_start}
@@ -146,10 +152,11 @@ function Content({ svg, name, address, description, opening_time, closing_time,
146
152
  offSeasonDetails={offSeasonDetails}
147
153
  />
148
154
  ) : (
155
+ <div className="react-markdown">
149
156
  <Markdown>
150
- {/* // ! removed for testing className="react-markdown" */}
151
157
  {description.data.description}
152
158
  </Markdown>
159
+ </div>
153
160
  )}
154
161
  </div>
155
162
  </>
@@ -4,7 +4,7 @@ import type { LocationCardTypes } from "./types/location-card-types";
4
4
 
5
5
  interface LocationDeckTypes {
6
6
  background?: string;
7
- season_start?: string;
7
+ season_start?: string; // ? should this be optional? it created a problem with tours
8
8
  season_end?: string;
9
9
  phone?: string;
10
10
  nodes: LocationCardTypes[];
@@ -0,0 +1,16 @@
1
+ import * as React from "react"
2
+ import { TestimonialTypes } from "./types/testimonial-types"
3
+
4
+ export function PaddleTestimonial({ id, testimonial, customer, sign, location }: TestimonialTypes) {
5
+ return (
6
+ <li key={id}>
7
+ <p className='elbrus'>
8
+ <span className='denali font-serif'>&ldquo;</span>
9
+ {testimonial}
10
+ <span className='denali font-serif'>&rdquo;</span>
11
+ </p>
12
+ <p>{sign} {customer}</p>
13
+ <p className='kosciuszko'>{location}</p>
14
+ </li>
15
+ )
16
+ }
@@ -1,23 +1,15 @@
1
1
  import * as React from "react"
2
+ import { PaddleTestimonial } from "./PaddleTestimonial"
3
+ import { type TestimonialTypes } from "./types/testimonial-types"
2
4
 
3
5
  interface TestimonialsTypes {
4
- nodes: {
5
- id: string;
6
- testimonial: string;
7
- sign: string;
8
- customer: string;
9
- location: string;
10
- }[];
6
+ nodes: TestimonialTypes[];
11
7
  }
12
8
  export function PaddleTestimonials({ nodes }: TestimonialsTypes) {
13
9
  return (
14
10
  <ul className='testimonials condor'>
15
11
  {nodes.map((testimonial) => (
16
- <li key={testimonial.id}>
17
- <p className='elbrus'><span className='denali font-serif'>&ldquo;</span>{testimonial.testimonial}<span className='denali font-serif'>&rdquo;</span></p>
18
- <p>{testimonial.sign} {testimonial.customer}</p>
19
- <p className='kosciuszko'>{testimonial.location}</p>
20
- </li>
12
+ <PaddleTestimonial key={testimonial.id} {...testimonial} />
21
13
  ))}
22
14
  </ul>
23
15
  )
package/src/index.tsx CHANGED
@@ -1,9 +1,3 @@
1
- // eslint-disable-next-line react-refresh/only-export-components
2
-
3
- // TODO: these dont work
4
- // Fragments
5
- // export * from "./testimonial-fragment";
6
-
7
1
  // Atoms
8
2
  export * from "./PaddleBookNow";
9
3
  export * from "./PaddleTime";
@@ -18,21 +12,20 @@ export * from "./PaddleTicket";
18
12
  export * from "./PaddleSunsetTourTimes";
19
13
  export * from "./PaddleTopBar";
20
14
  export * from "./PaddleSpecs";
15
+ export * from "./PaddleTestimonial";
21
16
 
22
17
  // Organisms
23
18
  export * from "./PaddleLocationDeck";
24
-
25
- // Test a function
26
19
  export * from "./PaddleTestimonials";
27
20
 
28
21
  // Templates
29
22
 
30
23
  // Pages
31
24
 
32
- //
25
+ // SEO
33
26
  export * from "./PaddleSEO";
34
27
 
35
- // TODO: test
28
+ // TODO: test v.1.1
36
29
  // Types
37
30
  export * from "./types/ticket-types";
38
31
  export * from "./types/location-card-types";
@@ -4,14 +4,20 @@
4
4
 
5
5
  @import "variables";
6
6
  @import "body";
7
+ @import "typography";
8
+ @import "nav";
7
9
  @import "layout";
8
10
  @import "cards";
9
11
  @import "media";
10
12
  @import "color";
11
- @import "typography";
13
+ @import "panels";
12
14
  @import "links";
13
15
  @import "buttons";
14
16
  @import "lists";
15
17
  @import "tables";
16
18
  @import "visibility";
17
19
  @import "a11y";
20
+
21
+ /* TODO: v1.2 safari is showing some unuised css results lets stay away from that for a minute and try a little chrome maybe theres a bug */
22
+
23
+ @import "astro";
@@ -0,0 +1,30 @@
1
+ /* straight pull for menu so its going to take a bunch of work but this keeps everything sperate */
2
+
3
+ .menu-button {
4
+ background-color: hotpink !important;
5
+
6
+ /* ? I might do this in js as well as a secondary so I can use */
7
+ @media (min-width: 20rem) {
8
+ background-color: blue !important;
9
+ display: none;
10
+ }
11
+ }
12
+
13
+ #menu-content {
14
+ /* background-color: hotpink; */
15
+ @media (min-width: 20rem) {
16
+ background-color: lime;
17
+ }
18
+
19
+ .nav-items {
20
+ display: flex;
21
+ flex-direction: column;
22
+ align-items: center;
23
+ justify-content: center;
24
+ width: 100%;
25
+
26
+ /* @media (min-width: 20rem) {
27
+ flex-direction: row;
28
+ } */
29
+ }
30
+ }
@@ -2,23 +2,30 @@
2
2
  /* #BUTTONS */
3
3
  /*------------------------------------*/
4
4
 
5
- /* TODO: variables */
6
5
  button,
7
6
  .button,
8
7
  .book-now {
9
- background: none;
10
8
  border-radius: var(--card-radius);
11
9
  padding: var(--kosciuszko) var(--vinson);
12
10
  font-size: var(--vinson);
13
11
  cursor: pointer;
14
12
  margin-block-end: var(--elbrus);
15
13
  transition: var(--slow);
16
- display: block;
14
+ display: inline-block;
17
15
  line-height: var(--kilimanjaro);
18
16
  text-decoration: none;
19
17
  width: max-content;
20
- border: 1px solid;
18
+ text-align: center;
21
19
  box-shadow: var(--penumbra);
20
+ background-color: var(--neutral-200);
21
+ border: 1px solid var(--neutral-100);
22
+
23
+ @media (prefers-color-scheme: dark) {
24
+ /* background-color: var(--neutral-600); not enough*/
25
+ background-color: var(--neutral-600);
26
+ border-color: var(--neutral-500);
27
+ color: var(--neutral-100);
28
+ }
22
29
  }
23
30
 
24
31
  button:hover,
@@ -26,17 +33,184 @@ button:hover,
26
33
  /* below is for the storyboard showcase */
27
34
  .button__hover {
28
35
  box-shadow: var(--antumbra);
36
+
37
+ @media (prefers-color-scheme: dark) {
38
+ background-color: var(--neutral-500);
39
+ border-color: var(--neutral-500);
40
+ color: var(--neutral-200);
41
+ }
29
42
  }
30
43
 
31
44
  .button__active,
45
+ .button:active,
32
46
  button:active {
33
47
  box-shadow: var(--umbra);
48
+
49
+ @media (prefers-color-scheme: dark) {
50
+ background-color: var(--neutral-400);
51
+ border-color: var(--neutral-200);
52
+ color: var(--neutral-500);
53
+ }
34
54
  }
35
55
 
36
56
  .book-now {
37
- margin-block-start: var(--kosciuszko);
38
- text-align: center;
39
- display: inline-block; /* same as a button */
57
+ margin-block-start: var(
58
+ --kosciuszko
59
+ ); /* why is this different than a regular button */
60
+ background-color: var(--neutral-800);
61
+ border-color: var(--neutral-700);
62
+ color: var(--neutral-300);
63
+
64
+ @media (prefers-color-scheme: dark) {
65
+ background-color: var(--neutral-200);
66
+ border-color: var(--neutral-100);
67
+ color: var(--neutral-800);
68
+ }
69
+ }
70
+
71
+ .book-now:hover,
72
+ .book-now__hover {
73
+ background-color: var(--neutral-500);
74
+ border-color: var(--neutral-600);
75
+ color: var(--neutral-200);
76
+
77
+ @media (prefers-color-scheme: dark) {
78
+ background-color: var(--neutral-300);
79
+ border-color: var(--neutral-200);
80
+ color: var(--neutral-700);
81
+ }
82
+ }
83
+
84
+ .book-now:active,
85
+ .book-now__active {
86
+ background-color: var(--neutral-400);
87
+ border-color: var(--neutral-400);
88
+ color: var(--neutral-100);
89
+
90
+ @media (prefers-color-scheme: dark) {
91
+ background-color: var(--neutral-300);
92
+ border-color: var(--neutral-300);
93
+ color: var(--neutral-600);
94
+ }
95
+ }
96
+
97
+ /*------------------------------------*/
98
+ /* #TAHOE CITY */
99
+ /*------------------------------------*/
100
+
101
+ .tahoe-city {
102
+ button,
103
+ .button {
104
+ /* * reverts to clean dark scheme */
105
+ @media (prefers-color-scheme: light) {
106
+ background-color: var(--sand-200);
107
+ border-color: var(--sand-100);
108
+ color: var(--neutral-600);
109
+ }
110
+ }
111
+
112
+ button:hover,
113
+ .button:hover,
114
+ .button__hover {
115
+ @media (prefers-color-scheme: light) {
116
+ background-color: var(--sand-300);
117
+ border-color: var(--sand-200);
118
+ color: var(--neutral-700);
119
+ }
120
+ }
121
+
122
+ button:active,
123
+ .button:active,
124
+ .button__active {
125
+ @media (prefers-color-scheme: light) {
126
+ background-color: var(--sand-400);
127
+ border-color: var(--sand-300);
128
+ color: var(--neutral-800);
129
+ }
130
+ }
131
+
132
+ /* BOOK NOW */
133
+ .book-now {
134
+ background-color: var(--tanager-200);
135
+ border-color: var(--tanager-100);
136
+ color: var(--neutral-100);
137
+ }
138
+
139
+ @media (prefers-color-scheme: dark) {
140
+ }
141
+
142
+ .book-now:hover,
143
+ .book-now__hover {
144
+ background-color: var(--tanager-300);
145
+ border-color: var(--tanager-200);
146
+ color: var(--neutral-200);
147
+ }
148
+
149
+ .book-now:active,
150
+ .book-now__active,
151
+ button:active {
152
+ background-color: var(--tanager-400);
153
+ border-color: var(--tanager-300);
154
+ color: var(--neutral-300);
155
+ }
156
+ }
157
+
158
+ /*------------------------------------*/
159
+ /* #SOUTH TAHOE */
160
+ /*------------------------------------*/
161
+
162
+ .south-tahoe {
163
+ button,
164
+ .button {
165
+ background-color: var(--lake-200);
166
+ border-color: var(--lake-100);
167
+ color: var(--cloud-color);
168
+ }
169
+
170
+ @media (prefers-color-scheme: dark) {
171
+ button,
172
+ .button {
173
+ background-color: var(--lake-600);
174
+ border-color: var(--lake-700);
175
+ color: var(--lake-100);
176
+ }
177
+ }
178
+
179
+ button:hover,
180
+ .button__hover,
181
+ .button:hover {
182
+ background-color: var(--lake-400);
183
+ border-color: var(--lake-400);
184
+ color: var(--lake-700);
185
+ }
186
+
187
+ .button__active {
188
+ background-color: var(--lake-400);
189
+ border-color: var(--lake-500);
190
+ /* this goes passed the 400 / 500 dark light split Im not sure if I want to change it */
191
+ /* maybe it needs a very occasional 450 */
192
+ color: var(--lake-800);
193
+ }
194
+
195
+ .book-now {
196
+ background-color: var(--lake-200);
197
+ border-color: var(--lake-100);
198
+ color: var(--lake-600);
199
+ }
200
+
201
+ .book-now:hover,
202
+ .book-now__hover {
203
+ background-color: var(--lake-300);
204
+ border-color: var(--lake-200);
205
+ color: var(--lake-700);
206
+ }
207
+
208
+ .book-now:active,
209
+ .book-now__active {
210
+ background-color: var(--lake-400);
211
+ border-color: var(--lake-300);
212
+ color: var(--lake-800);
213
+ }
40
214
  }
41
215
 
42
216
  /*------------------*/
@@ -49,17 +223,14 @@ menu button {
49
223
 
50
224
  /*------------------------------------*/
51
225
 
52
- .button__double {
226
+ .multi_button {
53
227
  display: flex;
54
228
  align-items: center;
55
229
  gap: var(--denali);
56
230
  }
57
231
 
58
- .buttonGroup {
59
- display: flex;
60
- flex-flow: row wrap;
61
- gap: var(--vinson);
62
- margin-block-end: var(--baseline);
232
+ .multi_button-center {
233
+ justify-content: center;
63
234
  }
64
235
 
65
236
  /*------------------------------------*/
@@ -9,9 +9,8 @@
9
9
  grid-template-columns: repeat(auto-fill, minmax(var(--condor), 1fr));
10
10
  }
11
11
 
12
- /* TODO: needs sub-grid */
13
- .card,
14
- .ticket {
12
+ /* TODO: v1.2 I think this may have already be removed by check it properly before deleteing it card is becoming purchase and splitting more */
13
+ .card {
15
14
  padding: 0;
16
15
  display: flex;
17
16
  flex-direction: column;
@@ -72,16 +71,12 @@
72
71
  text-transform: uppercase;
73
72
  }
74
73
 
75
- p {
76
- margin-inline: var(--kosciuszko);
77
- }
78
-
79
74
  hr {
80
75
  margin-inline: var(--kosciuszko);
81
76
  }
82
77
 
83
78
  img {
84
- max-width: 100%;
79
+ width: 100%;
85
80
  }
86
81
 
87
82
  .card__details {
@@ -134,7 +129,7 @@
134
129
  text-decoration: underline;
135
130
  }
136
131
 
137
- /* TODO: this could use more */
132
+ /* TODO: v1.2 this could use more */
138
133
  img {
139
134
  filter: brightness(80%);
140
135
  }
@@ -159,6 +154,28 @@
159
154
  }
160
155
  }
161
156
 
157
+ .ticket img {
158
+ aspect-ratio: 16 / 9;
159
+ }
160
+
161
+ .south-tahoe .ticket {
162
+ background-color: var(--lake-200);
163
+ border: 1px solid var(--lake-300);
164
+ box-shadow: var(--penumbra);
165
+ color: var(--lake-600);
166
+
167
+ @media (prefers-color-scheme: dark) {
168
+ background-color: var(--lake-700);
169
+ border-color: var(--lake-600);
170
+ /* box-shadow: var(--penumbra--dark); */
171
+ color: var(--lake-200);
172
+
173
+ a:not(.book-now) {
174
+ color: var(--lake-200);
175
+ }
176
+ }
177
+ }
178
+
162
179
  /*------------------*/
163
180
  /* #RETAIL LOGO */
164
181
  /*------------------*/
@@ -184,3 +201,68 @@
184
201
  margin-block-end: var(--kosciuszko);
185
202
  }
186
203
  }
204
+
205
+ /*------------------------------------*/
206
+ /* #TICKET */
207
+ /*------------------------------------*/
208
+
209
+ .flight {
210
+ margin-block-end: var(--aconcagua);
211
+
212
+ display: grid;
213
+
214
+ /* * iPhone size breaks without this */
215
+ grid-template-columns: 1fr;
216
+
217
+ /* * guess and check */
218
+ @media (min-width: 29rem) {
219
+ grid-template-columns: repeat(auto-fill, minmax(var(--condor), 1fr));
220
+ }
221
+ }
222
+
223
+ .flight:empty {
224
+ display: none;
225
+ }
226
+
227
+ .ticket {
228
+ /* display: flex; */
229
+ width: 100%;
230
+ background-color: var(--neutral-100);
231
+ border: 1px solid white;
232
+
233
+ @media (prefers-color-scheme: dark) {
234
+ background-color: var(--neutral-800);
235
+ border-color: var(--neutral-600);
236
+ }
237
+
238
+ img {
239
+ width: 100%;
240
+ }
241
+
242
+ > a {
243
+ display: block;
244
+ }
245
+
246
+ p {
247
+ margin-inline: var(--vinson);
248
+ }
249
+
250
+ .ticket__header,
251
+ .ticket__money,
252
+ .ticket__specs {
253
+ display: flex;
254
+ flex-flow: row wrap;
255
+ justify-content: space-between;
256
+ align-items: baseline;
257
+ gap: var(--vinson);
258
+ }
259
+
260
+ .ticket__header,
261
+ .ticket__specs {
262
+ padding-inline: var(--vinson);
263
+ }
264
+ }
265
+
266
+ /* .south-tahoe .ticket {
267
+ }
268
+ */