Browse Source

first commit

Matthias Schlich 1 year ago
parent
commit
e4abfd740b

+ 3
- 1
package.json View File

@@ -9,9 +9,11 @@
9 9
     "lint": "next lint"
10 10
   },
11 11
   "dependencies": {
12
+    "cheerio": "^1.0.0-rc.12",
13
+    "next": "14.0.4",
12 14
     "react": "^18",
13 15
     "react-dom": "^18",
14
-    "next": "14.0.4"
16
+    "sass": "^1.69.7"
15 17
   },
16 18
   "devDependencies": {
17 19
     "eslint": "^8",

+ 371
- 0
src/app/Home.scss View File

@@ -0,0 +1,371 @@
1
+$red: #E40521;
2
+$redTrans: rgba(228, 5, 33, 0.8);
3
+$grey: #3C3A42;
4
+$white: #FFFFFF;
5
+$lightgrey: #D9D9D9;
6
+$paginationGrey: #707070;
7
+$footer: #F2F2F2;
8
+
9
+// Breakpoints
10
+
11
+@mixin breakpoint($class) {
12
+    @if $class == xs {
13
+      @media (max-width: 575px) {
14
+        @content;
15
+      }
16
+    } @else if $class == sm {
17
+      @media (min-width: 576px) {
18
+        @content;
19
+      }
20
+    } @else if $class == md {
21
+      @media (min-width: 767px) {
22
+        @content;
23
+      }
24
+    } @else if $class == lg {
25
+      @media (min-width: 992px) {
26
+        @content;
27
+      }
28
+    } @else if $class == xl {
29
+      @media (min-width: 1200px) {
30
+        @content;
31
+      }
32
+    } @else if $class == xxl {
33
+      @media (min-width: 1680px) {
34
+        @content;
35
+      }
36
+    } @else if $class == uhd {
37
+      @media (min-width: 2400px) {
38
+        @content;
39
+      }
40
+    } @else {
41
+      @warn "Breakpoint mixin supports: xs, sm, md, lg, xl, xxl, uhd :" + $class;
42
+    }
43
+  }
44
+  
45
+  // Use breakpoints like this:
46
+  // aside.primary {
47
+  //   float: right;
48
+  //   width: 350px;
49
+  //   @include breakpoint(sm) {
50
+  //     float: none;
51
+  //     width: 100%;
52
+  //   }
53
+  // }
54
+  
55
+  $columns: 12;
56
+  @mixin regular-grid {
57
+    @for $i from 1 through $columns {
58
+      &-#{$i} {
59
+        flex: 0 0 100% / $columns * $i;
60
+      }
61
+    }
62
+  }
63
+  
64
+  @mixin offset-grid {
65
+    @for $i from 1 through $columns {
66
+      &-#{$i} {
67
+        margin-left: 100% / $columns * $i;
68
+      }
69
+    }
70
+  }
71
+  
72
+  .grid {
73
+    display: flex;
74
+    flex-wrap: wrap;
75
+  
76
+    .col {
77
+      &-offset {
78
+        &-xs {
79
+          @include offset-grid;
80
+        }
81
+        &-sm {
82
+          @include breakpoint(sm) {
83
+            @include offset-grid;
84
+            &-reset {
85
+              margin-left: inherit;
86
+            }
87
+          }
88
+        }
89
+        &-md {
90
+          @include breakpoint(md) {
91
+            @include offset-grid;
92
+            &-reset {
93
+              margin-left: inherit;
94
+            }
95
+          }
96
+        }
97
+        &-lg {
98
+          @include breakpoint(lg) {
99
+            @include offset-grid;
100
+            &-reset {
101
+              margin-left: inherit;
102
+            }
103
+          }
104
+        }
105
+        &-xl {
106
+          @include breakpoint(xl) {
107
+            @include offset-grid;
108
+            &-reset {
109
+              margin-left: inherit;
110
+            }
111
+          }
112
+        }
113
+      }
114
+  
115
+      &-xs {
116
+        @include regular-grid;
117
+      }
118
+      &-sm {
119
+        @include breakpoint(sm) {
120
+          @include regular-grid;
121
+        }
122
+      }
123
+      &-md {
124
+        @include breakpoint(md) {
125
+          @include regular-grid;
126
+        }
127
+      }
128
+      &-lg {
129
+        @include breakpoint(lg) {
130
+          @include regular-grid;
131
+        }
132
+      }
133
+      &-xl {
134
+        @include breakpoint(xl) {
135
+          @include regular-grid;
136
+        }
137
+      }
138
+    }
139
+  }
140
+  
141
+
142
+header{
143
+    padding: 1rem 3rem;
144
+
145
+    @media screen and (max-width: 768px){
146
+        display: flex;
147
+        justify-content: center;
148
+        align-items: center;
149
+        
150
+    }
151
+    .logo{
152
+        width: 258px;
153
+        height: auto;
154
+    }
155
+}
156
+
157
+.hero{
158
+    display: flex;
159
+    justify-content: center;
160
+    align-items: center;
161
+    padding: 0 2rem;
162
+
163
+    &__text{
164
+        text-align: center;
165
+        font-family: 'Toyota Type', sans-serif;
166
+        font-weight: 300;
167
+        margin-bottom: 2rem;
168
+
169
+        h2{
170
+            font-size: 2rem;
171
+            font-weight: 700;
172
+        }
173
+        h3{
174
+            font-size: 1.5rem;
175
+            font-weight: 300;
176
+        }
177
+    }
178
+}
179
+
180
+
181
+.guide{
182
+    display: flex;
183
+    height: 66%;
184
+
185
+    @media screen and (max-width: 768px){
186
+        flex-direction: column;
187
+        height: auto;
188
+        
189
+    }
190
+    &__card{
191
+        flex-grow: 1;
192
+        width: 33.3333%;
193
+        position: relative;
194
+
195
+        transition: all 0.5s ease-in-out;
196
+
197
+        @media screen and (max-width: 768px){
198
+            width: 100%;
199
+            
200
+        }
201
+
202
+        img{
203
+            width: 100%;
204
+            height: 100%;
205
+            object-fit: cover;
206
+        }
207
+
208
+        &:hover{
209
+            flex-grow: 6;
210
+            width: 90%;
211
+
212
+            @media screen and (max-width: 768px){
213
+                width: 100%;
214
+                
215
+            }
216
+        }
217
+
218
+        &__text{
219
+            position: absolute;
220
+            bottom: 0;
221
+            left: 0;
222
+            width: 100%;
223
+            padding: 1rem 2rem;
224
+            color: #fff;
225
+            font-size: 1rem;
226
+            font-weight: 300;
227
+            text-transform: uppercase;
228
+            font-family: 'Toyota Type', sans-serif;
229
+            background: linear-gradient(0deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%);
230
+
231
+            h3{
232
+                font-size: 1.5rem;
233
+                font-weight: 700;
234
+                margin-bottom: 1rem;
235
+            }
236
+        }
237
+
238
+        &::after{
239
+            /* a white circle with a chevron pointing right */
240
+            content: '❯';
241
+            position: absolute;
242
+            font-size: 2rem;
243
+            top: 1rem;
244
+            right: 3rem;
245
+            width: 3rem;
246
+            height: 3rem;
247
+            background-color: #fff;
248
+            border-radius: 50%;
249
+            transform: translate(50%, 50%);
250
+            display: flex;
251
+            justify-content: center;
252
+            align-items: center;
253
+            transition: all 0.5s ease-in-out;
254
+
255
+        }
256
+    }
257
+}
258
+
259
+.Footer{
260
+    background-color: $footer;
261
+    padding: 2rem 10vw;
262
+    margin-top: 3rem;
263
+    display: grid;
264
+    grid-template-columns: 1fr;
265
+    grid-template-rows: auto auto auto;
266
+    grid-template-areas: "logo"
267
+                         "navi"
268
+                         "spalte1"
269
+                         "spalte2";
270
+    color: $paginationGrey;
271
+
272
+    @include breakpoint(md) {
273
+        padding: 5rem 10vw;
274
+        grid-template-columns: 1fr 1fr;
275
+        grid-template-rows: auto auto;
276
+        grid-template-areas: "logo navi" "spalte1 spalte2";
277
+    }
278
+
279
+    @include breakpoint(xl) {
280
+        padding: 5rem 10vw;
281
+        grid-template-columns: 230px 2fr 1fr 1fr;
282
+        grid-template-rows: auto;
283
+        grid-template-areas: "logo navi spalte1 spalte2";
284
+    }
285
+
286
+    .logo{
287
+        grid-area: logo;
288
+        width: 230px;
289
+        height: auto;
290
+        text-align: left;
291
+
292
+        @include breakpoint(md) {
293
+            text-align: center;
294
+        }
295
+
296
+        img{
297
+            width: 223px;
298
+        }
299
+
300
+        .copyright{
301
+            font-weight: bold;
302
+            margin-bottom: 2rem;
303
+
304
+
305
+        }
306
+
307
+        .siteLinks a{
308
+            display: block;
309
+            background-color: $red;
310
+            text-transform: uppercase;
311
+            text-decoration: none;
312
+            color:#fff;
313
+            font-size: 0.7rem;
314
+            font-weight: bold;
315
+            text-align: center;
316
+            margin: 0.5rem 0;
317
+
318
+            @include breakpoint(md) {
319
+                margin: 0.5rem;
320
+            }
321
+        }
322
+    }
323
+
324
+    .navLinks{
325
+        grid-area: navi;
326
+        width: 100%;
327
+
328
+        padding: 2rem 0;
329
+        
330
+        columns: 2;
331
+        @include breakpoint(md) {
332
+            padding: 0 0 0 5vw;
333
+        }
334
+
335
+        .navItem{
336
+            display: block;
337
+            height: auto;
338
+            margin: 1em 0;
339
+
340
+            &:first-child{
341
+                margin-top: 0;
342
+            }
343
+        }
344
+    }
345
+
346
+    .spalte{
347
+        height: 100%;
348
+        padding: 2rem 0;
349
+
350
+        @include breakpoint(md) {
351
+            padding: 0 0 0 3vw;
352
+            margin-top: 5rem;
353
+        }
354
+
355
+        @include breakpoint(xl) {
356
+            margin-top: 0;
357
+        }
358
+
359
+        h3{
360
+            margin:0;
361
+        }
362
+    }
363
+
364
+    .column1{
365
+        grid-area: spalte1;
366
+    }
367
+
368
+    .column2{
369
+        grid-area: spalte2;
370
+    }
371
+}

+ 0
- 107
src/app/globals.css View File

@@ -1,107 +0,0 @@
1
-:root {
2
-  --max-width: 1100px;
3
-  --border-radius: 12px;
4
-  --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
5
-    'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
6
-    'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
7
-
8
-  --foreground-rgb: 0, 0, 0;
9
-  --background-start-rgb: 214, 219, 220;
10
-  --background-end-rgb: 255, 255, 255;
11
-
12
-  --primary-glow: conic-gradient(
13
-    from 180deg at 50% 50%,
14
-    #16abff33 0deg,
15
-    #0885ff33 55deg,
16
-    #54d6ff33 120deg,
17
-    #0071ff33 160deg,
18
-    transparent 360deg
19
-  );
20
-  --secondary-glow: radial-gradient(
21
-    rgba(255, 255, 255, 1),
22
-    rgba(255, 255, 255, 0)
23
-  );
24
-
25
-  --tile-start-rgb: 239, 245, 249;
26
-  --tile-end-rgb: 228, 232, 233;
27
-  --tile-border: conic-gradient(
28
-    #00000080,
29
-    #00000040,
30
-    #00000030,
31
-    #00000020,
32
-    #00000010,
33
-    #00000010,
34
-    #00000080
35
-  );
36
-
37
-  --callout-rgb: 238, 240, 241;
38
-  --callout-border-rgb: 172, 175, 176;
39
-  --card-rgb: 180, 185, 188;
40
-  --card-border-rgb: 131, 134, 135;
41
-}
42
-
43
-@media (prefers-color-scheme: dark) {
44
-  :root {
45
-    --foreground-rgb: 255, 255, 255;
46
-    --background-start-rgb: 0, 0, 0;
47
-    --background-end-rgb: 0, 0, 0;
48
-
49
-    --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
50
-    --secondary-glow: linear-gradient(
51
-      to bottom right,
52
-      rgba(1, 65, 255, 0),
53
-      rgba(1, 65, 255, 0),
54
-      rgba(1, 65, 255, 0.3)
55
-    );
56
-
57
-    --tile-start-rgb: 2, 13, 46;
58
-    --tile-end-rgb: 2, 5, 19;
59
-    --tile-border: conic-gradient(
60
-      #ffffff80,
61
-      #ffffff40,
62
-      #ffffff30,
63
-      #ffffff20,
64
-      #ffffff10,
65
-      #ffffff10,
66
-      #ffffff80
67
-    );
68
-
69
-    --callout-rgb: 20, 20, 20;
70
-    --callout-border-rgb: 108, 108, 108;
71
-    --card-rgb: 100, 100, 100;
72
-    --card-border-rgb: 200, 200, 200;
73
-  }
74
-}
75
-
76
-* {
77
-  box-sizing: border-box;
78
-  padding: 0;
79
-  margin: 0;
80
-}
81
-
82
-html,
83
-body {
84
-  max-width: 100vw;
85
-  overflow-x: hidden;
86
-}
87
-
88
-body {
89
-  color: rgb(var(--foreground-rgb));
90
-  background: linear-gradient(
91
-      to bottom,
92
-      transparent,
93
-      rgb(var(--background-end-rgb))
94
-    )
95
-    rgb(var(--background-start-rgb));
96
-}
97
-
98
-a {
99
-  color: inherit;
100
-  text-decoration: none;
101
-}
102
-
103
-@media (prefers-color-scheme: dark) {
104
-  html {
105
-    color-scheme: dark;
106
-  }
107
-}

+ 11
- 0
src/app/globals.scss View File

@@ -0,0 +1,11 @@
1
+*{
2
+  box-sizing: border-box;
3
+}
4
+
5
+html, body{
6
+  background-color: #fff;
7
+  margin: 0;
8
+  padding: 0;
9
+  height: 100dvh;
10
+  font-family: 'Toyota Type', sans-serif;
11
+}

+ 2
- 1
src/app/layout.js View File

@@ -1,5 +1,6 @@
1 1
 import { Inter } from 'next/font/google'
2
-import './globals.css'
2
+import './globals.scss'
3
+import '@/styles/index.scss'
3 4
 
4 5
 const inter = Inter({ subsets: ['latin'] })
5 6
 

+ 97
- 87
src/app/page.js View File

@@ -1,95 +1,105 @@
1
-import Image from 'next/image'
2
-import styles from './page.module.css'
1
+import GetImage from "@/components/GetImage/GetImage";
2
+import React from "react";
3
+import "./Home.scss";
3 4
 
4
-export default function Home() {
5
+const Home = () => {
5 6
   return (
6
-    <main className={styles.main}>
7
-      <div className={styles.description}>
8
-        <p>
9
-          Get started by editing&nbsp;
10
-          <code className={styles.code}>src/app/page.js</code>
11
-        </p>
12
-        <div>
13
-          <a
14
-            href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
15
-            target="_blank"
16
-            rel="noopener noreferrer"
17
-          >
18
-            By{' '}
19
-            <Image
20
-              src="/vercel.svg"
21
-              alt="Vercel Logo"
22
-              className={styles.vercelLogo}
23
-              width={100}
24
-              height={24}
25
-              priority
26
-            />
27
-          </a>
28
-        </div>
29
-      </div>
30
-
31
-      <div className={styles.center}>
32
-        <Image
33
-          className={styles.logo}
34
-          src="/next.svg"
35
-          alt="Next.js Logo"
36
-          width={180}
37
-          height={37}
38
-          priority
7
+    <>
8
+      <header>
9
+        <img
10
+          src="https://cms.camping.autohaus-dinig.de/uploads/TD_Autohaus_weiss_b44cfad12a.svg"
11
+          alt="Autohaus Dinig"
12
+          className="logo"
39 13
         />
14
+      </header>
15
+      <div className="hero">
16
+        <div className="hero__text">
17
+          <h2>Willkommen bei Ihrem Autohaus</h2>
18
+          <h3>Entdecken Sie unsere Angebote</h3>
19
+        </div>
40 20
       </div>
41
-
42
-      <div className={styles.grid}>
43
-        <a
44
-          href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
45
-          className={styles.card}
46
-          target="_blank"
47
-          rel="noopener noreferrer"
48
-        >
49
-          <h2>
50
-            Docs <span>-&gt;</span>
51
-          </h2>
52
-          <p>Find in-depth information about Next.js features and API.</p>
21
+      <div className="guide">
22
+        <a className="guide__card" href="https://autohaus.toyota.de/dinig/">
23
+          <GetImage source="auto" />
24
+          <div className="guide__card__text">
25
+            <h3>Autohaus Dinig</h3>
26
+            <p>Willkommen bei Ihrem lokalen Toyota Partner</p>
27
+          </div>
53 28
         </a>
54
-
55
-        <a
56
-          href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
57
-          className={styles.card}
58
-          target="_blank"
59
-          rel="noopener noreferrer"
60
-        >
61
-          <h2>
62
-            Learn <span>-&gt;</span>
63
-          </h2>
64
-          <p>Learn about Next.js in an interactive course with&nbsp;quizzes!</p>
65
-        </a>
66
-
67
-        <a
68
-          href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
69
-          className={styles.card}
70
-          target="_blank"
71
-          rel="noopener noreferrer"
72
-        >
73
-          <h2>
74
-            Templates <span>-&gt;</span>
75
-          </h2>
76
-          <p>Explore starter templates for Next.js.</p>
29
+        <a className="guide__card" href="https://camping.autohaus-dinig.de/">
30
+          <GetImage source="camper" />
31
+          <div className="guide__card__text">
32
+            <h3>Dinig Camping</h3>
33
+            <p>Entdecken Sie unsere Camper für jeden Anlass</p>
34
+          </div>
77 35
         </a>
78
-
79
-        <a
80
-          href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app"
81
-          className={styles.card}
82
-          target="_blank"
83
-          rel="noopener noreferrer"
84
-        >
85
-          <h2>
86
-            Deploy <span>-&gt;</span>
87
-          </h2>
36
+        {/* <div className="guide__card">
37
+          <GetImage source="offroad" />
38
+        </div> */}
39
+      </div>
40
+      <footer className="Footer">
41
+        <div className="logo">
42
+          <div className="copyright">© 2024 Autohaus Dinig</div>
43
+          <img
44
+            src="https://cms.camping.autohaus-dinig.de/uploads/logo_nachbau_dinig_2x_35e1383373.png"
45
+            alt="logo_nachbau_dinig@2x.png"
46
+          />
47
+          <div className="siteLinks">
48
+            <a href="https://autohaus.toyota.de/dinig/">Toyota Dinig</a>
49
+          </div>
50
+        </div>
51
+        <nav className="navLinks">
52
+          <a
53
+            className="navItem"
54
+            href="https://autohaus.toyota.de/dinig/impressum/"
55
+          >
56
+            Impressum
57
+          </a>
58
+          <a
59
+            className="navItem"
60
+            href="https://autohaus.toyota.de/dinig/datenschutz/"
61
+          >
62
+            Datenschutz
63
+          </a>
64
+        </nav>
65
+        <div className="spalte column1">
66
+          <h3 id="hier-finden-sie-uns">Hier finden Sie uns:</h3>
88 67
           <p>
89
-            Instantly deploy your Next.js site to a shareable URL with Vercel.
68
+            Autohaus Dinig GmbH &amp; Co. KG
69
+            <br />
70
+            Industriegebiet 4<br />
71
+            55606 Hochstetten-Dhaun{" "}
90 72
           </p>
91
-        </a>
92
-      </div>
93
-    </main>
94
-  )
95
-}
73
+          <h3 id="kontakt">Kontakt</h3>
74
+          <p>
75
+            Tel: 06752/2864
76
+            <br />
77
+            Fax: 06752/6971
78
+            <br />
79
+            E-Mail:{" "}
80
+            <a href="mailto:lead@toyota-dinig.de">lead@toyota-dinig.de</a>
81
+          </p>
82
+        </div>
83
+        <div className="spalte column2">
84
+          <h3 id="öffnungszeiten">Öffnungszeiten</h3>
85
+          <p>
86
+            <strong>Verkauf</strong>
87
+            <br />
88
+            Mo - Fr: 09.00 - 18.00 Uhr
89
+            <br />
90
+            Sa: 09.00 - 13.00 Uhr{" "}
91
+          </p>
92
+          <p>
93
+            <strong>Kundendienst</strong>
94
+            <br />
95
+            Mo - Fr: 07.30 - 18.00 Uhr
96
+            <br />
97
+            Sa: 08.00 - 12.00 Uhr{" "}
98
+          </p>
99
+        </div>
100
+      </footer>
101
+    </>
102
+  );
103
+};
104
+
105
+export default Home;

+ 76
- 0
src/components/GetImage/GetImage.jsx View File

@@ -0,0 +1,76 @@
1
+import { load } from "cheerio";
2
+
3
+const getAutoHtml = async () => {
4
+  const response = await fetch("https://autohaus.toyota.de/dinig/");
5
+  const htmlString = await response.text();
6
+  return htmlString;
7
+};
8
+
9
+const getCamperHtml = async () => {
10
+  const response = await fetch("https://camping.autohaus-dinig.de/");
11
+  const htmlString = await response.text();
12
+  return htmlString;
13
+};
14
+
15
+const getOffroadHtml = async () => {
16
+  const response = await fetch("https://offroad.autohaus-dinig.de/");
17
+  const htmlString = await response.text();
18
+  return htmlString;
19
+};
20
+
21
+const GetImage = async ({ source }) => {
22
+
23
+  let image; 
24
+  if (source === "auto") {
25
+    let getWebsiteHtml = getAutoHtml;
26
+
27
+    const html = await getWebsiteHtml();
28
+    const $ = load(html);
29
+
30
+    // the URL of the picture we need is placed in the data-src attribute of the img tag inside the a picture tag
31
+    image = $(".a-media-image").find("img").attr("data-src");
32
+
33
+  } else if (source === "camper") {
34
+    let getWebsiteHtml = getCamperHtml;
35
+
36
+    const html = await getWebsiteHtml();
37
+    const $ = load(html);
38
+
39
+    //get a list of all pictures inside .Slider__Image 
40
+    const pictures = $(".Slider__Image").find("img");
41
+
42
+    //if there are multiple pictures, we need to get the second one
43
+    if (pictures.length > 1) {
44
+      image = pictures[1].attribs.src;
45
+    } else {
46
+      image = pictures[0].attribs.src;
47
+    }
48
+
49
+
50
+  } else if (source === "offroad") {
51
+    let getWebsiteHtml = getOffroadHtml;
52
+
53
+    const html = await getWebsiteHtml();
54
+    const $ = load(html);
55
+
56
+    //get a list of all pictures inside .Slider__Image 
57
+    const pictures = $(".Slider__Image").find("img");
58
+
59
+    //if there are multiple pictures, we need to get the second one
60
+    if (pictures.length > 1) {
61
+      image = pictures[1].attribs.src;
62
+    } else {
63
+      image = pictures[0].attribs.src;
64
+    }
65
+
66
+  }
67
+
68
+
69
+  return (
70
+    <>
71
+      <img src={image} alt="Guide Image" />
72
+    </>
73
+  );
74
+};
75
+
76
+export default GetImage;

BIN
src/statics/fonts/ToyotaText-Bold.woff View File


BIN
src/statics/fonts/ToyotaText-Bold.woff2 View File


BIN
src/statics/fonts/ToyotaText-Regular.woff View File


BIN
src/statics/fonts/ToyotaText-Regular.woff2 View File


BIN
src/statics/fonts/ToyotaType-Italic.woff View File


BIN
src/statics/fonts/ToyotaType-Italic.woff2 View File


BIN
src/statics/fonts/ToyotaType-Regular.woff View File


BIN
src/statics/fonts/ToyotaType-Regular.woff2 View File


BIN
src/statics/fonts/ToyotaType-Semibold.woff View File


BIN
src/statics/fonts/ToyotaType-Semibold.woff2 View File


BIN
src/statics/fonts/ToyotaType-SemiboldIt.woff View File


BIN
src/statics/fonts/ToyotaType-SemiboldIt.woff2 View File


+ 132
- 0
src/styles/base/_breakpoints.scss View File

@@ -0,0 +1,132 @@
1
+// Breakpoints
2
+
3
+@mixin breakpoint($class) {
4
+    @if $class == xs {
5
+      @media (max-width: 575px) {
6
+        @content;
7
+      }
8
+    } @else if $class == sm {
9
+      @media (min-width: 576px) {
10
+        @content;
11
+      }
12
+    } @else if $class == md {
13
+      @media (min-width: 767px) {
14
+        @content;
15
+      }
16
+    } @else if $class == lg {
17
+      @media (min-width: 992px) {
18
+        @content;
19
+      }
20
+    } @else if $class == xl {
21
+      @media (min-width: 1200px) {
22
+        @content;
23
+      }
24
+    } @else if $class == xxl {
25
+      @media (min-width: 1680px) {
26
+        @content;
27
+      }
28
+    } @else if $class == uhd {
29
+      @media (min-width: 2400px) {
30
+        @content;
31
+      }
32
+    } @else {
33
+      @warn "Breakpoint mixin supports: xs, sm, md, lg, xl, xxl, uhd :" + $class;
34
+    }
35
+  }
36
+  
37
+  // Use breakpoints like this:
38
+  // aside.primary {
39
+  //   float: right;
40
+  //   width: 350px;
41
+  //   @include breakpoint(sm) {
42
+  //     float: none;
43
+  //     width: 100%;
44
+  //   }
45
+  // }
46
+  
47
+  $columns: 12;
48
+  @mixin regular-grid {
49
+    @for $i from 1 through $columns {
50
+      &-#{$i} {
51
+        flex: 0 0 100% / $columns * $i;
52
+      }
53
+    }
54
+  }
55
+  
56
+  @mixin offset-grid {
57
+    @for $i from 1 through $columns {
58
+      &-#{$i} {
59
+        margin-left: 100% / $columns * $i;
60
+      }
61
+    }
62
+  }
63
+  
64
+  .grid {
65
+    display: flex;
66
+    flex-wrap: wrap;
67
+  
68
+    .col {
69
+      &-offset {
70
+        &-xs {
71
+          @include offset-grid;
72
+        }
73
+        &-sm {
74
+          @include breakpoint(sm) {
75
+            @include offset-grid;
76
+            &-reset {
77
+              margin-left: inherit;
78
+            }
79
+          }
80
+        }
81
+        &-md {
82
+          @include breakpoint(md) {
83
+            @include offset-grid;
84
+            &-reset {
85
+              margin-left: inherit;
86
+            }
87
+          }
88
+        }
89
+        &-lg {
90
+          @include breakpoint(lg) {
91
+            @include offset-grid;
92
+            &-reset {
93
+              margin-left: inherit;
94
+            }
95
+          }
96
+        }
97
+        &-xl {
98
+          @include breakpoint(xl) {
99
+            @include offset-grid;
100
+            &-reset {
101
+              margin-left: inherit;
102
+            }
103
+          }
104
+        }
105
+      }
106
+  
107
+      &-xs {
108
+        @include regular-grid;
109
+      }
110
+      &-sm {
111
+        @include breakpoint(sm) {
112
+          @include regular-grid;
113
+        }
114
+      }
115
+      &-md {
116
+        @include breakpoint(md) {
117
+          @include regular-grid;
118
+        }
119
+      }
120
+      &-lg {
121
+        @include breakpoint(lg) {
122
+          @include regular-grid;
123
+        }
124
+      }
125
+      &-xl {
126
+        @include breakpoint(xl) {
127
+          @include regular-grid;
128
+        }
129
+      }
130
+    }
131
+  }
132
+  

+ 7
- 0
src/styles/base/_colors.scss View File

@@ -0,0 +1,7 @@
1
+$red: #E40521;
2
+$redTrans: rgba(228, 5, 33, 0.8);
3
+$grey: #3C3A42;
4
+$white: #FFFFFF;
5
+$lightgrey: #D9D9D9;
6
+$paginationGrey: #707070;
7
+$footer: #F2F2F2;

+ 39
- 0
src/styles/base/_fonts.scss View File

@@ -0,0 +1,39 @@
1
+@font-face {
2
+    font-family: 'Toyota Type';    
3
+    font-weight: 300;
4
+    src: local(''),
5
+      url('../../statics/fonts/ToyotaType-Regular.woff2') format('woff2'),
6
+      /* Chrome 26+, Opera 23+, Firefox 39+ */
7
+        url('../../statics/fonts/ToyotaType-Regular.woff2') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
8
+  }
9
+
10
+  @font-face {
11
+    font-family: 'Toyota Type';    
12
+    font-weight: 300;
13
+    font-style: italic;
14
+    src: local(''),
15
+      url('../../statics/fonts/ToyotaType-Italic.woff2') format('woff2'),
16
+      /* Chrome 26+, Opera 23+, Firefox 39+ */
17
+        url('../../statics/fonts/ToyotaType-Italic.woff2') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
18
+  }  
19
+  
20
+  @font-face {
21
+    font-family: 'Toyota Type';    
22
+    font-weight: 700;
23
+    src: local(''),
24
+      url('../../statics/fonts/ToyotaType-Semibold.woff2') format('woff2'),
25
+      /* Chrome 26+, Opera 23+, Firefox 39+ */
26
+        url('../../statics/fonts/ToyotaType-Semibold.woff2') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
27
+  }
28
+
29
+  @font-face {
30
+    font-family: 'Toyota Type';    
31
+    font-weight: 700;
32
+    font-style: italic;
33
+    src: local(''),
34
+      url('../../statics/fonts/ToyotaType-SemiboldIt.woff2') format('woff2'),
35
+      /* Chrome 26+, Opera 23+, Firefox 39+ */
36
+        url('../../statics/fonts/ToyotaType-SemiboldIt.woff2') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
37
+  }
38
+    
39
+    

+ 30
- 0
src/styles/base/_globals.scss View File

@@ -0,0 +1,30 @@
1
+$font-family-sans-serif: 'Toyota Type', sans-serif;
2
+
3
+html,
4
+body {
5
+  padding: 0;
6
+  margin: 0;
7
+  font-family: $font-family-sans-serif;
8
+  font-weight: 300;
9
+  color: #3C3A42;
10
+}
11
+
12
+a {
13
+  color: inherit;
14
+  text-decoration: none;
15
+}
16
+
17
+* {
18
+  box-sizing: border-box;
19
+}
20
+
21
+strong{
22
+  font-weight: 700;
23
+}
24
+
25
+.ExternalContent{
26
+  width: 100%;
27
+  padding: 2rem;
28
+  max-width: 1200px;
29
+  margin: 0 auto;
30
+}

+ 3
- 0
src/styles/base/_typography.scss View File

@@ -0,0 +1,3 @@
1
+h1, h2, h3, h4, h5, h6{
2
+    margin-bottom: 1rem;
3
+}

+ 5
- 0
src/styles/index.scss View File

@@ -0,0 +1,5 @@
1
+@import './base/breakpoints';
2
+@import './base/fonts';
3
+@import './base/colors';
4
+@import './base/globals';
5
+@import './base/typography';

+ 184
- 5
yarn.lock View File

@@ -243,6 +243,14 @@ ansi-styles@^4.1.0:
243 243
   dependencies:
244 244
     color-convert "^2.0.1"
245 245
 
246
+anymatch@~3.1.2:
247
+  version "3.1.3"
248
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
249
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
250
+  dependencies:
251
+    normalize-path "^3.0.0"
252
+    picomatch "^2.0.4"
253
+
246 254
 argparse@^2.0.1:
247 255
   version "2.0.1"
248 256
   resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
@@ -368,6 +376,16 @@ balanced-match@^1.0.0:
368 376
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
369 377
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
370 378
 
379
+binary-extensions@^2.0.0:
380
+  version "2.2.0"
381
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
382
+  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
383
+
384
+boolbase@^1.0.0:
385
+  version "1.0.0"
386
+  resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
387
+  integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
388
+
371 389
 brace-expansion@^1.1.7:
372 390
   version "1.1.11"
373 391
   resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -383,7 +401,7 @@ brace-expansion@^2.0.1:
383 401
   dependencies:
384 402
     balanced-match "^1.0.0"
385 403
 
386
-braces@^3.0.2:
404
+braces@^3.0.2, braces@~3.0.2:
387 405
   version "3.0.2"
388 406
   resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
389 407
   integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -424,6 +442,46 @@ chalk@^4.0.0:
424 442
     ansi-styles "^4.1.0"
425 443
     supports-color "^7.1.0"
426 444
 
445
+cheerio-select@^2.1.0:
446
+  version "2.1.0"
447
+  resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4"
448
+  integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
449
+  dependencies:
450
+    boolbase "^1.0.0"
451
+    css-select "^5.1.0"
452
+    css-what "^6.1.0"
453
+    domelementtype "^2.3.0"
454
+    domhandler "^5.0.3"
455
+    domutils "^3.0.1"
456
+
457
+cheerio@^1.0.0-rc.12:
458
+  version "1.0.0-rc.12"
459
+  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683"
460
+  integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==
461
+  dependencies:
462
+    cheerio-select "^2.1.0"
463
+    dom-serializer "^2.0.0"
464
+    domhandler "^5.0.3"
465
+    domutils "^3.0.1"
466
+    htmlparser2 "^8.0.1"
467
+    parse5 "^7.0.0"
468
+    parse5-htmlparser2-tree-adapter "^7.0.0"
469
+
470
+"chokidar@>=3.0.0 <4.0.0":
471
+  version "3.5.3"
472
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
473
+  integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
474
+  dependencies:
475
+    anymatch "~3.1.2"
476
+    braces "~3.0.2"
477
+    glob-parent "~5.1.2"
478
+    is-binary-path "~2.1.0"
479
+    is-glob "~4.0.1"
480
+    normalize-path "~3.0.0"
481
+    readdirp "~3.6.0"
482
+  optionalDependencies:
483
+    fsevents "~2.3.2"
484
+
427 485
 client-only@0.0.1:
428 486
   version "0.0.1"
429 487
   resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
@@ -455,6 +513,22 @@ cross-spawn@^7.0.2:
455 513
     shebang-command "^2.0.0"
456 514
     which "^2.0.1"
457 515
 
516
+css-select@^5.1.0:
517
+  version "5.1.0"
518
+  resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6"
519
+  integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
520
+  dependencies:
521
+    boolbase "^1.0.0"
522
+    css-what "^6.1.0"
523
+    domhandler "^5.0.2"
524
+    domutils "^3.0.1"
525
+    nth-check "^2.0.1"
526
+
527
+css-what@^6.1.0:
528
+  version "6.1.0"
529
+  resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
530
+  integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
531
+
458 532
 damerau-levenshtein@^1.0.8:
459 533
   version "1.0.8"
460 534
   resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
@@ -523,6 +597,36 @@ doctrine@^3.0.0:
523 597
   dependencies:
524 598
     esutils "^2.0.2"
525 599
 
600
+dom-serializer@^2.0.0:
601
+  version "2.0.0"
602
+  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
603
+  integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
604
+  dependencies:
605
+    domelementtype "^2.3.0"
606
+    domhandler "^5.0.2"
607
+    entities "^4.2.0"
608
+
609
+domelementtype@^2.3.0:
610
+  version "2.3.0"
611
+  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
612
+  integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
613
+
614
+domhandler@^5.0.2, domhandler@^5.0.3:
615
+  version "5.0.3"
616
+  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
617
+  integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
618
+  dependencies:
619
+    domelementtype "^2.3.0"
620
+
621
+domutils@^3.0.1:
622
+  version "3.1.0"
623
+  resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
624
+  integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
625
+  dependencies:
626
+    dom-serializer "^2.0.0"
627
+    domelementtype "^2.3.0"
628
+    domhandler "^5.0.3"
629
+
526 630
 emoji-regex@^9.2.2:
527 631
   version "9.2.2"
528 632
   resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
@@ -536,6 +640,11 @@ enhanced-resolve@^5.12.0:
536 640
     graceful-fs "^4.2.4"
537 641
     tapable "^2.2.0"
538 642
 
643
+entities@^4.2.0, entities@^4.4.0:
644
+  version "4.5.0"
645
+  resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
646
+  integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
647
+
539 648
 es-abstract@^1.22.1:
540 649
   version "1.22.3"
541 650
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32"
@@ -918,6 +1027,11 @@ fs.realpath@^1.0.0:
918 1027
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
919 1028
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
920 1029
 
1030
+fsevents@~2.3.2:
1031
+  version "2.3.3"
1032
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
1033
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
1034
+
921 1035
 function-bind@^1.1.1, function-bind@^1.1.2:
922 1036
   version "1.1.2"
923 1037
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
@@ -963,7 +1077,7 @@ get-tsconfig@^4.5.0:
963 1077
   dependencies:
964 1078
     resolve-pkg-maps "^1.0.0"
965 1079
 
966
-glob-parent@^5.1.2:
1080
+glob-parent@^5.1.2, glob-parent@~5.1.2:
967 1081
   version "5.1.2"
968 1082
   resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
969 1083
   integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -1090,11 +1204,26 @@ hasown@^2.0.0:
1090 1204
   dependencies:
1091 1205
     function-bind "^1.1.2"
1092 1206
 
1207
+htmlparser2@^8.0.1:
1208
+  version "8.0.2"
1209
+  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21"
1210
+  integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==
1211
+  dependencies:
1212
+    domelementtype "^2.3.0"
1213
+    domhandler "^5.0.3"
1214
+    domutils "^3.0.1"
1215
+    entities "^4.4.0"
1216
+
1093 1217
 ignore@^5.2.0:
1094 1218
   version "5.3.0"
1095 1219
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
1096 1220
   integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
1097 1221
 
1222
+immutable@^4.0.0:
1223
+  version "4.3.4"
1224
+  resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f"
1225
+  integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==
1226
+
1098 1227
 import-fresh@^3.2.1:
1099 1228
   version "3.3.0"
1100 1229
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -1153,6 +1282,13 @@ is-bigint@^1.0.1:
1153 1282
   dependencies:
1154 1283
     has-bigints "^1.0.1"
1155 1284
 
1285
+is-binary-path@~2.1.0:
1286
+  version "2.1.0"
1287
+  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1288
+  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1289
+  dependencies:
1290
+    binary-extensions "^2.0.0"
1291
+
1156 1292
 is-boolean-object@^1.1.0:
1157 1293
   version "1.1.2"
1158 1294
   resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
@@ -1199,7 +1335,7 @@ is-generator-function@^1.0.10:
1199 1335
   dependencies:
1200 1336
     has-tostringtag "^1.0.0"
1201 1337
 
1202
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
1338
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
1203 1339
   version "4.0.3"
1204 1340
   resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1205 1341
   integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -1488,6 +1624,18 @@ next@14.0.4:
1488 1624
     "@next/swc-win32-ia32-msvc" "14.0.4"
1489 1625
     "@next/swc-win32-x64-msvc" "14.0.4"
1490 1626
 
1627
+normalize-path@^3.0.0, normalize-path@~3.0.0:
1628
+  version "3.0.0"
1629
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1630
+  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1631
+
1632
+nth-check@^2.0.1:
1633
+  version "2.1.1"
1634
+  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
1635
+  integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
1636
+  dependencies:
1637
+    boolbase "^1.0.0"
1638
+
1491 1639
 object-assign@^4.1.1:
1492 1640
   version "4.1.1"
1493 1641
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -1598,6 +1746,21 @@ parent-module@^1.0.0:
1598 1746
   dependencies:
1599 1747
     callsites "^3.0.0"
1600 1748
 
1749
+parse5-htmlparser2-tree-adapter@^7.0.0:
1750
+  version "7.0.0"
1751
+  resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1"
1752
+  integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==
1753
+  dependencies:
1754
+    domhandler "^5.0.2"
1755
+    parse5 "^7.0.0"
1756
+
1757
+parse5@^7.0.0:
1758
+  version "7.1.2"
1759
+  resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
1760
+  integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
1761
+  dependencies:
1762
+    entities "^4.4.0"
1763
+
1601 1764
 path-exists@^4.0.0:
1602 1765
   version "4.0.0"
1603 1766
   resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
@@ -1628,7 +1791,7 @@ picocolors@^1.0.0:
1628 1791
   resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
1629 1792
   integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
1630 1793
 
1631
-picomatch@^2.3.1:
1794
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
1632 1795
   version "2.3.1"
1633 1796
   resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1634 1797
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -1686,6 +1849,13 @@ react@^18:
1686 1849
   dependencies:
1687 1850
     loose-envify "^1.1.0"
1688 1851
 
1852
+readdirp@~3.6.0:
1853
+  version "3.6.0"
1854
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1855
+  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1856
+  dependencies:
1857
+    picomatch "^2.2.1"
1858
+
1689 1859
 reflect.getprototypeof@^1.0.4:
1690 1860
   version "1.0.4"
1691 1861
   resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3"
@@ -1778,6 +1948,15 @@ safe-regex-test@^1.0.0:
1778 1948
     get-intrinsic "^1.1.3"
1779 1949
     is-regex "^1.1.4"
1780 1950
 
1951
+sass@^1.69.7:
1952
+  version "1.69.7"
1953
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.7.tgz#6e7e1c8f51e8162faec3e9619babc7da780af3b7"
1954
+  integrity sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==
1955
+  dependencies:
1956
+    chokidar ">=3.0.0 <4.0.0"
1957
+    immutable "^4.0.0"
1958
+    source-map-js ">=0.6.2 <2.0.0"
1959
+
1781 1960
 scheduler@^0.23.0:
1782 1961
   version "0.23.0"
1783 1962
   resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
@@ -1842,7 +2021,7 @@ slash@^3.0.0:
1842 2021
   resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1843 2022
   integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1844 2023
 
1845
-source-map-js@^1.0.2:
2024
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
1846 2025
   version "1.0.2"
1847 2026
   resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
1848 2027
   integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==