@rileybathurst/paddle 1.0.8 → 1.0.10

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.8",
4
+ "version": "1.0.10",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -26,6 +26,7 @@
26
26
  "@biomejs/biome": "2.0.2",
27
27
  "@chromatic-com/storybook": "^4.0.0",
28
28
  "@faker-js/faker": "^9.8.0",
29
+ "@storybook/addon-a11y": "^9.0.13",
29
30
  "@storybook/addon-docs": "^9.0.11",
30
31
  "@storybook/addon-links": "^9.0.11",
31
32
  "@storybook/addon-themes": "^9.0.11",
@@ -55,4 +56,4 @@
55
56
  "overrides": {
56
57
  "storybook": "$storybook"
57
58
  }
58
- }
59
+ }
@@ -0,0 +1,18 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { Badges } from './Badges';
4
+
5
+ const meta = {
6
+ component: Badges,
7
+ title: 'Atoms/Badges',
8
+ args: {},
9
+ } satisfies Meta<typeof Badges>;
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const Primary: Story = {
15
+ args: {
16
+ primary: true,
17
+ },
18
+ };
package/src/Badges.tsx ADDED
@@ -0,0 +1,33 @@
1
+ // this is the Name.tsx file
2
+ import { faker } from '@faker-js/faker/locale/zu_ZA';
3
+ import React from 'react';
4
+
5
+ interface NameTypes {
6
+ name: string;
7
+ }
8
+ const Name = ({ name }: NameTypes) => {
9
+ return (
10
+ <div className="badge">
11
+ <h5 className="capitalize">{name}</h5>
12
+ </div>
13
+ );
14
+ }
15
+
16
+ export const Badges = () => {
17
+ // TODO: deal with multiple
18
+
19
+ // Discount
20
+ if (faker.datatype.boolean()) {
21
+ return (
22
+ <div className="badge">
23
+ <h5 className="capitalize">{faker.number.int({ min: 1, max: 100 })}% off</h5>
24
+ </div>
25
+ );
26
+ }
27
+
28
+ if (faker.datatype.boolean()) {
29
+ return <Name name={faker.helpers.arrayElement(['inflatable', 'demo', faker.airline.airline().name])} />;
30
+ }
31
+
32
+ return null;
33
+ };
@@ -0,0 +1,18 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { Bag } from './Bag';
4
+
5
+ const meta = {
6
+ component: Bag,
7
+ title: 'Organisms/Bag',
8
+ args: {},
9
+ } satisfies Meta<typeof Bag>;
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const Primary: Story = {
15
+ args: {
16
+ primary: true,
17
+ },
18
+ };
package/src/Bag.tsx ADDED
@@ -0,0 +1,14 @@
1
+ // this is the Name.tsx file
2
+ import React from "react";
3
+ import { faker } from "@faker-js/faker";
4
+ import { Purchase } from "./Purchase";
5
+
6
+ export const Bag = () => {
7
+ return (
8
+ <div className="bag">
9
+ {Array.from({ length: faker.number.int({ min: 1, max: 10 }) }).map(() => (
10
+ <Purchase key={faker.string.uuid()} />
11
+ ))}
12
+ </div>
13
+ );
14
+ };
@@ -18,11 +18,11 @@ type PlaceTypes = {
18
18
  const Place = ({ commonName, streetAddress, addressLocality, addressRegion, postalCode }: PlaceTypes) => {
19
19
  return (
20
20
  <address>
21
- {commonName ? commonName : null}
22
- {streetAddress ? streetAddress : null}
23
- {addressLocality ? addressLocality : null}
24
- {addressRegion ? addressRegion : null}
25
- {postalCode ? postalCode : null}
21
+ {commonName ? (<>{commonName},&nbsp;</>) : null},&nbsp;
22
+ {streetAddress ? (<>{streetAddress},&nbsp;</>) : null}
23
+ {addressLocality ? (<>{addressLocality},&nbsp;</>) : null}
24
+ {addressRegion ? (<>{addressRegion},&nbsp;</>) : null}
25
+ {postalCode ? (<>{postalCode},&nbsp;</>) : null}
26
26
  </address>
27
27
  )
28
28
  }
@@ -62,13 +62,9 @@ const Season = ({
62
62
  return (
63
63
  <p>
64
64
  {opening_time ? "Open Daily: " : null}
65
- <br />
66
65
  {opening_time && closing_time ? (
67
- <span>
68
- <HourMin time={opening_time} /> - <HourMin time={closing_time} />
69
- </span>
66
+ <><HourMin time={opening_time} /> - <HourMin time={closing_time} />&nbsp;</>
70
67
  ) : null}
71
- <br />
72
68
  Weather Permitting
73
69
  </p>
74
70
  );
@@ -80,13 +76,7 @@ const Season = ({
80
76
  <p>We&apos;re closed for the season</p>
81
77
 
82
78
  {currentDay < seasonStartDate ? (
83
- <p>
84
- We will reopen
85
- <br />
86
- {season_start}
87
- <br />
88
- Weather Permitting
89
- </p>
79
+ <p>We will reopen {season_start}, Weather Permitting</p>
90
80
  ) : null}
91
81
 
92
82
  {offSeasonDetails ? <p>{offSeasonDetails}</p> : null}
@@ -1,23 +1,25 @@
1
- import * as React from "react"
2
- import PaddleRemainder from "./paddle-remainder.tsx"
1
+ import * as React from "react";
2
+ import PaddleRemainder from "./paddle-remainder.tsx";
3
3
 
4
4
  interface SpecsTypes {
5
- [key: string]: string | number | {
6
- [key: string]: string | number[];
7
- };
5
+ [key: string]:
6
+ | string
7
+ | number
8
+ | {
9
+ [key: string]: string | number[];
10
+ };
8
11
  }
9
12
  // * moving the section tag to the parent component means you can loop yourself
10
13
  export const PaddleSpecs = (specs: SpecsTypes) =>
11
14
  // <section className='specs'>
12
15
  Object.entries(specs).map(([key, value]) => {
13
-
14
16
  // console.log(key, value);
15
17
 
16
18
  if (!value) {
17
19
  return null;
18
20
  }
19
21
 
20
- if (key === 'time' && typeof value === 'object') {
22
+ if (key === "time" && typeof value === "object") {
21
23
  return (
22
24
  <div key={key} className="spec">
23
25
  <h2>{value.value}</h2>
@@ -28,22 +30,22 @@ export const PaddleSpecs = (specs: SpecsTypes) =>
28
30
  // * I cant remeber others yet
29
31
  }
30
32
 
31
- if (key === 'cost' && typeof value === 'object' && value.discount) {
32
-
33
- const amount = Number(value.price) - (Number(value.discount) * (Number(value.price) / 100)) as number;
33
+ if (key === "cost" && typeof value === "object" && value.discount) {
34
+ const amount = (Number(value.price) -
35
+ Number(value.discount) * (Number(value.price) / 100)) as number;
34
36
 
35
37
  return (
36
38
  <>
37
39
  {/* // TODO: add color */}
38
40
  <div className="spec">
39
- <h2><del>Original Price</del></h2>
41
+ <h2>
42
+ <del>Original Price</del>
43
+ </h2>
40
44
  <h3>
41
- <del>
42
- ${value.price}
43
- </del>
45
+ <del>${value.price}</del>
44
46
  </h3>
45
47
  </div>
46
- <div className="spec ruby">
48
+ <div className="spec">
47
49
  <h2>Sale Price</h2>
48
50
  {value.discount}% off
49
51
  <h3>${amount}</h3>
@@ -54,22 +56,28 @@ export const PaddleSpecs = (specs: SpecsTypes) =>
54
56
 
55
57
  /* I didnt know you could call yourself like this */
56
58
  /* I guess its not a infinite loop as its not calling an object */
57
- if (typeof value === 'object') {
58
- return (
59
- <PaddleSpecs {...value} />
60
- );
59
+ if (typeof value === "object") {
60
+ return <PaddleSpecs {...value} />;
61
61
  }
62
62
 
63
63
  return (
64
64
  <div key={key} className="spec">
65
65
  <h2>{key}</h2>
66
66
  <h3>
67
- {key === 'price' ? <span className="spec__unit">$</span> : null}
68
- {key === 'length' && typeof value === 'number' ? <PaddleRemainder inches={value} /> : value}
69
- {key === 'hullweight' || key === 'riggedweight' ? <span className="spec__unit">lbs</span> : null}
70
- {key === 'width' || key === 'length' || key === 'capacity' ? <span className="spec__unit">"</span> : null}
67
+ {key === "price" ? <span className="spec__unit">$</span> : null}
68
+ {key === "length" && typeof value === "number" ? (
69
+ <PaddleRemainder inches={value} />
70
+ ) : (
71
+ value
72
+ )}
73
+ {key === "hullweight" || key === "riggedweight" ? (
74
+ <span className="spec__unit">lbs</span>
75
+ ) : null}
76
+ {key === "width" || key === "length" || key === "capacity" ? (
77
+ <span className="spec__unit">"</span>
78
+ ) : null}
71
79
  </h3>
72
80
  </div>
73
- )
74
- })
75
- // </section>
81
+ );
82
+ });
83
+ // </section>
@@ -0,0 +1,18 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { Purchase } from './Purchase';
4
+
5
+ const meta = {
6
+ component: Purchase,
7
+ title: 'Molecules/Purchase',
8
+ args: {},
9
+ } satisfies Meta<typeof Purchase>;
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const Primary: Story = {
15
+ args: {
16
+ primary: true,
17
+ },
18
+ };
@@ -0,0 +1,51 @@
1
+ // Retail Card
2
+ import React from "react";
3
+ // import { GatsbyImage } from 'gatsby-plugin-image';
4
+ import { faker } from "@faker-js/faker";
5
+ import { Badges } from "./Badges";
6
+ // import { Badges } from './Badges';
7
+ // import { Remainder } from './Remainder';
8
+ // import { useRetailContext } from '../context/RetailContext';
9
+ import { TextureBackgrounds } from "./TextureBackgrounds";
10
+
11
+ export const Purchase = () => {
12
+ return (
13
+ <article key={faker.string.uuid()} className="purchase">
14
+ {/* // This is currently a wrapper and not used */}
15
+ <div className="purchase-collage">
16
+ <TextureBackgrounds />
17
+ <a href={faker.music.songName()} className="image-link">
18
+ {/* <GatsbyImage
19
+ image={cutout?.localFile?.childImageSharp?.gatsbyImageData}
20
+ alt={cutout?.alternativeText || `${title} by ${brand.slug}`}
21
+ className="cutout"
22
+ objectFit="contain"
23
+ // TODO: this has been causing some problems but keep an eye on it
24
+ /> */}
25
+ </a>
26
+
27
+ <Badges
28
+ // inflatable={faker.datatype.boolean()}
29
+ // demo={faker.datatype.boolean()}
30
+ // discount={faker.datatype.boolean() ? faker.number.int({ min: 1, max: 100 }) : undefined}
31
+ />
32
+ </div>
33
+ <h4 className="purchase__title">
34
+ <a href={faker.music.songName()}>{faker.music.album()}</a>
35
+ </h4>
36
+ <hr />
37
+ {/* // ? I think this is too long */}
38
+ <p>{faker.lorem.paragraph()}</p>
39
+ <hr />
40
+ <div className="purchase__details">
41
+ <h4>
42
+ {/* <Remainder inches={length} /> */}
43
+ long by {faker.number.int({ min: 1, max: 100 })}" wide
44
+ </h4>
45
+ <h5 className="capitalize">
46
+ Capacity {faker.number.int({ min: 1, max: 100 })}&thinsp;lbs
47
+ </h5>
48
+ </div>
49
+ </article>
50
+ );
51
+ };
@@ -0,0 +1,18 @@
1
+ // this is the Name.stories.tsx file
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { TextureBackgrounds } from './TextureBackgrounds';
4
+
5
+ const meta = {
6
+ component: TextureBackgrounds,
7
+ title: 'Atoms/TextureBackgrounds',
8
+ args: {},
9
+ } satisfies Meta<typeof TextureBackgrounds>;
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const Primary: Story = {
15
+ args: {
16
+ primary: true,
17
+ },
18
+ };
@@ -0,0 +1,31 @@
1
+ // this is the Name.tsx file
2
+ import React from "react";
3
+ import { faker } from "@faker-js/faker";
4
+
5
+ export const TextureBackgrounds = () => {
6
+ return (
7
+ <>
8
+ <img
9
+ src={faker.image.dataUri()}
10
+ className="texture-slice crop"
11
+ alt="top texture"
12
+ />
13
+ <img
14
+ src={faker.image.dataUri()}
15
+ className="texture-slice"
16
+ alt="bottom texture"
17
+ />
18
+ <svg viewBox="0 0 1200 630" xmlns="http://www.w3.org/2000/svg">
19
+ <title>Diagonal line decoration</title>
20
+ <line
21
+ x1="0"
22
+ y1="630"
23
+ x2="1200"
24
+ y2="0"
25
+ // only color the stroke in css so it has dark mode
26
+ strokeWidth="3"
27
+ />
28
+ </svg>
29
+ </>
30
+ );
31
+ };
@@ -1,4 +1,4 @@
1
- /* straight pull for menu so its going to take a bunch of work but this keeps everything sperate */
1
+ /* TODO: Not in use yet straight pull for menu so its going to take a bunch of work but this keeps everything sperate */
2
2
 
3
3
  .menu-button {
4
4
  background-color: hotpink !important;
@@ -1,16 +1,20 @@
1
1
  /*------------------*/
2
- /* #CARDS */
2
+ /* #CARDS / PURCHASE / TICKET */
3
3
  /*------------------*/
4
4
 
5
- .deck {
5
+ /* was deck */
6
+ .bag {
6
7
  margin-block-end: var(--aconcagua);
7
8
 
8
9
  display: grid;
9
10
  grid-template-columns: repeat(auto-fill, minmax(var(--condor), 1fr));
11
+
12
+ /* TODO: clamp */
13
+ gap: var(--kosciuszko);
10
14
  }
11
15
 
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 {
16
+ /* was card */
17
+ .purchase {
14
18
  padding: 0;
15
19
  display: flex;
16
20
  flex-direction: column;
@@ -19,12 +23,58 @@
19
23
  border-radius: var(--card-radius);
20
24
  /* needed to control nested elements */
21
25
  text-decoration: none;
26
+ box-shadow: var(--penumbra);
27
+
28
+ background-color: white;
22
29
 
23
- .card__placeholder {
24
- max-height: 5rem;
25
- border: none;
26
- border-radius: 0;
27
- margin-block-end: var(--kilimanjaro);
30
+ .purchase-collage {
31
+ display: grid;
32
+ width: 100%;
33
+
34
+ > * {
35
+ grid-row: 1;
36
+ grid-column: 1;
37
+ }
38
+
39
+ .texture-slice {
40
+ width: calc(100% - var(--elbrus));
41
+ aspect-ratio: 16/9;
42
+ height: 100%;
43
+ align-self: center;
44
+ margin: calc(var(--elbrus) / 2);
45
+ border-radius: 0.25rem;
46
+ box-shadow: var(--penumbra);
47
+ border: 1px solid whitesmoke;
48
+ stroke: whitesmoke;
49
+
50
+ @media (prefers-color-scheme: dark) {
51
+ border-color: var(--black-metal);
52
+ stroke: var(--black-metal);
53
+ }
54
+ }
55
+
56
+ .cutout {
57
+ object-fit: contain;
58
+ place-self: center;
59
+ /* box-shadow: var(--umbra); */
60
+ z-index: 2; /* TODO: variable */
61
+ grid-row: 1/1;
62
+ filter: drop-shadow(5px 5px 5px var(--black-out));
63
+ aspect-ratio: 16/9;
64
+ width: 100%;
65
+ }
66
+
67
+ svg {
68
+ z-index: 1; /* TODO: variable */
69
+ max-height: 100%; /* overwrite the default */
70
+ margin: calc(var(--elbrus) / 2);
71
+ width: calc(100% - var(--elbrus));
72
+ stroke: whitesmoke;
73
+
74
+ @media (prefers-color-scheme: dark) {
75
+ stroke: var(--black-metal);
76
+ }
77
+ }
28
78
  }
29
79
 
30
80
  .image-link {
@@ -37,49 +87,21 @@
37
87
  transform: scale(1.05);
38
88
  }
39
89
 
40
- .card__image {
41
- margin-block-end: var(--kilimanjaro);
42
- transition: var(--fade);
43
- }
44
-
45
- .card__image:where(:hover, :focus) {
46
- filter: brightness(80%);
47
- }
48
-
49
- .card__title {
90
+ .purchase__title {
50
91
  font-size: var(--denali);
51
92
  margin-inline: var(--kosciuszko);
52
93
  line-height: var(--aconcagua);
53
94
  }
54
95
 
55
- .card__specs {
56
- width: calc(100% - var(--kilimanjaro));
57
- display: flex;
58
- flex-flow: row wrap;
59
- align-items: baseline;
60
- justify-content: space-between;
61
- margin-inline: var(--kosciuszko);
62
- margin-block-end: var(--elbrus);
63
-
64
- > * {
65
- margin: 0; /* reset */
66
- }
67
- }
68
-
69
- .card__span {
70
- font-size: var(--vinson);
71
- text-transform: uppercase;
72
- }
73
-
74
- hr {
96
+ hr, p {
75
97
  margin-inline: var(--kosciuszko);
76
98
  }
77
99
 
78
- img {
100
+ /* img {
79
101
  width: 100%;
80
- }
102
+ } */
81
103
 
82
- .card__details {
104
+ .purchase__details {
83
105
  display: flex;
84
106
  gap: var(--vinson);
85
107
  width: calc(100% - var(--kilimanjaro));
@@ -109,10 +131,14 @@
109
131
 
110
132
  .badge {
111
133
  z-index: var(--floor);
112
- place-self: start;
134
+ justify-self: end;
135
+ align-self: start;
113
136
  padding: var(--kosciuszko);
114
137
  margin: var(--kosciuszko);
115
138
  border-radius: var(--card-radius);
139
+
140
+ background-color: var(--neutral-200);
141
+ border: 1px solid var(--neutral-100);
116
142
  opacity: 0.9;
117
143
 
118
144
  h5 {
@@ -123,7 +149,17 @@
123
149
  }
124
150
  }
125
151
 
126
- .card:hover,
152
+ .tahoe-city .purchase {
153
+ background-color: var(--sand-100);
154
+
155
+ hr {
156
+ border-color: var(--sand-400);
157
+ }
158
+ }
159
+
160
+ /* south-tahoe currently does not have a purchase */
161
+
162
+ .purchase:hover,
127
163
  .ticket:hover {
128
164
  p {
129
165
  text-decoration: underline;
@@ -135,15 +171,11 @@
135
171
  }
136
172
  }
137
173
 
138
- .deck:empty {
174
+ .bag:empty {
139
175
  display: none;
140
176
  }
141
177
 
142
- .deck__column {
143
- grid-template-columns: 1fr;
144
- }
145
-
146
- .deck__more {
178
+ .bag__more {
147
179
  max-width: var(--pelican);
148
180
  margin-inline: auto;
149
181
  padding-inline: var(--kosciuszko);
@@ -154,28 +186,6 @@
154
186
  }
155
187
  }
156
188
 
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
-
179
189
  /*------------------*/
180
190
  /* #RETAIL LOGO */
181
191
  /*------------------*/
@@ -237,6 +247,7 @@
237
247
 
238
248
  img {
239
249
  width: 100%;
250
+ aspect-ratio: 16 / 9;
240
251
  }
241
252
 
242
253
  > a {
@@ -263,6 +274,20 @@
263
274
  }
264
275
  }
265
276
 
266
- /* .south-tahoe .ticket {
267
- }
268
- */
277
+ .south-tahoe .ticket {
278
+ background-color: var(--lake-200);
279
+ border: 1px solid var(--lake-300);
280
+ box-shadow: var(--penumbra);
281
+ color: var(--lake-600);
282
+
283
+ @media (prefers-color-scheme: dark) {
284
+ background-color: var(--lake-700);
285
+ border-color: var(--lake-600);
286
+ /* box-shadow: var(--penumbra--dark); */
287
+ color: var(--lake-200);
288
+
289
+ a:not(.book-now) {
290
+ color: var(--lake-200);
291
+ }
292
+ }
293
+ }
@@ -25,6 +25,13 @@ body:has(#storybook-root) {
25
25
  }
26
26
  }
27
27
 
28
+ body .tahoe-city {
29
+ @media (prefers-color-scheme: dark) {
30
+ background-color: var(--navy-300);
31
+ color: var(--brilliance);
32
+ }
33
+ }
34
+
28
35
  body .south-tahoe {
29
36
  @media (prefers-color-scheme: dark) {
30
37
  background-color: var(--lake-800);
@@ -71,3 +78,11 @@ body .south-tahoe {
71
78
  color: var(--neutral-200);
72
79
  }
73
80
  }
81
+
82
+ /*------------------------------------*/
83
+ /* #SPECS */
84
+ /*------------------------------------*/
85
+
86
+ .specs h2, .specs .spec__unit {
87
+ color: grey;
88
+ }
@@ -17,6 +17,7 @@ main,
17
17
  footer,
18
18
  .react-aria-Breadcrumbs,
19
19
  .deck,
20
+ .bag,
20
21
  .flight {
21
22
  margin-inline: auto;
22
23
  padding-inline: var(--kosciuszko);
@@ -54,6 +55,7 @@ main,
54
55
  .albatross,
55
56
  footer,
56
57
  .deck,
58
+ .bag,
57
59
  .flight,
58
60
  .react-aria-Breadcrumbs {
59
61
  max-width: min(var(--albatross), calc(100vw - var(--denali)));
@@ -404,7 +406,6 @@ header {
404
406
  grid-column: 3;
405
407
  grid-row: 2;
406
408
  aspect-ratio: 1;
407
- border: none;
408
409
  box-shadow: none;
409
410
  margin-block: 1rem;
410
411
  border-radius: 50%;
@@ -446,3 +447,45 @@ header {
446
447
  height: auto;
447
448
  }
448
449
  }
450
+
451
+ /*------------------*/
452
+ /* #SPECS */
453
+ /*------------------*/
454
+
455
+ .spec {
456
+ display: flex;
457
+ gap: 1rem;
458
+ flex-flow: row wrap;
459
+ justify-content: space-between;
460
+ align-items: baseline;
461
+ align-items: flex-start;
462
+ /* addding this border has to flip the margins */
463
+ border-block-start: 1px solid var(--tin-soldier);
464
+ text-transform: uppercase;
465
+
466
+ height: 2lh;
467
+ margin-block-start: 1lh;
468
+ @supports not (margin: 1lh) {
469
+ height: 2.5rem;
470
+ margin-block-start: 1.25rem;
471
+ }
472
+
473
+ h2,
474
+ h3 {
475
+ line-height: 2rem;
476
+ margin-block-end: 0.25rem;
477
+ }
478
+
479
+ .spec-flex {
480
+ display: flex;
481
+ }
482
+ }
483
+
484
+ /* bug fix that maybe could be done with .sr-only being different but this works */
485
+ .spec:has(.sr-only) {
486
+ align-items: center;
487
+ }
488
+
489
+ .spec:last-child {
490
+ border-bottom: none;
491
+ }
@@ -14,7 +14,7 @@ a:where(:hover, :focus) {
14
14
 
15
15
  /* this is getting too big and complex try go the other way for what it is */
16
16
  .tahoe-city a:not(.social a):not(button):not(.button):not(.book-now) {
17
- color: var(--ruby-100);
17
+ color: var(--tanager-100);
18
18
  }
19
19
 
20
20
  .south-tahoe a {
@@ -17,6 +17,7 @@ ul {
17
17
  }
18
18
 
19
19
  ol {
20
+ margin-block-start: 0;
20
21
  li {
21
22
  display: inline flow-root list-item;
22
23
  margin-block-end: var(--baseline);
@@ -70,7 +71,8 @@ ol {
70
71
  display: flex;
71
72
  flex-flow: row wrap;
72
73
  gap: 1rem;
73
- align-items: center;
74
+ align-items: baseline;
75
+ justify-content: space-between;
74
76
  }
75
77
 
76
78
  /*------------------*/
@@ -176,7 +178,8 @@ ol {
176
178
 
177
179
  svg {
178
180
  transition: var(--fade);
179
- margin: var(--baseline);
181
+ margin-block: var(--baseline);
182
+ margin-inline: auto;
180
183
  min-width: 3rem; /* guess and check */
181
184
 
182
185
  @media (min-width: 20rem) {
@@ -201,18 +204,21 @@ ol {
201
204
 
202
205
  .date-time {
203
206
  display: flex;
204
- flex-flow: column;
207
+ flex-flow: row wrap;
205
208
  gap: 0.5rem;
206
- justify-items: center;
207
- text-align: center;
209
+ place-items: baseline;
208
210
 
209
- .date {
211
+ > * {
212
+ margin: 0;
213
+ padding: 0;
214
+ line-height: 2;
210
215
  width: max-content;
211
216
  }
212
217
 
218
+ /* .date {
219
+ } */
220
+
213
221
  .time {
214
- padding: 0.5rem;
215
222
  border-radius: var(--border-radius);
216
- width: max-content;
217
223
  }
218
224
  }
@@ -26,6 +26,11 @@
26
26
  border-color: white;
27
27
  }
28
28
  }
29
+
30
+ /* * fixes color bleed check the tours page */
31
+ > *:last-child {
32
+ margin-block-end: 0;
33
+ }
29
34
  }
30
35
 
31
36
  .aurora {
@@ -67,7 +67,6 @@ h3,
67
67
 
68
68
  h4,
69
69
  .kilimanjaro,
70
- /* .spec h2 put this inline */
71
70
  .spec h2 {
72
71
  font-size: 1.5rem; /* 24px */
73
72
  line-height: 2rem; /* 32px */
@@ -231,9 +230,12 @@ select {
231
230
  /* #DEL */
232
231
  /*------------------*/
233
232
 
234
- del {
233
+ /* TODO: v1.2 */
234
+ /* I think this is the only place its used but describes why */
235
+ /* .single__description del {
235
236
  color: hsl(var(--sand__base), var(--dim));
236
237
  @media (prefers-color-scheme: dark) {
237
238
  color: hsl(var(--sand__base), var(--dark));
238
239
  }
239
240
  }
241
+ */
@@ -7,11 +7,6 @@
7
7
  /* #COLOR */
8
8
  /*------------------------------------*/
9
9
 
10
- /* TODO: v1.2 swap to tanager and remove */
11
- --ruby-100: hsl(0, 50%, 50%); /* base */
12
- --ruby-200: hsl(0, 50%, 37.5%);
13
- --ruby-300: hsl(0, 50%, 25%);
14
-
15
10
  --sand-100: hsl(25, 37%, 95%);
16
11
  --sand-150: hsl(25, 37%, 92.5%);
17
12
  --sand-200: hsl(25, 37%, 87.5%);
@@ -21,7 +16,7 @@
21
16
  --navy-200: oklch(37.5% 0.07 230);
22
17
  --navy-300: oklch(25% 0.04 230);
23
18
 
24
- @supports not (oklch: 50% 0.09 230) {
19
+ @supports not (color: oklch(50% 0.09 230)) {
25
20
  --navy-100: #1b6c8c;
26
21
  --navy-200: #0a475f;
27
22
  --navy-300: #092531;
@@ -55,7 +50,7 @@
55
50
  --sand-400: oklch(0.88 0.04 50);
56
51
  /* this finishes where 500 normally would go dark */
57
52
 
58
- @supports not (color: oklch(0.55 0.2 25)) {
53
+ @supports not (color: oklch(0.97 0.01 50)) {
59
54
  --sand-100: #fbf3ef;
60
55
  --sand-200: #faebe3;
61
56
  --sand-300: #f6dfd3;
@@ -65,8 +60,9 @@
65
60
  /* South Tahoe */
66
61
  /* Lake */
67
62
 
68
- --lake-100: oklch(99% 0.001 230);
69
- --lake-100: oklch(95% 0.03 230);
63
+ /* ! whats going on with the 2x 100? */
64
+ /* --lake-100: oklch(99% 0.001 230); */
65
+ --lake-100: oklch(94% 0.03 230);
70
66
  --lake-200: oklch(93% 0.04 230);
71
67
  --lake-300: oklch(90% 0.055 230);
72
68
  --lake-400: oklch(83% 0.08 230);