From db76530ef42886e718e2acf69d48a770150667c6 Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 12:54:18 +0200 Subject: [PATCH 01/36] Init nextjs --- .eslintrc.json | 3 + .gitignore | 35 + HerstellerDE.HTML | 131 - HerstellerENG.HTML | 129 - KSS22ENG.html | 206 -- StartDE.html | 85 - StartENG.html | 86 - next.config.js | 6 + package.json | 22 + pnpm-lock.yaml | 2161 +++++++++++++++++ {Alle Bilder => public/KS S22}/1.jpg | Bin {Alle Bilder => public/KS S22}/2.jpg | Bin {Alle Bilder => public/KS S22}/3.jpg | Bin {Alle Bilder => public/KS S22}/4.jpg | Bin {Alle Bilder => public/KS S22}/BusJump.jpg | Bin {Alle Bilder => public/KS S22}/Data-Sheet.jpg | Bin {KS S22 => public/KS S22}/S22SliderMod.jpg | Bin .../KS S22}/S22shutterkode1.jpg | Bin .../KS S22}/S22shutterkode2.jpg | Bin .../KS S22}/S22shutterkode3.jpg | Bin .../KS S22}/S22shutterkode4.jpg | Bin .../KS S22}/S22shutterkode5.jpg | Bin {KS S22 => public/KS S22}/S22shutterkode6.jpg | Bin {KS S22 => public/KS S22}/V13lq1.jpg | Bin {Alle Bilder => public/KS S22}/ks20cover.jpg | Bin {Alle Bilder => public/KS S22}/ks20riding.jpg | Bin .../6ec4fa54d92846679ea2e5419d2c9ffd.zip | Bin .../favicon}/android-icon-192x192.png | Bin {Favicon => public/favicon}/anleitung.txt | 0 .../favicon}/apple-icon-114x114.png | Bin .../favicon}/apple-icon-120x120.png | Bin .../favicon}/apple-icon-144x144.png | Bin .../favicon}/apple-icon-152x152.png | Bin .../favicon}/apple-icon-180x180.png | Bin .../favicon}/apple-icon-57x57.png | Bin .../favicon}/apple-icon-60x60.png | Bin .../favicon}/apple-icon-72x72.png | Bin .../favicon}/apple-icon-76x76.png | Bin {Favicon => public/favicon}/browserconfig.xml | 0 {Favicon => public/favicon}/favicon-16x16.png | Bin .../favicon}/favicon-256x256.png | Bin {Favicon => public/favicon}/favicon-32x32.png | Bin {Favicon => public/favicon}/favicon-96x96.png | Bin {Favicon => public/favicon}/favicon.ico | Bin {Favicon => public/favicon}/manifest.json | 0 .../favicon}/ms-icon-144x144.png | Bin .../favicon}/ms-icon-150x150.png | Bin .../favicon}/ms-icon-310x310.png | Bin {Favicon => public/favicon}/ms-icon-70x70.png | Bin {KS S22 => public/images}/1.jpg | Bin {KS S22 => public/images}/2.jpg | Bin {KS S22 => public/images}/3.jpg | Bin {KS S22 => public/images}/4.jpg | Bin .../images}/AkkuRedundanz.png | Bin .../images}/AkkuSherman.jpg | Bin {Alle Bilder => public/images}/BEGODElogo.jpg | Bin {Alle Bilder => public/images}/BMS.jpg | Bin .../images}/BegodeLineup.jpg | Bin .../images}/BegodeMemeBurn.jpg | Bin {KS S22 => public/images}/BusJump.jpg | Bin {Alle Bilder => public/images}/Commander.jpg | Bin {KS S22 => public/images}/Data-Sheet.jpg | Bin {Alle Bilder => public/images}/EX30.jpg | Bin .../images}/Funktionsblld.webp | Bin {Alle Bilder => public/images}/Gear1.jpg | Bin {Alle Bilder => public/images}/Gear2.jpg | Bin {Alle Bilder => public/images}/Gear3.webp | Bin {Alle Bilder => public/images}/Inmotion.webp | Bin .../images}/InmotionLineup.jpg | Bin {Alle Bilder => public/images}/KS16X.jpg | Bin {Alle Bilder => public/images}/KidsKS16X.jpg | Bin {Alle Bilder => public/images}/Master Pro.jpg | Bin {Alle Bilder => public/images}/Master.jpg | Bin {Alle Bilder => public/images}/MoBo.jpg | Bin {Alle Bilder => public/images}/MonsterPro.jpg | Bin {Alle Bilder => public/images}/Motor.jpeg | Bin {Alle Bilder => public/images}/Mten4.jpg | Bin {Alle Bilder => public/images}/NineBot.webp | Bin .../images}/NinebotZ10goood.webp | Bin {Alle Bilder => public/images}/Pads.jpg | Bin {Alle Bilder => public/images}/S18.jpg | Bin {KS S22 => public/images}/S22shutterkode1.jpg | Bin {KS S22 => public/images}/S22shutterkode2.jpg | Bin {KS S22 => public/images}/S22shutterkode3.jpg | Bin {KS S22 => public/images}/S22shutterkode4.jpg | Bin {KS S22 => public/images}/S22shutterkode5.jpg | Bin .../images}/ShermanSepic.jpg | Bin .../images}/ShermanStanding.jpg | Bin .../images}/Shermangrey.jpg | Bin .../images}/SpikedPedals.jpeg | Bin {Alle Bilder => public/images}/T4.jpg | Bin {Alle Bilder => public/images}/Tires.PNG | Bin .../images}/Trolley-seat.jpg | Bin .../images}/UltimativeSport.jpg | Bin {Alle Bilder => public/images}/V11 2.jpg | Bin {Alle Bilder => public/images}/V11 3.webp | Bin {Alle Bilder => public/images}/V12 2.jpg | Bin {Alle Bilder => public/images}/V13 2.jpg | Bin {Alle Bilder => public/images}/V13hq3.jpg | Bin {Alle Bilder => public/images}/abrahams.jpg | Bin {Alle Bilder => public/images}/burned.png | Bin {Alle Bilder => public/images}/cover.jpg | Bin .../images}/historieEUC.webp | Bin .../images}/inmotionLogo.png | Bin .../images}/inmotionV8.jfif | Bin {Alle Bilder => public/images}/kingsong2.jpg | Bin .../images}/kingsongLogo.png | Bin {KS S22 => public/images}/ks20cover.jpg | Bin {KS S22 => public/images}/ks20riding.jpg | Bin .../images}/moddedSherman1.jpg | Bin .../images}/ninebotLogo.jpg | Bin .../images}/realBattery.jpg | Bin {Alle Bilder => public/images}/realMoBo1.PNG | Bin {Alle Bilder => public/images}/realMotor.png | Bin .../images}/solowheel-1.jpg | Bin .../images}/veteranLogo.png | Bin .../images}/what is euc.jpg | Bin {Alle Bilder => public/images}/z10.jpeg | Bin {Alle Videos => public/videos}/Cutout1.mp4 | Bin .../videos}/FahrweiseNYC.mp4 | Bin .../videos}/FahrweiseNYC2.mp4 | Bin .../videos}/FahrweiseNYC3.mp4 | Bin .../videos}/FahrweiseNYC4bad.mp4 | Bin .../videos}/MTBtrailsEase.mp4 | Bin .../videos}/S20Werbevideo.mp4 | Bin .../videos}/SkippinTrafficDanceWW.mp4 | Bin {Alle Videos => public/videos}/V10.mp4 | Bin {Alle Videos => public/videos}/Whobble.mp4 | Bin {Alle Videos => public/videos}/Whobble2.mp4 | Bin .../videos}/shortS22Fire.MP4 | Bin {Alle Videos => public/videos}/traffic.mp4 | Bin .../videos}/v11-suspension.gif | Bin {Alle Videos => public/videos}/whyS22.mp4 | Bin soon.HTML | 92 - src/pages/_app.tsx | 6 + src/pages/_document.tsx | 13 + src/pages/api/hello.ts | 13 + src/pages/index.tsx | 114 + src/styles/Home.module.css | 229 ++ src/styles/globals.css | 107 + .../EUC Überblick DE.html | 124 +- .../EUC Überblick ENG.html | 124 +- EUC Überblick.css => todo/EUC Überblick.css | 0 Geräte.css => todo/Geräte.css | 0 todo/HerstellerDE.HTML | 318 +++ todo/HerstellerENG.HTML | 315 +++ KSS22DE.html => todo/KSS22DE.html | 30 +- todo/KSS22ENG.html | 289 +++ Start.css => todo/Start.css | 0 todo/StartDE.html | 154 ++ todo/StartENG.html | 157 ++ todo/soon.HTML | 157 ++ tsconfig.json | 23 + 153 files changed, 4261 insertions(+), 868 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .gitignore delete mode 100644 HerstellerDE.HTML delete mode 100644 HerstellerENG.HTML delete mode 100644 KSS22ENG.html delete mode 100644 StartDE.html delete mode 100644 StartENG.html create mode 100644 next.config.js create mode 100644 package.json create mode 100644 pnpm-lock.yaml rename {Alle Bilder => public/KS S22}/1.jpg (100%) rename {Alle Bilder => public/KS S22}/2.jpg (100%) rename {Alle Bilder => public/KS S22}/3.jpg (100%) rename {Alle Bilder => public/KS S22}/4.jpg (100%) rename {Alle Bilder => public/KS S22}/BusJump.jpg (100%) rename {Alle Bilder => public/KS S22}/Data-Sheet.jpg (100%) rename {KS S22 => public/KS S22}/S22SliderMod.jpg (100%) rename {Alle Bilder => public/KS S22}/S22shutterkode1.jpg (100%) rename {Alle Bilder => public/KS S22}/S22shutterkode2.jpg (100%) rename {Alle Bilder => public/KS S22}/S22shutterkode3.jpg (100%) rename {Alle Bilder => public/KS S22}/S22shutterkode4.jpg (100%) rename {Alle Bilder => public/KS S22}/S22shutterkode5.jpg (100%) rename {KS S22 => public/KS S22}/S22shutterkode6.jpg (100%) rename {KS S22 => public/KS S22}/V13lq1.jpg (100%) rename {Alle Bilder => public/KS S22}/ks20cover.jpg (100%) rename {Alle Bilder => public/KS S22}/ks20riding.jpg (100%) rename {Favicon => public/favicon}/6ec4fa54d92846679ea2e5419d2c9ffd.zip (100%) rename {Favicon => public/favicon}/android-icon-192x192.png (100%) rename {Favicon => public/favicon}/anleitung.txt (100%) rename {Favicon => public/favicon}/apple-icon-114x114.png (100%) rename {Favicon => public/favicon}/apple-icon-120x120.png (100%) rename {Favicon => public/favicon}/apple-icon-144x144.png (100%) rename {Favicon => public/favicon}/apple-icon-152x152.png (100%) rename {Favicon => public/favicon}/apple-icon-180x180.png (100%) rename {Favicon => public/favicon}/apple-icon-57x57.png (100%) rename {Favicon => public/favicon}/apple-icon-60x60.png (100%) rename {Favicon => public/favicon}/apple-icon-72x72.png (100%) rename {Favicon => public/favicon}/apple-icon-76x76.png (100%) rename {Favicon => public/favicon}/browserconfig.xml (100%) rename {Favicon => public/favicon}/favicon-16x16.png (100%) rename {Favicon => public/favicon}/favicon-256x256.png (100%) rename {Favicon => public/favicon}/favicon-32x32.png (100%) rename {Favicon => public/favicon}/favicon-96x96.png (100%) rename {Favicon => public/favicon}/favicon.ico (100%) rename {Favicon => public/favicon}/manifest.json (100%) rename {Favicon => public/favicon}/ms-icon-144x144.png (100%) rename {Favicon => public/favicon}/ms-icon-150x150.png (100%) rename {Favicon => public/favicon}/ms-icon-310x310.png (100%) rename {Favicon => public/favicon}/ms-icon-70x70.png (100%) rename {KS S22 => public/images}/1.jpg (100%) rename {KS S22 => public/images}/2.jpg (100%) rename {KS S22 => public/images}/3.jpg (100%) rename {KS S22 => public/images}/4.jpg (100%) rename {Alle Bilder => public/images}/AkkuRedundanz.png (100%) rename {Alle Bilder => public/images}/AkkuSherman.jpg (100%) rename {Alle Bilder => public/images}/BEGODElogo.jpg (100%) rename {Alle Bilder => public/images}/BMS.jpg (100%) rename {Alle Bilder => public/images}/BegodeLineup.jpg (100%) rename {Alle Bilder => public/images}/BegodeMemeBurn.jpg (100%) rename {KS S22 => public/images}/BusJump.jpg (100%) rename {Alle Bilder => public/images}/Commander.jpg (100%) rename {KS S22 => public/images}/Data-Sheet.jpg (100%) rename {Alle Bilder => public/images}/EX30.jpg (100%) rename {Alle Bilder => public/images}/Funktionsblld.webp (100%) rename {Alle Bilder => public/images}/Gear1.jpg (100%) rename {Alle Bilder => public/images}/Gear2.jpg (100%) rename {Alle Bilder => public/images}/Gear3.webp (100%) rename {Alle Bilder => public/images}/Inmotion.webp (100%) rename {Alle Bilder => public/images}/InmotionLineup.jpg (100%) rename {Alle Bilder => public/images}/KS16X.jpg (100%) rename {Alle Bilder => public/images}/KidsKS16X.jpg (100%) rename {Alle Bilder => public/images}/Master Pro.jpg (100%) rename {Alle Bilder => public/images}/Master.jpg (100%) rename {Alle Bilder => public/images}/MoBo.jpg (100%) rename {Alle Bilder => public/images}/MonsterPro.jpg (100%) rename {Alle Bilder => public/images}/Motor.jpeg (100%) rename {Alle Bilder => public/images}/Mten4.jpg (100%) rename {Alle Bilder => public/images}/NineBot.webp (100%) rename {Alle Bilder => public/images}/NinebotZ10goood.webp (100%) rename {Alle Bilder => public/images}/Pads.jpg (100%) rename {Alle Bilder => public/images}/S18.jpg (100%) rename {KS S22 => public/images}/S22shutterkode1.jpg (100%) rename {KS S22 => public/images}/S22shutterkode2.jpg (100%) rename {KS S22 => public/images}/S22shutterkode3.jpg (100%) rename {KS S22 => public/images}/S22shutterkode4.jpg (100%) rename {KS S22 => public/images}/S22shutterkode5.jpg (100%) rename {Alle Bilder => public/images}/ShermanSepic.jpg (100%) rename {Alle Bilder => public/images}/ShermanStanding.jpg (100%) rename {Alle Bilder => public/images}/Shermangrey.jpg (100%) rename {Alle Bilder => public/images}/SpikedPedals.jpeg (100%) rename {Alle Bilder => public/images}/T4.jpg (100%) rename {Alle Bilder => public/images}/Tires.PNG (100%) rename {Alle Bilder => public/images}/Trolley-seat.jpg (100%) rename {Alle Bilder => public/images}/UltimativeSport.jpg (100%) rename {Alle Bilder => public/images}/V11 2.jpg (100%) rename {Alle Bilder => public/images}/V11 3.webp (100%) rename {Alle Bilder => public/images}/V12 2.jpg (100%) rename {Alle Bilder => public/images}/V13 2.jpg (100%) rename {Alle Bilder => public/images}/V13hq3.jpg (100%) rename {Alle Bilder => public/images}/abrahams.jpg (100%) rename {Alle Bilder => public/images}/burned.png (100%) rename {Alle Bilder => public/images}/cover.jpg (100%) rename {Alle Bilder => public/images}/historieEUC.webp (100%) rename {Alle Bilder => public/images}/inmotionLogo.png (100%) rename {Alle Bilder => public/images}/inmotionV8.jfif (100%) rename {Alle Bilder => public/images}/kingsong2.jpg (100%) rename {Alle Bilder => public/images}/kingsongLogo.png (100%) rename {KS S22 => public/images}/ks20cover.jpg (100%) rename {KS S22 => public/images}/ks20riding.jpg (100%) rename {Alle Bilder => public/images}/moddedSherman1.jpg (100%) rename {Alle Bilder => public/images}/ninebotLogo.jpg (100%) rename {Alle Bilder => public/images}/realBattery.jpg (100%) rename {Alle Bilder => public/images}/realMoBo1.PNG (100%) rename {Alle Bilder => public/images}/realMotor.png (100%) rename {Alle Bilder => public/images}/solowheel-1.jpg (100%) rename {Alle Bilder => public/images}/veteranLogo.png (100%) rename {Alle Bilder => public/images}/what is euc.jpg (100%) rename {Alle Bilder => public/images}/z10.jpeg (100%) rename {Alle Videos => public/videos}/Cutout1.mp4 (100%) rename {Alle Videos => public/videos}/FahrweiseNYC.mp4 (100%) rename {Alle Videos => public/videos}/FahrweiseNYC2.mp4 (100%) rename {Alle Videos => public/videos}/FahrweiseNYC3.mp4 (100%) rename {Alle Videos => public/videos}/FahrweiseNYC4bad.mp4 (100%) rename {Alle Videos => public/videos}/MTBtrailsEase.mp4 (100%) rename {Alle Videos => public/videos}/S20Werbevideo.mp4 (100%) rename {Alle Videos => public/videos}/SkippinTrafficDanceWW.mp4 (100%) rename {Alle Videos => public/videos}/V10.mp4 (100%) rename {Alle Videos => public/videos}/Whobble.mp4 (100%) rename {Alle Videos => public/videos}/Whobble2.mp4 (100%) rename {Alle Videos => public/videos}/shortS22Fire.MP4 (100%) rename {Alle Videos => public/videos}/traffic.mp4 (100%) rename {Alle Videos => public/videos}/v11-suspension.gif (100%) rename {Alle Videos => public/videos}/whyS22.mp4 (100%) delete mode 100644 soon.HTML create mode 100644 src/pages/_app.tsx create mode 100644 src/pages/_document.tsx create mode 100644 src/pages/api/hello.ts create mode 100644 src/pages/index.tsx create mode 100644 src/styles/Home.module.css create mode 100644 src/styles/globals.css rename EUC Überblick DE.html => todo/EUC Überblick DE.html (90%) rename EUC Überblick ENG.html => todo/EUC Überblick ENG.html (90%) rename EUC Überblick.css => todo/EUC Überblick.css (100%) rename Geräte.css => todo/Geräte.css (100%) create mode 100644 todo/HerstellerDE.HTML create mode 100644 todo/HerstellerENG.HTML rename KSS22DE.html => todo/KSS22DE.html (84%) create mode 100644 todo/KSS22ENG.html rename Start.css => todo/Start.css (100%) create mode 100644 todo/StartDE.html create mode 100644 todo/StartENG.html create mode 100644 todo/soon.HTML create mode 100644 tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f322f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/HerstellerDE.HTML b/HerstellerDE.HTML deleted file mode 100644 index 54937e1..0000000 --- a/HerstellerDE.HTML +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - Hersteller - - - - - - - -
- Back - -
- - - - - - - -
- -
-

Erklärung und Geschichte der Produzenten

-

Es gibt/gab viele Hersteller von elektrischen Einrädern, hier werden nur die größeren und wichtigen beschrieben. Neben denen gibt u.a Airwheel, IPS, Solowheel, Rockwheel, Firewheel, ESWAY, Fosjoas, MonoRover, F-wheel. Da der Markt so klein ist, gibt es leider kaum einfach erhältliche Informationen über Verkaufszahlen oder Marktanteile der Firmen.

- -

Ninebot

- - -

Ninebot ist für die Meisten bekannt als Sooter Hersteller, manche kenne auch vielleicht deren elektrische Schuhe oder die Segway ähnlichen Geräte mit kurzer Lenkstange. Ninebot ist die größte und vielseitigste Firma der hier gelisteten. Sie experimentieren viel herum, und haben bei den standard-Scootern viel Erfolg, aber leider bei den Einrädern aufgegeben. So gibt es Heute nur wenige Modelle, alle sind eher Anfängergeräte bis untere Mittelklasse. Trotzdem hat Ninebot vor allem durch das Ninebot Z10 ein ikonisches Gerät auf dem Markt hinterlassen, welches durch außergewöhnliches Design und Qualität hervorsticht.

- -

Inmotion

- - -

Inmotion ist der zweitgrößte Hersteller der hier gelisteten. Ebenfallsgroß im standard-Scooter Segment, hat Inmotion aber auch einen großen wenn nicht den größten Marktanteil an EUCs. Vor allen das Inmotion V8 hat als einsteiger und Commuter Gerät eine hohe Beliebtheit und somit hohe Verkaufszahlen. Auch war es Inmotion, welches das äußerst professionell aussehende erste Suspension EUC V11 auf den Markt brachte. Inmotion steht im allgemeinen für Qualität, Design und Sicherheit dank gutem Tiltback und hoher Sicherheitsmarge. Aber das alles im Tausch gegen Performance. Bis vor kurzem war Inmotion Synonym für schwach und wenig Reichweite. Das änderte sich, als das V12 rauskam und bald das V13 rauskommt. Jetzt erhofft man sich sichere und gut designte 90+kmh mit hoher Sicherheitsmarge, und sollte das V13 funktionieren wie erhofft wird es das Image der Firma ändern.

- -

Kingsong

- - -

Kingsong ist sehr ähnlich zu Inmotion, nur kleiner und ohne den großen Scooter und E-bike Markt dahinter. Qualität und Design waren die Merkmale, so wie Langlebigkeit und Robustheit. Mit dem S18 war Kingsong auch einer der ersten Firmen mit Federung für EUCs. Kingsong pionierte das heute oft genutze Schwingarm Design für Federungen. Aber mit dem S18, und später S20 hat das Image etwas Schaden genommen. Beide Geräte hatten große Proble am Anfang, bis hin zum abbrennen des S20 Prototypen. Trotzdem waren beide Geräte ein großer Erfolg, und die Fehler wurden größtenteils behoben. Kingsong ist ebenfals bekannt für die extrem guten Trolley Handle, wie der beim KS 16X und voherigen Modellen.

- -

Gotway/Begode

- - -

Gotway, oder wie sie sich heute nennen Begode, ist schwer zu beschreiben und einzuordnen. Viele Meinungen und Kontroversen. Die Firma wurde nach allen oben genannten gegründet, und wie im Kapitel Historie zu lesen, hatten sie den Fokus gleich auf Leistung gesetzt. Das Design und die Qualität waren am Anfang und auch eigentlich bis vor kurzem grauenvoll. Aber sie waren die ersten die 40kmh, dann 50, dann 60, dann 70, dann 80 und heute 100kmh erreichen können, sie sind die die 4800wh in ein Gerät packen, egal wies aussieht oder wie schwer es ist. Gotway hat aktiv die grenzen des Sports und der Einräder nach vorne gebracht. Immer wenn ein neues schnelleres Gerät raus kam hieß es, ach wer fährt denn schon 40kmh mit so nem Teil. Heute ist 40kmh die mittel Geschwindigkeit, und es wird 70+ erwartet. Auch typisch Begode ist es, durch bis zu 7+ neue Geräte im Jahr die eigenen Geräte schnell veralten zu lassen. Kingsong und Inmotion bringen meist 1 Gerät pro jahr raus.

- -

Durch die fehlende Qualität, die fehlenden Sicherheitesmaßnahmen und minimalen BMSs die Gotway verbaute kam es in der Vergangenheit all zu oft zu Akkubränden, wofür Begode auch in der ganzen Community bekannt ist. Dazu gibt es da die fehlende Kommunikation mit der Community und fehlende Reaktion auf Fehler der Geräte. Trotzdem war Begode die erste Firma die standardmäßig Spiked-pedals verbaute, was ein Wunsch der der Community war und welche bis heute die besten mitgelieferten Spiked-pedals sind. Alle anderen Firmen zogen mit schlechteren Versionen nach, was normalerweise von Begode erwartet wird. Begode waren die ersten, die von 84V auf 100V umstiegen, und neuerdings auch auf 134V, welches ungesehene Leistung bereitstellt. Wieder ziehen die anderen Hersteller langsam nach, und haben trotzdem schwächere Geräte. Die neue Generation von Begode hat besseres, fast gutes Design und in manchen Aspekten auch bessere Federungen als die Konkurrenz, trotzdem brechen die (völlig freiliegenden) Batterie Befestigungen leicht ab und man muss sich DIY Lösungen kaufen um weiter fahren zu können (bei fast 5000€ Geräten).

- -

Es geht immer so weiter, viele schwören auf Begode, viele würden sich nie eins zulegen. Am Ende muss es jeder für sich entscheiden.

- -

Leaperkim/Veteran

- - -

Veteran ist für viele der Lieling. Bestehend aus Ex Gotway Ingenieuren und Mitarbeitern, die mit den Entscheidungen von Gotway nicht einverstanden waren, brachte Veteran 2020 als erstes Gerät das Veteran Sherman raus. Und es Schlug ein wie eine Bombe, es war ein voller Erfolg. Das Robuste, fast militärische Design zusammen mit der hohen stabilen Geschwindigkeit und der großen Reichweite sorgte für eine starke Beliebtheit, auch Heute noch und sogar außerhalb der EUC Community. Allein dieses Gerät und der Kontent dazu brachte eine ganze Welle an neuen Fahrern zum Sport. Schnell war Veteran in den Köpfen als robust, zuverlässig und schnell eingespeichert. Als dann das neue Modell Veteran Abrahams mit größerem Reifen angeküdigt wurde, war der Hype groß. Doch als es dann raus kam gab es große Enttäuschungen, das Gerät hat in jeder Hinsicht versagt und war dazu sehr anfällig für Cut-outs. Danach war das Image beschädigt. Erst ein Jahr später kam das Veteran Sherman Max heraus, was der Nachfolger vom normalen Sherman wurde.

- -

Veteran scheint aus den Fehlern mit dem Abrahams gelernt zu haben, denn mit dem neusten Release des Sherman S haben sie ein weiteres vielversprechenden Gerät vorgestellt. Vollständige Metall Konsstruktion, weltklasse Federung, Großer Akku und genug Leistung.

- -

Extreme Bull

-

Bei Extreme Bull ist nicht alles ganz klar. Es scheint eine Untermarke von Begode zu sein, die noch dreister andere Geräte kopiert und in billger anbietet als es Begode tut. Man sieht kaum Geräte von Extreme Bull herumfahren, und viele Verkäufer bieten die auch gar nicht erst an. Aber seit kurzem gibt es Gerüchte über eine Sherman S Kopie namens Commander Pro. Sollten die Gerüchte stimmen und das Gerät halten was es verspricht, könnte Extreme Bull auf dem Vormarsch sein.

-
- -
- - - \ No newline at end of file diff --git a/HerstellerENG.HTML b/HerstellerENG.HTML deleted file mode 100644 index 7db503f..0000000 --- a/HerstellerENG.HTML +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - Hersteller - - - - - - - -
- Back - -
- - - - - - - -
-
-

History and explonation of manufacturers

-

There are/were many manufacturers of electric unicycles, only the larger and more important ones are described here. In addition to those, there are Airwheel, IPS, Solowheel, Rockwheel, Firewheel, ESWAY, Fosjoas, MonoRover, F-wheel, among others. Unfortunately, because the market is so small, there is little readily available information about company sales or market share.

- -

Ninebot

- - -

Ninebot is known to most as a sooter manufacturer, some may also know their electric shoes or Segway-like devices with short handlebars. Ninebot is the largest and most versatile company of those listed here. They experiment a lot and have had a lot of success with the standard scooters, but unfortunately gave up on the unicycles. So today there are only a few models, all of them are rather beginner devices to lower middle class. Nevertheless, Ninebot has left an iconic device on the market, especially with the Ninebot Z10, which stands out with its extraordinary design and quality.

- -

Inmotion

- - -

Inmotion is the second largest manufacturer of those listed here. Also big in the standard scooter segment, Inmotion also has a large if not the largest market share of EUCs. Above all, the Inmotion V8 is very popular as a beginner and commuter device and therefore has high sales figures. It was also Inmotion that launched the extremely professional looking first Suspension EUC V11. Inmotion generally stands for quality, design and safety thanks to good tiltback and high safety margin. But all this in exchange for performance. Until recently, inmotion was synonymous with weak and little range. That changed when the V12 came out and soon the V13 will come out. Now we are hoping for a safe and well-designed 90+kmh with a high safety margin, and should the V13 perform as hoped it will change the company's image.

- -

Kingsong

- - -

Kingsong is very similar to Inmotion, only smaller and without the big scooter and e-bike market behind it. Quality and design were the characteristics, as well as durability and robustness. With the S18, Kingsong was also one of the first companies to introduce suspension for EUCs. Kingsong pioneered the swing arm design for suspension that is widely used today. But with the S18, and later the S20, the image took some damage. Both devices had big problems at the beginning, up to the burning of the S20 prototype. Despite this, both devices were a great success, and the bugs were mostly fixed. Kingsong is also known for their extremely good trolley handle, like the one on the KS 16X and previous models.

- -

Gotway/Begode

- - -

Gotway, or Begode as they call themselves today, is difficult to describe and classify. Many opinions and controversies. The company was founded after all of the above were, and as you can read in the History chapter, they had the focus on performance right away. The design and the quality were terrible in the beginning and actually until recently. But they were the first to be able to hit 40kmh, then 50, then 60, then 70, then 80 and now 100kmh, they're the ones who pack 4800wh into one device, no matter what it looks like or how heavy it is. Gotway has actively pushed the boundaries of the sport and unicycles. Whenever a new, faster device came out, it was said, oh who rides 40kmh on a unicycle anyway. Today 40kmh is the medium speed and 70+ is expected. It is also typical of Begode to let their own devices quickly become obsolete with up to 7+ new devices a year. Kingsong and Inmotion usually release 1 device per year.

- -

Due to the lack of quality, the lack of safety measures and minimal BMSs that Gotway installs, battery fires happened all too often in the past, which Begode is also known for throughout the community. There is also a lack of communication with the community and a lack of reaction to productions defects. Nevertheless, Begode was the first company to use spiked pedals as standard, which was a request from the community and which are the best included default spiked pedals to date. All other companies followed suit with worse versions, which is what is normally expected of Begode. Begode were the first to move from 84V to 100V, and more recently to 134V, which provides unprecedented power. Again, the other manufacturers are slowly catching up and still have weaker devices. The new generation of Begode has better, almost good design and in some aspects also better suspension than the competition, nevertheless the (completely exposed) battery mounts break off easily and you have to buy DIY solutions to continue riding (for an almost 5000€ Device).

- -

It goes on and on, many swear by Begode, many would never buy one. In the end everyone has to decide for themselves.

- -

Leaperkim/Veteran

- - -

Veteran is the favorite for many. Comprised of ex-Gotway engineers and employees who disagreed with Gotway's decisions, Veteran released the Veteran Sherman in 2020 as its first device. And it hit like a bomb, it was a complete success. The robust, almost military design together with the high stable speed and the long range made it very popular even today and even outside the EUC community. This device and the content alone brought a whole wave of new riders to the sport. Veteran was quickly stored in people's minds as robust, reliable and fast. When the new Veteran Abrahams model with bigger tires was announced, the hype was huge. But when it came out there were big disappointments, the device failed in every aspect and was also very prone to cut-outs. After that the image was damaged. Only a year later the veteran Sherman Max came out, which became the successor to the normal Sherman.

- -

Veteran seems to have learned from their mistakes with the Abrahams, as they have introduced another promising device with the latest release of the Sherman S. All metal construction, world class suspension, large battery and enough power.

- -

Extreme Bull

-

With Extreme Bull, not everything is entirely clear. It seems to be a sub-brand of Begode, which even more brazenly copies other devices and offers them cheaper than Begode does. Extreme Bull devices are rarely seen riding around, and many resellers don't even offer them. But, as of recently there are rumors about a Sherman S copy called Commander pro. should the rumors be true, and should the device deliver whats promised, Extreme Bull might be on the rise.

-
-
- - - \ No newline at end of file diff --git a/KSS22ENG.html b/KSS22ENG.html deleted file mode 100644 index 2a6d0f4..0000000 --- a/KSS22ENG.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - KS S22 - - - -
- Zurück - Start -
- - -
-
- -
- -
-
-

Kingsong S22

- -

The Kingsong S22, formerly S20, is a clearly off-road and trail oriented unicycle. Among other things, it has 130mm suspension travel and a robust metal construction, which makes it ideal for big jumps and high drops.

- -

It is the successor to the smaller S18, but with double the battery and 50% more motor power, such as a top speed of 70 instead of 50 km/h. The freespin is up to 114 km/h, so ideal for longer jumps where the tire is spinning up in the air.

- -

It also comes with a seat, pretty good jump- and power pads and spiked pedals. Plus a sturdy, albeit oddly placed and somewhat short trolley handle, as well as a sturdy kickstand and height-adjustable bright lights. It's waterproof, but not submersible, and best of all, it's super easy to work with because the device has a very modular design. The tire can theoretically be removed with just 2 screws

- -

While all of this is true, many problems have unfortunately arisen with this highly anticipated and hyped wheel. There were motor problems with the first devices, which led to cut-offs and burned the motherboard. Also, the slider design is very clumsy and gets harder and harder to move over time. Many S22 buyers had to wait a long time for replacement motors, such as upgrading the sliders for €100 to €200. However, with the upgrades, it is currently the best suspension unicycle on the market. (Until the Veteran Sherman S goes on sale.)

-
-
-
- - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Size582L 330W 747H
Wheel Circumference20 inches
Pedal Height231+-26mm
Weight35kg
Suspension travel130mm
Suspension TypeOil Shock
Suspension Adjustments (for suspension)Rebound, compression
Free Spin114kmh
Top speed70kmh
Range at 30kmh200km
Minimum range for heavy use70km
Max climb angle45°
Max. payload120kg
Engine TypeHigh Speed
Engine Power3300W
Peak Power7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IPRatingnope
AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
Lights8x5W adjustable headlights
Default tiresNobby
Anti spin button?under control
Display?dot matrix
RGB?Taillight
Pads?All inclusive
Charge outlets?nope
Charger:
Default load time:3.3h
Max Amps:10A
Fastest load time:100min
Load ports:2
- - - \ No newline at end of file diff --git a/StartDE.html b/StartDE.html deleted file mode 100644 index 67c32a9..0000000 --- a/StartDE.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Start - - - - -
- -

Bock auf was Neues?

-
- -

Bock auf was Neues?

- - -

Flexible - Modern - schneller als die Polizei erlaubt. Das sind moderne eletrische Einräder.

-
- -

Von 0 auf 50kmh in 3s, 100kmh top Geschwindigkeit und 230km Reichweite machen aus diesen Geräten den ultimativen Sport.

-
- - -

Gleichzeitig 50° steile Wände hochfahren und MTB Trails mit leichtigkeit nehmen.

-
- - -

Jeden Weg nutzen und nie wieder im Verkehr stecken.

-
- - -

Und trotzdem leicht zu transportiren und untern Tisch zu packen.

-
- - -

Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

- - - -
-

Ich will alles darüber lesen!

-
-
- - -
-

Mir reichen Videos

-
-
- - -
-

Language

-
-
- - - \ No newline at end of file diff --git a/StartENG.html b/StartENG.html deleted file mode 100644 index 5c404a8..0000000 --- a/StartENG.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - Start - - - - - -
- -

Wanna try something new?

-
- -

Wanna try something new?

- -

Flexible - Modern - Faster then law it self. These are modern electric unicycles:

- -
- -

From 0 auf 50kmh in 3s, 100kmh top speed and 230km range make these devices the ultimate sport.

- -
- -

Meanwhile climbing 50° steep walls and taking MTB trails with ease.

- -
- -

Taking every path and never get stuck in traffic again.

- -
- -

But still being easy to carry and store just under your desk.

- -
- -

Interested? Then take a deep dive into PEV's and EUC's:

- - -
-

I want to read everything about it!

-
-
- - -
-

Na, videos are just fine

-
-
- - -
-

Sprache

-
-
- - - \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..a843cbe --- /dev/null +++ b/next.config.js @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, +} + +module.exports = nextConfig diff --git a/package.json b/package.json new file mode 100644 index 0000000..45dfc3a --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "jg-eucs", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@types/node": "18.15.11", + "@types/react": "18.0.35", + "@types/react-dom": "18.0.11", + "eslint": "8.38.0", + "eslint-config-next": "13.3.0", + "next": "13.3.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "typescript": "5.0.4" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..d06a0f8 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2161 @@ +lockfileVersion: '6.0' + +dependencies: + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/react': + specifier: 18.0.35 + version: 18.0.35 + '@types/react-dom': + specifier: 18.0.11 + version: 18.0.11 + eslint: + specifier: 8.38.0 + version: 8.38.0 + eslint-config-next: + specifier: 13.3.0 + version: 13.3.0(eslint@8.38.0)(typescript@5.0.4) + next: + specifier: 13.3.0 + version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + typescript: + specifier: 5.0.4 + version: 5.0.4 + +packages: + + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.38.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: false + + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@eslint/js@8.38.0: + resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: false + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: false + + /@next/env@13.3.0: + resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==} + dev: false + + /@next/eslint-plugin-next@13.3.0: + resolution: {integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==} + dependencies: + glob: 7.1.7 + dev: false + + /@next/swc-darwin-arm64@13.3.0: + resolution: {integrity: sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@13.3.0: + resolution: {integrity: sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@13.3.0: + resolution: {integrity: sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@13.3.0: + resolution: {integrity: sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@13.3.0: + resolution: {integrity: sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.3.0: + resolution: {integrity: sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.3.0: + resolution: {integrity: sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.3.0: + resolution: {integrity: sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.3.0: + resolution: {integrity: sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: false + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: false + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: false + + /@pkgr/utils@2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.2 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: false + + /@rushstack/eslint-patch@1.2.0: + resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + dev: false + + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.5.0 + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + dev: false + + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: false + + /@types/react-dom@18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + dependencies: + '@types/react': 18.0.35 + dev: false + + /@types/react@18.0.35: + resolution: {integrity: sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: false + + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: false + + /@typescript-eslint/parser@5.58.0(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.58.0 + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/typescript-estree': 5.58.0(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.38.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@5.58.0: + resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/visitor-keys': 5.58.0 + dev: false + + /@typescript-eslint/types@5.58.0: + resolution: {integrity: sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /@typescript-eslint/typescript-estree@5.58.0(typescript@5.0.4): + resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.58.0 + '@typescript-eslint/visitor-keys': 5.58.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.4.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/visitor-keys@5.58.0: + resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.58.0 + eslint-visitor-keys: 3.4.0 + dev: false + + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: false + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: false + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.0 + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.0 + dev: false + + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: false + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false + + /axe-core@4.6.3: + resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + engines: {node: '>=4'} + dev: false + + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + dependencies: + deep-equal: 2.2.0 + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: false + + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: false + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: false + + /caniuse-lite@1.0.30001478: + resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==} + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: false + + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + + /deep-equal@2.2.0: + resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.0 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: false + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false + + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: false + + /eslint-config-next@13.3.0(eslint@8.38.0)(typescript@5.0.4): + resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.3.0 + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + eslint: 8.38.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.38.0) + eslint-plugin-react: 7.32.2(eslint@8.38.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.38.0) + typescript: 5.0.4 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.12.0 + resolve: 1.22.3 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.12.0 + eslint: 8.38.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + get-tsconfig: 4.5.0 + globby: 13.1.4 + is-core-module: 2.12.0 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + debug: 3.2.7 + eslint: 8.38.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.38.0) + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.58.0(eslint@8.38.0)(typescript@5.0.4) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.38.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.38.0) + has: 1.0.3 + is-core-module: 2.12.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.3 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.38.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.21.0 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.38.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: false + + /eslint-plugin-react-hooks@4.6.0(eslint@8.38.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.38.0 + dev: false + + /eslint-plugin-react@7.32.2(eslint@8.38.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.38.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: false + + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: false + + /eslint@8.38.0: + resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.38.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.38.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: false + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: false + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: false + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: false + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: false + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: false + + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false + + /get-intrinsic@1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: false + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: false + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: false + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: false + + /has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: false + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: false + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + dependencies: + has: 1.0.3 + dev: false + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: false + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: false + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: false + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: false + + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: false + + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: false + + /next@13.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} + engines: {node: '>=14.6.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.3.0 + '@swc/helpers': 0.4.14 + busboy: 1.6.0 + caniuse-lite: 1.0.30001478 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 13.3.0 + '@next/swc-darwin-x64': 13.3.0 + '@next/swc-linux-arm64-gnu': 13.3.0 + '@next/swc-linux-arm64-musl': 13.3.0 + '@next/swc-linux-x64-gnu': 13.3.0 + '@next/swc-linux-x64-musl': 13.3.0 + '@next/swc-win32-arm64-msvc': 13.3.0 + '@next/swc-win32-ia32-msvc': 13.3.0 + '@next/swc-win32-x64-msvc': 13.3.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + dev: false + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: false + + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: false + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: false + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: false + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false + + /postcss@8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: false + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regexp.prototype.flags@1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: false + + /resolve@1.22.3: + resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} + hasBin: true + dependencies: + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: false + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: false + + /semver@7.4.0: + resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: false + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + + /stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.5 + dev: false + + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: false + + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: false + + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: false + + /styled-jsx@5.1.1(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: false + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: false + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: false + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: false + + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: false + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false + + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: false + + /tsutils@3.21.0(typescript@5.0.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: false + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: false + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: false + + /which-typed-array@1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: false diff --git a/Alle Bilder/1.jpg b/public/KS S22/1.jpg similarity index 100% rename from Alle Bilder/1.jpg rename to public/KS S22/1.jpg diff --git a/Alle Bilder/2.jpg b/public/KS S22/2.jpg similarity index 100% rename from Alle Bilder/2.jpg rename to public/KS S22/2.jpg diff --git a/Alle Bilder/3.jpg b/public/KS S22/3.jpg similarity index 100% rename from Alle Bilder/3.jpg rename to public/KS S22/3.jpg diff --git a/Alle Bilder/4.jpg b/public/KS S22/4.jpg similarity index 100% rename from Alle Bilder/4.jpg rename to public/KS S22/4.jpg diff --git a/Alle Bilder/BusJump.jpg b/public/KS S22/BusJump.jpg similarity index 100% rename from Alle Bilder/BusJump.jpg rename to public/KS S22/BusJump.jpg diff --git a/Alle Bilder/Data-Sheet.jpg b/public/KS S22/Data-Sheet.jpg similarity index 100% rename from Alle Bilder/Data-Sheet.jpg rename to public/KS S22/Data-Sheet.jpg diff --git a/KS S22/S22SliderMod.jpg b/public/KS S22/S22SliderMod.jpg similarity index 100% rename from KS S22/S22SliderMod.jpg rename to public/KS S22/S22SliderMod.jpg diff --git a/Alle Bilder/S22shutterkode1.jpg b/public/KS S22/S22shutterkode1.jpg similarity index 100% rename from Alle Bilder/S22shutterkode1.jpg rename to public/KS S22/S22shutterkode1.jpg diff --git a/Alle Bilder/S22shutterkode2.jpg b/public/KS S22/S22shutterkode2.jpg similarity index 100% rename from Alle Bilder/S22shutterkode2.jpg rename to public/KS S22/S22shutterkode2.jpg diff --git a/Alle Bilder/S22shutterkode3.jpg b/public/KS S22/S22shutterkode3.jpg similarity index 100% rename from Alle Bilder/S22shutterkode3.jpg rename to public/KS S22/S22shutterkode3.jpg diff --git a/Alle Bilder/S22shutterkode4.jpg b/public/KS S22/S22shutterkode4.jpg similarity index 100% rename from Alle Bilder/S22shutterkode4.jpg rename to public/KS S22/S22shutterkode4.jpg diff --git a/Alle Bilder/S22shutterkode5.jpg b/public/KS S22/S22shutterkode5.jpg similarity index 100% rename from Alle Bilder/S22shutterkode5.jpg rename to public/KS S22/S22shutterkode5.jpg diff --git a/KS S22/S22shutterkode6.jpg b/public/KS S22/S22shutterkode6.jpg similarity index 100% rename from KS S22/S22shutterkode6.jpg rename to public/KS S22/S22shutterkode6.jpg diff --git a/KS S22/V13lq1.jpg b/public/KS S22/V13lq1.jpg similarity index 100% rename from KS S22/V13lq1.jpg rename to public/KS S22/V13lq1.jpg diff --git a/Alle Bilder/ks20cover.jpg b/public/KS S22/ks20cover.jpg similarity index 100% rename from Alle Bilder/ks20cover.jpg rename to public/KS S22/ks20cover.jpg diff --git a/Alle Bilder/ks20riding.jpg b/public/KS S22/ks20riding.jpg similarity index 100% rename from Alle Bilder/ks20riding.jpg rename to public/KS S22/ks20riding.jpg diff --git a/Favicon/6ec4fa54d92846679ea2e5419d2c9ffd.zip b/public/favicon/6ec4fa54d92846679ea2e5419d2c9ffd.zip similarity index 100% rename from Favicon/6ec4fa54d92846679ea2e5419d2c9ffd.zip rename to public/favicon/6ec4fa54d92846679ea2e5419d2c9ffd.zip diff --git a/Favicon/android-icon-192x192.png b/public/favicon/android-icon-192x192.png similarity index 100% rename from Favicon/android-icon-192x192.png rename to public/favicon/android-icon-192x192.png diff --git a/Favicon/anleitung.txt b/public/favicon/anleitung.txt similarity index 100% rename from Favicon/anleitung.txt rename to public/favicon/anleitung.txt diff --git a/Favicon/apple-icon-114x114.png b/public/favicon/apple-icon-114x114.png similarity index 100% rename from Favicon/apple-icon-114x114.png rename to public/favicon/apple-icon-114x114.png diff --git a/Favicon/apple-icon-120x120.png b/public/favicon/apple-icon-120x120.png similarity index 100% rename from Favicon/apple-icon-120x120.png rename to public/favicon/apple-icon-120x120.png diff --git a/Favicon/apple-icon-144x144.png b/public/favicon/apple-icon-144x144.png similarity index 100% rename from Favicon/apple-icon-144x144.png rename to public/favicon/apple-icon-144x144.png diff --git a/Favicon/apple-icon-152x152.png b/public/favicon/apple-icon-152x152.png similarity index 100% rename from Favicon/apple-icon-152x152.png rename to public/favicon/apple-icon-152x152.png diff --git a/Favicon/apple-icon-180x180.png b/public/favicon/apple-icon-180x180.png similarity index 100% rename from Favicon/apple-icon-180x180.png rename to public/favicon/apple-icon-180x180.png diff --git a/Favicon/apple-icon-57x57.png b/public/favicon/apple-icon-57x57.png similarity index 100% rename from Favicon/apple-icon-57x57.png rename to public/favicon/apple-icon-57x57.png diff --git a/Favicon/apple-icon-60x60.png b/public/favicon/apple-icon-60x60.png similarity index 100% rename from Favicon/apple-icon-60x60.png rename to public/favicon/apple-icon-60x60.png diff --git a/Favicon/apple-icon-72x72.png b/public/favicon/apple-icon-72x72.png similarity index 100% rename from Favicon/apple-icon-72x72.png rename to public/favicon/apple-icon-72x72.png diff --git a/Favicon/apple-icon-76x76.png b/public/favicon/apple-icon-76x76.png similarity index 100% rename from Favicon/apple-icon-76x76.png rename to public/favicon/apple-icon-76x76.png diff --git a/Favicon/browserconfig.xml b/public/favicon/browserconfig.xml similarity index 100% rename from Favicon/browserconfig.xml rename to public/favicon/browserconfig.xml diff --git a/Favicon/favicon-16x16.png b/public/favicon/favicon-16x16.png similarity index 100% rename from Favicon/favicon-16x16.png rename to public/favicon/favicon-16x16.png diff --git a/Favicon/favicon-256x256.png b/public/favicon/favicon-256x256.png similarity index 100% rename from Favicon/favicon-256x256.png rename to public/favicon/favicon-256x256.png diff --git a/Favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png similarity index 100% rename from Favicon/favicon-32x32.png rename to public/favicon/favicon-32x32.png diff --git a/Favicon/favicon-96x96.png b/public/favicon/favicon-96x96.png similarity index 100% rename from Favicon/favicon-96x96.png rename to public/favicon/favicon-96x96.png diff --git a/Favicon/favicon.ico b/public/favicon/favicon.ico similarity index 100% rename from Favicon/favicon.ico rename to public/favicon/favicon.ico diff --git a/Favicon/manifest.json b/public/favicon/manifest.json similarity index 100% rename from Favicon/manifest.json rename to public/favicon/manifest.json diff --git a/Favicon/ms-icon-144x144.png b/public/favicon/ms-icon-144x144.png similarity index 100% rename from Favicon/ms-icon-144x144.png rename to public/favicon/ms-icon-144x144.png diff --git a/Favicon/ms-icon-150x150.png b/public/favicon/ms-icon-150x150.png similarity index 100% rename from Favicon/ms-icon-150x150.png rename to public/favicon/ms-icon-150x150.png diff --git a/Favicon/ms-icon-310x310.png b/public/favicon/ms-icon-310x310.png similarity index 100% rename from Favicon/ms-icon-310x310.png rename to public/favicon/ms-icon-310x310.png diff --git a/Favicon/ms-icon-70x70.png b/public/favicon/ms-icon-70x70.png similarity index 100% rename from Favicon/ms-icon-70x70.png rename to public/favicon/ms-icon-70x70.png diff --git a/KS S22/1.jpg b/public/images/1.jpg similarity index 100% rename from KS S22/1.jpg rename to public/images/1.jpg diff --git a/KS S22/2.jpg b/public/images/2.jpg similarity index 100% rename from KS S22/2.jpg rename to public/images/2.jpg diff --git a/KS S22/3.jpg b/public/images/3.jpg similarity index 100% rename from KS S22/3.jpg rename to public/images/3.jpg diff --git a/KS S22/4.jpg b/public/images/4.jpg similarity index 100% rename from KS S22/4.jpg rename to public/images/4.jpg diff --git a/Alle Bilder/AkkuRedundanz.png b/public/images/AkkuRedundanz.png similarity index 100% rename from Alle Bilder/AkkuRedundanz.png rename to public/images/AkkuRedundanz.png diff --git a/Alle Bilder/AkkuSherman.jpg b/public/images/AkkuSherman.jpg similarity index 100% rename from Alle Bilder/AkkuSherman.jpg rename to public/images/AkkuSherman.jpg diff --git a/Alle Bilder/BEGODElogo.jpg b/public/images/BEGODElogo.jpg similarity index 100% rename from Alle Bilder/BEGODElogo.jpg rename to public/images/BEGODElogo.jpg diff --git a/Alle Bilder/BMS.jpg b/public/images/BMS.jpg similarity index 100% rename from Alle Bilder/BMS.jpg rename to public/images/BMS.jpg diff --git a/Alle Bilder/BegodeLineup.jpg b/public/images/BegodeLineup.jpg similarity index 100% rename from Alle Bilder/BegodeLineup.jpg rename to public/images/BegodeLineup.jpg diff --git a/Alle Bilder/BegodeMemeBurn.jpg b/public/images/BegodeMemeBurn.jpg similarity index 100% rename from Alle Bilder/BegodeMemeBurn.jpg rename to public/images/BegodeMemeBurn.jpg diff --git a/KS S22/BusJump.jpg b/public/images/BusJump.jpg similarity index 100% rename from KS S22/BusJump.jpg rename to public/images/BusJump.jpg diff --git a/Alle Bilder/Commander.jpg b/public/images/Commander.jpg similarity index 100% rename from Alle Bilder/Commander.jpg rename to public/images/Commander.jpg diff --git a/KS S22/Data-Sheet.jpg b/public/images/Data-Sheet.jpg similarity index 100% rename from KS S22/Data-Sheet.jpg rename to public/images/Data-Sheet.jpg diff --git a/Alle Bilder/EX30.jpg b/public/images/EX30.jpg similarity index 100% rename from Alle Bilder/EX30.jpg rename to public/images/EX30.jpg diff --git a/Alle Bilder/Funktionsblld.webp b/public/images/Funktionsblld.webp similarity index 100% rename from Alle Bilder/Funktionsblld.webp rename to public/images/Funktionsblld.webp diff --git a/Alle Bilder/Gear1.jpg b/public/images/Gear1.jpg similarity index 100% rename from Alle Bilder/Gear1.jpg rename to public/images/Gear1.jpg diff --git a/Alle Bilder/Gear2.jpg b/public/images/Gear2.jpg similarity index 100% rename from Alle Bilder/Gear2.jpg rename to public/images/Gear2.jpg diff --git a/Alle Bilder/Gear3.webp b/public/images/Gear3.webp similarity index 100% rename from Alle Bilder/Gear3.webp rename to public/images/Gear3.webp diff --git a/Alle Bilder/Inmotion.webp b/public/images/Inmotion.webp similarity index 100% rename from Alle Bilder/Inmotion.webp rename to public/images/Inmotion.webp diff --git a/Alle Bilder/InmotionLineup.jpg b/public/images/InmotionLineup.jpg similarity index 100% rename from Alle Bilder/InmotionLineup.jpg rename to public/images/InmotionLineup.jpg diff --git a/Alle Bilder/KS16X.jpg b/public/images/KS16X.jpg similarity index 100% rename from Alle Bilder/KS16X.jpg rename to public/images/KS16X.jpg diff --git a/Alle Bilder/KidsKS16X.jpg b/public/images/KidsKS16X.jpg similarity index 100% rename from Alle Bilder/KidsKS16X.jpg rename to public/images/KidsKS16X.jpg diff --git a/Alle Bilder/Master Pro.jpg b/public/images/Master Pro.jpg similarity index 100% rename from Alle Bilder/Master Pro.jpg rename to public/images/Master Pro.jpg diff --git a/Alle Bilder/Master.jpg b/public/images/Master.jpg similarity index 100% rename from Alle Bilder/Master.jpg rename to public/images/Master.jpg diff --git a/Alle Bilder/MoBo.jpg b/public/images/MoBo.jpg similarity index 100% rename from Alle Bilder/MoBo.jpg rename to public/images/MoBo.jpg diff --git a/Alle Bilder/MonsterPro.jpg b/public/images/MonsterPro.jpg similarity index 100% rename from Alle Bilder/MonsterPro.jpg rename to public/images/MonsterPro.jpg diff --git a/Alle Bilder/Motor.jpeg b/public/images/Motor.jpeg similarity index 100% rename from Alle Bilder/Motor.jpeg rename to public/images/Motor.jpeg diff --git a/Alle Bilder/Mten4.jpg b/public/images/Mten4.jpg similarity index 100% rename from Alle Bilder/Mten4.jpg rename to public/images/Mten4.jpg diff --git a/Alle Bilder/NineBot.webp b/public/images/NineBot.webp similarity index 100% rename from Alle Bilder/NineBot.webp rename to public/images/NineBot.webp diff --git a/Alle Bilder/NinebotZ10goood.webp b/public/images/NinebotZ10goood.webp similarity index 100% rename from Alle Bilder/NinebotZ10goood.webp rename to public/images/NinebotZ10goood.webp diff --git a/Alle Bilder/Pads.jpg b/public/images/Pads.jpg similarity index 100% rename from Alle Bilder/Pads.jpg rename to public/images/Pads.jpg diff --git a/Alle Bilder/S18.jpg b/public/images/S18.jpg similarity index 100% rename from Alle Bilder/S18.jpg rename to public/images/S18.jpg diff --git a/KS S22/S22shutterkode1.jpg b/public/images/S22shutterkode1.jpg similarity index 100% rename from KS S22/S22shutterkode1.jpg rename to public/images/S22shutterkode1.jpg diff --git a/KS S22/S22shutterkode2.jpg b/public/images/S22shutterkode2.jpg similarity index 100% rename from KS S22/S22shutterkode2.jpg rename to public/images/S22shutterkode2.jpg diff --git a/KS S22/S22shutterkode3.jpg b/public/images/S22shutterkode3.jpg similarity index 100% rename from KS S22/S22shutterkode3.jpg rename to public/images/S22shutterkode3.jpg diff --git a/KS S22/S22shutterkode4.jpg b/public/images/S22shutterkode4.jpg similarity index 100% rename from KS S22/S22shutterkode4.jpg rename to public/images/S22shutterkode4.jpg diff --git a/KS S22/S22shutterkode5.jpg b/public/images/S22shutterkode5.jpg similarity index 100% rename from KS S22/S22shutterkode5.jpg rename to public/images/S22shutterkode5.jpg diff --git a/Alle Bilder/ShermanSepic.jpg b/public/images/ShermanSepic.jpg similarity index 100% rename from Alle Bilder/ShermanSepic.jpg rename to public/images/ShermanSepic.jpg diff --git a/Alle Bilder/ShermanStanding.jpg b/public/images/ShermanStanding.jpg similarity index 100% rename from Alle Bilder/ShermanStanding.jpg rename to public/images/ShermanStanding.jpg diff --git a/Alle Bilder/Shermangrey.jpg b/public/images/Shermangrey.jpg similarity index 100% rename from Alle Bilder/Shermangrey.jpg rename to public/images/Shermangrey.jpg diff --git a/Alle Bilder/SpikedPedals.jpeg b/public/images/SpikedPedals.jpeg similarity index 100% rename from Alle Bilder/SpikedPedals.jpeg rename to public/images/SpikedPedals.jpeg diff --git a/Alle Bilder/T4.jpg b/public/images/T4.jpg similarity index 100% rename from Alle Bilder/T4.jpg rename to public/images/T4.jpg diff --git a/Alle Bilder/Tires.PNG b/public/images/Tires.PNG similarity index 100% rename from Alle Bilder/Tires.PNG rename to public/images/Tires.PNG diff --git a/Alle Bilder/Trolley-seat.jpg b/public/images/Trolley-seat.jpg similarity index 100% rename from Alle Bilder/Trolley-seat.jpg rename to public/images/Trolley-seat.jpg diff --git a/Alle Bilder/UltimativeSport.jpg b/public/images/UltimativeSport.jpg similarity index 100% rename from Alle Bilder/UltimativeSport.jpg rename to public/images/UltimativeSport.jpg diff --git a/Alle Bilder/V11 2.jpg b/public/images/V11 2.jpg similarity index 100% rename from Alle Bilder/V11 2.jpg rename to public/images/V11 2.jpg diff --git a/Alle Bilder/V11 3.webp b/public/images/V11 3.webp similarity index 100% rename from Alle Bilder/V11 3.webp rename to public/images/V11 3.webp diff --git a/Alle Bilder/V12 2.jpg b/public/images/V12 2.jpg similarity index 100% rename from Alle Bilder/V12 2.jpg rename to public/images/V12 2.jpg diff --git a/Alle Bilder/V13 2.jpg b/public/images/V13 2.jpg similarity index 100% rename from Alle Bilder/V13 2.jpg rename to public/images/V13 2.jpg diff --git a/Alle Bilder/V13hq3.jpg b/public/images/V13hq3.jpg similarity index 100% rename from Alle Bilder/V13hq3.jpg rename to public/images/V13hq3.jpg diff --git a/Alle Bilder/abrahams.jpg b/public/images/abrahams.jpg similarity index 100% rename from Alle Bilder/abrahams.jpg rename to public/images/abrahams.jpg diff --git a/Alle Bilder/burned.png b/public/images/burned.png similarity index 100% rename from Alle Bilder/burned.png rename to public/images/burned.png diff --git a/Alle Bilder/cover.jpg b/public/images/cover.jpg similarity index 100% rename from Alle Bilder/cover.jpg rename to public/images/cover.jpg diff --git a/Alle Bilder/historieEUC.webp b/public/images/historieEUC.webp similarity index 100% rename from Alle Bilder/historieEUC.webp rename to public/images/historieEUC.webp diff --git a/Alle Bilder/inmotionLogo.png b/public/images/inmotionLogo.png similarity index 100% rename from Alle Bilder/inmotionLogo.png rename to public/images/inmotionLogo.png diff --git a/Alle Bilder/inmotionV8.jfif b/public/images/inmotionV8.jfif similarity index 100% rename from Alle Bilder/inmotionV8.jfif rename to public/images/inmotionV8.jfif diff --git a/Alle Bilder/kingsong2.jpg b/public/images/kingsong2.jpg similarity index 100% rename from Alle Bilder/kingsong2.jpg rename to public/images/kingsong2.jpg diff --git a/Alle Bilder/kingsongLogo.png b/public/images/kingsongLogo.png similarity index 100% rename from Alle Bilder/kingsongLogo.png rename to public/images/kingsongLogo.png diff --git a/KS S22/ks20cover.jpg b/public/images/ks20cover.jpg similarity index 100% rename from KS S22/ks20cover.jpg rename to public/images/ks20cover.jpg diff --git a/KS S22/ks20riding.jpg b/public/images/ks20riding.jpg similarity index 100% rename from KS S22/ks20riding.jpg rename to public/images/ks20riding.jpg diff --git a/Alle Bilder/moddedSherman1.jpg b/public/images/moddedSherman1.jpg similarity index 100% rename from Alle Bilder/moddedSherman1.jpg rename to public/images/moddedSherman1.jpg diff --git a/Alle Bilder/ninebotLogo.jpg b/public/images/ninebotLogo.jpg similarity index 100% rename from Alle Bilder/ninebotLogo.jpg rename to public/images/ninebotLogo.jpg diff --git a/Alle Bilder/realBattery.jpg b/public/images/realBattery.jpg similarity index 100% rename from Alle Bilder/realBattery.jpg rename to public/images/realBattery.jpg diff --git a/Alle Bilder/realMoBo1.PNG b/public/images/realMoBo1.PNG similarity index 100% rename from Alle Bilder/realMoBo1.PNG rename to public/images/realMoBo1.PNG diff --git a/Alle Bilder/realMotor.png b/public/images/realMotor.png similarity index 100% rename from Alle Bilder/realMotor.png rename to public/images/realMotor.png diff --git a/Alle Bilder/solowheel-1.jpg b/public/images/solowheel-1.jpg similarity index 100% rename from Alle Bilder/solowheel-1.jpg rename to public/images/solowheel-1.jpg diff --git a/Alle Bilder/veteranLogo.png b/public/images/veteranLogo.png similarity index 100% rename from Alle Bilder/veteranLogo.png rename to public/images/veteranLogo.png diff --git a/Alle Bilder/what is euc.jpg b/public/images/what is euc.jpg similarity index 100% rename from Alle Bilder/what is euc.jpg rename to public/images/what is euc.jpg diff --git a/Alle Bilder/z10.jpeg b/public/images/z10.jpeg similarity index 100% rename from Alle Bilder/z10.jpeg rename to public/images/z10.jpeg diff --git a/Alle Videos/Cutout1.mp4 b/public/videos/Cutout1.mp4 similarity index 100% rename from Alle Videos/Cutout1.mp4 rename to public/videos/Cutout1.mp4 diff --git a/Alle Videos/FahrweiseNYC.mp4 b/public/videos/FahrweiseNYC.mp4 similarity index 100% rename from Alle Videos/FahrweiseNYC.mp4 rename to public/videos/FahrweiseNYC.mp4 diff --git a/Alle Videos/FahrweiseNYC2.mp4 b/public/videos/FahrweiseNYC2.mp4 similarity index 100% rename from Alle Videos/FahrweiseNYC2.mp4 rename to public/videos/FahrweiseNYC2.mp4 diff --git a/Alle Videos/FahrweiseNYC3.mp4 b/public/videos/FahrweiseNYC3.mp4 similarity index 100% rename from Alle Videos/FahrweiseNYC3.mp4 rename to public/videos/FahrweiseNYC3.mp4 diff --git a/Alle Videos/FahrweiseNYC4bad.mp4 b/public/videos/FahrweiseNYC4bad.mp4 similarity index 100% rename from Alle Videos/FahrweiseNYC4bad.mp4 rename to public/videos/FahrweiseNYC4bad.mp4 diff --git a/Alle Videos/MTBtrailsEase.mp4 b/public/videos/MTBtrailsEase.mp4 similarity index 100% rename from Alle Videos/MTBtrailsEase.mp4 rename to public/videos/MTBtrailsEase.mp4 diff --git a/Alle Videos/S20Werbevideo.mp4 b/public/videos/S20Werbevideo.mp4 similarity index 100% rename from Alle Videos/S20Werbevideo.mp4 rename to public/videos/S20Werbevideo.mp4 diff --git a/Alle Videos/SkippinTrafficDanceWW.mp4 b/public/videos/SkippinTrafficDanceWW.mp4 similarity index 100% rename from Alle Videos/SkippinTrafficDanceWW.mp4 rename to public/videos/SkippinTrafficDanceWW.mp4 diff --git a/Alle Videos/V10.mp4 b/public/videos/V10.mp4 similarity index 100% rename from Alle Videos/V10.mp4 rename to public/videos/V10.mp4 diff --git a/Alle Videos/Whobble.mp4 b/public/videos/Whobble.mp4 similarity index 100% rename from Alle Videos/Whobble.mp4 rename to public/videos/Whobble.mp4 diff --git a/Alle Videos/Whobble2.mp4 b/public/videos/Whobble2.mp4 similarity index 100% rename from Alle Videos/Whobble2.mp4 rename to public/videos/Whobble2.mp4 diff --git a/Alle Videos/shortS22Fire.MP4 b/public/videos/shortS22Fire.MP4 similarity index 100% rename from Alle Videos/shortS22Fire.MP4 rename to public/videos/shortS22Fire.MP4 diff --git a/Alle Videos/traffic.mp4 b/public/videos/traffic.mp4 similarity index 100% rename from Alle Videos/traffic.mp4 rename to public/videos/traffic.mp4 diff --git a/Alle Videos/v11-suspension.gif b/public/videos/v11-suspension.gif similarity index 100% rename from Alle Videos/v11-suspension.gif rename to public/videos/v11-suspension.gif diff --git a/Alle Videos/whyS22.mp4 b/public/videos/whyS22.mp4 similarity index 100% rename from Alle Videos/whyS22.mp4 rename to public/videos/whyS22.mp4 diff --git a/soon.HTML b/soon.HTML deleted file mode 100644 index 0e4f47e..0000000 --- a/soon.HTML +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - soon - - - - - - - -
- Back - -
- - - - - - - -

This side is not available yet.

-Back - - - - \ No newline at end of file diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000..021681f --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,6 @@ +import '@/styles/globals.css' +import type { AppProps } from 'next/app' + +export default function App({ Component, pageProps }: AppProps) { + return +} diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx new file mode 100644 index 0000000..54e8bf3 --- /dev/null +++ b/src/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + +
+ + + + ) +} diff --git a/src/pages/api/hello.ts b/src/pages/api/hello.ts new file mode 100644 index 0000000..f8bcc7e --- /dev/null +++ b/src/pages/api/hello.ts @@ -0,0 +1,13 @@ +// Next.js API route support: https://nextjs.org/docs/api-routes/introduction +import type { NextApiRequest, NextApiResponse } from 'next' + +type Data = { + name: string +} + +export default function handler( + req: NextApiRequest, + res: NextApiResponse +) { + res.status(200).json({ name: 'John Doe' }) +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000..f80a0bb --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,114 @@ +import Head from 'next/head' +import Image from 'next/image' +import { Inter } from 'next/font/google' +import styles from '@/styles/Home.module.css' + +const inter = Inter({ subsets: ['latin'] }) + +export default function Home() { + return ( + <> + + Create Next App + + + + +
+
+

+ Get started by editing  + src/pages/index.tsx +

+ +
+ +
+ Next.js Logo +
+ + +
+ + ) +} diff --git a/src/styles/Home.module.css b/src/styles/Home.module.css new file mode 100644 index 0000000..9411a5e --- /dev/null +++ b/src/styles/Home.module.css @@ -0,0 +1,229 @@ +.main { + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + padding: 6rem; + min-height: 100vh; +} + +.description { + display: inherit; + justify-content: inherit; + align-items: inherit; + font-size: 0.85rem; + max-width: var(--max-width); + width: 100%; + z-index: 2; + font-family: var(--font-mono); +} + +.description a { + display: flex; + justify-content: center; + align-items: center; + gap: 0.5rem; +} + +.description p { + position: relative; + margin: 0; + padding: 1rem; + background-color: rgba(var(--callout-rgb), 0.5); + border: 1px solid rgba(var(--callout-border-rgb), 0.3); + border-radius: var(--border-radius); +} + +.code { + font-weight: 700; + font-family: var(--font-mono); +} + +.grid { + display: grid; + grid-template-columns: repeat(4, minmax(25%, auto)); + width: var(--max-width); + max-width: 100%; +} + +.card { + padding: 1rem 1.2rem; + border-radius: var(--border-radius); + background: rgba(var(--card-rgb), 0); + border: 1px solid rgba(var(--card-border-rgb), 0); + transition: background 200ms, border 200ms; +} + +.card span { + display: inline-block; + transition: transform 200ms; +} + +.card h2 { + font-weight: 600; + margin-bottom: 0.7rem; +} + +.card p { + margin: 0; + opacity: 0.6; + font-size: 0.9rem; + line-height: 1.5; + max-width: 30ch; +} + +.center { + display: flex; + justify-content: center; + align-items: center; + position: relative; + padding: 4rem 0; +} + +.center::before { + background: var(--secondary-glow); + border-radius: 50%; + width: 480px; + height: 360px; + margin-left: -400px; +} + +.center::after { + background: var(--primary-glow); + width: 240px; + height: 180px; + z-index: -1; +} + +.center::before, +.center::after { + content: ''; + left: 50%; + position: absolute; + filter: blur(45px); + transform: translateZ(0); +} + +.logo { + position: relative; +} +/* Enable hover only on non-touch devices */ +@media (hover: hover) and (pointer: fine) { + .card:hover { + background: rgba(var(--card-rgb), 0.1); + border: 1px solid rgba(var(--card-border-rgb), 0.15); + } + + .card:hover span { + transform: translateX(4px); + } +} + +@media (prefers-reduced-motion) { + .card:hover span { + transform: none; + } +} + +/* Mobile */ +@media (max-width: 700px) { + .content { + padding: 4rem; + } + + .grid { + grid-template-columns: 1fr; + margin-bottom: 120px; + max-width: 320px; + text-align: center; + } + + .card { + padding: 1rem 2.5rem; + } + + .card h2 { + margin-bottom: 0.5rem; + } + + .center { + padding: 8rem 0 6rem; + } + + .center::before { + transform: none; + height: 300px; + } + + .description { + font-size: 0.8rem; + } + + .description a { + padding: 1rem; + } + + .description p, + .description div { + display: flex; + justify-content: center; + position: fixed; + width: 100%; + } + + .description p { + align-items: center; + inset: 0 0 auto; + padding: 2rem 1rem 1.4rem; + border-radius: 0; + border: none; + border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); + background: linear-gradient( + to bottom, + rgba(var(--background-start-rgb), 1), + rgba(var(--callout-rgb), 0.5) + ); + background-clip: padding-box; + backdrop-filter: blur(24px); + } + + .description div { + align-items: flex-end; + pointer-events: none; + inset: auto 0 0; + padding: 2rem; + height: 200px; + background: linear-gradient( + to bottom, + transparent 0%, + rgb(var(--background-end-rgb)) 40% + ); + z-index: 1; + } +} + +/* Tablet and Smaller Desktop */ +@media (min-width: 701px) and (max-width: 1120px) { + .grid { + grid-template-columns: repeat(2, 50%); + } +} + +@media (prefers-color-scheme: dark) { + .vercelLogo { + filter: invert(1); + } + + .logo { + filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); + } +} + +@keyframes rotate { + from { + transform: rotate(360deg); + } + to { + transform: rotate(0deg); + } +} diff --git a/src/styles/globals.css b/src/styles/globals.css new file mode 100644 index 0000000..d4f491e --- /dev/null +++ b/src/styles/globals.css @@ -0,0 +1,107 @@ +:root { + --max-width: 1100px; + --border-radius: 12px; + --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono', + 'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro', + 'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace; + + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; + + --primary-glow: conic-gradient( + from 180deg at 50% 50%, + #16abff33 0deg, + #0885ff33 55deg, + #54d6ff33 120deg, + #0071ff33 160deg, + transparent 360deg + ); + --secondary-glow: radial-gradient( + rgba(255, 255, 255, 1), + rgba(255, 255, 255, 0) + ); + + --tile-start-rgb: 239, 245, 249; + --tile-end-rgb: 228, 232, 233; + --tile-border: conic-gradient( + #00000080, + #00000040, + #00000030, + #00000020, + #00000010, + #00000010, + #00000080 + ); + + --callout-rgb: 238, 240, 241; + --callout-border-rgb: 172, 175, 176; + --card-rgb: 180, 185, 188; + --card-border-rgb: 131, 134, 135; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + + --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0)); + --secondary-glow: linear-gradient( + to bottom right, + rgba(1, 65, 255, 0), + rgba(1, 65, 255, 0), + rgba(1, 65, 255, 0.3) + ); + + --tile-start-rgb: 2, 13, 46; + --tile-end-rgb: 2, 5, 19; + --tile-border: conic-gradient( + #ffffff80, + #ffffff40, + #ffffff30, + #ffffff20, + #ffffff10, + #ffffff10, + #ffffff80 + ); + + --callout-rgb: 20, 20, 20; + --callout-border-rgb: 108, 108, 108; + --card-rgb: 100, 100, 100; + --card-border-rgb: 200, 200, 200; + } +} + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} + +html, +body { + max-width: 100vw; + overflow-x: hidden; +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient( + to bottom, + transparent, + rgb(var(--background-end-rgb)) + ) + rgb(var(--background-start-rgb)); +} + +a { + color: inherit; + text-decoration: none; +} + +@media (prefers-color-scheme: dark) { + html { + color-scheme: dark; + } +} diff --git a/EUC Überblick DE.html b/todo/EUC Überblick DE.html similarity index 90% rename from EUC Überblick DE.html rename to todo/EUC Überblick DE.html index 1828e4d..ceb8a64 100644 --- a/EUC Überblick DE.html +++ b/todo/EUC Überblick DE.html @@ -2,22 +2,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + @@ -63,7 +63,7 @@
- +
+ + + + + + + +
+ +
+

Erklärung und Geschichte der Produzenten

+

+ Es gibt/gab viele Hersteller von elektrischen Einrädern, hier werden + nur die größeren und wichtigen beschrieben. Neben denen gibt u.a + Airwheel, IPS, Solowheel, Rockwheel, Firewheel, ESWAY, Fosjoas, + MonoRover, F-wheel. Da der Markt so klein ist, gibt es leider kaum + einfach erhältliche Informationen über Verkaufszahlen oder + Marktanteile der Firmen. +

+ +

+ Ninebot +

+ + +

+ Ninebot ist für die Meisten bekannt als Sooter Hersteller, manche + kenne auch vielleicht deren elektrische Schuhe oder die Segway + ähnlichen Geräte mit kurzer Lenkstange. Ninebot ist die größte und + vielseitigste Firma der hier gelisteten. Sie experimentieren viel + herum, und haben bei den standard-Scootern viel Erfolg, aber leider + bei den Einrädern aufgegeben. So gibt es Heute nur wenige Modelle, + alle sind eher Anfängergeräte bis untere Mittelklasse. Trotzdem hat + Ninebot vor allem durch das Ninebot Z10 ein ikonisches Gerät auf dem + Markt hinterlassen, welches durch außergewöhnliches Design und + Qualität hervorsticht. +

+ +

+ Inmotion +

+ + +

+ Inmotion ist der zweitgrößte Hersteller der hier gelisteten. + Ebenfallsgroß im standard-Scooter Segment, hat Inmotion aber auch + einen großen wenn nicht den größten Marktanteil an EUCs. Vor allen das + Inmotion V8 hat als einsteiger und Commuter Gerät eine hohe + Beliebtheit und somit hohe Verkaufszahlen. Auch war es Inmotion, + welches das äußerst professionell aussehende erste Suspension EUC V11 + auf den Markt brachte. Inmotion steht im allgemeinen für Qualität, + Design und Sicherheit dank gutem Tiltback und + hoher Sicherheitsmarge. Aber das alles im Tausch gegen Performance. + Bis vor kurzem war Inmotion Synonym für schwach und wenig Reichweite. + Das änderte sich, als das V12 rauskam und bald das V13 rauskommt. + Jetzt erhofft man sich sichere und gut designte 90+kmh mit hoher + Sicherheitsmarge, und sollte das V13 funktionieren wie erhofft wird es + das Image der Firma ändern. +

+ +

+ Kingsong +

+ + +

+ Kingsong ist sehr ähnlich zu Inmotion, nur kleiner und ohne den großen + Scooter und E-bike Markt dahinter. Qualität und Design waren die + Merkmale, so wie Langlebigkeit und Robustheit. Mit dem S18 war + Kingsong auch einer der ersten Firmen mit Federung für EUCs. Kingsong + pionierte das heute oft genutze Schwingarm Design für Federungen. Aber + mit dem S18, und später S20 hat das Image etwas Schaden genommen. + Beide Geräte hatten große Proble am Anfang, bis hin zum abbrennen des + S20 Prototypen. Trotzdem waren beide Geräte ein großer Erfolg, und die + Fehler wurden größtenteils behoben. Kingsong ist ebenfals bekannt für + die extrem guten Trolley Handle, wie der beim + KS 16X und voherigen Modellen. +

+ +

+ Gotway/Begode +

+ + +

+ Gotway, oder wie sie sich heute nennen Begode, ist schwer zu + beschreiben und einzuordnen. Viele Meinungen und Kontroversen. Die + Firma wurde nach allen oben genannten gegründet, und wie im Kapitel + Historie zu lesen, hatten sie den Fokus gleich + auf Leistung gesetzt. Das Design und die Qualität waren am Anfang und + auch eigentlich bis vor kurzem grauenvoll. Aber sie waren die ersten + die 40kmh, dann 50, dann 60, dann 70, dann 80 und heute 100kmh + erreichen können, sie sind die die 4800wh in ein + Gerät packen, egal wies aussieht oder wie schwer es ist. Gotway hat + aktiv die grenzen des Sports und der Einräder nach vorne gebracht. + Immer wenn ein neues schnelleres Gerät raus kam hieß es, ach wer fährt + denn schon 40kmh mit so nem Teil. Heute ist 40kmh die mittel + Geschwindigkeit, und es wird 70+ erwartet. Auch typisch Begode ist es, + durch bis zu 7+ neue Geräte im Jahr die eigenen Geräte schnell + veralten zu lassen. Kingsong und Inmotion bringen meist 1 Gerät pro + jahr raus. +

+ +

+ Durch die fehlende Qualität, die fehlenden Sicherheitesmaßnahmen und + minimalen BMSs die Gotway verbaute kam es in der + Vergangenheit all zu oft zu Akkubränden, wofür + Begode auch in der ganzen Community bekannt ist. Dazu gibt es da die + fehlende Kommunikation mit der Community und fehlende Reaktion auf + Fehler der Geräte. Trotzdem war Begode die erste Firma die + standardmäßig Spiked-pedals verbaute, was + ein Wunsch der der Community war und welche bis heute die besten + mitgelieferten Spiked-pedals sind. Alle anderen Firmen zogen mit + schlechteren Versionen nach, was normalerweise von Begode erwartet + wird. Begode waren die ersten, die von 84V auf 100V umstiegen, und + neuerdings auch auf 134V, welches ungesehene Leistung bereitstellt. + Wieder ziehen die anderen Hersteller langsam nach, und haben trotzdem + schwächere Geräte. Die neue Generation von Begode hat besseres, fast + gutes Design und in manchen Aspekten auch bessere Federungen als die + Konkurrenz, trotzdem brechen die (völlig freiliegenden) Batterie + Befestigungen leicht ab und man muss sich DIY Lösungen kaufen um + weiter fahren zu können (bei fast 5000€ Geräten). +

+ +

+ Es geht immer so weiter, viele schwören auf Begode, viele würden sich + nie eins zulegen. Am Ende muss es jeder für sich entscheiden. +

+ +

+ Leaperkim/Veteran +

+ + +

+ Veteran ist für viele der Lieling. Bestehend aus Ex Gotway Ingenieuren + und Mitarbeitern, die mit den Entscheidungen von Gotway nicht + einverstanden waren, brachte Veteran 2020 als erstes Gerät das Veteran + Sherman raus. Und es Schlug ein wie eine Bombe, es war ein voller + Erfolg. Das Robuste, fast militärische Design zusammen mit der hohen + stabilen Geschwindigkeit und der großen Reichweite sorgte für eine + starke Beliebtheit, auch Heute noch und sogar außerhalb der EUC + Community. Allein dieses Gerät und der Kontent dazu brachte eine ganze + Welle an neuen Fahrern zum Sport. Schnell war Veteran in den Köpfen + als robust, zuverlässig und schnell eingespeichert. Als dann das neue + Modell Veteran Abrahams mit größerem Reifen angeküdigt wurde, war der + Hype groß. Doch als es dann raus kam gab es große Enttäuschungen, das + Gerät hat in jeder Hinsicht versagt und war dazu sehr anfällig für + Cut-outs. Danach war das Image beschädigt. Erst + ein Jahr später kam das Veteran Sherman Max heraus, was der Nachfolger + vom normalen Sherman wurde. +

+ +

+ Veteran scheint aus den Fehlern mit dem Abrahams gelernt zu haben, + denn mit dem neusten Release des Sherman S haben sie ein weiteres + vielversprechenden Gerät vorgestellt. Vollständige Metall + Konsstruktion, weltklasse Federung, Großer Akku und genug Leistung. +

+ +

Extreme Bull

+

+ Bei Extreme Bull ist nicht alles ganz klar. Es scheint eine Untermarke + von Begode zu sein, die noch dreister andere Geräte kopiert und in + billger anbietet als es Begode tut. Man sieht kaum Geräte von Extreme + Bull herumfahren, und viele Verkäufer bieten die auch gar nicht erst + an. Aber seit kurzem gibt es Gerüchte über eine Sherman S Kopie namens + Commander Pro. Sollten die Gerüchte stimmen und das Gerät halten was + es verspricht, könnte Extreme Bull auf dem Vormarsch sein. +

+
+
+ + diff --git a/todo/HerstellerENG.HTML b/todo/HerstellerENG.HTML new file mode 100644 index 0000000..b8a3b8b --- /dev/null +++ b/todo/HerstellerENG.HTML @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Hersteller + + + + + + +
+ Back + +
+ + + + + + + + + + +
+ +
+

History and explonation of manufacturers

+

+ There are/were many manufacturers of electric unicycles, only the + larger and more important ones are described here. In addition to + those, there are Airwheel, IPS, Solowheel, Rockwheel, Firewheel, + ESWAY, Fosjoas, MonoRover, F-wheel, among others. Unfortunately, + because the market is so small, there is little readily available + information about company sales or market share. +

+ +

+ Ninebot +

+ + +

+ Ninebot is known to most as a sooter manufacturer, some may also know + their electric shoes or Segway-like devices with short handlebars. + Ninebot is the largest and most versatile company of those listed + here. They experiment a lot and have had a lot of success with the + standard scooters, but unfortunately gave up on the unicycles. So + today there are only a few models, all of them are rather beginner + devices to lower middle class. Nevertheless, Ninebot has left an + iconic device on the market, especially with the Ninebot Z10, which + stands out with its extraordinary design and quality. +

+ +

+ Inmotion +

+ + +

+ Inmotion is the second largest manufacturer of those listed here. Also + big in the standard scooter segment, Inmotion also has a large if not + the largest market share of EUCs. Above all, the Inmotion V8 is very + popular as a beginner and commuter device and therefore has high sales + figures. It was also Inmotion that launched the extremely professional + looking first Suspension EUC V11. Inmotion generally stands for + quality, design and safety thanks to good + tiltback and high safety margin. But all this + in exchange for performance. Until recently, inmotion was synonymous + with weak and little range. That changed when the V12 came out and + soon the V13 will come out. Now we are hoping for a safe and + well-designed 90+kmh with a high safety margin, and should the V13 + perform as hoped it will change the company's image. +

+ +

+ Kingsong +

+ + +

+ Kingsong is very similar to Inmotion, only smaller and without the big + scooter and e-bike market behind it. Quality and design were the + characteristics, as well as durability and robustness. With the S18, + Kingsong was also one of the first companies to introduce suspension + for EUCs. Kingsong pioneered the swing arm design for suspension that + is widely used today. But with the S18, and later the S20, the image + took some damage. Both devices had big problems at the beginning, up + to the burning of the S20 prototype. Despite this, both devices were a + great success, and the bugs were mostly fixed. Kingsong is also known + for their extremely good trolley handle, like + the one on the KS 16X and previous models. +

+ +

+ Gotway/Begode +

+ + +

+ Gotway, or Begode as they call themselves today, is difficult to + describe and classify. Many opinions and controversies. The company + was founded after all of the above were, and as you can read in the + History chapter, they had the focus on + performance right away. The design and the quality were terrible in + the beginning and actually until recently. But they were the first to + be able to hit 40kmh, then 50, then 60, then 70, then 80 and now + 100kmh, they're the ones who pack 4800wh into one + device, no matter what it looks like or how heavy it is. Gotway has + actively pushed the boundaries of the sport and unicycles. Whenever a + new, faster device came out, it was said, oh who rides 40kmh on a + unicycle anyway. Today 40kmh is the medium speed and 70+ is expected. + It is also typical of Begode to let their own devices quickly become + obsolete with up to 7+ new devices a year. Kingsong and Inmotion + usually release 1 device per year. +

+ +

+ Due to the lack of quality, the lack of safety measures and minimal + BMSs that Gotway installs, + battery fires happened all too often in the + past, which Begode is also known for throughout the community. There + is also a lack of communication with the community and a lack of + reaction to productions defects. Nevertheless, Begode was the first + company to use spiked pedals as standard, + which was a request from the community and which are the best included + default spiked pedals to date. All other + companies followed suit with worse versions, which is what is normally + expected of Begode. Begode were the first to move from 84V to 100V, + and more recently to 134V, which provides unprecedented power. Again, + the other manufacturers are slowly catching up and still have weaker + devices. The new generation of Begode has better, almost good design + and in some aspects also better suspension than the competition, + nevertheless the (completely exposed) battery mounts break off easily + and you have to buy DIY solutions to continue riding (for an almost + 5000€ Device). +

+ +

+ It goes on and on, many swear by Begode, many would never buy one. In + the end everyone has to decide for themselves. +

+ +

+ Leaperkim/Veteran +

+ + +

+ Veteran is the favorite for many. Comprised of ex-Gotway engineers and + employees who disagreed with Gotway's decisions, Veteran released the + Veteran Sherman in 2020 as its first device. And it hit like a bomb, + it was a complete success. The robust, almost military design together + with the high stable speed and the long range made it very popular + even today and even outside the EUC community. This device and the + content alone brought a whole wave of new riders to the sport. Veteran + was quickly stored in people's minds as robust, reliable and fast. + When the new Veteran Abrahams model with bigger tires was announced, + the hype was huge. But when it came out there were big + disappointments, the device failed in every aspect and was also very + prone to cut-outs. After that the image was + damaged. Only a year later the veteran Sherman Max came out, which + became the successor to the normal Sherman. +

+ +

+ Veteran seems to have learned from their mistakes with the Abrahams, + as they have introduced another promising device with the latest + release of the Sherman S. All metal construction, world class + suspension, large battery and enough power. +

+ +

Extreme Bull

+

+ With Extreme Bull, not everything is entirely clear. It seems to be a + sub-brand of Begode, which even more brazenly copies other devices and + offers them cheaper than Begode does. Extreme Bull devices are rarely + seen riding around, and many resellers don't even offer them. But, as + of recently there are rumors about a Sherman S copy called Commander + pro. should the rumors be true, and should the device deliver whats + promised, Extreme Bull might be on the rise. +

+
+
+ + diff --git a/KSS22DE.html b/todo/KSS22DE.html similarity index 84% rename from KSS22DE.html rename to todo/KSS22DE.html index b2bf1b7..4de73f3 100644 --- a/KSS22DE.html +++ b/todo/KSS22DE.html @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + diff --git a/todo/KSS22ENG.html b/todo/KSS22ENG.html new file mode 100644 index 0000000..2031fd5 --- /dev/null +++ b/todo/KSS22ENG.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + KS S22 + + + +
+ Zurück + Start +
+ +
+
+ +
+ +
+
+

Kingsong S22

+ +

+ The Kingsong S22, formerly S20, is a clearly off-road and trail + oriented unicycle. Among other things, it has 130mm suspension + travel and a robust metal construction, which makes it ideal for big + jumps and high drops. +

+ +

+ It is the successor to the smaller S18, but with double the battery + and 50% more motor power, such as a top speed of 70 instead of 50 + km/h. The freespin is up to 114 km/h, so ideal for longer jumps + where the tire is spinning up in the air. +

+ +

+ It also comes with a seat, pretty good jump- and power pads and + spiked pedals. Plus a sturdy, albeit oddly placed and somewhat short + trolley handle, as well as a sturdy kickstand and height-adjustable + bright lights. It's waterproof, but not submersible, and best of + all, it's super easy to work with because the device has a very + modular design. The tire can theoretically be removed with just 2 + screws +

+ +

+ While all of this is true, many problems have unfortunately arisen + with this highly anticipated and hyped wheel. There were motor + problems with the first devices, which led to cut-offs and burned + the motherboard. Also, the slider design is very clumsy and gets + harder and harder to move over time. Many S22 buyers had to wait a + long time for replacement motors, such as upgrading the sliders for + €100 to €200. However, with the upgrades, it is currently the best + suspension unicycle on the market. (Until the Veteran Sherman S goes + on sale.) +

+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Size582L 330W 747H
Wheel Circumference20 inches
Pedal Height231+-26mm
Weight35kg
Suspension travel130mm
Suspension TypeOil Shock
Suspension Adjustments (for suspension)Rebound, compression
Free Spin114kmh
Top speed70kmh
Range at 30kmh200km
Minimum range for heavy use70km
Max climb angle45°
Max. payload120kg
Engine TypeHigh Speed
Engine Power3300W
Peak Power7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IPRatingnope
AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
Lights8x5W adjustable headlights
Default tiresNobby
Anti spin button?under control
Display?dot matrix
RGB?Taillight
Pads?All inclusive
Charge outlets?nope
Charger:
Default load time:3.3h
Max Amps:10A
Fastest load time:100min
Load ports:2
+ + diff --git a/Start.css b/todo/Start.css similarity index 100% rename from Start.css rename to todo/Start.css diff --git a/todo/StartDE.html b/todo/StartDE.html new file mode 100644 index 0000000..ff67f92 --- /dev/null +++ b/todo/StartDE.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Start + + + +
+ +

Bock auf was Neues?

+
+ +

Bock auf was Neues?

+ +

+ Flexible - Modern - schneller als die Polizei erlaubt. Das sind moderne + eletrische Einräder. +

+
+ +

+ Von 0 auf 50kmh in 3s, 100kmh top Geschwindigkeit und 230km Reichweite + machen aus diesen Geräten den ultimativen Sport. +

+
+ +

+ Gleichzeitig 50° steile Wände hochfahren und MTB Trails mit leichtigkeit + nehmen. +

+
+ +
+ +

Jeden Weg nutzen und nie wieder im Verkehr stecken.

+
+ +
+ +

Und trotzdem leicht zu transportiren und untern Tisch zu packen.

+
+ +

Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

+ + +
+

Ich will alles darüber lesen!

+
+
+ + +
+

Mir reichen Videos

+
+
+ + +
+

Language

+
+
+ + diff --git a/todo/StartENG.html b/todo/StartENG.html new file mode 100644 index 0000000..4731ec8 --- /dev/null +++ b/todo/StartENG.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Start + + + + +
+ +

Wanna try something new?

+
+ +

Wanna try something new?

+ +

+ Flexible - Modern - Faster then law it self. These are modern electric + unicycles: +

+ +
+ +

+ From 0 auf 50kmh in 3s, 100kmh top speed and 230km range make these + devices the ultimate sport. +

+ +
+ +

Meanwhile climbing 50° steep walls and taking MTB trails with ease.

+ +
+ +
+ +

Taking every path and never get stuck in traffic again.

+ +
+ +
+ +

But still being easy to carry and store just under your desk.

+ +
+ +

Interested? Then take a deep dive into PEV's and EUC's:

+ + +
+

I want to read everything about it!

+
+
+ + +
+

Na, videos are just fine

+
+
+ + +
+

Sprache

+
+
+ + diff --git a/todo/soon.HTML b/todo/soon.HTML new file mode 100644 index 0000000..103f291 --- /dev/null +++ b/todo/soon.HTML @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + soon + + + + + + +
+ Back + +
+ + + + + + + + + + +

This side is not available yet.

+ Back + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..61c19ab --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} From 6e2b0b236073f142d4c761341c425b3bec0ab7a6 Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 13:08:05 +0200 Subject: [PATCH 02/36] Adding dependencies --- .eslintrc.json | 2 +- .prettierignore | 4 + .prettierrc.json | 7 + next-i18next.config.js | 6 + next.config.js | 3 + package.json | 8 + pnpm-lock.yaml | 412 ++++++++++++++++++++++++++-------- public/locales/de/common.json | 0 public/locales/en/common.json | 0 src/pages/_app.tsx | 13 +- 10 files changed, 354 insertions(+), 101 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 next-i18next.config.js create mode 100644 public/locales/de/common.json create mode 100644 public/locales/en/common.json diff --git a/.eslintrc.json b/.eslintrc.json index bffb357..4d765f2 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "next/core-web-vitals" + "extends": ["next/core-web-vitals", "prettier"] } diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b8b90c6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +.next +next.config.js +package.json +pnpm-lock.yaml diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..4c512be --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "semi": false, + "plugins": [ + "@trivago/prettier-plugin-sort-imports" + ], + "pluginSearchDirs": false +} diff --git a/next-i18next.config.js b/next-i18next.config.js new file mode 100644 index 0000000..0cb98b8 --- /dev/null +++ b/next-i18next.config.js @@ -0,0 +1,6 @@ +module.exports = { + i18n: { + defaultLocale: "en", + locales: ["en", "de"], + }, +} diff --git a/next.config.js b/next.config.js index a843cbe..e69012f 100644 --- a/next.config.js +++ b/next.config.js @@ -1,6 +1,9 @@ /** @type {import('next').NextConfig} */ +const { i18n } = require('./next-i18next.config') + const nextConfig = { reactStrictMode: true, + i18n, } module.exports = nextConfig diff --git a/package.json b/package.json index 45dfc3a..c36edf6 100644 --- a/package.json +++ b/package.json @@ -14,9 +14,17 @@ "@types/react-dom": "18.0.11", "eslint": "8.38.0", "eslint-config-next": "13.3.0", + "i18next": "^22.4.14", "next": "13.3.0", + "next-i18next": "^13.2.2", "react": "18.2.0", "react-dom": "18.2.0", + "react-i18next": "^12.2.0", "typescript": "5.0.4" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^4.1.1", + "eslint-config-prettier": "^8.8.0", + "prettier": "^2.8.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d06a0f8..56aeb84 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,21 +16,111 @@ dependencies: eslint-config-next: specifier: 13.3.0 version: 13.3.0(eslint@8.38.0)(typescript@5.0.4) + i18next: + specifier: ^22.4.14 + version: 22.4.14 next: specifier: 13.3.0 version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + next-i18next: + specifier: ^13.2.2 + version: 13.2.2(i18next@22.4.14)(next@13.3.0)(react-i18next@12.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-i18next: + specifier: ^12.2.0 + version: 12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0) typescript: specifier: 5.0.4 version: 5.0.4 +devDependencies: + '@trivago/prettier-plugin-sort-imports': + specifier: ^4.1.1 + version: 4.1.1(prettier@2.8.7) + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.38.0) + prettier: + specifier: ^2.8.7 + version: 2.8.7 + packages: + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/generator@7.17.7: + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-environment-visitor@7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-split-export-declaration@7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: true + + /@babel/helper-string-parser@7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight@7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.17.0 + dev: true + /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} @@ -38,6 +128,50 @@ packages: regenerator-runtime: 0.13.11 dev: false + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + dev: true + + /@babel/traverse@7.17.3: + resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.17.7 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.17.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.38.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -46,12 +180,10 @@ packages: dependencies: eslint: 8.38.0 eslint-visitor-keys: 3.4.0 - dev: false /@eslint-community/regexpp@4.5.0: resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: false /@eslint/eslintrc@2.0.2: resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} @@ -68,12 +200,10 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: false /@eslint/js@8.38.0: resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} @@ -84,16 +214,13 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: false /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: false /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: false /@next/env@13.3.0: resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==} @@ -192,12 +319,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: false /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: false /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -205,7 +330,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - dev: false /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} @@ -229,6 +353,33 @@ packages: tslib: 2.5.0 dev: false + /@trivago/prettier-plugin-sort-imports@4.1.1(prettier@2.8.7): + resolution: {integrity: sha512-dQ2r2uzNr1x6pJsuh/8x0IRA3CBUB+pWEW3J/7N98axqt7SQSm+2fy0FLNXvXGg77xEDC7KHxJlHfLYyi7PDcw==} + peerDependencies: + '@vue/compiler-sfc': 3.x + prettier: 2.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/generator': 7.17.7 + '@babel/parser': 7.21.4 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 2.8.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@types/hoist-non-react-statics@3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 18.0.35 + hoist-non-react-statics: 3.3.2 + dev: false + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false @@ -327,13 +478,11 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.2 - dev: false /acorn@8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -342,23 +491,26 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: false /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: false /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -441,14 +593,12 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: false /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -474,37 +624,56 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: false /caniuse-lite@1.0.30001478: resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==} dev: false + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: false + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /core-js@3.30.1: + resolution: {integrity: sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==} + requiresBuild: true dev: false /cross-spawn@7.0.3: @@ -514,7 +683,6 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: false /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -545,7 +713,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: false /deep-equal@2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} @@ -571,7 +738,6 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: false /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -605,7 +771,6 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: false /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -697,10 +862,14 @@ packages: is-symbol: 1.0.4 dev: false + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: false /eslint-config-next@13.3.0(eslint@8.38.0)(typescript@5.0.4): resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} @@ -727,6 +896,15 @@ packages: - supports-color dev: false + /eslint-config-prettier@8.8.0(eslint@8.38.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.38.0 + dev: true + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: @@ -888,12 +1066,10 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: false /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: false /eslint@8.38.0: resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} @@ -942,7 +1118,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: false /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} @@ -951,35 +1126,29 @@ packages: acorn: 8.8.2 acorn-jsx: 5.3.2(acorn@8.8.2) eslint-visitor-keys: 3.4.0 - dev: false /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: false /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: false /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -994,24 +1163,20 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: false /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: false /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: false /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: false /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -1026,7 +1191,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: false /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} @@ -1034,11 +1198,9 @@ packages: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: false /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: false /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -1048,7 +1210,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} @@ -1100,7 +1261,6 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - dev: false /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -1122,14 +1282,17 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: false /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} @@ -1181,16 +1344,19 @@ packages: /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: false /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -1222,10 +1388,31 @@ packages: function-bind: 1.1.1 dev: false + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + dependencies: + void-elements: 3.1.0 + dev: false + + /i18next-fs-backend@2.1.1: + resolution: {integrity: sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==} + dev: false + + /i18next@22.4.14: + resolution: {integrity: sha512-VtLPtbdwGn0+DAeE00YkiKKXadkwg+rBUV+0v8v0ikEjwdiJ0gmYChVE4GIa9HXymY6wKapkL93vGT7xpq6aTw==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: false /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -1233,23 +1420,19 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: false /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - dev: false /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: false /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} @@ -1317,14 +1500,12 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: false /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: false /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -1350,7 +1531,6 @@ packages: /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - dev: false /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} @@ -1425,30 +1605,34 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false + + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: true /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: false /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - dev: false + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: false /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: false /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} @@ -1481,18 +1665,19 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: false /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: false /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -1525,7 +1710,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: false /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -1533,7 +1717,6 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1547,6 +1730,25 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /next-i18next@13.2.2(i18next@22.4.14)(next@13.3.0)(react-i18next@12.2.0)(react@18.2.0): + resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} + engines: {node: '>=14'} + peerDependencies: + i18next: ^22.0.6 + next: '>= 12.0.0' + react: '>= 17.0.2' + react-i18next: ^12.2.0 + dependencies: + '@babel/runtime': 7.21.0 + '@types/hoist-non-react-statics': 3.3.1 + core-js: 3.30.1 + hoist-non-react-statics: 3.3.2 + i18next: 22.4.14 + i18next-fs-backend: 2.1.1 + next: 13.3.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-i18next: 12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0) dev: false /next@13.3.0(react-dom@18.2.0)(react@18.2.0): @@ -1663,7 +1865,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: false /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -1684,43 +1885,36 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 - dev: false /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: false /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: false /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: false /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: false /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1752,7 +1946,12 @@ packages: /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: false + + /prettier@2.8.7: + resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -1765,11 +1964,9 @@ packages: /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: false /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} @@ -1781,6 +1978,26 @@ packages: scheduler: 0.23.0 dev: false + /react-i18next@12.2.0(i18next@22.4.14)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} + peerDependencies: + i18next: '>= 19.0.0' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.21.0 + html-parse-stringify: 3.0.1 + i18next: 22.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false @@ -1808,7 +2025,6 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: false /resolve@1.22.3: resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} @@ -1831,20 +2047,17 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: false /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -1878,12 +2091,10 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: false /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: false /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} @@ -1908,6 +2119,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: true + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -1963,7 +2179,6 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: false /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -1973,7 +2188,6 @@ packages: /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: false /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} @@ -1992,12 +2206,18 @@ packages: react: 18.2.0 dev: false + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: false /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -2019,7 +2239,6 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: false /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -2028,6 +2247,11 @@ packages: globrex: 0.1.2 dev: false + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2067,12 +2291,10 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: false /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: false /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} @@ -2101,6 +2323,10 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 + + /void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} dev: false /which-boxed-primitive@1.0.2: @@ -2140,16 +2366,13 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: false /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -2158,4 +2381,3 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: false diff --git a/public/locales/de/common.json b/public/locales/de/common.json new file mode 100644 index 0000000..e69de29 diff --git a/public/locales/en/common.json b/public/locales/en/common.json new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 021681f..25296a9 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,9 @@ -import '@/styles/globals.css' -import type { AppProps } from 'next/app' +import "@/styles/globals.css" +import { appWithTranslation } from "next-i18next" +import type { AppProps } from "next/app" -export default function App({ Component, pageProps }: AppProps) { - return -} +const MyApp = ({ Component, pageProps }: AppProps) => ( + +) + +export default appWithTranslation(MyApp) From 03d66f6d1cb661122da6a2b512ff5a9c749cbbe2 Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 13:16:49 +0200 Subject: [PATCH 03/36] Formatting documents --- .prettierrc.json | 4 +- README.md | 2 +- public/favicon/manifest.json | 80 ++-- src/pages/_document.tsx | 2 +- src/pages/api/hello.ts | 13 - src/pages/index.tsx | 12 +- src/styles/Home.module.css | 2 +- src/styles/globals.css | 6 +- todo/EUC Überblick.css | 681 +++++++++++++++++++++-------------- todo/Geräte.css | 260 +++++++------ todo/KSS22DE.html | 504 +++++++++++++++----------- todo/KSS22ENG.html | 578 ++++++++++++++--------------- todo/Start.css | 191 +++++----- todo/StartDE.html | 308 ++++++++-------- todo/StartENG.html | 314 ++++++++-------- 15 files changed, 1615 insertions(+), 1342 deletions(-) delete mode 100644 src/pages/api/hello.ts diff --git a/.prettierrc.json b/.prettierrc.json index 4c512be..06578e9 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,7 +1,5 @@ { "semi": false, - "plugins": [ - "@trivago/prettier-plugin-sort-imports" - ], + "plugins": ["@trivago/prettier-plugin-sort-imports"], "pluginSearchDirs": false } diff --git a/README.md b/README.md index a8335c0..b7946f5 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# jg-eucs \ No newline at end of file +# jg-eucs diff --git a/public/favicon/manifest.json b/public/favicon/manifest.json index 013d4a6..3b557aa 100644 --- a/public/favicon/manifest.json +++ b/public/favicon/manifest.json @@ -1,41 +1,41 @@ { - "name": "App", - "icons": [ - { - "src": "\/android-icon-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "\/android-icon-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "\/android-icon-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "\/android-icon-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "\/android-icon-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "\/android-icon-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] -} \ No newline at end of file + "name": "App", + "icons": [ + { + "src": "/android-icon-36x36.png", + "sizes": "36x36", + "type": "image/png", + "density": "0.75" + }, + { + "src": "/android-icon-48x48.png", + "sizes": "48x48", + "type": "image/png", + "density": "1.0" + }, + { + "src": "/android-icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "density": "1.5" + }, + { + "src": "/android-icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "density": "2.0" + }, + { + "src": "/android-icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "density": "3.0" + }, + { + "src": "/android-icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "density": "4.0" + } + ] +} diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 54e8bf3..097cb7f 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -1,4 +1,4 @@ -import { Html, Head, Main, NextScript } from 'next/document' +import { Html, Head, Main, NextScript } from "next/document" export default function Document() { return ( diff --git a/src/pages/api/hello.ts b/src/pages/api/hello.ts deleted file mode 100644 index f8bcc7e..0000000 --- a/src/pages/api/hello.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Next.js API route support: https://nextjs.org/docs/api-routes/introduction -import type { NextApiRequest, NextApiResponse } from 'next' - -type Data = { - name: string -} - -export default function handler( - req: NextApiRequest, - res: NextApiResponse -) { - res.status(200).json({ name: 'John Doe' }) -} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index f80a0bb..89bbec3 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,9 +1,9 @@ -import Head from 'next/head' -import Image from 'next/image' -import { Inter } from 'next/font/google' -import styles from '@/styles/Home.module.css' +import styles from "@/styles/Home.module.css" +import { Inter } from "next/font/google" +import Head from "next/head" +import Image from "next/image" -const inter = Inter({ subsets: ['latin'] }) +const inter = Inter({ subsets: ["latin"] }) export default function Home() { return ( @@ -26,7 +26,7 @@ export default function Home() { target="_blank" rel="noopener noreferrer" > - By{' '} + By{" "} Vercel Logo - - - - - - - - - - - - - - - - - - - - - - - - KS S22 - - - -
- Zurück - Start -
- - -
-
- -
- -
-
-

Kingsong S22

- -

Das Kingsong S22, früher S20, ist ein klar Offroad und Trail orientiertes Einrad. Es hat unter anderem 130mm travel und eine robuste Metallkonstruktion, welches es einmalig ideal für große Sprünge und hohe Drops macht.

- -

Es ist der Nachfolger vom kleineren S18, aber mit doppeltem Akku und 50% mehr Motor Leistung, so wie 70 statt 50 km/h top Geschwindigkeit. Wobei der Freespin bis zu 114 km/h hoch ist, also ideal für längere Sprünge bei denen der Reifen in der Luft ist.

- -

Außerdem hat es gleich mitgeliefert einen Sitz, ziemlich brauchbare Jump wie Powerpads und Spiked-Pedals. Dazu einen robusten, wenn auch komisch platzierten und etwas kurzen Trolleyhandle, sowie einen stabilen Kickstand und höhenverstellbare helle Lichter. Es ist Wasserfest, aber nicht eintauchbar, und das Beste: es ist superleicht daran zu arbeiten, weil das Gerät sehr modular designt wurde. So lässt sich der Reifen mit theoretisch nur 2 schrauben rausnehmen

- -

Während all das wahr ist, haben sich leider mit diesem hoch erwartetem und gehypten Rad auch viele Probleme ergeben. So gab es Motorprobleme mit den ersten Geräten, welche zu cut-offs führten und dadurch das Motherboard durchbrannten. Auch ist das Slider Design sehr schwerfällig und über die Zeit immer schwerer zu bewegen. So mussten viele s22 Käufer lange auf Ersatzmotoren warten, so wie für 100 bis 200€ die Slider upgraden. Mit den Upgrades jedoch ist es das momentan bester Suspension Einrad auf dem Markt. (Bis das Veteran Sherman S zu kaufen ist.)

-
-
-
- - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Größe582L 330W 747H
Radumfang20 inch
Pedalhöhe231+-26mm
Gewicht35kg
Suspension travel (bei Federung)130mm
Suspension Type (bei Federung)Oil Shock
Suspension Adjustments (bei Federung)Rebound, compression
Freespin114kmh
Top speed70kmh
Reichweite bei 30kmh200km
Minimale Reichweite bei starker Nutzung70km
Max climb angle45°
Max. Zuladung120kg
Motor TypHigh Speed
Motor Leistung3300W
Peak Leistung7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IP Ratingnope
AccessoiresPowerpads, Jumppads, Seat, Spiked-Pedals
Lichter8x5W Verstellbare Scheinwerfer
Standard ReifenNobby
Anti spin button?im Griff
Display?Dot-Matrix
RGB?Rücklicht
Pads?Alle inklusive
Ladeausgänge?nope
Ladegerät:
Standard Ladezeit:3.3h
Max Amps:10A
Schnellste Ladezeit:100 Min
Ladeports:2
- - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + KS S22 + + + +
+ Zurück + Start +
+ +
+
+ +
+ +
+
+

Kingsong S22

+ +

+ Das Kingsong S22, früher S20, ist ein klar Offroad und Trail + orientiertes Einrad. Es hat unter anderem 130mm travel und eine + robuste Metallkonstruktion, welches es einmalig ideal für große + Sprünge und hohe Drops macht. +

+ +

+ Es ist der Nachfolger vom kleineren S18, aber mit doppeltem Akku und + 50% mehr Motor Leistung, so wie 70 statt 50 km/h top + Geschwindigkeit. Wobei der Freespin bis zu 114 km/h hoch ist, also + ideal für längere Sprünge bei denen der Reifen in der Luft ist. +

+ +

+ Außerdem hat es gleich mitgeliefert einen Sitz, ziemlich brauchbare + Jump wie Powerpads und Spiked-Pedals. Dazu einen robusten, wenn auch + komisch platzierten und etwas kurzen Trolleyhandle, sowie einen + stabilen Kickstand und höhenverstellbare helle Lichter. Es ist + Wasserfest, aber nicht eintauchbar, und das Beste: es ist + superleicht daran zu arbeiten, weil das Gerät sehr modular designt + wurde. So lässt sich der Reifen mit theoretisch nur 2 schrauben + rausnehmen +

+ +

+ Während all das wahr ist, haben sich leider mit diesem hoch + erwartetem und gehypten Rad auch viele Probleme ergeben. So gab es + Motorprobleme mit den ersten Geräten, welche zu cut-offs führten und + dadurch das Motherboard durchbrannten. Auch ist das Slider Design + sehr schwerfällig und über die Zeit immer schwerer zu bewegen. So + mussten viele s22 Käufer lange auf Ersatzmotoren warten, so wie für + 100 bis 200€ die Slider upgraden. Mit den Upgrades jedoch ist es das + momentan bester Suspension Einrad auf dem Markt. (Bis das Veteran + Sherman S zu kaufen ist.) +

+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Größe582L 330W 747H
Radumfang20 inch
Pedalhöhe231+-26mm
Gewicht35kg
Suspension travel (bei Federung)130mm
Suspension Type (bei Federung)Oil Shock
Suspension Adjustments (bei Federung)Rebound, compression
Freespin114kmh
Top speed70kmh
Reichweite bei 30kmh200km
Minimale Reichweite bei starker Nutzung70km
Max climb angle45°
Max. Zuladung120kg
Motor TypHigh Speed
Motor Leistung3300W
Peak Leistung7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IP Ratingnope
AccessoiresPowerpads, Jumppads, Seat, Spiked-Pedals
Lichter8x5W Verstellbare Scheinwerfer
Standard ReifenNobby
Anti spin button?im Griff
Display?Dot-Matrix
RGB?Rücklicht
Pads?Alle inklusive
Ladeausgänge?nope
Ladegerät:
Standard Ladezeit:3.3h
Max Amps:10A
Schnellste Ladezeit:100 Min
Ladeports:2
+ + diff --git a/todo/KSS22ENG.html b/todo/KSS22ENG.html index 2031fd5..ecccdf1 100644 --- a/todo/KSS22ENG.html +++ b/todo/KSS22ENG.html @@ -1,289 +1,289 @@ - - - - - - - - - - - - - - - - - - - - - - - - KS S22 - - - -
- Zurück - Start -
- -
-
- -
- -
-
-

Kingsong S22

- -

- The Kingsong S22, formerly S20, is a clearly off-road and trail - oriented unicycle. Among other things, it has 130mm suspension - travel and a robust metal construction, which makes it ideal for big - jumps and high drops. -

- -

- It is the successor to the smaller S18, but with double the battery - and 50% more motor power, such as a top speed of 70 instead of 50 - km/h. The freespin is up to 114 km/h, so ideal for longer jumps - where the tire is spinning up in the air. -

- -

- It also comes with a seat, pretty good jump- and power pads and - spiked pedals. Plus a sturdy, albeit oddly placed and somewhat short - trolley handle, as well as a sturdy kickstand and height-adjustable - bright lights. It's waterproof, but not submersible, and best of - all, it's super easy to work with because the device has a very - modular design. The tire can theoretically be removed with just 2 - screws -

- -

- While all of this is true, many problems have unfortunately arisen - with this highly anticipated and hyped wheel. There were motor - problems with the first devices, which led to cut-offs and burned - the motherboard. Also, the slider design is very clumsy and gets - harder and harder to move over time. Many S22 buyers had to wait a - long time for replacement motors, such as upgrading the sliders for - €100 to €200. However, with the upgrades, it is currently the best - suspension unicycle on the market. (Until the Veteran Sherman S goes - on sale.) -

-
-
-
- -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Size582L 330W 747H
Wheel Circumference20 inches
Pedal Height231+-26mm
Weight35kg
Suspension travel130mm
Suspension TypeOil Shock
Suspension Adjustments (for suspension)Rebound, compression
Free Spin114kmh
Top speed70kmh
Range at 30kmh200km
Minimum range for heavy use70km
Max climb angle45°
Max. payload120kg
Engine TypeHigh Speed
Engine Power3300W
Peak Power7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IPRatingnope
AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
Lights8x5W adjustable headlights
Default tiresNobby
Anti spin button?under control
Display?dot matrix
RGB?Taillight
Pads?All inclusive
Charge outlets?nope
Charger:
Default load time:3.3h
Max Amps:10A
Fastest load time:100min
Load ports:2
- - + + + + + + + + + + + + + + + + + + + + + + + + KS S22 + + + +
+ Zurück + Start +
+ +
+
+ +
+ +
+
+

Kingsong S22

+ +

+ The Kingsong S22, formerly S20, is a clearly off-road and trail + oriented unicycle. Among other things, it has 130mm suspension + travel and a robust metal construction, which makes it ideal for big + jumps and high drops. +

+ +

+ It is the successor to the smaller S18, but with double the battery + and 50% more motor power, such as a top speed of 70 instead of 50 + km/h. The freespin is up to 114 km/h, so ideal for longer jumps + where the tire is spinning up in the air. +

+ +

+ It also comes with a seat, pretty good jump- and power pads and + spiked pedals. Plus a sturdy, albeit oddly placed and somewhat short + trolley handle, as well as a sturdy kickstand and height-adjustable + bright lights. It's waterproof, but not submersible, and best of + all, it's super easy to work with because the device has a very + modular design. The tire can theoretically be removed with just 2 + screws +

+ +

+ While all of this is true, many problems have unfortunately arisen + with this highly anticipated and hyped wheel. There were motor + problems with the first devices, which led to cut-offs and burned + the motherboard. Also, the slider design is very clumsy and gets + harder and harder to move over time. Many S22 buyers had to wait a + long time for replacement motors, such as upgrading the sliders for + €100 to €200. However, with the upgrades, it is currently the best + suspension unicycle on the market. (Until the Veteran Sherman S goes + on sale.) +

+
+
+
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Size582L 330W 747H
Wheel Circumference20 inches
Pedal Height231+-26mm
Weight35kg
Suspension travel130mm
Suspension TypeOil Shock
Suspension Adjustments (for suspension)Rebound, compression
Free Spin114kmh
Top speed70kmh
Range at 30kmh200km
Minimum range for heavy use70km
Max climb angle45°
Max. payload120kg
Engine TypeHigh Speed
Engine Power3300W
Peak Power7500W
Battery Size2220wh
Voltage126V
Max amps100A
BMSSmart BMS
Battery cell typeLG 18600
IPRatingnope
AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
Lights8x5W adjustable headlights
Default tiresNobby
Anti spin button?under control
Display?dot matrix
RGB?Taillight
Pads?All inclusive
Charge outlets?nope
Charger:
Default load time:3.3h
Max Amps:10A
Fastest load time:100min
Load ports:2
+ + diff --git a/todo/Start.css b/todo/Start.css index 3234d6d..b0a639d 100644 --- a/todo/Start.css +++ b/todo/Start.css @@ -1,82 +1,109 @@ -*{ - scroll-margin-block-start: 60px; - scroll-margin-block-end: 60px; - box-sizing: border-box; - scroll-behavior: smooth; - max-width: 100%; - max-height: 100%; -} - -::-webkit-scrollbar {width: 9px;} -::-webkit-scrollbar-track {background: rgb(41, 41, 41);} -::-webkit-scrollbar-thumb {background:#ff8906;border-radius: 5px;} -::-webkit-scrollbar-thumb:hover {background: #555;} - -[class*="col-"] {float: left;} -.row{clear: both;} - -body { - background-color: #0f0e17; - color:#a7a9be; - text-align: left; - font-size: 1.4em; - max-width: 900px; - margin: auto; -} - -p {padding: 10px;} - -#cover {opacity: 60%;} - -.container { - position: relative; - text-align: center; - color: white; -} -.centered { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} - -#gone { - display: none; - color: #fffffe; - text-align: center; -} - -#MoreButton{ - margin: auto; - position: relative; - height: auto; - max-height: max-content; - width: auto; - max-width: max-content; - background-color:#ff8906; - border-radius: 5px; - color: #fffffe; - font-size: 1.2em; -} -a {text-decoration: none;} -a div p{ - text-align: center; - padding: 20px; -} -a :hover{scale: 1.06;} - - -.righties { - padding-bottom: 30px; - padding-top: 20px; - width: 100%; - clear: both; -} - -@media (max-width: 767px)/*unter handy größe*/{ - .centered {display: none;} - #gone {display: block;} - #cover {opacity: 100%;} - .righties {width: 100%;} - -} \ No newline at end of file +* { + scroll-margin-block-start: 60px; + scroll-margin-block-end: 60px; + box-sizing: border-box; + scroll-behavior: smooth; + max-width: 100%; + max-height: 100%; +} + +::-webkit-scrollbar { + width: 9px; +} +::-webkit-scrollbar-track { + background: rgb(41, 41, 41); +} +::-webkit-scrollbar-thumb { + background: #ff8906; + border-radius: 5px; +} +::-webkit-scrollbar-thumb:hover { + background: #555; +} + +[class*="col-"] { + float: left; +} +.row { + clear: both; +} + +body { + background-color: #0f0e17; + color: #a7a9be; + text-align: left; + font-size: 1.4em; + max-width: 900px; + margin: auto; +} + +p { + padding: 10px; +} + +#cover { + opacity: 60%; +} + +.container { + position: relative; + text-align: center; + color: white; +} +.centered { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +#gone { + display: none; + color: #fffffe; + text-align: center; +} + +#MoreButton { + margin: auto; + position: relative; + height: auto; + max-height: max-content; + width: auto; + max-width: max-content; + background-color: #ff8906; + border-radius: 5px; + color: #fffffe; + font-size: 1.2em; +} +a { + text-decoration: none; +} +a div p { + text-align: center; + padding: 20px; +} +a :hover { + scale: 1.06; +} + +.righties { + padding-bottom: 30px; + padding-top: 20px; + width: 100%; + clear: both; +} + +@media (max-width: 767px) /*unter handy größe*/ { + .centered { + display: none; + } + #gone { + display: block; + } + #cover { + opacity: 100%; + } + .righties { + width: 100%; + } +} diff --git a/todo/StartDE.html b/todo/StartDE.html index ff67f92..6d7f0ac 100644 --- a/todo/StartDE.html +++ b/todo/StartDE.html @@ -1,154 +1,154 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Start - - - -
- -

Bock auf was Neues?

-
- -

Bock auf was Neues?

- -

- Flexible - Modern - schneller als die Polizei erlaubt. Das sind moderne - eletrische Einräder. -

-
- -

- Von 0 auf 50kmh in 3s, 100kmh top Geschwindigkeit und 230km Reichweite - machen aus diesen Geräten den ultimativen Sport. -

-
- -

- Gleichzeitig 50° steile Wände hochfahren und MTB Trails mit leichtigkeit - nehmen. -

-
- -
- -

Jeden Weg nutzen und nie wieder im Verkehr stecken.

-
- -
- -

Und trotzdem leicht zu transportiren und untern Tisch zu packen.

-
- -

Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

- - -
-

Ich will alles darüber lesen!

-
-
- - -
-

Mir reichen Videos

-
-
- - -
-

Language

-
-
- - + + + + + + + + + + + + + + + + + + + + + + + + + + + Start + + + +
+ +

Bock auf was Neues?

+
+ +

Bock auf was Neues?

+ +

+ Flexible - Modern - schneller als die Polizei erlaubt. Das sind moderne + eletrische Einräder. +

+
+ +

+ Von 0 auf 50kmh in 3s, 100kmh top Geschwindigkeit und 230km Reichweite + machen aus diesen Geräten den ultimativen Sport. +

+
+ +

+ Gleichzeitig 50° steile Wände hochfahren und MTB Trails mit leichtigkeit + nehmen. +

+
+ +
+ +

Jeden Weg nutzen und nie wieder im Verkehr stecken.

+
+ +
+ +

Und trotzdem leicht zu transportiren und untern Tisch zu packen.

+
+ +

Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

+ + +
+

Ich will alles darüber lesen!

+
+
+ + +
+

Mir reichen Videos

+
+
+ + +
+

Language

+
+
+ + diff --git a/todo/StartENG.html b/todo/StartENG.html index 4731ec8..ca5ca57 100644 --- a/todo/StartENG.html +++ b/todo/StartENG.html @@ -1,157 +1,157 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - Start - - - - -
- -

Wanna try something new?

-
- -

Wanna try something new?

- -

- Flexible - Modern - Faster then law it self. These are modern electric - unicycles: -

- -
- -

- From 0 auf 50kmh in 3s, 100kmh top speed and 230km range make these - devices the ultimate sport. -

- -
- -

Meanwhile climbing 50° steep walls and taking MTB trails with ease.

- -
- -
- -

Taking every path and never get stuck in traffic again.

- -
- -
- -

But still being easy to carry and store just under your desk.

- -
- -

Interested? Then take a deep dive into PEV's and EUC's:

- - -
-

I want to read everything about it!

-
-
- - -
-

Na, videos are just fine

-
-
- - -
-

Sprache

-
-
- - + + + + + + + + + + + + + + + + + + + + + + + + + + + Start + + + + +
+ +

Wanna try something new?

+
+ +

Wanna try something new?

+ +

+ Flexible - Modern - Faster then law it self. These are modern electric + unicycles: +

+ +
+ +

+ From 0 auf 50kmh in 3s, 100kmh top speed and 230km range make these + devices the ultimate sport. +

+ +
+ +

Meanwhile climbing 50° steep walls and taking MTB trails with ease.

+ +
+ +
+ +

Taking every path and never get stuck in traffic again.

+ +
+ +
+ +

But still being easy to carry and store just under your desk.

+ +
+ +

Interested? Then take a deep dive into PEV's and EUC's:

+ + +
+

I want to read everything about it!

+
+
+ + +
+

Na, videos are just fine

+
+
+ + +
+

Sprache

+
+
+ + From df250eddcb218f737cb1f28ee1f3e2391aae194e Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 15:48:08 +0200 Subject: [PATCH 04/36] Working translation --- next-i18next.config.js | 5 +++++ pnpm-lock.yaml | 6 +++--- public/locales/de/common.json | 3 +++ public/locales/en/common.json | 3 +++ src/pages/index.tsx | 22 ++++++++++++++++++++-- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 0cb98b8..f9d3dc7 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -1,3 +1,8 @@ +// @ts-check + +/** + * @type {import('next-i18next').UserConfig} + */ module.exports = { i18n: { defaultLocale: "en", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 56aeb84..cc74d64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,7 +62,7 @@ packages: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.21.4 jsesc: 2.5.2 source-map: 0.5.7 dev: true @@ -118,7 +118,7 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.21.4 dev: true /@babel/runtime@7.21.0: @@ -148,7 +148,7 @@ packages: '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 - '@babel/types': 7.17.0 + '@babel/types': 7.21.4 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: diff --git a/public/locales/de/common.json b/public/locales/de/common.json index e69de29..e8a3ecd 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -0,0 +1,3 @@ +{ + "cna": "Erstelle Next App" +} diff --git a/public/locales/en/common.json b/public/locales/en/common.json index e69de29..ae6ffa9 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -0,0 +1,3 @@ +{ + "cna": "Create Next App" +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 89bbec3..d88c120 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,15 +1,26 @@ import styles from "@/styles/Home.module.css" +import { GetStaticProps, InferGetStaticPropsType } from "next" +import { useTranslation } from "next-i18next" +import { serverSideTranslations } from "next-i18next/serverSideTranslations" import { Inter } from "next/font/google" import Head from "next/head" import Image from "next/image" const inter = Inter({ subsets: ["latin"] }) -export default function Home() { +interface Props { + // Add custom props here +} + +export default function Home( + _props: InferGetStaticPropsType +) { + const { t } = useTranslation("common") + return ( <> - Create Next App + {t("cna")} @@ -112,3 +123,10 @@ export default function Home() { ) } + +// or getServerSideProps: GetServerSideProps = async ({ locale }) +export const getStaticProps: GetStaticProps = async ({ locale }) => ({ + props: { + ...(await serverSideTranslations(locale ?? "en", ["common", "footer"])), + }, +}) From a46200946e8c7ad28895e45b530d7aab7a7bec80 Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 17:38:54 +0200 Subject: [PATCH 05/36] Move files to new position --- .../pages/EUC Überblick DE.tsx | 2 +- .../pages/EUC Überblick ENG.tsx | 2 +- .../pages/HerstellerDE.tsx | 22 +- .../pages/HerstellerENG.tsx | 22 +- todo/KSS22DE.html => src/pages/KSS22DE.tsx | 0 todo/KSS22ENG.html => src/pages/KSS22ENG.tsx | 0 todo/StartDE.html => src/pages/StartDE.tsx | 0 todo/StartENG.html => src/pages/StartENG.tsx | 0 todo/soon.HTML => src/pages/soon.tsx | 22 +- .../styles/EUC_Overview.css | 0 {todo => src/styles}/Geräte.css | 0 src/styles/Home.module.css | 229 ------------------ {todo => src/styles}/Start.css | 0 src/styles/globals.css | 107 -------- 14 files changed, 35 insertions(+), 371 deletions(-) rename todo/EUC Überblick DE.html => src/pages/EUC Überblick DE.tsx (98%) rename todo/EUC Überblick ENG.html => src/pages/EUC Überblick ENG.tsx (98%) rename todo/HerstellerDE.HTML => src/pages/HerstellerDE.tsx (95%) rename todo/HerstellerENG.HTML => src/pages/HerstellerENG.tsx (95%) rename todo/KSS22DE.html => src/pages/KSS22DE.tsx (100%) rename todo/KSS22ENG.html => src/pages/KSS22ENG.tsx (100%) rename todo/StartDE.html => src/pages/StartDE.tsx (100%) rename todo/StartENG.html => src/pages/StartENG.tsx (100%) rename todo/soon.HTML => src/pages/soon.tsx (89%) rename todo/EUC Überblick.css => src/styles/EUC_Overview.css (100%) rename {todo => src/styles}/Geräte.css (100%) delete mode 100644 src/styles/Home.module.css rename {todo => src/styles}/Start.css (100%) delete mode 100644 src/styles/globals.css diff --git a/todo/EUC Überblick DE.html b/src/pages/EUC Überblick DE.tsx similarity index 98% rename from todo/EUC Überblick DE.html rename to src/pages/EUC Überblick DE.tsx index ceb8a64..aace709 100644 --- a/todo/EUC Überblick DE.html +++ b/src/pages/EUC Überblick DE.tsx @@ -29,7 +29,7 @@ Einführung EUCs - + diff --git a/todo/EUC Überblick ENG.html b/src/pages/EUC Überblick ENG.tsx similarity index 98% rename from todo/EUC Überblick ENG.html rename to src/pages/EUC Überblick ENG.tsx index 81f5fbb..bf45dc4 100644 --- a/todo/EUC Überblick ENG.html +++ b/src/pages/EUC Überblick ENG.tsx @@ -29,7 +29,7 @@ Introduction EUCs - + diff --git a/todo/HerstellerDE.HTML b/src/pages/HerstellerDE.tsx similarity index 95% rename from todo/HerstellerDE.HTML rename to src/pages/HerstellerDE.tsx index 68379dd..9c7c224 100644 --- a/todo/HerstellerDE.HTML +++ b/src/pages/HerstellerDE.tsx @@ -87,7 +87,7 @@ content="Elektrische einräder, EUC, Monowheels, Kingsong, Inmotion, Gotway" /> Hersteller - + @@ -124,28 +124,28 @@ diff --git a/todo/HerstellerENG.HTML b/src/pages/HerstellerENG.tsx similarity index 95% rename from todo/HerstellerENG.HTML rename to src/pages/HerstellerENG.tsx index b8a3b8b..9baebbe 100644 --- a/todo/HerstellerENG.HTML +++ b/src/pages/HerstellerENG.tsx @@ -87,7 +87,7 @@ content="Elektrische einräder, EUC, Monowheels, Kingsong, Inmotion, Gotway" /> Hersteller - + @@ -126,28 +126,28 @@ diff --git a/todo/KSS22DE.html b/src/pages/KSS22DE.tsx similarity index 100% rename from todo/KSS22DE.html rename to src/pages/KSS22DE.tsx diff --git a/todo/KSS22ENG.html b/src/pages/KSS22ENG.tsx similarity index 100% rename from todo/KSS22ENG.html rename to src/pages/KSS22ENG.tsx diff --git a/todo/StartDE.html b/src/pages/StartDE.tsx similarity index 100% rename from todo/StartDE.html rename to src/pages/StartDE.tsx diff --git a/todo/StartENG.html b/src/pages/StartENG.tsx similarity index 100% rename from todo/StartENG.html rename to src/pages/StartENG.tsx diff --git a/todo/soon.HTML b/src/pages/soon.tsx similarity index 89% rename from todo/soon.HTML rename to src/pages/soon.tsx index 103f291..485407b 100644 --- a/todo/soon.HTML +++ b/src/pages/soon.tsx @@ -87,7 +87,7 @@ content="Elektrische einräder, EUC, Monowheels, Kingsong, Inmotion, Gotway" /> soon - + @@ -126,28 +126,28 @@ diff --git a/todo/EUC Überblick.css b/src/styles/EUC_Overview.css similarity index 100% rename from todo/EUC Überblick.css rename to src/styles/EUC_Overview.css diff --git a/todo/Geräte.css b/src/styles/Geräte.css similarity index 100% rename from todo/Geräte.css rename to src/styles/Geräte.css diff --git a/src/styles/Home.module.css b/src/styles/Home.module.css deleted file mode 100644 index e873c49..0000000 --- a/src/styles/Home.module.css +++ /dev/null @@ -1,229 +0,0 @@ -.main { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - padding: 6rem; - min-height: 100vh; -} - -.description { - display: inherit; - justify-content: inherit; - align-items: inherit; - font-size: 0.85rem; - max-width: var(--max-width); - width: 100%; - z-index: 2; - font-family: var(--font-mono); -} - -.description a { - display: flex; - justify-content: center; - align-items: center; - gap: 0.5rem; -} - -.description p { - position: relative; - margin: 0; - padding: 1rem; - background-color: rgba(var(--callout-rgb), 0.5); - border: 1px solid rgba(var(--callout-border-rgb), 0.3); - border-radius: var(--border-radius); -} - -.code { - font-weight: 700; - font-family: var(--font-mono); -} - -.grid { - display: grid; - grid-template-columns: repeat(4, minmax(25%, auto)); - width: var(--max-width); - max-width: 100%; -} - -.card { - padding: 1rem 1.2rem; - border-radius: var(--border-radius); - background: rgba(var(--card-rgb), 0); - border: 1px solid rgba(var(--card-border-rgb), 0); - transition: background 200ms, border 200ms; -} - -.card span { - display: inline-block; - transition: transform 200ms; -} - -.card h2 { - font-weight: 600; - margin-bottom: 0.7rem; -} - -.card p { - margin: 0; - opacity: 0.6; - font-size: 0.9rem; - line-height: 1.5; - max-width: 30ch; -} - -.center { - display: flex; - justify-content: center; - align-items: center; - position: relative; - padding: 4rem 0; -} - -.center::before { - background: var(--secondary-glow); - border-radius: 50%; - width: 480px; - height: 360px; - margin-left: -400px; -} - -.center::after { - background: var(--primary-glow); - width: 240px; - height: 180px; - z-index: -1; -} - -.center::before, -.center::after { - content: ""; - left: 50%; - position: absolute; - filter: blur(45px); - transform: translateZ(0); -} - -.logo { - position: relative; -} -/* Enable hover only on non-touch devices */ -@media (hover: hover) and (pointer: fine) { - .card:hover { - background: rgba(var(--card-rgb), 0.1); - border: 1px solid rgba(var(--card-border-rgb), 0.15); - } - - .card:hover span { - transform: translateX(4px); - } -} - -@media (prefers-reduced-motion) { - .card:hover span { - transform: none; - } -} - -/* Mobile */ -@media (max-width: 700px) { - .content { - padding: 4rem; - } - - .grid { - grid-template-columns: 1fr; - margin-bottom: 120px; - max-width: 320px; - text-align: center; - } - - .card { - padding: 1rem 2.5rem; - } - - .card h2 { - margin-bottom: 0.5rem; - } - - .center { - padding: 8rem 0 6rem; - } - - .center::before { - transform: none; - height: 300px; - } - - .description { - font-size: 0.8rem; - } - - .description a { - padding: 1rem; - } - - .description p, - .description div { - display: flex; - justify-content: center; - position: fixed; - width: 100%; - } - - .description p { - align-items: center; - inset: 0 0 auto; - padding: 2rem 1rem 1.4rem; - border-radius: 0; - border: none; - border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); - background: linear-gradient( - to bottom, - rgba(var(--background-start-rgb), 1), - rgba(var(--callout-rgb), 0.5) - ); - background-clip: padding-box; - backdrop-filter: blur(24px); - } - - .description div { - align-items: flex-end; - pointer-events: none; - inset: auto 0 0; - padding: 2rem; - height: 200px; - background: linear-gradient( - to bottom, - transparent 0%, - rgb(var(--background-end-rgb)) 40% - ); - z-index: 1; - } -} - -/* Tablet and Smaller Desktop */ -@media (min-width: 701px) and (max-width: 1120px) { - .grid { - grid-template-columns: repeat(2, 50%); - } -} - -@media (prefers-color-scheme: dark) { - .vercelLogo { - filter: invert(1); - } - - .logo { - filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); - } -} - -@keyframes rotate { - from { - transform: rotate(360deg); - } - to { - transform: rotate(0deg); - } -} diff --git a/todo/Start.css b/src/styles/Start.css similarity index 100% rename from todo/Start.css rename to src/styles/Start.css diff --git a/src/styles/globals.css b/src/styles/globals.css deleted file mode 100644 index f4bd77c..0000000 --- a/src/styles/globals.css +++ /dev/null @@ -1,107 +0,0 @@ -:root { - --max-width: 1100px; - --border-radius: 12px; - --font-mono: ui-monospace, Menlo, Monaco, "Cascadia Mono", "Segoe UI Mono", - "Roboto Mono", "Oxygen Mono", "Ubuntu Monospace", "Source Code Pro", - "Fira Mono", "Droid Sans Mono", "Courier New", monospace; - - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; - - --primary-glow: conic-gradient( - from 180deg at 50% 50%, - #16abff33 0deg, - #0885ff33 55deg, - #54d6ff33 120deg, - #0071ff33 160deg, - transparent 360deg - ); - --secondary-glow: radial-gradient( - rgba(255, 255, 255, 1), - rgba(255, 255, 255, 0) - ); - - --tile-start-rgb: 239, 245, 249; - --tile-end-rgb: 228, 232, 233; - --tile-border: conic-gradient( - #00000080, - #00000040, - #00000030, - #00000020, - #00000010, - #00000010, - #00000080 - ); - - --callout-rgb: 238, 240, 241; - --callout-border-rgb: 172, 175, 176; - --card-rgb: 180, 185, 188; - --card-border-rgb: 131, 134, 135; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - - --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0)); - --secondary-glow: linear-gradient( - to bottom right, - rgba(1, 65, 255, 0), - rgba(1, 65, 255, 0), - rgba(1, 65, 255, 0.3) - ); - - --tile-start-rgb: 2, 13, 46; - --tile-end-rgb: 2, 5, 19; - --tile-border: conic-gradient( - #ffffff80, - #ffffff40, - #ffffff30, - #ffffff20, - #ffffff10, - #ffffff10, - #ffffff80 - ); - - --callout-rgb: 20, 20, 20; - --callout-border-rgb: 108, 108, 108; - --card-rgb: 100, 100, 100; - --card-border-rgb: 200, 200, 200; - } -} - -* { - box-sizing: border-box; - padding: 0; - margin: 0; -} - -html, -body { - max-width: 100vw; - overflow-x: hidden; -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} - -a { - color: inherit; - text-decoration: none; -} - -@media (prefers-color-scheme: dark) { - html { - color-scheme: dark; - } -} From edadb51dee640fd45f15fe8ad9508c1ad19ccb4b Mon Sep 17 00:00:00 2001 From: aronmal Date: Sun, 16 Apr 2023 17:47:19 +0200 Subject: [PATCH 06/36] Comment out comments --- src/pages/EUC Überblick DE.tsx | 44 ++++++++++++++++----------------- src/pages/EUC Überblick ENG.tsx | 42 +++++++++++++++---------------- src/pages/HerstellerDE.tsx | 8 +++--- src/pages/HerstellerENG.tsx | 8 +++--- src/pages/soon.tsx | 6 ++--- 5 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/pages/EUC Überblick DE.tsx b/src/pages/EUC Überblick DE.tsx index aace709..4196258 100644 --- a/src/pages/EUC Überblick DE.tsx +++ b/src/pages/EUC Überblick DE.tsx @@ -31,7 +31,7 @@ - +{/* */} {/* */}
-

Begriffs- und Spezifikations Erklärungen

+

Begriffs- und Spezifikationserklärungen

Tilt-back: Die Pedale des Geräts neigen sich @@ -340,16 +340,17 @@ function overview() { schützen.

- Pedal Dip: Die pedale geben nach, das Gerät kann die + Pedal Dip: Die Pedale geben nach, das Gerät kann die gefragte Leistung nicht aufrechterhalten und die Pedale neigen sich schlagartig nach vorne (Oder nach hinten beim starken Bremsen). In den meisten Fällen kommen die Pedale aber sofort wieder hoch, sodass die Fahrt ungestört weiter gehen kann.

- Pedal-angle: Winkel in dem die Pedale zum Gerät stehen, von - vorne gesehen. Ein steilerer Winkel sorgt für mehr Halt in Kurven, - kann aber auch unangenehm werden für längere Fahrten. + Pedal-angle: Der Winkel, in dem die Pedale zum Gerät + stehen, wenn man sie von vorne betrachtet. Ein steilerer Winkel + sorgt für mehr Halt in Kurven, kann aber auch unangenehm werden + für längere Fahrten.

Spiked-pedals: Spitzen auf den Pedalen, @@ -383,9 +384,9 @@ function overview() {

Jump Pads: haben Kontakt mit dem Fuß und der Verse, dienen zum Springen und zur Sicherheit. Im Falle eines unerwarteten - Buckel in der Straße halten sie den Fuß fest, sodass man nicht vom - Gerät fällt. Allerdings können sie im Falle eines crashes - behinderlich sein, da sie ein schnelles absteigen erschweren. + Buckels in der Straße halten sie den Fuß fest, sodass man nicht + vom Gerät fällt. Allerdings können sie im Falle eines Crashes + hinderlich sein, da sie ein schnelles Absteigen erschweren.

Wobbles: beschreibt das unbeabsichtigte Wackeln des Geräts @@ -414,7 +415,7 @@ function overview() {

- HS Motor: High Speed Motor, Siehe Kapitel{" "} + HS Motor: High Speed Motor, siehe Kapitel{" "} Motor.

@@ -425,8 +426,8 @@ function overview() {

W: Watt, Leistungsangabe, zeigt wie viel Leistung das Gerät - dauerhaft halten kann. 3000W entsprechen 4 PS (ein E-bike hat - maximal 250w). Nicht zu verwechseln mit + dauerhaft halten kann. 3.000 W entsprechen 4 PS (ein E-Bike hat + maximal 250 W). Nicht zu verwechseln mit

@@ -436,9 +437,9 @@ function overview() {

Wh: Wattstunden, Speicher Angabe, zeigt wie viel - Energie der Akku speichern kann. 3000wh heißt, - dass der Akku 3000w über eine Stunde lang geben könnte, oder 1500w - über 2 Stunden etc. + Energie der Akku speichern kann. 3.000 Wh + heißt, dass der Akku 3.000 W über eine Stunde lang geben könnte, + oder 1.500 W über 2 Stunden etc.

@@ -453,25 +454,50 @@ function overview() {

- Freespin: Maximale Dreh Geschwindigkeit die der Motor + Freespin: Maximale Dreh Geschwindigkeit, die der Motor erreichen kann, wenn man das Gerät anhebt. Minus 20 km/h rechnen, um ungefähr die erreichbare top Geschwindigkeit zu bekommen.

- 16inch: beschreibt die Reifen Größe, in dem Fall 16 Zoll - (40cm) Durchmesser. Kleine Durchmesser sind wendig und haben ein - schnelles Ansprechverhalten, große Durchmesser (bis 24inch, 60cm) - fühlen sich schwer und träge an, sind aber erheblich stabiler auf - Geschwindigkeit. + 16 inch: beschreibt die Reifen Größe, in dem Fall 16 Zoll + (40 cm) Durchmesser. Kleine Durchmesser sind wendig und haben ein + schnelles Ansprechverhalten, große Durchmesser (bis 24 Zoll, 60 + cm) fühlen sich schwer und träge an, sind aber erheblich stabiler + auf Geschwindigkeit.

-

- Charging Amps: Die maximalen Ampere, mit denen das Gerät - laden kann. Die meisten neuen Geräte laden mit maximal 10 Ampere, - also 10*100 oder 10*134 Watt. Die Ladezeit errechnet man so: - kapazität/Volt/lade Ampere. 3300wh:126v:10A = 2,6h. -

+
+

+ Charging Amps: Die maximalen Ampere, mit denen das Gerät + laden kann. Die meisten neuen Geräte laden mit maximal 10 + Ampere, also 10 A * 126 V = 1.260 Watt. Die Ladezeit errechnet + man so: +

+ + + + + + + + + + + + + + + + + + + + + + +
Kapazität÷ (Volt×ladende Ampere) =Ladezeit
3.300 Wh÷ (126 V×10 A) =2,6 h
+
@@ -483,7 +509,7 @@ function overview() { einfach umfällt und ob das denn überhaupt sicher ist. Die Kurze Antwort: ja ist es. Es gibt zwar wie bei jedem Fortbewegungsmittel Risiken, aber sie sind sehr viel kleiner und unwichtiger als man zu - Anfang annehmen würde. Trotzdem haben sich über die Jahren ein paar + Anfang annehmen würde. Trotzdem haben sich über die Jahre ein paar sicherheitstechnische Aspekte ergeben, die hier weiter erklärt werden:

@@ -499,27 +525,28 @@ function overview() {

- Jeder EUC YouTuber und erfahrene Fahrer wird dir sagen, das + Jeder EUC-YouTuber und erfahrene Fahrer wird dir sagen, dass Schutzausrüstung essenziell ist. Zur Schutzausrüstung gehören je nach Geschwindigkeiten auf jeden Fall Hand und Knieschoner, beliebt sind die{" "} Leatt dual axis knee guards {" "} - . Bei unter 30kmh, also sehr kleinen Geräten, kann man wenn - nötig auch ohne Ausrüstung fahren. Das wird zwar nicht gerne - gesehen, aber wenn man etwas sportlich ist, kann man jeden crash - einfach auslaufen. Etwas das bei Fahrrädern nicht möglich ist. + . Bei Geschwindigkeiten unter 30 km/h, also mit sehr kleinen + Geräten, kann man, wenn nötig, auch ohne Ausrüstung fahren. Das wird + zwar nicht gerne gesehen, aber wenn man etwas sportlich ist, kann + man jeden crash einfach auslaufen. Etwas das bei Fahrrädern nicht + möglich ist.

- Bei höheren Geschwindigkeiten (über 30kmh) sollte ein Helm - getragen werden, vorzugweise ein Fullface Helm. Bis 60kmh reicht da - auch ein MTB-Helm, oder aus dem Motorcross Bereich. Auch sollte an - Ellenbogen und Schulter Schutz gedacht werden, beliebt sind hier die{" "} - LazyRolling Jacken, welche - alle Protektoren eingebaut haben und meist auch gute Sichtbarkeit - bei Nacht bieten. Bei den Helmen sind der{" "} + Bei höheren Geschwindigkeiten (über 30 km/h) sollte ein Helm + getragen werden, vorzugweise ein Fullface Helm. Bis 60 km/h reicht + da auch ein MTB-Helm, oder aus dem Motorcross Bereich. Auch sollte + an Ellenbogen und Schulter Schutz gedacht werden, beliebt sind hier + die LazyRolling Jacken, + welche alle Protektoren eingebaut haben und meist auch gute + Sichtbarkeit bei Nacht bieten. Bei den Helmen sind der{" "} TSG Pass {" "} @@ -528,9 +555,10 @@ function overview() { Predator DH6-X {" "} sehr beliebt, wegen des hohen Sicht Feldes, kleinen Gewicht und - stylischem Aussehen. Bei Geschwindigkeiten von 80 bis 100kmh{" "} - sollte man über Motorrad Ausrüstungen nachdenken, da die oben - genannte Dinge nicht für diese Geschwindigkeiten gebaut wurden. + stylischem Aussehen. Bei Geschwindigkeiten von{" "} + 80 bis 100 km/h sollte man über Motorrad Ausrüstungen + nachdenken, da die oben genannte Dinge nicht für diese + Geschwindigkeiten gebaut wurden.

@@ -543,9 +571,9 @@ function overview() { Und: Dress for the slide, not the ride. (Kleide dich für den Fall, nicht die Fahrt.) Dies besagt, dass man sich stehts für den schlimmsten Fall angemessen kleiden sollte. Zum Beispiel sollte man - auf einem Inmotion V8 mit 28kmh top Geschwindigkeit nicht volle + auf einem Inmotion V8 mit 28 km/h top Geschwindigkeit nicht volle Motorrad Ausrüstung tragen, da sie die Sicht einschränkt und viel zu - viel für die Situation wäre. Aber auf einen Master Pro mit 100kmh + viel für die Situation wäre. Aber auf einen Master Pro mit 100 km/h auch keinen Fahrradhelm tragen.

@@ -555,17 +583,17 @@ function overview() { {/* */}
-

Cut-off's

+

Cut-offs

- Cut-off's sind die größte Quelle der nicht eigenverantwortlichen + Cut-offs sind die größte Quelle der nicht eigenverantwortlichen Unfälle. Ein Cut-off oder auch Cut-out bedeutet, dass das Gerät mitten in der Fahrt aus geht, und der Fahrer im besten Fall - abspringt, und im schlimmsten fall direkt in den Asphalt knallt. Die + abspringt, und im schlimmsten Fall direkt in den Asphalt knallt. Die Gründe dafür sind vielfältig, hier ein paar Beispiele:

@@ -573,7 +601,7 @@ function overview() { Bei Überlastung gehen ältere oder schlecht gebaute Geräte einfach aus, entweder weil sie durchgebrannt sind oder weil sich die Elektronik vorm Durchbrennen schützt. Überlastungen passieren, wenn - man zu steile Wege hochfährt, wenn man auf hoher Geschwindigkeit + man zu steilem Wege hochfährt, wenn man auf hoher Geschwindigkeit einem großen Buckel in der Straße begegnet oder wenn man nahe der top Geschwindigkeit nochmal beschleunigt. Natürlich ist dieses Verhalten nicht unbemerkt geblieben, weswegen die Hersteller @@ -583,13 +611,13 @@ function overview() {

Nahezu alle Geräte geben ein lautes Piepen von sich, wenn sie nahe - der Belastungsgrenze sind, im den Fahrer zu warnen. Viele nutzen - auch Tilt-back um die Fahrer von der top Geschwindigkeit abzuhalten, - was sehr effektiv funktioniert. Auch passiert es immer häufiger, - dass bei Überlastung der Motor für nur ganz kurze Zeit abgeschaltet - wird, um die Elektronik zu schützen. Das sorgt dann für ein Pedal - Dip, und in den meisten Fällen kann die Fahrt normal fortgeführt - werden. + der Belastungsgrenze sind, um den Fahrer zu warnen. Viele nutzen + auch Tilt-back, um die Fahrer von der top Geschwindigkeit + abzuhalten, was sehr effektiv funktioniert. Auch passiert es immer + häufiger, dass bei Überlastung der Motor für nur ganz kurze Zeit + abgeschaltet wird, um die Elektronik zu schützen. Das sorgt dann für + ein Pedal Dip, und in den meisten Fällen kann die Fahrt normal + fortgeführt werden.

@@ -614,8 +642,8 @@ function overview() {

Das letzte Beispiel hier ist ein niedriger Akkustand. Bei - niedrigem Akkustand läuft das Gerät nicht mehr auf den vollen - 100.8V, sondern eher um die 80V. Wird nun viel Leistung beansprucht, + niedrigem Akkustand läuft das Gerät nicht mehr auf den vollen 100,8 + V, sondern eher um die 80 V. Wird nun viel Leistung beansprucht, kommt es zum Spannungsabfall wie im Kapitel Akku{" "} beschrieben. Fällt dann die Spannung unter das Minimum, schaltet die Elektronik ab. Moderne Geräte limitieren die top Geschwindigkeit bei @@ -627,7 +655,7 @@ function overview() {

- Trotz all dieser Gründe, sind Cut-outs sehr selten und bei richtiger + Trotz all dieser Gründe sind Cut-outs sehr selten und bei richtiger Fahrweise so gut wie nie ein Problem. Und wenn man sich historisch sichere Geräte kauft, wie KS16X oder Veteran Sherman, kann man relativ sorglos sein. @@ -734,9 +762,9 @@ function overview() { Bisher (2022) hat nur das Kingsong S22 ein Smart{" "} BMS, welches einem erlaubt die Spannung einer jeder Zelle in der App zu sehen und zu kontrollieren. Nicht smarte{" "} - BMS haben sogenanntes passive Balance, also + BMS haben sogenanntes "passive balance", also passives angleichen der Spannungen der Zellen. Dafür muss das Gerät - regelmäßig auf 100% geladen werden, und danach länger am Stecker + regelmäßig auf 100 % geladen werden, und danach länger am Stecker gelassen werden.

@@ -768,7 +796,7 @@ function overview() {

Im Gegensatz zu Scootern, sorgt die steile Lernkurve für mehr Respekt vor dem Gerät und dem eigenen Können. Viele gehen erst in - die nähe des Straßenverkehrs, wenn sie länger geübt haben und sich + die Nähe des Straßenverkehrs, wenn sie länger geübt haben und sich sicher fühlen, wohingegen vor allem bei ausleih-Scootern die erste Fahrt meist direkt zwischen Autos oder Fußgängern stattfindet. Das sorgt für erheblich weniger Vorfälle mit EUCs. @@ -778,15 +806,15 @@ function overview() { EUC fahren ist ein sehr Skill basiertes Fortbewegungsmittel. Selbst die Notbremse muss lange geübt werden, in verschieden Szenarien und vor allem in Kurven. Häufig kommt es vor, dass Fahrer - nach den ersten paar Kilometern fahren schon aufhören, sich aktiv zu - pushen und zu verbessern. So kommt es öfter dazu, dass selbst Jahre - lange Fahrer unsicher beim auf und absteigen sind, und sich in + nach den ersten paar Kilometern fahren, schon aufhören, sich aktiv + zu pushen und zu verbessern. So kommt es öfter dazu, dass selbst + Jahre lange Fahrer unsicher beim auf und absteigen sind, und sich in Notsituationen nicht zu helfen wissen. Viele haben einen falschen Stand oder fahren mit wackeligen Beinen, was{" "} Wobbles verursacht und somit zum Fall führt. - Das ist auch der Grund, weswegen im schnitt die NewYorker Fahrer + Das ist auch der Grund, weswegen im Schnitt die New Yorker Fahrer weniger Unfälle haben als andere Gruppen und Städte, trotz, oder - eben weil sie so aggressiv fahren und somit ein sehr hohes Skill + eben, weil sie so aggressiv fahren und somit ein sehr hohes Skill Level haben. Diese Geräte können nur so viel wie ihr Fahrer, und sind mit dem richtigen Skill zu unglaublichem im Stande.

@@ -809,24 +837,24 @@ function overview() {

Erstens, man steht aufrecht und hat die Hände und den Körper frei. Das allein sorgt für ein viel leichteres Abfangen eines - Sturzes, als zum Beispiel bei einem Fahrrad oder Scooter. Bei denen + Sturzes als zum Beispiel bei einem Fahrrad oder Scooter. Bei denen fliegt man entweder über den Lenker, oder rutscht seitlich aus und hat nicht beide Beine, um einen aufzufangen.

Zweitens steht man nach vorne gerichtet, und wird nicht wie - beim OneWheel seitlich in den Boden{" "} + beim Onewheel seitlich in den Boden{" "} geyeetet - . Die meisten können bei unter 25kmh einfach abspringen und + . Die meisten können bei unter 25 km/h einfach abspringen und auslaufen, ohne überhaupt zu fallen. Das ist sonst nur bei sehr wenig Geräten dieser Art Möglich. Natürlich ist man nicht so sicher wie auf einem dicken Motorrad, oder wie in einem Auto. Aber im Vergleich zum Motorrad, sind die Geschwindigkeiten meist lachhaft klein und somit viel ungefährlicher. Außerdem trägt man meist eh die - empfohlene Ausrüstung, sodass 99% der Fälle einfach gar nichts + empfohlene Ausrüstung, sodass 99 % der Fälle einfach gar nichts passiert.

@@ -844,14 +872,14 @@ function overview() { beschreiben das hin und her wackeln des Gerätes während schneller fahrt. Wie im Thema Reifen erwähnt, haben Straßenreifen öfter die Neigung dazu zu wackeln. Das Gerät - wackelt dann in seiner eigen Resonanz, bei Motorrädern bekannt als{" "} + wackelt dann in seiner eigenen Resonanz, bei Motorrädern bekannt als{" "} Lenkerflattern.

- Man kann dem entgehen in dem man den Reifendruck niedriger - hält und ein balanciertes Gerät hat, also mit gleichmäßiger Gewichts - Verteilung. Auch zum Vermeiden hilft es, immer leicht zu{" "} + Man kann dem entgehen in dem man den Reifendruck niedriger{" "} + hält und ein balanciertes Gerät hat, also mit gleichmäßiger + Gewichtsverteilung. Um es zu vermeiden, hilft auch, immer leicht zu{" "} carven, also schlängelnd zu fahren. Wenn man trotzdem Wobbles bekommt, hilft es gute Pads zu haben, da einem diese mehr Halt auf dem Gerät geben und einem somit mehr Zeit geben @@ -863,11 +891,11 @@ function overview() {

Allerdings ist das Beispiel Video hier auch ein Extremfall, wenn - auch perfekt mit den Knieschonern abgefangen. Im normal Fall würde - man beim bremsen leichtes wackeln spüren, und diesen mit der Zeit - auch unter kontrolle bekommen. Generell sagen viele, dass es eine{" "} + auch perfekt mit den Knieschonern abgefangen. Im Normalfall würde + man beim Bremsen leichtes wackeln spüren, und diesen mit der Zeit + auch unter Kontrolle bekommen. Generell sagen viele, dass es eine{" "} Sache des Trainings und der Erfahrung ist. Auch sind Geräte - wie die MSuper-Reihe, RS's und EXN's von Gotway anfälliger als zum + wie die MSuper-Reihe, RSs und EXNs von Gotway anfälliger als zum Beispiel das Veteran Sherman oder das KS S22.

@@ -880,7 +908,7 @@ function overview() { Vor allem Politiker und Leute außerhalb dieses Sports denken, dass mehr Leistung gleichbedeutend mit höherem Risiko ist. Sie liegen bei Scootern und E-bikes damit auch fast richtig, weil diese nicht auf - Leistung zur Stabilisierung angewiesen sind. EUCs, OneWheels und + Leistung zur Stabilisierung angewiesen sind. EUCs, Onewheels und alle Arten von Hoverboards und Segways sind dies aber, und das sorgt für einen kleinen Widerspruch. Mehr Leistung gibt dem Fahrer sehr viel brems Sicherheit, und vermindert das Risiko eines @@ -901,16 +929,16 @@ function overview() { eingeschätzt, entwickelt sich dieses Feature langsam zu einer Notwendigkeit. Denn bei einem selbst balancierenden Gerät sorgt jeder Buckel in der Straße für eine Leistungs-Spitze im Controller. - Das ist bei 35kmh meist kein Problem, aber bei 70kmh kann das für - viele Geräte schon zu viel sein. Federung nimmt die entstehende + Das ist bei 35 km/h meist kein Problem, aber bei 70 km/h kann das + für viele Geräte schon zu viel sein. Federung nimmt die entstehende Leistungs-Spitze größtenteils weg, und sorgt gleichzeitig dafür, dass die Füße vom Fahrer nicht von Gerät geschossen werden. Ausnahme - sind hier die Pogostick Designs im Inmotion V11, welches in Ausnahme - Fällen den Fahrer einfach emporschießt, statt zu federn. Trotzdem, - vor allem die progressiven Federungen sorgen nicht nur für erheblich - mehr Komfort, sondern auch für Fahrer Sicherheit. Und erlauben - Mountainbike ähnliche Performance auf den Trails.{" "} - Viedeo dazu + sind hier die Pogo-Stick-Designs im Inmotion V11, welches in + Ausnahme Fällen den Fahrer einfach emporschießt, statt zu federn. + Trotzdem, vor allem die progressiven Federungen sorgen nicht nur für + erheblich mehr Komfort, sondern auch für Fahrer Sicherheit. Und + erlauben Mountainbike ähnliche Performance auf den Trails.{" "} + Video dazu

@@ -921,24 +949,25 @@ function overview() {

Reifen werden unterteilt in 3 Kategorien:

- Offroad Reifen, auch Nobbys genannt, haben äußerst viel und - meist ein sehr grobes Profil. Sie sind meist lauter auf der Straße, - haben einen größeren Wendekreis und fühlen sich auf der Straße bei - weitem nicht so agil und wendig an wie Straßenreifen. Dafür haben - sie meist hervorragenden Grip im Wald und können auch durch tiefen - Matsch fahren. Außerdem wurde festgestellt, dass Nobbys weniger - wobblen als Straßenreifen ( + Offroad Reifen, auch Knobbies (von englisch knob{" "} + ‚Noppen‘, wobei das 'k' stumm ist) genannt, haben + äußerst viel und meist ein sehr grobes Profil. Sie sind meist lauter + auf der Straße, haben einen größeren Wendekreis und fühlen sich auf + der Straße bei weitem nicht so agil und wendig an wie Straßenreifen. + Dafür haben sie meist hervorragenden Grip im Wald und können auch + durch tiefen Matsch fahren. Außerdem wurde festgestellt, dass + Knobbies weniger wobblen als Straßenreifen ( Vergleich ), wahrscheinlich wegen dem geringeren Reifendruck und dem weicheren - Material. Nobbys haben noch den Vorteil, dass sie meist länger - halten. So hält ein Standard Kenda K262 locker 10000km, wo ein CST - Straßenreifen nur 3-4000km hält. + Material. Nobbies haben noch den Vorteil, dass sie meist länger + halten. So hält ein Standard Kenda K262 locker 10.000 km, wo ein CST + Straßenreifen nur 3.000 - 4.000 km hält.

Straßenreifen sind wie der Name sagt für Asphalt besser geeignet, sie lassen das Gerät agiler und schneller wirken als ein - Nobby. Auch sind sie erheblich leiser, sie fühlen sich erheblich + Knobby. Auch sind sie erheblich leiser, sie fühlen sich erheblich besser in Kurven an und erlauben sehr feine Manöver. Hier sind 2 Reifen zu nennen, einmal der CST c-1488 welcher zum Leiden vieler als Standardstraßenreifen mit dem Gerät geliefert wird. Dieser @@ -972,11 +1001,11 @@ function overview() { auf den Markt. Doch mangelnde Leistung, Akkugröße und die Bauweise, zusammen mit dem Design und dem Preis sorgten für einen spektakulären Flop dieser Technik. Es gab schon 1930 erste - Prototypen und Einzelversuche, aber erst das SoloWheel im + Prototypen und Einzelversuche, aber erst das Solowheel im Jahr 2010 hat die typischen Eigenschaften eines heutigen EUCs. Auch wenn dass das erste nennenswerte EUC ist, ist es aus heutiger Sicht kaum benutzbar. Unergonomisch, schwach, viel zu kleiner Akku und - somit kaum Brems- oder Beschleunigungs Möglichkeiten (siehe{" "} + somit kaum Brems- oder Beschleunigungsmöglichkeiten (siehe{" "} Leistung als Sicherheitesfeature). Trotzdem markierte dieses Gerät den Start des Sports, und definierte ihn somit. @@ -1012,23 +1041,23 @@ function overview() { Ninebot - kaufte Segway, und kam 2015 mit dem Ninebot One raus. Ein - 250wh Gerät mit schicken LEDs und weißem Design. Danach kam ein - Gerät nach dem anderen raus. Gotway produzierte immer größere und + kaufte Segway, und kam 2015 mit dem Ninebot One raus. Ein 250 + Wh Gerät mit schicken LEDs und weißem Design. Danach kam ein Gerät + nach dem anderen raus. Gotway produzierte immer größere und schnellere Geräte, Inmotion, Kingsong und Ninebot boten immer mehr Features und versuchten mit Gotway in Sachen Leistung mitzuhalten.{" "} 2019 kam das zuerst unbeliebte, später ikonische Ninebot Z10 - heraus. 45kmh, 1100wh und ein absolut einmaliges Design trennt es - auch heute noch von allen anderen Geräten. Aber es hatte viele + heraus. 45 km/h, 1.100 Wh und ein absolut einmaliges Design trennt + es auch heute noch von allen anderen Geräten. Aber es hatte viele Probleme, und leider war es das letzte EUC das Ninebot produzierte. - Zu dem Zeitpunkt war Gotway schon bei 50kmh+ mit dem Monster - und Nicola, auch die Akkus waren doppelt so groß. Gotway, heute - genannt Begode, hat sich das Image der hohen Leistung und + Zu dem Zeitpunkt war Gotway schon bei 50+ km/h mit dem + Monster und Nicola, auch die Akkus waren doppelt so groß. Gotway, + heute genannt Begode, hat sich das Image der hohen Leistung und Geschwindigkeit aufgebaut. Viele nahmen die schlechte Verarbeitungsqualität und selten auch{" "} Akkubrände in Kauf, weil es einfach keine Alternative gab. Erst 2020 änderte sich das langsam, als - Inmotion und Kingsong beide 50kmh Geräte mit gutem Design + Inmotion und Kingsong beide 50 km/h Geräte mit gutem Design veröffentlichten. Und beide Geräte änderten den Markt nachhaltig.

@@ -1037,7 +1066,7 @@ function overview() {

Inmotion und Kingsong haben beide relativ zeitnah die ersten Geräte - mit Federung heraus gebracht. Kingsong entwarf das heute + mit Federung herausgebracht. Kingsong entwarf das heute beliebte Schwingarm-Design, Inmotion entwickelte eine Luftkolben basierte Pedal Federung. Begode hat später beide Varianten kopiert, natürlich in erheblich schlechterer Form, und blieb letztlich beim @@ -1049,10 +1078,10 @@ function overview() { Sherman. Allein dieses Gerät und die{" "} Videos darüber brachten eine ganze Welle an neuen Einradfahren auf den Markt, einfach weil - es das erste gut gebaute und gleichzeitig super schnelle Gerät war. + es das erste gut gebaute und gleichzeitig superschnelle Gerät war. Endlich war man nicht mehr auf die mindere Qualität von Begode - angewiesen, sondern konnte stabil auf 70kmh cruisen und - musste sich keine sorgen machen, das bei einem Crash die Batterien + angewiesen, sondern konnte stabil auf 70 km/h cruisen und + musste sich keine Sorgen machen, das bei einem Crash die Batterien aus dem Gehäuse flogen.

@@ -1062,21 +1091,21 @@ function overview() { Federung. Inmotion hat das V13 angekündigt und Kingsong hat mit dem S22 einen Verkaufsschlager unter die Leute gebracht. Veteran hat mit dem Sherman S nun ebenfalls ein Suspension Einrad vorgestellt, - welches vorraussichtlich neue Standards in Robustheit und Qualität + welches voraussichtlich neue Standards in Robustheit und Qualität setzen wird.

Wie an der bisherigen Geschichte unschwer zu erkennen ist,{" "} entwickeln sich die Firmen und Einräder immer rasanter - . Es brauchte fast 6 Jahre nach dem ersten Einrad bis überhaubt - ernst zu nehmende Geräte auf den Markt kamen. Dann nur noch 4 jahre - um von wackeligen 35kmh auf stabile 70kmh und 100km Reichweite zu - kommen. Und in den letzten 2 Jahren gab es so viele Neuerungen; - Metall Konstruktionen, Federungen, Smart BMS's, Bildschirme, Spiked + . Es brauchte fast 6 Jahre nach dem ersten Einrad bis überhaupt + ernst zu nehmende Geräte auf den Markt kamen. Dann nur noch 4 Jahre + um von wackeligen 35 km/h auf stabile 70 km/h und 100 km Reichweite + zu kommen. Und in den letzten 2 Jahren gab es so viele Neuerungen; + Metall Konstruktionen, Federungen, Smart BMSs, Bildschirme, Spiked Pedals als Standard, brauchbare Pads als - Standard, Wasserfestigkeit, 100kmh top Speed, 240km reichweite, fast - 5000wh Akkus... + Standard, Wasserfestigkeit, 100 km/h top Speed, 240 km Reichweite, + fast 5.000 Wh Akkus...

diff --git a/src/routes/en/KSS22.tsx b/src/routes/en/KSS22.tsx index 93f2f5f..96130ee 100644 --- a/src/routes/en/KSS22.tsx +++ b/src/routes/en/KSS22.tsx @@ -18,22 +18,22 @@ function KSS22() {

Kingsong S22

- The Kingsong S22, formerly S20, is a clearly off-road and trail - oriented unicycle. Among other things, it has 130mm suspension - travel and a robust metal construction, which makes it ideal for - big jumps and high drops. + The Kingsong S22, formerly S20, is a clearly off-road and + trail-oriented unicycle. Among other things, it has 130 mm + suspension travel and a robust metal construction, which makes it + ideal for big jumps and high drops.

It is the successor to the smaller S18, but with double the - battery and 50% more motor power, such as a top speed of 70 + battery and 50 % more motor power, such as a top speed of 70 instead of 50 km/h. The freespin is up to 114 km/h, so ideal for longer jumps where the tire is spinning up in the air.

It also comes with a seat, pretty good jump- and power pads and - spiked pedals. Plus a sturdy, albeit oddly placed and somewhat + spiked pedals. Plus, a sturdy, albeit oddly placed and somewhat short trolley handle, as well as a sturdy kickstand and height-adjustable bright lights. It's waterproof, but not submersible, and best of all, it's super easy to work with because @@ -48,7 +48,7 @@ function KSS22() { the motherboard. Also, the slider design is very clumsy and gets harder and harder to move over time. Many S22 buyers had to wait a long time for replacement motors, such as upgrading the sliders - for €100 to €200. However, with the upgrades, it is currently the + for 100 to 200 €. However, with the upgrades, it is currently the best suspension unicycle on the market. (Until the Veteran Sherman S goes on sale.)

@@ -80,15 +80,15 @@ function KSS22() { Pedal Height - 231+-26mm + 231 ± 26 mm Weight - 35kg + 35 kg Suspension travel - 130mm + 130 mm Suspension Type @@ -100,19 +100,19 @@ function KSS22() { Free Spin - 114kmh + 114 km/h Top speed - 70kmh + 70 km/h - Range at 30kmh - 200km + Range at 30 km/h + 200 km Minimum range for heavy use - 70km + 70 km Max climb angle @@ -120,7 +120,7 @@ function KSS22() { Max. payload - 120kg + 120 kg Engine Type @@ -128,23 +128,23 @@ function KSS22() { Engine Power - 3300W + 3,300 W Peak Power - 7500W + 7,500 W Battery Size - 2220wh + 2,220 Wh Voltage - 126V + 126 V Max amps - 100A + 100 A BMS @@ -155,7 +155,7 @@ function KSS22() { LG 18600 - IPRating + IP-Rating nope @@ -164,11 +164,11 @@ function KSS22() { Lights - 8x5W adjustable headlights + 8 x 5 W adjustable headlights Default tires - Nobby + Knobby Anti spin button? @@ -196,15 +196,15 @@ function KSS22() { Default load time: - 3.3h + 3.3 h Max Amps: - 10A + 10 A Fastest load time: - 100min + 100 minutes Load ports: diff --git a/src/routes/en/index.tsx b/src/routes/en/index.tsx index 4e1f5c3..c7eafe4 100644 --- a/src/routes/en/index.tsx +++ b/src/routes/en/index.tsx @@ -29,8 +29,8 @@ function Introduction() {

- From 0 auf 50kmh in 3s, 100kmh top speed and 230km range make these - devices the ultimate sport. + From 0 auf 50 km/h in 3 s, 100 km/h top speed and 230 km range make + these devices the ultimate sport.

diff --git a/src/routes/en/manufacturers.tsx b/src/routes/en/manufacturers.tsx index 9d213b1..8f667fc 100644 --- a/src/routes/en/manufacturers.tsx +++ b/src/routes/en/manufacturers.tsx @@ -12,7 +12,7 @@ function Manufacturers() { */}
-

History and explonation of manufacturers

+

History and explanation of manufacturers

There are/were many manufacturers of electric unicycles, only the larger and more important ones are described here. In addition to @@ -53,10 +53,10 @@ function Manufacturers() { professional looking first Suspension EUC V11. Inmotion generally stands for quality, design and safety thanks to good{" "} Tiltback and high safety margin. But all - this in exchange for performance. Until recently, inmotion was + this is in exchange for performance. Until recently, inmotion was synonymous with weak and little range. That changed when the V12 came out and soon the V13 will come out. Now we are hoping for a - safe and well-designed 90+kmh with a high safety margin, and should + safe and well-designed 90+ km/h with a high safety margin and should the V13 perform as hoped it will change the company's image.

@@ -92,15 +92,15 @@ function Manufacturers() { History chapter, they had the focus on performance right away. The design and the quality were terrible in the beginning and actually until recently. But they were the first - to be able to hit 40kmh, then 50, then 60, then 70, then 80 and now - 100kmh, they're the ones who pack 4800wh into one - device, no matter what it looks like or how heavy it is. Gotway has - actively pushed the boundaries of the sport and unicycles. Whenever - a new, faster device came out, it was said, oh who rides 40kmh on a - unicycle anyway. Today 40kmh is the medium speed and 70+ is - expected. It is also typical of Begode to let their own devices - quickly become obsolete with up to 7+ new devices a year. Kingsong - and Inmotion usually release 1 device per year. + to be able to hit 40 km/h, then 50, then 60, then 70, then 80 and + now 100 km/h, they're the ones who pack 4,800 Wh{" "} + into one device, no matter what it looks like or how heavy it is. + Gotway has actively pushed the boundaries of the sport and + unicycles. Whenever a new, faster device came out, it was said, oh + who rides 40 km/h on a unicycle anyway. Today 40 km/h is the medium + speed and 70+ is expected. It is also typical of Begode to let their + own devices quickly become obsolete with up to 7+ new devices a + year. Kingsong and Inmotion usually release 1 device per year.

@@ -111,17 +111,17 @@ function Manufacturers() { is also a lack of communication with the community and a lack of reaction to productions defects. Nevertheless, Begode was the first company to use spiked pedals as - standard, which was a request from the community and which are the + standard, which was a request from the community, and which are the best included default spiked pedals to date. All other companies followed suit with worse versions, which is what is normally expected of Begode. Begode were the first to - move from 84V to 100V, and more recently to 134V, which provides + move from 84 V to 100 V, and more recently to 134 V, which provides unprecedented power. Again, the other manufacturers are slowly catching up and still have weaker devices. The new generation of Begode has better, almost good design and in some aspects also better suspension than the competition, nevertheless the (completely exposed) battery mounts break off easily and you have to buy DIY - solutions to continue riding (for an almost 5000€ Device). + solutions to continue riding (for an almost 5,000 € Device).

@@ -166,8 +166,8 @@ function Manufacturers() { and offers them cheaper than Begode does. Extreme Bull devices are rarely seen riding around, and many resellers don't even offer them. But, as of recently there are rumors about a Sherman S copy called - Commander pro. should the rumors be true, and should the device - deliver whats promised, Extreme Bull might be on the rise. + Commander pro. Should the rumors be true, and should the device + deliver what's promised, Extreme Bull might be on the rise.

diff --git a/src/routes/en/overview.tsx b/src/routes/en/overview.tsx index a3372c6..227066f 100644 --- a/src/routes/en/overview.tsx +++ b/src/routes/en/overview.tsx @@ -27,14 +27,14 @@ function Overview() {

Second, you may not know every word written here, which is why there - is a glossary and you can click on certian + is a glossary and you can click on certain words to find a definition.

Third, this side is very long and takes a deep dive into a lot of topics. Reading everything will take around 30 minutes.{" "} - Therefore, this side is devided into sections, + Therefore, this side is divided into sections, callable via the navigation bar at the side.

@@ -56,11 +56,11 @@ function Overview() {

EUC stands for ElectricUniCycle. In simplest - terms its a battery powered motor surrounded by a motorcycle tire, - kept upright with gyroskopes. The principle is similar to a segway, + terms it's a battery powered motor surrounded by a motorcycle tire, + kept upright with gyroscopes. The principle is similar to a segway, but more on that in chapter{" "} technical functionality. You stand on two - sidemounted pedals, facing forward with the wheel inbetween your + side mounted pedals, facing forward with the wheel in between your legs. To accelerate you lean forward, to break you lean back. Steering is similar to a normal unicycle or bike.

@@ -92,21 +92,21 @@ function Overview() {

- The riding experience is absolutly astonishing and not - comparable with anything else. It becomes a part of your self, an - extension of your legs, and it feels absolutly natural to ride. At + The riding experience is absolutely astonishing and not + comparable with anything else. It becomes a part of yourself, an + extension of your legs, and it feels absolutely natural to ride. At some point, once you've ridden long enough, handlebars just feel - weird and out of place, unessecary and uncomfortable. Just think - about inline-skating. You forget that they are there, likewise you + weird and out of place, unnecessary and uncomfortable. Just think + about inline skating. You forget that they are there, likewise you forget that you are riding on an EUC, because they become a part of you.

- Contradictionary to what many people first think when they see an - EUC, you dont need to constantly balance and be super focused on - normal ground. It happends automatically, you just lean where you - want to go and the rest follows. + Contrary to what many people first think when they see an EUC, you + don't need to constantly balance and be super focused on normal + ground. It happens automatically, you just lean where you want to + go, and the rest follows.

@@ -125,25 +125,26 @@ function Overview() { you're on the road or in the steepest forest. Electric unicycles can climb steep slopes of up to 50° where no scooter or e-bike can keep up (you can't even walk up there on foot). Depending on the device - and skill, 10m wide jumps on MTB trails are doable, as are 2m high + and skill, 10 m wide jumps on MTB trails are doable, as are 2 m high drops on flat ground.

- A range of up to 230 km and a charging time of just 3 hours - are unrivaled in the PEV (Personal Electric Vehicle) segment, where - even some cheap electric cars are worse. They achieve this through - minimal energy consumption and a large battery size, combined with - very efficient motors and only one tire resistance instead of 2 or - 4. And all this in the size of a suitcase or backpack. + A range of up to 230 km (about 143 mi) and a charging time of + just 3 hours are unrivaled in the PEV (Personal Electric Vehicle) + segment, where even some cheap electric cars are worse. They achieve + this through minimal energy consumption and a large battery size, + combined with very efficient motors and only one tire resistance + instead of 2 or 4. And all this is in the size of a suitcase or + backpack.

Another reason is also due to the form factor: it is super easy to{" "} travel with. Every current unicycle has a{" "} trolley handle, a pull-out handle similar to - a suitcase. Since the device is selfbalancing, it's super easy to - have it ride it self alongside you without any hassle. Whether on + a suitcase. Since the device is self-balancing, it's super easy to + have it ride it self-alongside you without any hassle. Whether on the train or on the bus, where you can get through yourself, the unicycle can also get through, as the pedals can be folded in to make it even narrower. It doesn't matter how much the device weighs, @@ -159,7 +160,7 @@ function Overview() { larger quantities. Now, if you want to take a trip to a nice place to ride a unicycle, you can just put them in the trunk, or even between your feet. That would be impossible with e-bikes or - scooters. You can also be picked up from anywhere, or be dropped off + scooters. You can also be picked up from anywhere or be dropped off anywhere and come back yourself. This is a blessing, especially for students or people who don't have or want a car.

@@ -188,13 +189,13 @@ function Overview() {

The battery provides the power, which can consist - of up to 200 individual battery cells and runs on - 84V/100V/126V/134V, depending on the device. These high voltages are - achieved by connecting the batteries in series, while the number of - parallels determines the maximum amperes. A device can have a 34s4p + of up to 200 individual battery cells and runs on 84 V/100 V/126 + V/134 V, depending on the device. These high voltages are achieved + by connecting the batteries in series, while the number of parallels + determines the maximum amperes. A device can have a 34s4p configuration, meaning 34 cells connected in series arranged in 4 - parallel packs, together then 34*4 = 136 cells. A cell runs on max - 4.2V and can give 10 to 30 amps depending on the model. So far, + parallel packs, together then 34 * 4 = 136 cells. A cell runs on max + 4.2 V and can give 10 to 30 amps depending on the model. So far, mostly high-capacity cells from LG have been used, but recently some high-discharge Samsung 40T cells have also been considered and implemented, which can deliver significantly more power long term @@ -205,11 +206,11 @@ function Overview() { Not enough parallels in a battery pack result in an unreliable power supply for the motor, as high power demands can lead to a voltage drop (voltage sag). This means that for the - duratiob of high demand the battery cannot provide full power, which + duration of high demand the battery cannot provide full power, which is very dangerous with a self-balancing device. Because of this, most devices have 4 or more parallels. In addition, most devices have 2 separate battery systems, so the driver can still stop safely - incase one fails. The high voltage is necessary to enable the high + in case one fails. The high voltage is necessary to enable the high speeds. The higher the voltage the motor runs at, the fewer amperes the motor needs to achieve the same power output. High amps require a more robust motherboard, thicker cables, and generate more heat. @@ -220,7 +221,7 @@ function Overview() { BMS {" "} - (Battery Management System), which ,dependant on the variant and + (Battery Management System), which, dependent on the variant and quality, ensures the safety of the cells. If battery cells get overloaded, discharged or charged too much, they can in the best case lose capacity and in the worst case burst into flames. A good{" "} @@ -237,7 +238,7 @@ function Overview() {

The motherboard consists of, among other things, the power - input from the battery and charging socket, the three phasewires + input from the battery and charging socket, the three phase wires that connect the motor,{" "} MOSFETs @@ -249,7 +250,7 @@ function Overview() { 6 and 42 of them depending on the device, to the 3 phases that the motor needs to run. Capacitors (between 4 and 18) deliver peak power, which would be too fast for the battery. - So far the usual buildup for a motherboard. + So far, the usual buildup for a motherboard.

@@ -258,7 +259,7 @@ function Overview() { the braking energy goes back into the battery{" "} and, in contrast to an electric car, to the full extent. The recuperation ability of a motherboard is decisive for the braking - performance of an unicycle. It must therefore be possible to take + performance of a unicycle. It must therefore be possible to take back just as much current as can be put out, if not more.

@@ -278,8 +279,9 @@ function Overview() {

The motor of a unicycle is a 3-phase hub motor, - i.e. a motor whose outer part is also the tire - . The exact functionality and explonation you can find{" "} + i.e., a motor whose outer part is also the{" "} + tire. The exact functionality and explanation + you can find{" "} here @@ -293,25 +295,27 @@ function Overview() {

High Speed motors run faster and more efficiently at speed - (up to 90kmh at 100v), but have very high energy consumption and - less power at low speeds. The coils and magnets are larger, - therefore you can hear the motors steps grumbling at slow speed. + (up to 90 km/h or 56 mph at 100 V) but have very high energy + consumption and less power at low speeds. The coils and magnets are + larger; therefore, you can hear the motors steps grumbling at slow + speed.

- High Torque motors have very high torque (130Nm-300Nm), are - very efficient at low speed and feel considerably smoother. On the - other hand, they usually do not reach higher speeds then around - 65kmh at 100v, and lose performance with increasing speed. + High Torque motors have very high torque (130 Nm - 300 Nm), + are very efficient at low speed and feel considerably smoother. On + the other hand, they usually do not reach higher speeds than around + 65 km/h (or 40 mph) at 100 V and lose performance with increasing + speed.

- Since the introduction of 126v and 134v systems this is a bit - more unclear, so that now a HT motor at 134v can also reach 92kmh - and still have enough torque to drive up almost 50° steep walls. We - will soon see what a HS motor at 134v can achieve. Most of the time - the battery and the motherboard are the limiting factor, the motors - could do more in most cases. Thats why{" "} + Since the introduction of 126 V and 134 V systems this is a + bit more unclear, so that now a HT motor at 134 V can also reach 92 + km/h and still have enough torque to drive up almost 50° steep + walls. We will soon see what a HS motor at 134 V can achieve. Most + of the time the battery and the motherboard are the limiting factor, + the motors could do more in most cases. Thats why{" "} Gotway/Begode has been using the same 2 motors for years now, only increasing battery performance and operating voltage. @@ -319,8 +323,8 @@ function Overview() {

The interaction of all these components results in an extremely - powerful, small and fast device, which accelerates from 0 to 50kmh - in 3 seconds and can reach up to 90kmh, climbs 50° steep walls and + powerful, small and fast device, which accelerates from 0 to 50 km/h + in 3 seconds and can reach up to 90 km/h, climbs 50° steep walls and still fits under the table.

@@ -329,7 +333,7 @@ function Overview() { */}
-

Glossary and specification explonation

+

Glossary and specification explanation

Tilt-back: The device's pedals tilt backwards @@ -347,8 +351,8 @@ function Overview() {

Pedal-angle: Angle in which the pedals are mounted to the - device, seen from the frontview. A steeper angle provides more - grip when cornering, but can also become uncomfortable for longer + device, seen from the front view. A steeper angle provides more + grip when cornering but can also become uncomfortable for longer rides.

@@ -356,7 +360,7 @@ function Overview() { Spiked-pedals: Spikes on the pedals that give shoes more grip. Similar to mountain bike pedals, there are usually screw-in pointed metal pins that grip into the shoe to - prevent accidental slipping. Is used today instead of sandpaper, + prevent accidental slipping. It's used today instead of sandpaper, as it offers an excellent grip even in wet and muddy conditions.{" "} Example

@@ -369,7 +373,7 @@ function Overview() { mounted on the side of the device, usually printed from TPU and PLA and fastened with large, strong Velcro. They are necessary for better control and handling, especially for heavy and fast - unicycles. They are divided into 2 types, many are combined + unicycles. They are divided into 2 types; many are combined together in one set.

@@ -483,7 +512,7 @@ function Overview() {

Safety

The second most common question is usually whether you don't just - fall off and whether it's safe at all. The short answer: yes it is. + fall off and whether it's safe at all. The short answer: yes, it is. While there are risks, as with any mode of transportation, they are much smaller and less important than one might initially assume. Nevertheless, a few safety-related aspects have arisen over the @@ -505,19 +534,19 @@ function Overview() {

Any EUC YouTuber and experienced rider will tell you that protective gear is essential. Depending on the speed, protective equipment - definitely includes hand and kneeguards like the famous{" "} + definitely includes hand and knee guards like the famous{" "} Leatt dual axis knee guards - . At below 30kmh, i.e. very small devices, you can also ride - without equipment if necessary. It's not something people like to - see, but if you're a bit sporty, you can just outrun every crash. - Something that is not possible with bicycles. + . At speeds below 30 km/h, i.e., very small devices, you can + also ride without equipment if necessary. It's not something people + like to see, but if you're a bit sporty, you can just outrun every + crash. Something that is not possible with bicycles.

- At higher speeds (above 30kmh) a helmet should be worn, - preferably a full-face helmet. An MTB helmet is sufficient for + At higher speeds (above 30 km/h) a helmet should be worn, + preferably a full face helmet. An MTB helmet is sufficient for speeds up to 60 km/h, or one from the motocross sector. Elbow and shoulder protection should also be considered. The{" "} LazyRolling jackets are @@ -531,23 +560,23 @@ function Overview() { Predator DH6-X {" "} are very popular because of the high field of view, small weight and - stylish look. At speeds of 80 to 100kmh you should think + stylish look. At speeds of 80 to 100 km/h you should think about motorcycle gear as the items mentioned above are not built for these speeds.

- Generally 2 things apply: + Generally, 2 things apply:
The best gear is the one you wear. This means that no matter how good your gear is, it only works if you actually wear it. It has to - be comfortable and you have to feel good in it.
+ be comfortable, and you have to feel good in it.
And: Dress for the slide, not the ride. This states that you should always dress appropriately for the worst-case scenario. For example, - on an Inmotion V8 with a top speed of 28kmh, you should not wear + on an Inmotion V8 with a top speed of 28 km/h, you should not wear full motorcycle gear as it will limit your vision and would be far too much for the situation. But you also don't wear a bike helmet on - a Master Pro with 100kmh. + a Master Pro with 100 km/h.

@@ -558,24 +587,24 @@ function Overview() { */}
-

Cut-off's

+

Cut-offs

- Cut-off's are the largest source of accidents the rider is mostly - not responsible for. A cut-off or cut-out means that the device - switches off in the middle of the ride and the driver jumps off in - the best case, and in the worst case slams directly into the - asphalt. There are many reasons for this, here are a few examples: + Cut-offs are the largest source of accidents the rider is mostly not + responsible for. A cut-off or cut-out means that the device switches + off in the middle of the ride and the driver jumps off in the best + case, and in the worst-case slams directly into the asphalt. There + are many reasons for this, here are a few examples:

When overloaded, older or poorly built devices simply shut - off, either because they burned out or because the electronic is - protecting itselve from burning out. Overloading happens when you + off, either because they burned out or because the electronics are + protecting themselves from burning out. Overloading happens when you climb steep paths, when you hit a big hump in the road at high speed, or when you accelerate again close to the top speed. Of course, this behavior has not gone unnoticed, which is why @@ -603,7 +632,7 @@ function Overview() {

Another reason, which mostly affects the newest devices (usually - devices from the first batch), are{" "} + devices from the first batch), is the presence of{" "} software bugs or faulty hardware. This reason for cut-outs is the scariest because it can just happen. Regardless of the speed and workload. A well-known example here was the Inmotion V12 cut-outs, @@ -614,15 +643,16 @@ function Overview() {

The final example here is a low battery. When the battery is - low, the device no longer runs at the full 100.8V, but rather around - 80V. If a lot of power is now required, there will be a voltage drop - as described in the Battery chapter. If the - voltage falls below the minimum, the electronics switch off. Modern - devices limit the top speed when the battery level drops, but in - particular some Gotway devices dont do this. - This causes riders to demand high performance despite a low battery - level, and thus not only damage their battery in the long term, but - also damage themselves in the short term as a result of a cut-off. + low, the device no longer runs at the full 100.8 V, but rather + around 80 V. If a lot of power is now required, there will be a + voltage drop as described in the Battery{" "} + chapter. If the voltage falls below the minimum, the electronics + switch off. Modern devices limit the top speed when the battery + level drops, but in particular some Gotway{" "} + devices don't do this. This causes riders to demand high performance + despite a low battery level, and thus not only damage their battery + in the long term, but also damage themselves in the short term as a + result of a cut-off.

@@ -661,7 +691,7 @@ function Overview() {

- Deep discharge, i.e. discharging below the recommended cell + Deep discharge, i.e., discharging below the recommended cell voltage, damages the battery and increases the risk. Begode in particular has little protection, and usually allows a lot of power to be drawn when the battery level is low, by letting @@ -674,7 +704,7 @@ function Overview() {

- Devices with a 4P configuration, i.e. only 4{" "} + Devices with a 4P configuration, i.e., only 4{" "} parallel Battery cell rows are also more often affected by battery fires. As mentioned in the{" "} Battery part, this is because the cells are @@ -683,7 +713,7 @@ function Overview() {

- Physical damage, i.e. shock or penetration of the cells, can + Physical damage, i.e., shock or penetration of the cells, can also lead to a short circuit and, in the worst case, to a fire. This is rather rare, but also more common with Begode, since the batteries are packed exclusively in shrinkwrap and can then move @@ -713,7 +743,7 @@ function Overview() {

Battery safety: A BMS is responsible for - this. A Battery Management Ssystem has the task + this. A Battery Management System has the task
-to protect the battery from excessive currents,
@@ -737,9 +767,9 @@ function Overview() { So far (2022) only the Kingsong S22 has a smart{" "} BMS which allows you to see and control the voltage of each cell in the app. Non-smart BMS{" "} - have so-called passive balance, i.e. passive adjustment of the + have so-called passive balance, i.e., passive adjustment of the voltages of the cells. To do this, the device must be charged - regularly to 100% and then left plugged in for a longer period of + regularly to 100 % and then left plugged in for a longer period of time.

@@ -748,7 +778,7 @@ function Overview() { */}
-

Fahrweise

+

Ride style

@@ -1023,21 +1054,21 @@ function Overview() { Ninebot bought Segway, and came out with the Ninebot One in 2015. A - 250Wh device with stylish LEDs and a white design. Then one device + 250 Wh device with stylish LEDs and a white design. Then one device after the other came out. Gotway produces bigger and faster devices, Inmotion, Kingsong and Ninebot offered more and more features and tried to keep up with Gotway in terms of performance. In 2019{" "} we saw the release of the initially unpopular, later iconic Ninebot - Z10. 45kmh, 1100wh and an absolutely unique design still separates - it from all other devices today. But it had many problems, and - unfortunately it was the last EUC that Ninebot produced. At that - point, Gotway was already at 50kmh+ with the Monster and + Z10. 45 km/h, 1,100 Wh and an absolutely unique design still + separates it from all other devices today. But it had many problems, + and unfortunately it was the last EUC that Ninebot produced. At that + point, Gotway was already at 50+ km/h with the Monster and Nicola, and the batteries were twice as big. Gotway, now called Begode, has built itself an image of high performance and speed. Many accepted the poor build quality and rare{" "} battery fires because there were simply no alternative. This was slowly changing in 2020, when Inmotion - and Kingsong both released 50kmh devices with a good design. And + and Kingsong both released 50 km/h devices with a good design. And both devices are changing the market forever.

@@ -1061,7 +1092,7 @@ function Overview() { a whole wave of new unicyclers, just plain because it was the first well built and at the same time super fast device. Finally, you were no longer dependent on the inferior quality of Begode, but could - cruise stably at 70kmh and didn't have to worry about the + cruise stably at 70 km/h and didn't have to worry about the batteries flying out of the housing in the event of a crash.

@@ -1078,12 +1109,12 @@ function Overview() { As you can easily see from the story so far, companies and unicycles are developing faster and faster. It took almost 6 years after the first unicycle until serious devices came onto the market. - Then only 4 years to go from a shaky 35kmh to a stable 70kmh and - 100km range. And in the last 2 years there have been so many + Then only 4 years to go from a shaky 35 km/h to a stable 70 km/h and + 100 km range. And in the last 2 years there have been so many innovations; Metal construction, suspension, smart BMS's, screens, spiked pedals as standard, usable pads as - standard, water resistance, 100kmh top speed, 240km range, almost - 5000wh batteries... + standard, water resistance, 100 km/h top speed, 240 km range, almost + 5,000 Wh batteries...

From a988a673b2abb70a4af466c36fb3deef0136f4fb Mon Sep 17 00:00:00 2001 From: aronmal Date: Fri, 3 Nov 2023 09:03:24 +0100 Subject: [PATCH 27/36] Update dependencies --- package.json | 16 +- pnpm-lock.yaml | 601 +++++++++++++++++++++++++------------------------ 2 files changed, 317 insertions(+), 300 deletions(-) diff --git a/package.json b/package.json index 77bcf08..43458be 100644 --- a/package.json +++ b/package.json @@ -9,27 +9,27 @@ }, "type": "module", "devDependencies": { - "@types/node": "^20.8.6", - "@typescript-eslint/parser": "^6.8.0", + "@types/node": "^20.8.10", + "@typescript-eslint/parser": "^6.9.1", "esbuild": "^0.19.5", - "eslint": "^8.51.0", + "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-solid": "^0.13.0", "postcss": "^8.4.31", "prettier": "^3.0.3", "prettier-plugin-organize-imports": "^3.2.3", - "solid-start-node": "^0.3.6", + "solid-start-node": "^0.3.9", "typescript": "^5.2.2", - "vite": "^4.4.11" + "vite": "^4.5.0" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-brands-svg-icons": "^6.4.2", "@fortawesome/pro-regular-svg-icons": "^6.4.2", - "@solidjs/meta": "^0.28.6", + "@solidjs/meta": "^0.29.1", "@solidjs/router": "^0.8.3", - "solid-js": "^1.8.1", - "solid-start": "^0.3.6" + "solid-js": "^1.8.5", + "solid-start": "^0.3.9" }, "engines": { "node": ">=18" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c147d5..e5b29b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,37 +15,37 @@ dependencies: specifier: ^6.4.2 version: 6.4.2 '@solidjs/meta': - specifier: ^0.28.6 - version: 0.28.6(solid-js@1.8.1) + specifier: ^0.29.1 + version: 0.29.1(solid-js@1.8.5) '@solidjs/router': specifier: ^0.8.3 - version: 0.8.3(solid-js@1.8.1) + version: 0.8.3(solid-js@1.8.5) solid-js: - specifier: ^1.8.1 - version: 1.8.1 + specifier: ^1.8.5 + version: 1.8.5 solid-start: - specifier: ^0.3.6 - version: 0.3.6(@solidjs/meta@0.28.6)(@solidjs/router@0.8.3)(solid-js@1.8.1)(solid-start-node@0.3.6)(vite@4.4.11) + specifier: ^0.3.9 + version: 0.3.9(@solidjs/meta@0.29.1)(@solidjs/router@0.8.3)(solid-js@1.8.5)(solid-start-node@0.3.9)(vite@4.5.0) devDependencies: '@types/node': - specifier: ^20.8.6 - version: 20.8.6 + specifier: ^20.8.10 + version: 20.8.10 '@typescript-eslint/parser': - specifier: ^6.8.0 - version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) + specifier: ^6.9.1 + version: 6.9.1(eslint@8.52.0)(typescript@5.2.2) esbuild: specifier: ^0.19.5 version: 0.19.5 eslint: - specifier: ^8.51.0 - version: 8.51.0 + specifier: ^8.52.0 + version: 8.52.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.0.0(eslint@8.51.0) + version: 9.0.0(eslint@8.52.0) eslint-plugin-solid: specifier: ^0.13.0 - version: 0.13.0(eslint@8.51.0)(typescript@5.2.2) + version: 0.13.0(eslint@8.52.0)(typescript@5.2.2) postcss: specifier: ^8.4.31 version: 8.4.31 @@ -56,14 +56,14 @@ devDependencies: specifier: ^3.2.3 version: 3.2.3(prettier@3.0.3)(typescript@5.2.2) solid-start-node: - specifier: ^0.3.6 - version: 0.3.6(solid-start@0.3.6)(vite@4.4.11) + specifier: ^0.3.9 + version: 0.3.9(solid-start@0.3.9)(vite@4.5.0) typescript: specifier: ^5.2.2 version: 5.2.2 vite: - specifier: ^4.4.11 - version: 4.4.11(@types/node@20.8.6) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.10) packages: @@ -77,7 +77,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 /@antfu/utils@0.7.6: resolution: {integrity: sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w==} @@ -121,7 +121,7 @@ packages: dependencies: '@babel/types': 7.23.0 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 /@babel/helper-annotate-as-pure@7.22.5: @@ -1107,9 +1107,9 @@ packages: '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) '@babel/types': 7.23.0 babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) - babel-plugin-polyfill-corejs3: 0.8.5(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.2) babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) - core-js-compat: 3.33.0 + core-js-compat: 3.33.2 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -1729,18 +1729,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.52.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.1: - resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -1761,8 +1761,8 @@ packages: - supports-color dev: true - /@eslint/js@8.51.0: - resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + /@eslint/js@8.52.0: + resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1808,11 +1808,11 @@ packages: dependencies: '@hapi/hoek': 9.3.0 - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -1824,8 +1824,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@jridgewell/gen-mapping@0.3.3: @@ -1834,7 +1834,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -1848,13 +1848,13 @@ packages: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.19: - resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 @@ -1935,7 +1935,7 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.4 estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 3.29.4 @@ -1951,77 +1951,77 @@ packages: /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - /@solidjs/meta@0.28.6(solid-js@1.8.1): - resolution: {integrity: sha512-mplUfmp7tjGgDTiVbEAqkWDLpr0ZNyR1+OOETNyJt759MqPzh979X3oJUk8SZisGII0BNycmHDIGc0Shqx7bIg==} + /@solidjs/meta@0.29.1(solid-js@1.8.5): + resolution: {integrity: sha512-qtrBYCnRRuzyvBg/u/SRO/2fM5r6DT1YKf+2W1RZhveMoeXHbZpWIrXjgpLFRHJLn6cqAGqrIzu42qS2o+1hKQ==} peerDependencies: - solid-js: '>=1.4.0' + solid-js: '>=1.8.4' dependencies: - solid-js: 1.8.1 + solid-js: 1.8.5 - /@solidjs/router@0.8.3(solid-js@1.8.1): + /@solidjs/router@0.8.3(solid-js@1.8.5): resolution: {integrity: sha512-oJuqQo10rVTiQYhe1qXIG1NyZIZ2YOwHnlLc8Xx+g/iJhFCJo1saLOIrD/Dkh2fpIaIny5ZMkz1cYYqoTYGJbg==} peerDependencies: solid-js: ^1.5.3 dependencies: - solid-js: 1.8.1 + solid-js: 1.8.5 - /@types/babel__core@7.20.2: - resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + /@types/babel__core@7.20.3: + resolution: {integrity: sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==} dependencies: '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - '@types/babel__generator': 7.6.5 - '@types/babel__template': 7.4.2 - '@types/babel__traverse': 7.20.2 + '@types/babel__generator': 7.6.6 + '@types/babel__template': 7.4.3 + '@types/babel__traverse': 7.20.3 - /@types/babel__generator@7.6.5: - resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} + /@types/babel__generator@7.6.6: + resolution: {integrity: sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==} dependencies: '@babel/types': 7.23.0 - /@types/babel__template@7.4.2: - resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} + /@types/babel__template@7.4.3: + resolution: {integrity: sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==} dependencies: '@babel/parser': 7.23.0 '@babel/types': 7.23.0 - /@types/babel__traverse@7.20.2: - resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} + /@types/babel__traverse@7.20.3: + resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==} dependencies: '@babel/types': 7.23.0 - /@types/cookie@0.5.2: - resolution: {integrity: sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==} + /@types/cookie@0.5.3: + resolution: {integrity: sha512-SLg07AS9z1Ab2LU+QxzU8RCmzsja80ywjf/t5oqw+4NSH20gIGlhLOrBDm1L3PBWzPa4+wkgFQVZAjE6Ioj2ug==} - /@types/debug@4.1.9: - resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==} + /@types/debug@4.1.10: + resolution: {integrity: sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA==} dependencies: - '@types/ms': 0.7.32 + '@types/ms': 0.7.33 - /@types/estree@1.0.2: - resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + /@types/estree@1.0.4: + resolution: {integrity: sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==} - /@types/json-schema@7.0.13: - resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true - /@types/ms@0.7.32: - resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} + /@types/ms@0.7.33: + resolution: {integrity: sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==} - /@types/node@20.8.6: - resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + /@types/node@20.8.10: + resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} dependencies: - undici-types: 5.25.3 + undici-types: 5.26.5 /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - /@types/semver@7.5.3: - resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + /@typescript-eslint/parser@6.9.1(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2030,32 +2030,32 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/scope-manager': 6.9.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 - eslint: 8.51.0 + eslint: 8.52.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.8.0: - resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + /@typescript-eslint/scope-manager@6.9.1: + resolution: {integrity: sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/visitor-keys': 6.9.1 dev: true - /@typescript-eslint/types@6.8.0: - resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + /@typescript-eslint/types@6.9.1: + resolution: {integrity: sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): - resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + /@typescript-eslint/typescript-estree@6.9.1(typescript@5.2.2): + resolution: {integrity: sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2063,8 +2063,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/visitor-keys': 6.9.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -2075,33 +2075,37 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + /@typescript-eslint/utils@6.9.1(eslint@8.52.0)(typescript@5.2.2): + resolution: {integrity: sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@types/json-schema': 7.0.13 - '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - eslint: 8.51.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.9.1 + '@typescript-eslint/types': 6.9.1 + '@typescript-eslint/typescript-estree': 6.9.1(typescript@5.2.2) + eslint: 8.52.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.8.0: - resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + /@typescript-eslint/visitor-keys@6.9.1: + resolution: {integrity: sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/types': 6.9.1 eslint-visitor-keys: 3.4.3 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2109,16 +2113,16 @@ packages: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.2 dev: true - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true @@ -2161,7 +2165,7 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 is-array-buffer: 3.0.2 dev: true @@ -2169,10 +2173,10 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-string: 1.0.7 dev: true @@ -2185,10 +2189,10 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 dev: true /arraybuffer.prototype.slice@1.0.2: @@ -2196,10 +2200,10 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 dev: true @@ -2216,8 +2220,8 @@ packages: transitivePeerDependencies: - debug - /babel-plugin-jsx-dom-expressions@0.37.2(@babel/core@7.23.2): - resolution: {integrity: sha512-u3VKB+On86cYSLAbw9j0m0X8ZejL4MR7oG7TRlrMQ/y1mauR/ZpM2xkiOPZEUlzHLo1GYGlTdP9s5D3XuA6iSQ==} + /babel-plugin-jsx-dom-expressions@0.37.8(@babel/core@7.23.2): + resolution: {integrity: sha512-nVHH6g7541aaAQJAsyWHvjH7GCXZ+8tuF3Qu4y9W9aKwonRbcJL+yyMatDJLvjC54iIuGowiiZM6Rm3AVJczGg==} peerDependencies: '@babel/core': ^7.20.12 dependencies: @@ -2240,14 +2244,14 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.8.5(@babel/core@7.23.2): - resolution: {integrity: sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==} + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.2): + resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.2 '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) - core-js-compat: 3.33.0 + core-js-compat: 3.33.2 transitivePeerDependencies: - supports-color @@ -2261,13 +2265,13 @@ packages: transitivePeerDependencies: - supports-color - /babel-preset-solid@1.8.0(@babel/core@7.23.2): - resolution: {integrity: sha512-TCsC3kTNYRi+0/mHYFvC2VsSq++GZPFyHF3QTP7L37TXaVFD0HZQPyLQnf+waOGPHQuAhKXo0GEQziquSwBAVw==} + /babel-preset-solid@1.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-TfI09EOFHsbhVqoM+svop3zY4zOUIBlZsGU16Rgd4NsYVXw6lv2VEn7dmlpczMMQy0IeO3PFiXlMQZWutB+uAQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.2 - babel-plugin-jsx-dom-expressions: 0.37.2(@babel/core@7.23.2) + babel-plugin-jsx-dom-expressions: 0.37.8(@babel/core@7.23.2) /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2309,8 +2313,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001549 - electron-to-chromium: 1.4.556 + caniuse-lite: 1.0.30001559 + electron-to-chromium: 1.4.575 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) @@ -2331,11 +2335,12 @@ packages: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: function-bind: 1.1.2 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 dev: true /callsites@3.1.0: @@ -2343,8 +2348,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001549: - resolution: {integrity: sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==} + /caniuse-lite@1.0.30001559: + resolution: {integrity: sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2445,8 +2450,8 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /core-js-compat@3.33.0: - resolution: {integrity: sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==} + /core-js-compat@3.33.2: + resolution: {integrity: sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==} dependencies: browserslist: 4.22.1 @@ -2510,9 +2515,9 @@ packages: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 gopd: 1.0.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 dev: true /define-lazy-prop@2.0.0: @@ -2528,7 +2533,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 object-keys: 1.1.1 dev: true @@ -2557,8 +2562,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.556: - resolution: {integrity: sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ==} + /electron-to-chromium@1.4.575: + resolution: {integrity: sha512-kY2BGyvgAHiX899oF6xLXSIf99bAvvdPhDoJwG77nxCSyWYuRH6e9a9a3gpXBvCs6lj4dQZJkfnW2hdKWHEISg==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2570,26 +2575,26 @@ packages: /error-stack-parser-es@0.1.1: resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} - /es-abstract@1.22.2: - resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.4 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 + hasown: 2.0.0 + internal-slot: 1.0.6 is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 @@ -2598,7 +2603,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.13.0 + object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.1 @@ -2612,25 +2617,25 @@ packages: typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 dev: true /es-module-lexer@1.3.1: resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.4 + get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 + hasown: 2.0.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - has: 1.0.4 + hasown: 2.0.0 dev: true /es-to-primitive@1.2.1: @@ -2642,7 +2647,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild-plugin-solid@0.5.0(esbuild@0.17.19)(solid-js@1.8.1): + /esbuild-plugin-solid@0.5.0(esbuild@0.17.19)(solid-js@1.8.5): resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==} peerDependencies: esbuild: '>=0.12' @@ -2650,9 +2655,9 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) - babel-preset-solid: 1.8.0(@babel/core@7.23.2) + babel-preset-solid: 1.8.4(@babel/core@7.23.2) esbuild: 0.17.19 - solid-js: 1.8.1 + solid-js: 1.8.5 transitivePeerDependencies: - supports-color @@ -2760,23 +2765,23 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.51.0): + /eslint-config-prettier@9.0.0(eslint@8.52.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.52.0 dev: true - /eslint-plugin-solid@0.13.0(eslint@8.51.0)(typescript@5.2.2): + /eslint-plugin-solid@0.13.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-Sutd+DxEGu9+Z9ITtHKXRAClxVe1a6C1XQZSuN8iBsMy0IAVEc6Tca1UYgc7tD2ZrRRjZKB9mohBOaZl5NJLgg==} engines: {node: '>=12.0.0'} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) - eslint: 8.51.0 + '@typescript-eslint/utils': 6.9.1(eslint@8.52.0)(typescript@5.2.2) + eslint: 8.52.0 is-html: 2.0.0 jsx-ast-utils: 3.3.5 kebab-case: 1.0.2 @@ -2800,18 +2805,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.51.0: - resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + /eslint@8.52.0: + resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@eslint-community/regexpp': 4.9.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint/js': 8.52.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2850,8 +2856,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) eslint-visitor-keys: 3.4.3 dev: true @@ -3007,7 +3013,7 @@ packages: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3021,15 +3027,14 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.22.3 functions-have-names: 1.2.3 dev: true @@ -3045,13 +3050,13 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: function-bind: 1.1.2 - has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 + hasown: 2.0.0 dev: true /get-port@6.1.2: @@ -3066,8 +3071,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true /glob-parent@5.1.2: @@ -3137,7 +3142,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 dev: true /graceful-fs@4.2.11: @@ -3160,10 +3165,10 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.2 dev: true /has-proto@1.0.1: @@ -3183,9 +3188,11 @@ packages: has-symbols: 1.0.3 dev: true - /has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -3234,20 +3241,20 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: true - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.4 + get-intrinsic: 1.2.2 + hasown: 2.0.0 side-channel: 1.0.4 dev: true /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 dev: true @@ -3267,7 +3274,7 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -3282,10 +3289,10 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.4 + hasown: 2.0.0 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -3359,20 +3366,20 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.4 /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-stream@2.0.1: @@ -3401,17 +3408,17 @@ packages: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 + which-typed-array: 1.1.13 dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true - /is-what@4.1.15: - resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} /is-wsl@2.2.0: @@ -3475,7 +3482,7 @@ packages: /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 @@ -3550,7 +3557,7 @@ packages: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} dependencies: - is-what: 4.1.15 + is-what: 4.1.16 /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3648,8 +3655,8 @@ packages: dependencies: path-key: 4.0.0 - /object-inspect@1.13.0: - resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true /object-keys@1.1.1: @@ -3661,7 +3668,7 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -3671,9 +3678,9 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.22.3 dev: true /on-finished@2.3.0: @@ -3836,8 +3843,8 @@ packages: hasBin: true dev: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true @@ -3871,7 +3878,7 @@ packages: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 dev: true @@ -3910,7 +3917,7 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -3987,8 +3994,8 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -3999,8 +4006,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-regex: 1.1.4 dev: true @@ -4016,20 +4023,30 @@ packages: lru-cache: 6.0.0 dev: true - /seroval@0.10.4: - resolution: {integrity: sha512-TdaE9JkoATjKu+vjwllieX8zWyBTUVxbgWDnOsDJFfmKbM7vLSukuCXuD3pO3kkCtX4daywOW8ps2VCdPhS8/w==} + /seroval@0.12.3: + resolution: {integrity: sha512-5WDeMpv7rmEylsypRj1iwRVHE/QLsMLiZ+9savlNNQEVdgGia1iRMb7qyaAagY0wu/7+QTe6d2wldk/lgaLb6g==} engines: {node: '>=10'} /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.1 dev: true /shebang-command@2.0.0: @@ -4045,9 +4062,9 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.13.0 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 dev: true /signal-exit@3.0.7: @@ -4066,13 +4083,13 @@ packages: engines: {node: '>=8'} dev: true - /solid-js@1.8.1: - resolution: {integrity: sha512-HU4tB/vWY5/0P9GzbvePjK1aucNqUcF1XlAirZBjKkrkWG8XNIN9HSjscTC/nbl3A6JWjrW+OLcPEvWxsMhdng==} + /solid-js@1.8.5: + resolution: {integrity: sha512-xvtJvzJzWbsn35oKFhW9kNwaxG1Z/YLMsDp4tLVcYZTMPzvzQ8vEZuyDQ6nt7xDArVgZJ7TUFrJUwrui/oq53A==} dependencies: csstype: 3.1.2 - seroval: 0.10.4 + seroval: 0.12.3 - /solid-refresh@0.5.3(solid-js@1.8.1): + /solid-refresh@0.5.3(solid-js@1.8.5): resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} peerDependencies: solid-js: ^1.3 @@ -4080,10 +4097,10 @@ packages: '@babel/generator': 7.23.0 '@babel/helper-module-imports': 7.22.15 '@babel/types': 7.23.0 - solid-js: 1.8.1 + solid-js: 1.8.5 - /solid-start-node@0.3.6(solid-start@0.3.6)(vite@4.4.11): - resolution: {integrity: sha512-UqLXb4/EscJnC/k8cXpeo+kCNqYC2f/J+DIdhrH4KLx4i1OfrJqyVqUx1onQIjDbrZlI2QlU7ec/h7Xaj7K5rQ==} + /solid-start-node@0.3.9(solid-start@0.3.9)(vite@4.5.0): + resolution: {integrity: sha512-BWE4g2CqTzq3L2e4TX7kfFC++YiOUqbNFuReLW0gji091qb2sVKqaCBLInfsoLDNAdNdU2Fj659ZZn33b2JqUQ==} peerDependencies: solid-start: '*' vite: '*' @@ -4095,19 +4112,19 @@ packages: polka: 1.0.0-next.22 rollup: 3.29.4 sirv: 2.0.3 - solid-start: 0.3.6(@solidjs/meta@0.28.6)(@solidjs/router@0.8.3)(solid-js@1.8.1)(solid-start-node@0.3.6)(vite@4.4.11) - terser: 5.22.0 - vite: 4.4.11(@types/node@20.8.6) + solid-start: 0.3.9(@solidjs/meta@0.29.1)(@solidjs/router@0.8.3)(solid-js@1.8.5)(solid-start-node@0.3.9)(vite@4.5.0) + terser: 5.24.0 + vite: 4.5.0(@types/node@20.8.10) transitivePeerDependencies: - supports-color - /solid-start@0.3.6(@solidjs/meta@0.28.6)(@solidjs/router@0.8.3)(solid-js@1.8.1)(solid-start-node@0.3.6)(vite@4.4.11): - resolution: {integrity: sha512-lFf4DqExY3f5Hl/N7e1GXdow/mFYCp5EQoEja6jusr/CeoITZBRPaPEcn8jEoubPnRVGqLPkL2gJJuBZBio8mQ==} + /solid-start@0.3.9(@solidjs/meta@0.29.1)(@solidjs/router@0.8.3)(solid-js@1.8.5)(solid-start-node@0.3.9)(vite@4.5.0): + resolution: {integrity: sha512-hh3JaoUW6prfnwuAaB/rF4zkM/8Z+vGLO+8iUosiqfBmYWdkCPCGRsKrc1UhBK9H4Z3b6wirqFfP/5aeq0cLGw==} hasBin: true peerDependencies: - '@solidjs/meta': ^0.28.0 + '@solidjs/meta': ^0.29.1 '@solidjs/router': ^0.8.2 - solid-js: ^1.6.2 + solid-js: ^1.8.4 solid-start-aws: '*' solid-start-cloudflare-pages: '*' solid-start-cloudflare-workers: '*' @@ -4141,10 +4158,10 @@ packages: '@babel/preset-env': 7.23.2(@babel/core@7.23.2) '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) '@babel/template': 7.22.15 - '@solidjs/meta': 0.28.6(solid-js@1.8.1) - '@solidjs/router': 0.8.3(solid-js@1.8.1) - '@types/cookie': 0.5.2 - '@types/debug': 4.1.9 + '@solidjs/meta': 0.29.1(solid-js@1.8.5) + '@solidjs/router': 0.8.3(solid-js@1.8.5) + '@types/cookie': 0.5.3 + '@types/debug': 4.1.10 chokidar: 3.5.3 compression: 1.7.4 connect: 3.7.0 @@ -4153,7 +4170,7 @@ packages: dotenv: 16.3.1 es-module-lexer: 1.3.1 esbuild: 0.17.19 - esbuild-plugin-solid: 0.5.0(esbuild@0.17.19)(solid-js@1.8.1) + esbuild-plugin-solid: 0.5.0(esbuild@0.17.19)(solid-js@1.8.5) fast-glob: 3.3.1 get-port: 6.1.2 micromorph: 0.3.1 @@ -4165,13 +4182,13 @@ packages: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 - solid-js: 1.8.1 - solid-start-node: 0.3.6(solid-start@0.3.6)(vite@4.4.11) - terser: 5.22.0 - undici: 5.26.3 - vite: 4.4.11(@types/node@20.8.6) - vite-plugin-inspect: 0.7.40(rollup@3.29.4)(vite@4.4.11) - vite-plugin-solid: 2.7.1(solid-js@1.8.1)(vite@4.4.11) + solid-js: 1.8.5 + solid-start-node: 0.3.9(solid-start@0.3.9)(vite@4.5.0) + terser: 5.24.0 + undici: 5.27.0 + vite: 4.5.0(@types/node@20.8.10) + vite-plugin-inspect: 0.7.41(rollup@3.29.4)(vite@4.5.0) + vite-plugin-solid: 2.7.2(solid-js@1.8.5)(vite@4.5.0) wait-on: 6.0.1(debug@4.3.4) transitivePeerDependencies: - '@nuxt/kit' @@ -4211,25 +4228,25 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.22.3 dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.22.3 dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.22.3 dev: true /strip-ansi@6.0.1: @@ -4274,13 +4291,13 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /terser@5.22.0: - resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} + /terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.5 - acorn: 8.10.0 + acorn: 8.11.2 commander: 2.20.3 source-map-support: 0.5.21 @@ -4340,8 +4357,8 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-typed-array: 1.1.12 dev: true @@ -4349,7 +4366,7 @@ packages: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -4360,7 +4377,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -4369,7 +4386,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 dev: true @@ -4383,17 +4400,17 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 dev: true - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici@5.26.3: - resolution: {integrity: sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==} + /undici@5.27.0: + resolution: {integrity: sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg==} engines: {node: '>=14.0'} dependencies: '@fastify/busboy': 2.0.0 @@ -4417,8 +4434,8 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} /unpipe@1.0.0: @@ -4442,7 +4459,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /utils-merge@1.0.1: @@ -4456,12 +4473,12 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vite-plugin-inspect@0.7.40(rollup@3.29.4)(vite@4.4.11): - resolution: {integrity: sha512-tsfva6MCg0ch6ckReWHvJ/9xf/zjTuJvakONf2qcMBB/iu9JqiRixfxMa/yLGrlNaBe6fUZHOVhtN2Me3Kthow==} + /vite-plugin-inspect@0.7.41(rollup@3.29.4)(vite@4.5.0): + resolution: {integrity: sha512-gASdFRO4CHDQF8qAk9LZEJyzlIJM4bFvDn7hz0e2r1PS6uq+yukd8+jHctOAbvCceQoTS5iDAgd4/mWcGWYoMw==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' - vite: ^3.1.0 || ^4.0.0 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 peerDependenciesMeta: '@nuxt/kit': optional: true @@ -4474,31 +4491,31 @@ packages: open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.4.11(@types/node@20.8.6) + vite: 4.5.0(@types/node@20.8.10) transitivePeerDependencies: - rollup - supports-color - /vite-plugin-solid@2.7.1(solid-js@1.8.1)(vite@4.4.11): - resolution: {integrity: sha512-1rTuJdsDqCZiAWfiEkUeRRz4MaxWhqzgJ6PURN+bBSp4uACA/esgYN9Un++YE+xeXUOHlOwTF+VSdvieEcMz0w==} + /vite-plugin-solid@2.7.2(solid-js@1.8.5)(vite@4.5.0): + resolution: {integrity: sha512-GV2SMLAibOoXe76i02AsjAg7sbm/0lngBlERvJKVN67HOrJsHcWgkt0R6sfGLDJuFkv2aBe14Zm4vJcNME+7zw==} peerDependencies: solid-js: ^1.7.2 vite: ^3.0.0 || ^4.0.0 dependencies: '@babel/core': 7.23.2 '@babel/preset-typescript': 7.23.2(@babel/core@7.23.2) - '@types/babel__core': 7.20.2 - babel-preset-solid: 1.8.0(@babel/core@7.23.2) + '@types/babel__core': 7.20.3 + babel-preset-solid: 1.8.4(@babel/core@7.23.2) merge-anything: 5.1.7 - solid-js: 1.8.1 - solid-refresh: 0.5.3(solid-js@1.8.1) - vite: 4.4.11(@types/node@20.8.6) - vitefu: 0.2.5(vite@4.4.11) + solid-js: 1.8.5 + solid-refresh: 0.5.3(solid-js@1.8.5) + vite: 4.5.0(@types/node@20.8.10) + vitefu: 0.2.5(vite@4.5.0) transitivePeerDependencies: - supports-color - /vite@4.4.11(@types/node@20.8.6): - resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} + /vite@4.5.0(@types/node@20.8.10): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -4525,14 +4542,14 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.6 + '@types/node': 20.8.10 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 - /vitefu@0.2.5(vite@4.4.11): + /vitefu@0.2.5(vite@4.5.0): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -4540,7 +4557,7 @@ packages: vite: optional: true dependencies: - vite: 4.4.11(@types/node@20.8.6) + vite: 4.5.0(@types/node@20.8.10) /wait-on@6.0.1(debug@4.3.4): resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} @@ -4565,12 +4582,12 @@ packages: is-symbol: 1.0.4 dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + call-bind: 1.0.5 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 From 05a69bf274a1b756cecc9fc8b519a3442ab1c64b Mon Sep 17 00:00:00 2001 From: aronmal Date: Fri, 10 Nov 2023 08:36:42 +0100 Subject: [PATCH 28/36] Adding sass --- package.json | 1 + pnpm-lock.yaml | 30 ++- src/routes/de/KSS22.tsx | 4 +- src/routes/de/index.tsx | 4 +- src/routes/de/manufacturers.tsx | 4 +- src/routes/de/overview.tsx | 4 +- src/routes/en/KSS22.tsx | 4 +- src/routes/en/index.tsx | 4 +- src/routes/en/manufacturers.tsx | 6 +- src/routes/en/overview.tsx | 5 +- src/routes/soon.tsx | 4 +- .../devices.css => src/styles/devices.scss | 30 +-- .../overview.css => src/styles/overview.scss | 240 +++++++++--------- .../styles/start.css => src/styles/start.scss | 16 +- 14 files changed, 195 insertions(+), 161 deletions(-) rename public/styles/devices.css => src/styles/devices.scss (83%) rename public/styles/overview.css => src/styles/overview.scss (70%) rename public/styles/start.css => src/styles/start.scss (93%) diff --git a/package.json b/package.json index 43458be..4283dcc 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@fortawesome/pro-regular-svg-icons": "^6.4.2", "@solidjs/meta": "^0.29.1", "@solidjs/router": "^0.8.3", + "sass": "^1.69.5", "solid-js": "^1.8.5", "solid-start": "^0.3.9" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5b29b3..3ee9803 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ dependencies: '@solidjs/router': specifier: ^0.8.3 version: 0.8.3(solid-js@1.8.5) + sass: + specifier: ^1.69.5 + version: 1.69.5 solid-js: specifier: ^1.8.5 version: 1.8.5 @@ -63,7 +66,7 @@ devDependencies: version: 5.2.2 vite: specifier: ^4.5.0 - version: 4.5.0(@types/node@20.8.10) + version: 4.5.0(@types/node@20.8.10)(sass@1.69.5) packages: @@ -3215,6 +3218,9 @@ packages: engines: {node: '>= 4'} dev: true + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -4011,6 +4017,15 @@ packages: is-regex: 1.1.4 dev: true + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4114,7 +4129,7 @@ packages: sirv: 2.0.3 solid-start: 0.3.9(@solidjs/meta@0.29.1)(@solidjs/router@0.8.3)(solid-js@1.8.5)(solid-start-node@0.3.9)(vite@4.5.0) terser: 5.24.0 - vite: 4.5.0(@types/node@20.8.10) + vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5) transitivePeerDependencies: - supports-color @@ -4186,7 +4201,7 @@ packages: solid-start-node: 0.3.9(solid-start@0.3.9)(vite@4.5.0) terser: 5.24.0 undici: 5.27.0 - vite: 4.5.0(@types/node@20.8.10) + vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5) vite-plugin-inspect: 0.7.41(rollup@3.29.4)(vite@4.5.0) vite-plugin-solid: 2.7.2(solid-js@1.8.5)(vite@4.5.0) wait-on: 6.0.1(debug@4.3.4) @@ -4491,7 +4506,7 @@ packages: open: 9.1.0 picocolors: 1.0.0 sirv: 2.0.3 - vite: 4.5.0(@types/node@20.8.10) + vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5) transitivePeerDependencies: - rollup - supports-color @@ -4509,12 +4524,12 @@ packages: merge-anything: 5.1.7 solid-js: 1.8.5 solid-refresh: 0.5.3(solid-js@1.8.5) - vite: 4.5.0(@types/node@20.8.10) + vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5) vitefu: 0.2.5(vite@4.5.0) transitivePeerDependencies: - supports-color - /vite@4.5.0(@types/node@20.8.10): + /vite@4.5.0(@types/node@20.8.10)(sass@1.69.5): resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -4546,6 +4561,7 @@ packages: esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 + sass: 1.69.5 optionalDependencies: fsevents: 2.3.3 @@ -4557,7 +4573,7 @@ packages: vite: optional: true dependencies: - vite: 4.5.0(@types/node@20.8.10) + vite: 4.5.0(@types/node@20.8.10)(sass@1.69.5) /wait-on@6.0.1(debug@4.3.4): resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} diff --git a/src/routes/de/KSS22.tsx b/src/routes/de/KSS22.tsx index 97cb7ea..f427510 100644 --- a/src/routes/de/KSS22.tsx +++ b/src/routes/de/KSS22.tsx @@ -1,12 +1,12 @@ -import { Body, Link, Title, useNavigate } from "solid-start"; +import { Body, Title, useNavigate } from "solid-start"; import { lightMode } from "~/components/en/Navbar"; +import "~/styles/devices.scss"; function KSS22() { const navigate = useNavigate(); return ( KS S22 -
diff --git a/src/routes/de/index.tsx b/src/routes/de/index.tsx index e578075..e0c774c 100644 --- a/src/routes/de/index.tsx +++ b/src/routes/de/index.tsx @@ -1,14 +1,14 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; -import { A, Body, Link, Title } from "solid-start"; +import { A, Body, Title } from "solid-start"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; import { lightMode } from "~/components/de/Navbar"; +import "~/styles/start.scss"; function Introduction() { return ( Einführung -
diff --git a/src/routes/de/manufacturers.tsx b/src/routes/de/manufacturers.tsx index 31309e8..2c216d1 100644 --- a/src/routes/de/manufacturers.tsx +++ b/src/routes/de/manufacturers.tsx @@ -1,12 +1,12 @@ -import { Body, Link, Title } from "solid-start"; +import { Body, Title } from "solid-start"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/de/Navbar"; +import "~/styles/overview.scss"; function Manufacturers() { return ( Hersteller -
{/* diff --git a/src/routes/de/overview.tsx b/src/routes/de/overview.tsx index d4a1c9d..761412c 100644 --- a/src/routes/de/overview.tsx +++ b/src/routes/de/overview.tsx @@ -1,13 +1,13 @@ -import { Body, Link, Title } from "solid-start"; +import { Body, Title } from "solid-start"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/de/Navbar"; +import "~/styles/overview.scss"; function overview() { return ( Einführung EUCs -
diff --git a/src/routes/en/KSS22.tsx b/src/routes/en/KSS22.tsx index 96130ee..2369527 100644 --- a/src/routes/en/KSS22.tsx +++ b/src/routes/en/KSS22.tsx @@ -1,11 +1,11 @@ -import { Body, Link, Title } from "solid-start"; +import { Body, Title } from "solid-start"; import { lightMode } from "~/components/en/Navbar"; +import "~/styles/devices.scss"; function KSS22() { return ( KS S22 - {/* */}
diff --git a/src/routes/en/index.tsx b/src/routes/en/index.tsx index c7eafe4..362a060 100644 --- a/src/routes/en/index.tsx +++ b/src/routes/en/index.tsx @@ -1,14 +1,14 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; -import { A, Body, Link, Title } from "solid-start"; +import { A, Body, Title } from "solid-start"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; import { lightMode } from "~/components/en/Navbar"; +import "~/styles/start.scss"; function Introduction() { return ( Introduction -
diff --git a/src/routes/en/manufacturers.tsx b/src/routes/en/manufacturers.tsx index 8f667fc..5fe4dad 100644 --- a/src/routes/en/manufacturers.tsx +++ b/src/routes/en/manufacturers.tsx @@ -1,12 +1,14 @@ -import { Body, Link, Title } from "solid-start"; +import { Body, Title } from "solid-start"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/en/Navbar"; +import "~/styles/overview.scss"; function Manufacturers() { return ( Manufacturers - + +
{/* diff --git a/src/routes/en/overview.tsx b/src/routes/en/overview.tsx index 227066f..95a8e4e 100644 --- a/src/routes/en/overview.tsx +++ b/src/routes/en/overview.tsx @@ -1,14 +1,15 @@ -import { Body, Link, Title } from "solid-start"; +import { Body, Title } from "solid-start"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/en/Navbar"; +import "~/styles/overview.scss"; function Overview() { return ( Introduction EUCs - +
diff --git a/src/routes/soon.tsx b/src/routes/soon.tsx index 19c0988..12bee1b 100644 --- a/src/routes/soon.tsx +++ b/src/routes/soon.tsx @@ -1,12 +1,12 @@ -import { Body, Link, Title, useNavigate } from "solid-start"; +import { Body, Title, useNavigate } from "solid-start"; import Navbar, { lightMode } from "~/components/en/Navbar"; +import "~/styles/overview.scss"; function soon() { const navigate = useNavigate(); return ( soon -

This side is not available yet.

diff --git a/public/styles/devices.css b/src/styles/devices.scss similarity index 83% rename from public/styles/devices.css rename to src/styles/devices.scss index 6a78910..976d115 100644 --- a/public/styles/devices.css +++ b/src/styles/devices.scss @@ -32,23 +32,23 @@ text-align: left; display: flex; justify-content: space-between; -} -#sidenavbar button { - all: unset; - margin: 5px auto; - color: #eff0f3; - padding-left: 10px; - padding-right: 10px; - text-decoration: none; - font-size: 1.4em; - border: none; -} + button { + all: unset; + margin: 5px auto; + color: #eff0f3; + padding-left: 10px; + padding-right: 10px; + text-decoration: none; + font-size: 1.4em; + border: none; -#sidenavbar button:hover { - background: #eff0f3; - color: #2a2a2a; - cursor: pointer; + &:hover { + background: #eff0f3; + color: #2a2a2a; + cursor: pointer; + } + } } .main { diff --git a/public/styles/overview.css b/src/styles/overview.scss similarity index 70% rename from public/styles/overview.css rename to src/styles/overview.scss index bb4f695..03064a4 100644 --- a/public/styles/overview.css +++ b/src/styles/overview.scss @@ -37,30 +37,31 @@ top: 0; height: 100%; margin-left: -8px; -} -#navbar button { - border-radius: 16px; - scale: 0.9; -} -#navbar button:hover { - scale: 1.06; -} + button { + border-radius: 16px; + scale: 0.9; -#navbar a { - float: none; - display: block; - color: #eff0f3; - text-align: left; - padding: 8px 8px; - text-decoration: none; - font-size: 0.9em; -} + &:hover { + scale: 1.06; + } + } -#navbar a:hover { - background: #eff0f3; - color: #121629; - cursor: pointer; + a { + float: none; + display: block; + color: #eff0f3; + text-align: left; + padding: 8px 8px; + text-decoration: none; + font-size: 0.9em; + + &:hover { + background: #eff0f3; + color: #121629; + cursor: pointer; + } + } } #sidenavbar { @@ -75,23 +76,23 @@ text-align: left; display: flex; justify-content: space-between; -} -#sidenavbar button { - all: unset; - margin: 5px auto; - color: #eff0f3; - padding-left: 10px; - padding-right: 10px; - text-decoration: none; - font-size: 1.4em; - border: none; -} + button { + all: unset; + margin: 5px auto; + color: #eff0f3; + padding-left: 10px; + padding-right: 10px; + text-decoration: none; + font-size: 1.4em; + border: none; -#sidenavbar button:hover { - background: #eff0f3; - color: #2a2a2a; - cursor: pointer; + &:hover { + background: #eff0f3; + color: #2a2a2a; + cursor: pointer; + } + } } .main { @@ -155,9 +156,10 @@ p a { text-decoration: none; color: #91c4ff; border-bottom: 1px solid navy; -} -p a:hover { - border-bottom: 1px solid #91c4ff; + + &:hover { + border-bottom: 1px solid #91c4ff; + } } .svg-inline--fa, b { @@ -172,9 +174,10 @@ b { float: right; transition: width 1.5s; clear: both; -} -.righties:hover { - width: 50%; + + &:hover { + width: 50%; + } } .lefties { @@ -184,9 +187,10 @@ b { float: left; transition: width 1.5s; display: none; -} -.lefties:hover { - width: 50%; + + &:hover { + width: 50%; + } } #vcutout { @@ -214,60 +218,76 @@ b { .light-mode { background-color: #eff0f3; color: #2a2a2a; -} -.light-mode article p a { - text-align: justify; - text-decoration: underline; - color: #2a2a2a; -} -.light-mode b { - color: #2a2a2a; -} -.light-mode b a { - color: #2a2a2a; -} -.light-mode h3 { - color: #2a2a2a; -} -.light-mode h1 { - color: #2a2a2a; -} -.light-mode h2 { - color: #2a2a2a; -} -.light-mode #navbar { - background-color: #b8c1ec; -} -.light-mode #sidenavbar { - background-color: #b8c1ec; -} -.light-mode #navbar a { - color: black; -} -.light-mode #sidenavbar a { - color: black; -} -.light-mode button { - background-color: #b8c1ec; - color: black; -} -/*Raster Einstellungen*/ -.light-mode .raster { - background-color: #eff0f3; -} -.light-mode a { - color: #2a2a2a; + article p a { + text-align: justify; + text-decoration: underline; + color: #2a2a2a; + } + b { + color: #2a2a2a; + + a { + color: #2a2a2a; + } + } + h3 { + color: #2a2a2a; + } + h1 { + color: #2a2a2a; + } + h2 { + color: #2a2a2a; + } + #navbar { + background-color: #b8c1ec; + + a { + color: black; + } + } + #sidenavbar { + background-color: #b8c1ec; + + a { + color: black; + } + } + button { + background-color: #b8c1ec; + color: black; + } + + /*Raster Einstellungen*/ + .raster { + background-color: #eff0f3; + } + a { + color: #2a2a2a; + } } a { display: inline; color: rgb(225, 223, 210); -} -a svg.left { - margin-right: 2px; -} -a svg.right { - margin-left: 6px; + + svg.left { + margin-right: 2px; + } + svg.right { + margin-left: 6px; + } + div img, + div video { + border-radius: 10%; + max-width: 260px; + max-height: 290px; + padding-top: 8px; + bottom: 0; + } + div h3 { + margin: 0.5%; + } } .raster { width: 300px; @@ -281,23 +301,14 @@ a svg.right { border-radius: 10%; scale: 0.9; font-size: 0.9em; -} -a div img, -a div video { - border-radius: 10%; - max-width: 260px; - max-height: 290px; - padding-top: 8px; - bottom: 0; -} -a div h3 { - margin: 0.5%; -} -.raster:hover { - scale: 1.06; -} -.raster:hover a div img { - width: 110%; + + &:hover { + scale: 1.06; + + a div img { + width: 110%; + } + } } .logos { @@ -365,9 +376,10 @@ a div h3 { /*.raster {width: calc(100%/2);}*/ .righties { width: 100%; - } - .righties:hover { - width: 100%; + + &:hover { + width: 100%; + } } } diff --git a/public/styles/start.css b/src/styles/start.scss similarity index 93% rename from public/styles/start.css rename to src/styles/start.scss index b0a639d..20af10a 100644 --- a/public/styles/start.css +++ b/src/styles/start.scss @@ -77,13 +77,15 @@ p { } a { text-decoration: none; -} -a div p { - text-align: center; - padding: 20px; -} -a :hover { - scale: 1.06; + + &:hover { + scale: 1.06; + } + + div p { + text-align: center; + padding: 20px; + } } .righties { From da2e46aab2de02c2c806fe437dacaa61f79063dd Mon Sep 17 00:00:00 2001 From: aronmal Date: Fri, 8 Dec 2023 17:52:06 +0100 Subject: [PATCH 29/36] Consolidate and upload changes from recent work --- src/components/Asset.tsx | 200 ++++++++++++ src/components/DeviceTile.tsx | 20 +- src/components/Reference.tsx | 2 +- src/components/de/Navbar.tsx | 19 +- src/components/en/Navbar.tsx | 19 +- src/root.tsx | 3 +- src/routes/de/KSS22.tsx | 413 +++++++++++++------------ src/routes/de/imprint.tsx | 49 +++ src/routes/de/index.tsx | 30 +- src/routes/de/manufacturers.tsx | 60 ++-- src/routes/de/overview.tsx | 517 +++++++++++++++---------------- src/routes/en/KSS22.tsx | 407 ++++++++++++------------- src/routes/en/index.tsx | 29 +- src/routes/en/manufacturers.tsx | 58 ++-- src/routes/en/overview.tsx | 520 ++++++++++++++++---------------- src/routes/soon.tsx | 2 +- src/styles/devices.scss | 201 ++++++------ src/styles/global.scss | 194 ++++++++++++ src/styles/overview.scss | 520 +++++++++++--------------------- src/styles/start.scss | 147 ++++----- 20 files changed, 1844 insertions(+), 1566 deletions(-) create mode 100644 src/components/Asset.tsx create mode 100644 src/routes/de/imprint.tsx create mode 100644 src/styles/global.scss diff --git a/src/components/Asset.tsx b/src/components/Asset.tsx new file mode 100644 index 0000000..060d464 --- /dev/null +++ b/src/components/Asset.tsx @@ -0,0 +1,200 @@ +import { + faMagnifyingGlassMinus, + faMagnifyingGlassPlus, + faSlidersSimple, + faVolume, + faVolumeSlash, + faXmark, +} from "@fortawesome/pro-regular-svg-icons"; +import { + Match, + Setter, + Show, + Switch, + createEffect, + createSignal, +} from "solid-js"; +import { FontAwesomeIcon } from "./FontAwesomeIcon"; + +interface Asset { + src: string; +} + +function AssetHandler() { + const [moving, setMoving] = createSignal(false); + const [active, setActive] = createSignal(""); + const [zoomLevel, setZoomLevel] = createSignal(0); + const zoomAmount = () => 1 + zoomLevel() * 0.5; + const [x, setX] = createSignal(0); + const [y, setY] = createSignal(0); + + function FullscreenView() { + const [muted, setMuted] = createSignal(true); + const [controlls, setControlls] = createSignal(false); + const [clientX, setClientX] = createSignal(0); + const [clientY, setClientY] = createSignal(0); + const [ref, setRef] = createSignal(null); + + const handleMouseMove = (event: MouseEvent) => { + const { clientX, clientY } = event; + setClientX(clientX); + setClientY(clientY); + }; + + createEffect(() => { + const thisRef = ref(); + if (!thisRef) return; + const rectA = thisRef.getBoundingClientRect(); + const origSizeW = rectA.width / zoomAmount(); + const origSizeH = rectA.height / zoomAmount(); + const rectW = wrapperRef.getBoundingClientRect(); + const hori = rectW.width - origSizeW + origSizeW / zoomAmount(); + const verti = rectW.height - origSizeH + origSizeH / zoomAmount(); + const xP = (clientX() - hori / 2) / (rectW.width - hori); + const yP = (clientY() - verti / 2) / (rectW.height - verti); + setX((xP > 0 ? (xP < 1 ? xP : 1) : 0) * origSizeW); + setY((yP > 0 ? (yP < 1 ? yP : 1) : 0) * origSizeH); + const moving = + clientX() > (rectW.width - origSizeW) / 2 && + clientX() < rectW.width - (rectW.width - origSizeW) / 2 && + clientY() > (rectW.height - origSizeH) / 2 && + clientY() < rectW.height - (rectW.height - origSizeH) / 2; + setMoving(moving); + }); + + let wrapperRef: HTMLDivElement; + + createEffect(() => { + if (active()) return; + setZoomLevel(0); + setMuted(true); + setControlls(false); + }); + + return ( +
+ +
+ + + + + + + +
+
+ ); + } + + function Asset( + props: Asset & { + class?: string; + volume?: boolean; + controlls?: boolean; + setRef?: Setter; + }, + ) { + let imgRef: HTMLImageElement; + let videoRef: HTMLVideoElement; + + const shouldZoom = () => active() === props.src && !!zoomLevel(); + + return ( + + + props.setRef && props.setRef(imgRef)} + classList={{ + [props.class ?? ""]: !!props.class, + zoomed: shouldZoom(), + move: moving(), + }} + onClick={() => setActive(props.src)} + src={props.src} + alt={props.src} + /> + + + + + + ); + } + + return { FullscreenView, Asset }; +} + +export default AssetHandler; diff --git a/src/components/DeviceTile.tsx b/src/components/DeviceTile.tsx index 6b03002..361c770 100644 --- a/src/components/DeviceTile.tsx +++ b/src/components/DeviceTile.tsx @@ -4,17 +4,15 @@ import { A } from "solid-start"; function DeviceTile(props: { href?: string; name: string; src: string }) { return ( -
-

{props.name}

- - {props.name} - - - - -
+

{props.name}

+ + {props.name} + + + +
); } diff --git a/src/components/Reference.tsx b/src/components/Reference.tsx index 44429f2..fcfe2f7 100644 --- a/src/components/Reference.tsx +++ b/src/components/Reference.tsx @@ -43,7 +43,7 @@ function R(props: { target={type() === "external" ? "_blank" : ""} rel={type() === "external" ? "noreferrer noopener" : ""} id={props.id} - class={props.class} + classList={{ reference: true, [props.class ?? ""]: !!props.class }} > diff --git a/src/components/de/Navbar.tsx b/src/components/de/Navbar.tsx index 43dbc05..6183d19 100644 --- a/src/components/de/Navbar.tsx +++ b/src/components/de/Navbar.tsx @@ -1,6 +1,8 @@ import { + faBars, faBookOpen, faCircleHalfStroke, + faGavel, faGlobe, faXmark, } from "@fortawesome/pro-regular-svg-icons"; @@ -75,7 +77,7 @@ function Navbar() { Historie
  • - Geräte Liste + Geräte Liste
  • @@ -83,6 +85,10 @@ function Navbar() { Hersteller + + Impressum + +
    -
    - - - -
    + ); } diff --git a/src/components/en/Navbar.tsx b/src/components/en/Navbar.tsx index c9112f8..96c4916 100644 --- a/src/components/en/Navbar.tsx +++ b/src/components/en/Navbar.tsx @@ -1,6 +1,8 @@ import { + faBars, faBookOpen, faCircleHalfStroke, + faGavel, faGlobe, faXmark, } from "@fortawesome/pro-regular-svg-icons"; @@ -75,7 +77,7 @@ function Navbar() { History
  • - Device list + Device list
  • @@ -83,6 +85,10 @@ function Navbar() { Manufacturers + + Legal Notice (DE) + +
    -
    - - - -
    + ); } diff --git a/src/root.tsx b/src/root.tsx index 44750db..a4e4226 100644 --- a/src/root.tsx +++ b/src/root.tsx @@ -12,6 +12,7 @@ import { Title, useLocation, } from "solid-start"; +import "~/styles/global.scss"; export default function Root() { const location = useLocation(); @@ -100,7 +101,7 @@ export default function Root() { SolidStart - Bare diff --git a/src/routes/de/KSS22.tsx b/src/routes/de/KSS22.tsx index f427510..8f83836 100644 --- a/src/routes/de/KSS22.tsx +++ b/src/routes/de/KSS22.tsx @@ -1,225 +1,220 @@ -import { Body, Title, useNavigate } from "solid-start"; -import { lightMode } from "~/components/en/Navbar"; +import { Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; +import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/devices.scss"; function KSS22() { - const navigate = useNavigate(); + const { FullscreenView, Asset } = AssetHandler(); return ( - + KS S22 + + -
    - - -
    +
    +
    +

    Kingsong S22

    +
    + +
    -
    -
    - +

    + Das Kingsong S22, früher S20, ist ein klar Offroad und Trail + orientiertes Einrad. Es hat unter anderem 130 mm travel und eine + robuste Metallkonstruktion, welches es einmalig ideal für große + Sprünge und hohe Drops macht. +

    + +

    + Es ist der Nachfolger vom kleineren S18, aber mit doppeltem Akku und + 50 % mehr Motor Leistung, so wie 70 statt 50 km/h top + Geschwindigkeit. Wobei der Freespin bis zu 114 km/h hoch ist, also + ideal für längere Sprünge bei denen der Reifen in der Luft ist. +

    + +

    + Außerdem hat es gleich mitgeliefert einen Sitz, ziemlich brauchbare + Jump wie Powerpads und Spiked-Pedals. Dazu einen robusten, wenn auch + komisch platzierten und etwas kurzen Trolleyhandle, sowie einen + stabilen Kickstand und höhenverstellbare helle Lichter. Es ist + Wasserfest, aber nicht eintauchbar, und das Beste: es ist + superleicht daran zu arbeiten, weil das Gerät sehr modular designt + wurde. So lässt sich der Reifen mit theoretisch nur 2 schrauben + rausnehmen +

    + +

    + Während all das wahr ist, haben sich leider mit diesem hoch + erwartetem und gehypten Rad auch viele Probleme ergeben. So gab es + Motorprobleme mit den ersten Geräten, welche zu cut-offs führten und + dadurch das Motherboard durchbrannten. Auch ist das Slider Design + sehr schwerfällig und über die Zeit immer schwerer zu bewegen. So + mussten viele s22 Käufer lange auf Ersatzmotoren warten, so wie für + 100 bis 200 € die Slider upgraden. Mit den Upgrades jedoch ist es + das momentan bester Suspension Einrad auf dem Markt. (Bis das + Veteran Sherman S zu kaufen ist.) +

    -
    -
    -

    Kingsong S22

    - -

    - Das Kingsong S22, früher S20, ist ein klar Offroad und Trail - orientiertes Einrad. Es hat unter anderem 130 mm travel und eine - robuste Metallkonstruktion, welches es einmalig ideal für große - Sprünge und hohe Drops macht. -

    - -

    - Es ist der Nachfolger vom kleineren S18, aber mit doppeltem Akku - und 50 % mehr Motor Leistung, so wie 70 statt 50 km/h top - Geschwindigkeit. Wobei der Freespin bis zu 114 km/h hoch ist, also - ideal für längere Sprünge bei denen der Reifen in der Luft ist. -

    - -

    - Außerdem hat es gleich mitgeliefert einen Sitz, ziemlich - brauchbare Jump wie Powerpads und Spiked-Pedals. Dazu einen - robusten, wenn auch komisch platzierten und etwas kurzen - Trolleyhandle, sowie einen stabilen Kickstand und - höhenverstellbare helle Lichter. Es ist Wasserfest, aber nicht - eintauchbar, und das Beste: es ist superleicht daran zu arbeiten, - weil das Gerät sehr modular designt wurde. So lässt sich der - Reifen mit theoretisch nur 2 schrauben rausnehmen -

    - -

    - Während all das wahr ist, haben sich leider mit diesem hoch - erwartetem und gehypten Rad auch viele Probleme ergeben. So gab es - Motorprobleme mit den ersten Geräten, welche zu cut-offs führten - und dadurch das Motherboard durchbrannten. Auch ist das Slider - Design sehr schwerfällig und über die Zeit immer schwerer zu - bewegen. So mussten viele s22 Käufer lange auf Ersatzmotoren - warten, so wie für 100 bis 200 € die Slider upgraden. Mit den - Upgrades jedoch ist es das momentan bester Suspension Einrad auf - dem Markt. (Bis das Veteran Sherman S zu kaufen ist.) -

    -
    +
    + + +
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
    EigenschaftWert
    Größe582L 330W 747H
    Radumfang20 inch
    Pedalhöhe231 ± 26 mm
    Gewicht35 kg
    Suspension travel (bei Federung)130 mm
    Suspension Type (bei Federung)Oil Shock
    Suspension Adjustments (bei Federung)Rebound, compression
    Freespin114 km/h
    Top speed70 km/h
    Reichweite bei 30 km/h200 km
    Minimale Reichweite bei starker Nutzung70 km
    Max climb angle45°
    Max. Zuladung120 kg
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Größe582L 330W 747H
    Radumfang20 inch
    Pedalhöhe231 ± 26 mm
    Gewicht35 kg
    Suspension travel (bei Federung)130 mm
    Suspension Type (bei Federung)Oil Shock
    Suspension Adjustments (bei Federung)Rebound, compression
    Freespin114 km/h
    Top speed70 km/h
    Reichweite bei 30 km/h200 km
    Minimale Reichweite bei starker Nutzung70 km
    Max climb angle45°
    Max. Zuladung120 kg
    Motor TypHigh Speed
    Motor Leistung3.300 W
    Peak Leistung7.500 W
    Battery Size2.220 Wh
    Voltage126 V
    Max amps100 A
    BMSSmart BMS
    Battery cell typeLG 18600
    IP Ratingnope
    Motor TypHigh Speed
    Motor Leistung3.300 W
    Peak Leistung7.500 W
    Battery Size2.220 Wh
    Voltage126 V
    Max amps100 A
    BMSSmart BMS
    Battery cell typeLG 18600
    IP Ratingnope
    AccessoiresPowerpads, Jumppads, Seat, Spiked-Pedals
    Lichter8 x 5 W Verstellbare Scheinwerfer
    Standard ReifenKnobby (Noppenreifen)
    Anti spin button?im Griff
    Display?Dot-Matrix
    RGB?Rücklicht
    Pads?Alle inklusive
    Ladeausgänge?nope
    Ladegerät: -
    Standard Ladezeit:3,3 h
    Max Amps:10 A
    Schnellste Ladezeit:100 Minuten
    Ladeports:2
    + + Accessoires + Powerpads, Jumppads, Seat, Spiked-Pedals + + + Lichter + 8 x 5 W Verstellbare Scheinwerfer + + + Standard Reifen + Knobby (Noppenreifen) + + + Anti spin button? + im Griff + + + Display? + Dot-Matrix + + + RGB? + Rücklicht + + + Pads? + Alle inklusive + + + Ladeausgänge? + nope + + + Ladegerät: + + + + Standard Ladezeit: + 3,3 h + + + Max Amps: + 10 A + + + Schnellste Ladezeit: + 100 Minuten + + + Ladeports: + 2 + + + +
    ); } diff --git a/src/routes/de/imprint.tsx b/src/routes/de/imprint.tsx new file mode 100644 index 0000000..6d37a3c --- /dev/null +++ b/src/routes/de/imprint.tsx @@ -0,0 +1,49 @@ +import { Body, Title } from "solid-start"; +import Navbar, { lightMode } from "~/components/en/Navbar"; +import "~/styles/overview.scss"; + +function imprint() { + return ( + + Impressum + + +
    +

    Impressum

    + +

    Verantwortlich für den Inhalt gemäß § 18 Abs. 1 MStV:

    +

    Julian Gerhardt

    + +

    Technischer Ansprechpartner:

    +

    + Aron Malcher +
    +
    + Unlimited Development +
    +
    + Brunnenstr. 12 +
    + 48531 Nordhorn +
    + Deutschland +
    +
    + E-Mail:{" "} + aron@unlimited-dev.de +

    + +

    Hinweis:

    +

    + Die redaktionelle Verantwortung für die Inhalte der Webseite liegt bei + Julian Gerhardt. Technische Fragen und Anfragen richten Sie bitte an + den technischen Ansprechpartner von Unlimited Development, welche als + Hosting- und IT-Service agiert, jedoch nicht für den redaktionellen + Inhalt verantwortlich ist. +

    +
    + + ); +} + +export default imprint; diff --git a/src/routes/de/index.tsx b/src/routes/de/index.tsx index e0c774c..8cf7087 100644 --- a/src/routes/de/index.tsx +++ b/src/routes/de/index.tsx @@ -1,15 +1,19 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; import { A, Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; import { lightMode } from "~/components/de/Navbar"; import "~/styles/start.scss"; function Introduction() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Einführung + +
    @@ -23,39 +27,25 @@ function Introduction() { Flexible - Modern - schneller als die Polizei erlaubt. Das sind moderne eletrische Einräder.

    -
    - -
    +

    Von 0 auf 50 km/h in 3 s, 100 km/h top Geschwindigkeit und 230 km Reichweite machen aus diesen Geräten den ultimativen Sport.

    -
    - -
    +

    Gleichzeitig 50° steile Wände hochfahren und MTB Trails mit leichtigkeit nehmen.

    -
    - -
    +

    Jeden Weg nutzen und nie wieder im Verkehr stecken.

    -
    - -
    +

    Und trotzdem leicht zu transportiren und untern Tisch zu packen.

    -
    - -
    +

    Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

    diff --git a/src/routes/de/manufacturers.tsx b/src/routes/de/manufacturers.tsx index 2c216d1..cdee23f 100644 --- a/src/routes/de/manufacturers.tsx +++ b/src/routes/de/manufacturers.tsx @@ -1,18 +1,22 @@ import { Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/de/Navbar"; import "~/styles/overview.scss"; function Manufacturers() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Hersteller + +
    {/* */} -
    +

    Erklärung und Geschichte der Produzenten

    Es gibt/gab viele Hersteller von elektrischen Einrädern, hier werden @@ -24,10 +28,15 @@ function Manufacturers() {

    - Ninebot + Ninebot

    - - + +
    + +
    +
    + +

    Ninebot ist für die Meisten bekannt als Scooter Hersteller, manche kenne auch vielleicht deren elektrische Schuhe oder die Segway @@ -42,10 +51,14 @@ function Manufacturers() {

    - Inmotion + Inmotion

    - - +
    + +
    +
    + +

    Inmotion ist der zweitgrößte Hersteller der hier gelisteten. Ebenfalls groß im standard-Scooter Segment, hat Inmotion aber auch @@ -65,10 +78,14 @@ function Manufacturers() {

    - Kingsong + Kingsong

    - - +
    + +
    +
    + +

    Kingsong ist sehr ähnlich zu Inmotion, nur kleiner und ohne den großen Scooter und E-Bike Markt dahinter. Qualität und Design waren @@ -85,10 +102,14 @@ function Manufacturers() {

    - Gotway/Begode + Gotway/Begode

    - - +
    + +
    +
    + +

    Gotway, oder wie sie sich heute nennen, Begode, ist schwer zu beschreiben und einzuordnen. Viele Meinungen und Kontroversen. Die @@ -136,11 +157,14 @@ function Manufacturers() {

    - Leaperkim/Veteran{" "} - + Leaperkim/Veteran

    - - +
    + +
    +
    + +

    Veteran ist für viele der Liebling. Bestehend aus Ex Gotway Ingenieuren und Mitarbeitern, die mit den Entscheidungen von Gotway diff --git a/src/routes/de/overview.tsx b/src/routes/de/overview.tsx index 761412c..9afc74f 100644 --- a/src/routes/de/overview.tsx +++ b/src/routes/de/overview.tsx @@ -1,13 +1,16 @@ import { Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/de/Navbar"; import "~/styles/overview.scss"; function overview() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Einführung EUCs +

    @@ -16,7 +19,7 @@ function overview() { {/* */}
    -
    +

    Bevor Sie lesen:

    Hier sind ein paar Dinge, bevor Sie anfangen zu lesen.

    @@ -48,13 +51,15 @@ function overview() {
    {/* */} -
    +

    Was sind EUCs

    - + +
    +
    +
    -

    EUC steht für ElectricUniCycle, zu Deutsch elektrisches Einrad. Im einfachsten Sinne ist es ein Akku @@ -70,21 +75,14 @@ function overview() {

    {/* */} -
    +

    Warum Einrad fahren?

    - +
    - +

    @@ -168,14 +166,14 @@ function overview() {

    {/* */} -
    +

    Technische Funktionsweise

    - +
    - +

    @@ -231,10 +229,10 @@ function overview() {

    - +
    - +

    Das Motherboard besteht unter anderem aus dem Stromeingang @@ -273,10 +271,10 @@ function overview() { einstellen.

    - +
    - +

    Der Motor eines Einrades ist ein 3 Phasen Hub @@ -330,179 +328,184 @@ function overview() {

    {/* */} -
    +

    Begriffs- und Spezifikationserklärungen

    -
    -

    - Tilt-back: Die Pedale des Geräts neigen sich - nach hinten, um den Fahrer abzubremsen. Wird bei niedrigem Akku - stand oder zu hoher Beanspruchung benutzt, um die Elektronik zu - schützen. -

    -

    - Pedal Dip: Die Pedale geben nach, das Gerät kann die - gefragte Leistung nicht aufrechterhalten und die Pedale neigen - sich schlagartig nach vorne (Oder nach hinten beim starken - Bremsen). In den meisten Fällen kommen die Pedale aber sofort - wieder hoch, sodass die Fahrt ungestört weiter gehen kann. -

    -

    - Pedal-angle: Der Winkel, in dem die Pedale zum Gerät - stehen, wenn man sie von vorne betrachtet. Ein steilerer Winkel - sorgt für mehr Halt in Kurven, kann aber auch unangenehm werden - für längere Fahrten. -

    -

    - Spiked-pedals: Spitzen auf den Pedalen, - die Schuhen mehr Halt geben. Ähnlich zu Mountainbike Pedalen, sind - es meist einschraubbare spitze Metallstifte, die sich etwas in den - Schuh bohren, um versehentliches abrutschen zu vermeiden. Wird - heute statt Schleifpapier genommen, da es auch bei Nässe und - Schlamm guten halt bietet.{" "} - Beispiel -

    - -

    - Pads: aus Plastik oder Schaumstoff bestehende - Teile die seitlich am Gerät montiert werden, meist gedruckt aus - TPU und PLA und befestigt mit großflächigem starkem Klettband. Sie - sind zur besseren Kontrolle des Gerätes, vor allem für schwere und - schnelle Einräder wichtig. Sie werden in 2 Typen aufgeteilt, wobei - viele beides zusammen kombinieren.{" "} - Beispiel -

    - -

    - Power Pads: haben Kontakt an den Waden und dem - Schienenbein, dienen zum besseren beschleunigen und bremsen. - Essenziell für schwere Geräte mit hohen pedalen. -

    -

    - Jump Pads: haben Kontakt mit dem Fuß und der Verse, dienen - zum Springen und zur Sicherheit. Im Falle eines unerwarteten - Buckels in der Straße halten sie den Fuß fest, sodass man nicht - vom Gerät fällt. Allerdings können sie im Falle eines Crashes - hinderlich sein, da sie ein schnelles Absteigen erschweren. -

    -

    - Wobbles: beschreibt das unbeabsichtigte Wackeln des Geräts - bei höherer Geschwindigkeit. Mehr dazu hier -

    -
    - -
    -

    - Trolley Handle: ein ausfahrbarer Griff zum - Schieben des Gerätes, ähnlich wie bei einem Koffer. -

    - - -

    - Kill-Switch: ein Knopf unterm Griff, der den Motor - abschaltet. Sorgt beim Anheben dafür, das der Motor nicht - hochdreht. -

    - -

    - Cut-off /Cut-out: Das Plötzliche abschalten des Gerätes - während der Fahrt, siehe Kapitel Cut-out. -

    - -

    - HS Motor: High Speed Motor, siehe Kapitel{" "} - Motor. -

    - -

    - HT Motor: High Torque Motor, siehe Kapitel{" "} - Motor. -

    - -

    - W: Watt, Leistungsangabe, zeigt wie viel Leistung das Gerät - dauerhaft halten kann. 3.000 W entsprechen 4 PS (ein E-Bike hat - maximal 250 W). Nicht zu verwechseln mit -

    - -

    - Peak Watt: Maximale Leistung, die das Gerät für sehr kurze - Zeit erreichen kann. -

    - -

    - Wh: Wattstunden, Speicher Angabe, zeigt wie viel - Energie der Akku speichern kann. 3.000 Wh - heißt, dass der Akku 3.000 W über eine Stunde lang geben könnte, - oder 1.500 W über 2 Stunden etc. -

    - -

    - BMS: steht für Battery Managment System, hier weiter{" "} - erklärt -

    - -

    - Voltage sag: Spannungsabfall, der Akku verliert kurzzeitig - bei hoher Beanspruchung an Spannung, was bei gleicher Leistung die - fließenden Ampere erhöht. -

    - -

    - Freespin: Maximale Dreh Geschwindigkeit, die der Motor - erreichen kann, wenn man das Gerät anhebt. Minus 20 km/h rechnen, - um ungefähr die erreichbare top Geschwindigkeit zu bekommen. -

    - -

    - 16 inch: beschreibt die Reifen Größe, in dem Fall 16 Zoll - (40 cm) Durchmesser. Kleine Durchmesser sind wendig und haben ein - schnelles Ansprechverhalten, große Durchmesser (bis 24 Zoll, 60 - cm) fühlen sich schwer und träge an, sind aber erheblich stabiler - auf Geschwindigkeit. -

    - +

    - Charging Amps: Die maximalen Ampere, mit denen das Gerät - laden kann. Die meisten neuen Geräte laden mit maximal 10 - Ampere, also 10 A * 126 V = 1.260 Watt. Die Ladezeit errechnet - man so: + Tilt-back: Die Pedale des Geräts neigen + sich nach hinten, um den Fahrer abzubremsen. Wird bei niedrigem + Akku stand oder zu hoher Beanspruchung benutzt, um die + Elektronik zu schützen. +

    +

    + Pedal Dip: Die Pedale geben nach, das Gerät kann die + gefragte Leistung nicht aufrechterhalten und die Pedale neigen + sich schlagartig nach vorne (Oder nach hinten beim starken + Bremsen). In den meisten Fällen kommen die Pedale aber sofort + wieder hoch, sodass die Fahrt ungestört weiter gehen kann. +

    +

    + Pedal-angle: Der Winkel, in dem die Pedale zum Gerät + stehen, wenn man sie von vorne betrachtet. Ein steilerer Winkel + sorgt für mehr Halt in Kurven, kann aber auch unangenehm werden + für längere Fahrten. +

    +

    + Spiked-pedals: Spitzen auf den + Pedalen, die Schuhen mehr Halt geben. Ähnlich zu Mountainbike + Pedalen, sind es meist einschraubbare spitze Metallstifte, die + sich etwas in den Schuh bohren, um versehentliches abrutschen zu + vermeiden. Wird heute statt Schleifpapier genommen, da es auch + bei Nässe und Schlamm guten halt bietet.{" "} + Beispiel +

    + +

    + Pads: aus Plastik oder Schaumstoff bestehende + Teile die seitlich am Gerät montiert werden, meist gedruckt aus + TPU und PLA und befestigt mit großflächigem starkem Klettband. + Sie sind zur besseren Kontrolle des Gerätes, vor allem für + schwere und schnelle Einräder wichtig. Sie werden in 2 Typen + aufgeteilt, wobei viele beides zusammen kombinieren.{" "} + Beispiel +

    + +

    + Power Pads: haben Kontakt an den Waden und dem + Schienenbein, dienen zum besseren beschleunigen und bremsen. + Essenziell für schwere Geräte mit hohen pedalen. +

    +

    + Jump Pads: haben Kontakt mit dem Fuß und der Verse, + dienen zum Springen und zur Sicherheit. Im Falle eines + unerwarteten Buckels in der Straße halten sie den Fuß fest, + sodass man nicht vom Gerät fällt. Allerdings können sie im Falle + eines Crashes hinderlich sein, da sie ein schnelles Absteigen + erschweren. +

    +

    + Wobbles: beschreibt das unbeabsichtigte Wackeln des + Geräts bei höherer Geschwindigkeit. Mehr dazu{" "} + hier +

    +
    + +
    +

    + Trolley Handle: ein ausfahrbarer Griff zum + Schieben des Gerätes, ähnlich wie bei einem Koffer. +

    + + +

    + Kill-Switch: ein Knopf unterm Griff, der den Motor + abschaltet. Sorgt beim Anheben dafür, das der Motor nicht + hochdreht.

    - - - - - - - - - - - - - - - - - - - - - -
    Kapazität÷ (Volt×ladende Ampere) =Ladezeit
    3.300 Wh÷ (126 V×10 A) =2,6 h
    +

    + Cut-off /Cut-out: Das Plötzliche abschalten des Gerätes + während der Fahrt, siehe Kapitel Cut-out. +

    + +

    + HS Motor: High Speed Motor, siehe Kapitel{" "} + Motor. +

    + +

    + HT Motor: High Torque Motor, siehe Kapitel{" "} + Motor. +

    + +

    + W: Watt, Leistungsangabe, zeigt wie viel Leistung das + Gerät dauerhaft halten kann. 3.000 W entsprechen 4 PS (ein + E-Bike hat maximal 250 W). Nicht zu verwechseln mit +

    + +

    + Peak Watt: Maximale Leistung, die das Gerät für sehr + kurze Zeit erreichen kann. +

    + +

    + Wh: Wattstunden, Speicher Angabe, zeigt wie viel + Energie der Akku speichern kann. 3.000 Wh + heißt, dass der Akku 3.000 W über eine Stunde lang geben könnte, + oder 1.500 W über 2 Stunden etc. +

    + +

    + BMS: steht für Battery Managment System, hier weiter{" "} + erklärt +

    + +

    + Voltage sag: Spannungsabfall, der Akku verliert + kurzzeitig bei hoher Beanspruchung an Spannung, was bei gleicher + Leistung die fließenden Ampere erhöht. +

    + +

    + Freespin: Maximale Dreh Geschwindigkeit, die der Motor + erreichen kann, wenn man das Gerät anhebt. Minus 20 km/h + rechnen, um ungefähr die erreichbare top Geschwindigkeit zu + bekommen. +

    + +

    + 16 inch: beschreibt die Reifen Größe, in dem Fall 16 Zoll + (40 cm) Durchmesser. Kleine Durchmesser sind wendig und haben + ein schnelles Ansprechverhalten, große Durchmesser (bis 24 Zoll, + 60 cm) fühlen sich schwer und träge an, sind aber erheblich + stabiler auf Geschwindigkeit. +

    + +
    +

    + Charging Amps: Die maximalen Ampere, mit denen das + Gerät laden kann. Die meisten neuen Geräte laden mit maximal + 10 Ampere, also 10 A * 126 V = 1.260 Watt. Die Ladezeit + errechnet man so: +

    + + + + + + + + + + + + + + + + + + + + + + +
    Kapazität÷ (Volt×ladende Ampere) =Ladezeit
    3.300 Wh÷ (126 V×10 A) =2,6 h
    +
    {/* */} -
    +

    Sicherheit

    Die wohl zweit häufigste Frage ist meist, ob man darauf denn nicht @@ -516,13 +519,13 @@ function overview() {

    {/* */} -
    +

    Schutzausrüstung

    - +
    - +

    Jeder EUC-YouTuber und erfahrene Fahrer wird dir sagen, dass @@ -577,17 +580,15 @@ function overview() { auch keinen Fahrradhelm tragen.

    - +
    {/* */} -
    +

    Cut-offs

    - +

    Cut-offs sind die größte Quelle der nicht eigenverantwortlichen @@ -663,7 +664,7 @@ function overview() {

    {/* */} -
    +

    Brände, Akkusicherheit

    Vorweg: im Gegensatz zu z.B. Hoverboards sind Einräder recht sicher @@ -676,11 +677,11 @@ function overview() { ist die Sorge auch für andere Marken da.

    - + +
    +
    +
    -

    Brandursachen können mehrere sein, hier ein paar Beispiele:

    @@ -735,21 +736,21 @@ function overview() {

    - +

    Akkusicherheit: Dafür ist ein BMS zuständig. Ein Battery Management System hat die Aufgabe,
    - -den Akku vor zu hohen Strömen zu schützen, + - den Akku vor zu hohen Strömen zu schützen,
    - -ihn nicht unter die spezifizierte Spannung entladen zu lassen, + - ihn nicht unter die spezifizierte Spannung entladen zu lassen,
    - -ihn auch nicht über die maximale Spannung laden zu lassen, + - ihn auch nicht über die maximale Spannung laden zu lassen,
    - -die Temperatur im Blick zu halten und -
    - -im Falle eines Kurzschlusses sich vom restlichen System zu trennen. + - die Temperatur im Blick zu halten und +
    - im Falle eines Kurzschlusses sich vom restlichen System zu + trennen.

    Bessere BMSs, auch smart BMS genannt, können auch aktiv die Zellen @@ -770,17 +771,13 @@ function overview() {

    {/* */} -
    +

    Fahrweise

    - +
    - +

    Das wohl mit Abstand größte Sicherheitsrisiko bildet die Fahrweise @@ -819,14 +816,10 @@ function overview() { sind mit dem richtigen Skill zu unglaublichem im Stande.

    - +
    - +

    Unfälle an sich sind hier auch noch mal zu erwähnen, denn es @@ -860,12 +853,10 @@ function overview() {

    {/* */} -
    +

    Wobbles

    - +

    Wobbles sind ein noch nicht ganz verstandenes Problem. Wobble @@ -901,7 +892,7 @@ function overview() {

    {/* */} -
    +

    Leistung als Sicherheitsfeature

    @@ -921,7 +912,7 @@ function overview() {

    {/* */} -
    +

    Federung als Sicherheitsfeature

    Fast alle neuen und angekündigten Geräte haben eine Art integrierte @@ -943,9 +934,9 @@ function overview() {

    {/* */} -
    +

    Reifen

    - +

    Reifen werden unterteilt in 3 Kategorien:

    @@ -986,13 +977,15 @@ function overview() {

    {/* */} -
    +

    Historie der EUCs

    - + +
    +
    +
    -

    Die Grundlegende Technik kam mit dem @@ -1013,7 +1006,7 @@ function overview() {

    Es dauerte weitere 4 Jahre, bis - + KingSong gegründet wurde, und als Wettbewerber Innovation antrieb. @@ -1034,8 +1027,8 @@ function overview() { mehr Gedanken in Design und Qualität steckten.

    -
    - +
    +

    @@ -1061,8 +1054,8 @@ function overview() { veröffentlichten. Und beide Geräte änderten den Markt nachhaltig.

    -
    - +
    +

    Inmotion und Kingsong haben beide relativ zeitnah die ersten Geräte @@ -1110,49 +1103,59 @@ function overview() {

    {/* */} -
    -

    Liste der Geräte

    +
    +

    Liste der Geräte

    Hier werden nur die relevantesten und bekanntesten Geräte aufgelistet, eine vollständige sortierbare Übersicht ist{" "} hier.

    +
    + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + +
    diff --git a/src/routes/en/KSS22.tsx b/src/routes/en/KSS22.tsx index 2369527..86bec39 100644 --- a/src/routes/en/KSS22.tsx +++ b/src/routes/en/KSS22.tsx @@ -1,217 +1,218 @@ import { Body, Title } from "solid-start"; -import { lightMode } from "~/components/en/Navbar"; +import AssetHandler from "~/components/Asset"; +import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/devices.scss"; function KSS22() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + KS S22 - {/* */} + + -
    -
    - +
    +
    +

    Kingsong S22

    + +
    + +
    + +

    + The Kingsong S22, formerly S20, is a clearly off-road and + trail-oriented unicycle. Among other things, it has 130 mm + suspension travel and a robust metal construction, which makes it + ideal for big jumps and high drops. +

    + +

    + It is the successor to the smaller S18, but with double the battery + and 50 % more motor power, such as a top speed of 70 instead of 50 + km/h. The freespin is up to 114 km/h, so ideal for longer jumps + where the tire is spinning up in the air. +

    + +

    + It also comes with a seat, pretty good jump- and power pads and + spiked pedals. Plus, a sturdy, albeit oddly placed and somewhat + short trolley handle, as well as a sturdy kickstand and + height-adjustable bright lights. It's waterproof, but not + submersible, and best of all, it's super easy to work with because + the device has a very modular design. The tire can theoretically be + removed with just 2 screws +

    + +

    + While all of this is true, many problems have unfortunately arisen + with this highly anticipated and hyped wheel. There were motor + problems with the first devices, which led to cut-offs and burned + the motherboard. Also, the slider design is very clumsy and gets + harder and harder to move over time. Many S22 buyers had to wait a + long time for replacement motors, such as upgrading the sliders for + 100 to 200 €. However, with the upgrades, it is currently the best + suspension unicycle on the market. (Until the Veteran Sherman S goes + on sale.) +

    -
    -
    -

    Kingsong S22

    - -

    - The Kingsong S22, formerly S20, is a clearly off-road and - trail-oriented unicycle. Among other things, it has 130 mm - suspension travel and a robust metal construction, which makes it - ideal for big jumps and high drops. -

    - -

    - It is the successor to the smaller S18, but with double the - battery and 50 % more motor power, such as a top speed of 70 - instead of 50 km/h. The freespin is up to 114 km/h, so ideal for - longer jumps where the tire is spinning up in the air. -

    - -

    - It also comes with a seat, pretty good jump- and power pads and - spiked pedals. Plus, a sturdy, albeit oddly placed and somewhat - short trolley handle, as well as a sturdy kickstand and - height-adjustable bright lights. It's waterproof, but not - submersible, and best of all, it's super easy to work with because - the device has a very modular design. The tire can theoretically - be removed with just 2 screws -

    - -

    - While all of this is true, many problems have unfortunately arisen - with this highly anticipated and hyped wheel. There were motor - problems with the first devices, which led to cut-offs and burned - the motherboard. Also, the slider design is very clumsy and gets - harder and harder to move over time. Many S22 buyers had to wait a - long time for replacement motors, such as upgrading the sliders - for 100 to 200 €. However, with the upgrades, it is currently the - best suspension unicycle on the market. (Until the Veteran Sherman - S goes on sale.) -

    -
    +
    + + +
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Size582L 330W 747H
    Wheel Circumference20 inches
    Pedal Height231 ± 26 mm
    Weight35 kg
    Suspension travel130 mm
    Suspension TypeOil Shock
    Suspension Adjustments (for suspension)Rebound, compression
    Free Spin114 km/h
    Top speed70 km/h
    Range at 30 km/h200 km
    Minimum range for heavy use70 km
    Max climb angle45°
    Max. payload120 kg
    Engine TypeHigh Speed
    Engine Power3,300 W
    Peak Power7,500 W
    Battery Size2,220 Wh
    Voltage126 V
    Max amps100 A
    BMSSmart BMS
    Battery cell typeLG 18600
    IP-Ratingnope
    AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
    Lights8 x 5 W adjustable headlights
    Default tiresKnobby
    Anti spin button?under control
    Display?dot matrix
    RGB?Taillight
    Pads?All inclusive
    Charge outlets?nope
    Charger: -
    Default load time:3.3 h
    Max Amps:10 A
    Fastest load time:100 minutes
    Load ports:2
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AttributeValue
    Size582L 330W 747H
    Wheel Circumference20 inches
    Pedal Height231 ± 26 mm
    Weight35 kg
    Suspension travel130 mm
    Suspension TypeOil Shock
    Suspension Adjustments (for suspension)Rebound, compression
    Free Spin114 km/h
    Top speed70 km/h
    Range at 30 km/h200 km
    Minimum range for heavy use70 km
    Max climb angle45°
    Max. payload120 kg
    Engine TypeHigh Speed
    Engine Power3,300 W
    Peak Power7,500 W
    Battery Size2,220 Wh
    Voltage126 V
    Max amps100 A
    BMSSmart BMS
    Battery cell typeLG 18600
    IP-Ratingnope
    AccessoriesPowerpads, Jumppads, Seat, Spiked Pedals
    Lights8 x 5 W adjustable headlights
    Default tiresKnobby
    Anti spin button?under control
    Display?dot matrix
    RGB?Taillight
    Pads?All inclusive
    Charge outlets?nope
    Charger: +
    Default load time:3.3 h
    Max Amps:10 A
    Fastest load time:100 minutes
    Load ports:2
    +
    ); } diff --git a/src/routes/en/index.tsx b/src/routes/en/index.tsx index 362a060..b39424d 100644 --- a/src/routes/en/index.tsx +++ b/src/routes/en/index.tsx @@ -1,14 +1,17 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; import { A, Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; import { lightMode } from "~/components/en/Navbar"; import "~/styles/start.scss"; function Introduction() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Introduction +
    @@ -24,40 +27,26 @@ function Introduction() { unicycles:

    -
    - -
    +

    From 0 auf 50 km/h in 3 s, 100 km/h top speed and 230 km range make these devices the ultimate sport.

    -
    - -
    +

    Meanwhile climbing 50° steep walls and taking MTB trails with ease.

    -
    - -
    +

    Taking every path and never get stuck in traffic again.

    -
    - -
    +

    But still being easy to carry and store just under your desk.

    -
    - -
    +

    Interested? Then take a deep dive into PEV's and EUC's:

    diff --git a/src/routes/en/manufacturers.tsx b/src/routes/en/manufacturers.tsx index 5fe4dad..9b4fc1e 100644 --- a/src/routes/en/manufacturers.tsx +++ b/src/routes/en/manufacturers.tsx @@ -1,19 +1,22 @@ import { Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/overview.scss"; function Manufacturers() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Manufacturers +
    {/* */} -
    +

    History and explanation of manufacturers

    There are/were many manufacturers of electric unicycles, only the @@ -25,10 +28,14 @@ function Manufacturers() {

    - Ninebot + Ninebot

    - - +
    + +
    +
    + +

    Ninebot is known to most as a sooter manufacturer, some may also know their electric shoes or Segway-like devices with short @@ -42,10 +49,14 @@ function Manufacturers() {

    - Inmotion + Inmotion

    - - +
    + +
    +
    + +

    Inmotion is the second largest manufacturer of those listed here. Also big in the standard scooter segment, Inmotion also has a large @@ -63,10 +74,14 @@ function Manufacturers() {

    - Kingsong + Kingsong

    - - +
    + +
    +
    + +

    Kingsong is very similar to Inmotion, only smaller and without the big scooter and e-bike market behind it. Quality and design were the @@ -83,10 +98,14 @@ function Manufacturers() {

    - Gotway/Begode + Gotway/Begode

    - - +
    + +
    +
    + +

    Gotway, or Begode as they call themselves today, is difficult to describe and classify. Many opinions and controversies. The company @@ -132,11 +151,14 @@ function Manufacturers() {

    - Leaperkim/Veteran{" "} - + Leaperkim/Veteran

    - - +
    + +
    +
    + +

    Veteran is the favorite for many. Comprised of ex-Gotway engineers and employees who disagreed with Gotway's decisions, Veteran diff --git a/src/routes/en/overview.tsx b/src/routes/en/overview.tsx index 95a8e4e..8eb7db6 100644 --- a/src/routes/en/overview.tsx +++ b/src/routes/en/overview.tsx @@ -1,13 +1,16 @@ import { Body, Title } from "solid-start"; +import AssetHandler from "~/components/Asset"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/overview.scss"; function Overview() { + const { FullscreenView, Asset } = AssetHandler(); return ( - + Introduction EUCs +

    @@ -17,7 +20,7 @@ function Overview() { */}
    -
    +

    Before you read:

    Here are a few things before you start to read.

    @@ -48,13 +51,15 @@ function Overview() { {/* */} -

    +

    What are EUCs

    - + +
    +
    +
    -

    EUC stands for ElectricUniCycle. In simplest terms it's a battery powered motor surrounded by a motorcycle tire, @@ -70,21 +75,14 @@ function Overview() { {/* */} -

    +

    Why ride a unicycle?

    - +
    - +

    @@ -170,14 +168,14 @@ function Overview() { {/* */} -

    +

    Technical functionality

    - +
    - +

    @@ -232,10 +230,10 @@ function Overview() {

    - +
    - +

    The motherboard consists of, among other things, the power @@ -273,10 +271,10 @@ function Overview() {

    - +
    - +

    The motor of a unicycle is a 3-phase hub motor, @@ -333,175 +331,179 @@ function Overview() { {/* */} -

    +

    Glossary and specification explanation

    -
    -

    - Tilt-back: The device's pedals tilt backwards - to slow the rider down. Used when the battery is low or when the - power demand is too high, to protect the electronics. -

    - -

    - Pedal Dip: The pedals dip forwards, the - device cannot maintain the requested power and the pedals suddenly - tilt forward (or backward under heavy braking). In most cases, - however, the pedals come up again immediately, so that the ride - can continue undisturbed (implies necessary skill). -

    - -

    - Pedal-angle: Angle in which the pedals are mounted to the - device, seen from the front view. A steeper angle provides more - grip when cornering but can also become uncomfortable for longer - rides. -

    - -

    - Spiked-pedals: Spikes on the pedals that - give shoes more grip. Similar to mountain bike pedals, there are - usually screw-in pointed metal pins that grip into the shoe to - prevent accidental slipping. It's used today instead of sandpaper, - as it offers an excellent grip even in wet and muddy conditions.{" "} - Example -

    - - -

    - Pads: parts made of plastic or foam that are - mounted on the side of the device, usually printed from TPU and - PLA and fastened with large, strong Velcro. They are necessary for - better control and handling, especially for heavy and fast - unicycles. They are divided into 2 types; many are combined - together in one set. -

    - - -

    - Power Pads: have contact with the shin and the calves, are - used for better acceleration and braking. Essential for heavy EUCs - with high pedals. -

    - -

    - Jump Pads: have contact with the foot and verse, used for - jumping and safety. In case of an unexpected bump in the road, - they will hold your foot, so you don't fall off the device. But - they might cause more injury in the case of a crash, because you - can't get off quick enough -

    - -

    - Wobbles: describes the unintentional wobbling of the device - at higher speeds. More on this here -

    -
    - -
    -

    - Trolley Handle: an extendable handle for - pushing the device, similar to a suitcase. -

    - - -

    - Kill-Switch: a button under the handle that shuts off the - motor. Ensures that the motor doesn't rev up when lifting. -

    - -

    - Cut-off /Cut-out: Sudden shutting off of the device while - riding, see chapter Cut-out. -

    - -

    - HS Motor: High Speed motor, see chapter{" "} - Motor. -

    - -

    - HT Motor: High Torque motor, see chapter{" "} - Motor. -

    - -

    - W: Watt, power specification, shows how much power the - device can hold continuously. 3,000 W corresponds to 4 hp (an - e-bike has a maximum of 250 W). Not to be confused with -

    - -

    - Peak Watt: Maximum power that the device can reach for a - very short time. -

    - -

    - Wh: Watt-hours, energy storage information, shows - how much energy the battery can store. 3,000 - Wh means the battery could give 3,000 W for over an hour, or 1,500 - W for 2 hours etc. -

    - -

    - BMS: stands for Battery Management System,{" "} - explained here -

    - -

    - Voltage sag: Voltage drop, the battery loses voltage for a - short period of time under high load, which increases the amps - flowing when the same power is requested. -

    - -

    - Freespin: Maximum spin speed the motor can reach when - lifting the device. Calculate minus 20 km/h to get approximately - the reachable top speed. -

    - -

    - 16 inch: describes the tire size, in this case 16 inches - (40 cm) in diameter. Small diameters are agile and have a quick - response, large diameters (up to 24 inches, 60 cm) feel heavy and - sluggish but are significantly more stable at speed. -

    - +

    - Charging Amps: The maximum amps that the device can - charge with. Most new devices charge with a maximum of 10 amps, - i.e., 10 A * 126 V = 1,260 watts. The charging time is - calculated as follows: + Tilt-back: The device's pedals tilt + backwards to slow the rider down. Used when the battery is low + or when the power demand is too high, to protect the + electronics.

    - - - - - - - - - - - - - - - - - - - - - -
    capacity÷ (volts×amps) =time
    3,300 Wh÷ (126 V×10 A) =2.6 h
    +

    + Pedal Dip: The pedals dip forwards, the + device cannot maintain the requested power and the pedals + suddenly tilt forward (or backward under heavy braking). In most + cases, however, the pedals come up again immediately, so that + the ride can continue undisturbed (implies necessary skill). +

    + +

    + Pedal-angle: Angle in which the pedals are mounted to the + device, seen from the front view. A steeper angle provides more + grip when cornering but can also become uncomfortable for longer + rides. +

    + +

    + Spiked-pedals: Spikes on the pedals + that give shoes more grip. Similar to mountain bike pedals, + there are usually screw-in pointed metal pins that grip into the + shoe to prevent accidental slipping. It's used today instead of + sandpaper, as it offers an excellent grip even in wet and muddy + conditions. Example +

    + + +

    + Pads: parts made of plastic or foam that are + mounted on the side of the device, usually printed from TPU and + PLA and fastened with large, strong Velcro. They are necessary + for better control and handling, especially for heavy and fast + unicycles. They are divided into 2 types; many are combined + together in one set. +

    + + +

    + Power Pads: have contact with the shin and the calves, + are used for better acceleration and braking. Essential for + heavy EUCs with high pedals. +

    + +

    + Jump Pads: have contact with the foot and verse, used for + jumping and safety. In case of an unexpected bump in the road, + they will hold your foot, so you don't fall off the device. But + they might cause more injury in the case of a crash, because you + can't get off quick enough +

    + +

    + Wobbles: describes the unintentional wobbling of the + device at higher speeds. More on this{" "} + here +

    +
    + +
    +

    + Trolley Handle: an extendable handle for + pushing the device, similar to a suitcase. +

    + + +

    + Kill-Switch: a button under the handle that shuts off the + motor. Ensures that the motor doesn't rev up when lifting. +

    + +

    + Cut-off /Cut-out: Sudden shutting off of the device while + riding, see chapter Cut-out. +

    + +

    + HS Motor: High Speed motor, see chapter{" "} + Motor. +

    + +

    + HT Motor: High Torque motor, see chapter{" "} + Motor. +

    + +

    + W: Watt, power specification, shows how much power the + device can hold continuously. 3,000 W corresponds to 4 hp (an + e-bike has a maximum of 250 W). Not to be confused with +

    + +

    + Peak Watt: Maximum power that the device can reach for a + very short time. +

    + +

    + Wh: Watt-hours, energy storage information, shows + how much energy the battery can store. 3,000 + Wh means the battery could give 3,000 W for over an hour, or + 1,500 W for 2 hours etc. +

    + +

    + BMS: stands for Battery Management System,{" "} + explained here +

    + +

    + Voltage sag: Voltage drop, the battery loses voltage for + a short period of time under high load, which increases the amps + flowing when the same power is requested. +

    + +

    + Freespin: Maximum spin speed the motor can reach when + lifting the device. Calculate minus 20 km/h to get approximately + the reachable top speed. +

    + +

    + 16 inch: describes the tire size, in this case 16 inches + (40 cm) in diameter. Small diameters are agile and have a quick + response, large diameters (up to 24 inches, 60 cm) feel heavy + and sluggish but are significantly more stable at speed. +

    + +
    +

    + Charging Amps: The maximum amps that the device can + charge with. Most new devices charge with a maximum of 10 + amps, i.e., 10 A * 126 V = 1,260 watts. The charging time is + calculated as follows: +

    + + + + + + + + + + + + + + + + + + + + + + +
    capacity÷ (volts×amps) =time
    3,300 Wh÷ (126 V×10 A) =2.6 h
    +
    @@ -509,7 +511,7 @@ function Overview() { {/* */} -
    +

    Safety

    The second most common question is usually whether you don't just @@ -524,13 +526,13 @@ function Overview() { {/* */} -

    +

    Safety gear

    - +
    - +

    Any EUC YouTuber and experienced rider will tell you that protective @@ -580,19 +582,17 @@ function Overview() { a Master Pro with 100 km/h.

    - +
    {/* */} -
    +

    Cut-offs

    - +

    Cut-offs are the largest source of accidents the rider is mostly not @@ -667,7 +667,7 @@ function Overview() { {/* */} -

    +

    Battery safety and fires

    First of all: in contrast to for example hoverboards, unicycles are @@ -682,11 +682,11 @@ function Overview() { , the worry is now also there for other brands.

    - + +
    +
    +
    -

    There are several causes, here are a few examples:

    @@ -740,22 +740,21 @@ function Overview() {

    - +

    Battery safety: A BMS is responsible for this. A Battery Management System has the task
    - -to protect the battery from excessive currents, + - to protect the battery from excessive currents,
    - -not to let it discharge below the specified voltage, + - not to let it discharge below the specified voltage,
    - -not to charge it beyond the maximum voltage, + - not to charge it beyond the maximum voltage,
    - -keep an eye on the temperature and -
    - -disconnect from the rest of the system in the event of a short - circuit. + - keep an eye on the temperature and +
    - disconnect from the rest of the system in the event of a + short circuit.

    Better BMS's, also known as smart BMS, can also actively adjust the @@ -778,17 +777,13 @@ function Overview() { {/* */} -

    +

    Ride style

    - +
    - +

    By far the greatest safety risk is the rider's riding style. Similar @@ -827,14 +822,10 @@ function Overview() { of incredible things.

    - +
    - +

    Accidents themselves are also worth mentioning here, because @@ -867,12 +858,10 @@ function Overview() { {/* */} -

    +

    Wobbles

    - +

    Wobbles are a problem not fully understood yet. Wobble describes the{" "} @@ -907,7 +896,7 @@ function Overview() { {/* */} -

    +

    Performance as a safety feature

    @@ -928,7 +917,7 @@ function Overview() { {/* */} -

    +

    Suspension as a safety feature

    Almost all new and announced devices have some form of built-in @@ -950,9 +939,9 @@ function Overview() { {/* */} -

    +

    Tires

    - +

    Tires can be divided into 3 categories:

    @@ -998,13 +987,15 @@ function Overview() { {/* */} -

    +

    History of EUCs

    - + +
    +
    +
    -

    The underlying technique came with the @@ -1026,7 +1017,7 @@ function Overview() {

    It took another 4 years for - + KingSong to be foundet and driving innovation as a competitor. @@ -1047,8 +1038,8 @@ function Overview() { thought into design and quality.

    -
    - +
    +

    @@ -1073,8 +1064,8 @@ function Overview() { both devices are changing the market forever.

    -
    - +
    +

    Inmotion and Kingsong both released the first devices with{" "} @@ -1122,49 +1113,60 @@ function Overview() { {/* */} -

    -

    List of devices

    +
    +

    List of devices

    Only the most relevant and well-known devices are listed here, a complete, sortable overview is available{" "} here.

    - +
    + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + +
    diff --git a/src/routes/soon.tsx b/src/routes/soon.tsx index 12bee1b..cead762 100644 --- a/src/routes/soon.tsx +++ b/src/routes/soon.tsx @@ -5,7 +5,7 @@ import "~/styles/overview.scss"; function soon() { const navigate = useNavigate(); return ( - + soon

    This side is not available yet.

    diff --git a/src/styles/devices.scss b/src/styles/devices.scss index 976d115..2148168 100644 --- a/src/styles/devices.scss +++ b/src/styles/devices.scss @@ -16,129 +16,110 @@ background: #555; } -[class*="col-"] { - float: right; -} - -#sidenavbar { - z-index: 1; - margin-left: -8px; - overflow: visible; - background-color: #121629; - position: fixed; - bottom: 0; - width: 100%; - height: 50px; - text-align: left; - display: flex; - justify-content: space-between; - - button { - all: unset; - margin: 5px auto; - color: #eff0f3; - padding-left: 10px; - padding-right: 10px; - text-decoration: none; - font-size: 1.4em; - border: none; - - &:hover { - background: #eff0f3; - color: #2a2a2a; - cursor: pointer; - } - } -} - -.main { - height: 100%; -} - -body { +body.devices { background-color: #16161a; color: #94a1b2; font-size: 1.4em; -} -h1 { - font-size: 2.5em; -} + // #sidenavbar { + // z-index: 1; + // margin-left: -8px; + // overflow: visible; + // background-color: #121629; + // position: fixed; + // bottom: 0; + // width: 100%; + // height: 50px; + // text-align: left; + // display: flex; + // justify-content: space-between; -h2 { - font-size: 2em; -} + // button { + // all: unset; + // margin: 5px auto; + // color: #eff0f3; + // padding-left: 10px; + // padding-right: 10px; + // text-decoration: none; + // font-size: 1.4em; + // border: none; -h3 { - font-size: 1.6em; - margin-left: 140px; -} + // &:hover { + // background: #eff0f3; + // color: #2a2a2a; + // cursor: pointer; + // } + // } + // } -p { - text-align: justify; - font-size: 0.875em; -} + .main { + height: 100%; + } -header { - text-align: center; -} + h1 { + font-size: 2.5em; + } -footer, -aside, -article { - text-align: center; - padding: 2%; - margin: 1.5%; -} + h2 { + font-size: 2em; + } -img { - width: 100%; - max-width: max-content; - padding: 16px; - height: auto; + h3 { + font-size: 1.6em; + margin-left: 140px; + } - display: block; -} + p { + text-align: justify; + font-size: 0.875em; + } -.col-1 { - width: 8.33%; -} -.col-2 { - width: 16.66%; -} -.col-3 { - width: 25%; -} -.col-4 { - width: 33.33%; -} -.col-5 { - width: 41.66%; -} -.col-6 { - width: 50%; -} -.col-7 { - width: 58.33%; -} -.col-8 { - width: 66.66%; -} -.col-9 { - width: 75%; -} -.col-10 { - width: 83.33%; -} -.col-11 { - width: 91.66%; -} -.col-12 { - width: 100%; -} + header { + text-align: center; + } -@media only screen and (max-width: 767px) { - [class*="col-"] { + footer, + aside, + article { + text-align: center; + } + + img { width: 100%; + max-width: max-content; + padding: 16px; + height: auto; + + display: block; + } + + .grid { + display: grid; + grid-template-columns: repeat(4, auto); + + .span-2 { + grid-column: span 2; + } + } + + table { + width: 100%; + border-collapse: collapse; + + td, + th { + border: 1px solid; + padding: 0.25rem; + } + + tbody td { + text-align: left; + } + } + + @media only screen and (max-width: 767px) { + // [class*="col-"] { + // width: 100%; + // } } } diff --git a/src/styles/global.scss b/src/styles/global.scss new file mode 100644 index 0000000..f4c039c --- /dev/null +++ b/src/styles/global.scss @@ -0,0 +1,194 @@ +body { + margin: 0; +} + +.fullscreen-asset { + position: fixed; + height: 100vh; + width: 100vw; + background-color: rgba(0, 0, 0, 0.8); + z-index: 10; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + &:not(.active) { + display: none; + } + + img, + video { + max-width: 80vw; + transform-origin: center; + transform: scale(var(--zoom)); + + &.active { + opacity: 0; + } + } + + img:not(.move), + video:not(.move) { + transition: transform-origin 1s; + } + + img.move, + video.move { + transform-origin: var(--x) var(--y); + } + + .controlls { + position: absolute; + top: 2rem; + right: 2rem; + display: flex; + flex-direction: column; + gap: 1rem; + + button { + padding: 0.5rem 0.6rem; + + svg { + height: 2rem; + width: 2rem; + } + } + } +} + +.menu { + position: absolute; + top: 2rem; + left: 2rem; + padding: 0.5rem 0.6rem; + + svg { + height: 2rem; + width: 2rem; + } +} + +article > div { + clear: both; +} + +.righties { + margin-top: -8px; + margin-left: 24px; + width: 33%; + float: right; + clear: both; +} + +.lefties { + margin-top: -8px; + margin-right: 24px; + width: 33%; + float: left; + display: none; +} + +#navbar { + z-index: 1; + overflow-y: auto; + overflow-x: hidden; + background-color: #121629; + position: fixed; + top: 0; + height: 100%; + margin-left: -8px; + padding: 1rem; + + button { + border-radius: 16px; + scale: 0.9; + + &:hover { + scale: 1.06; + } + } + + a { + float: none; + display: block; + color: #eff0f3; + text-align: left; + padding: 8px 8px; + text-decoration: none; + font-size: 0.9em; + + &:hover { + background: #eff0f3; + color: #121629; + cursor: pointer; + } + } +} + +body.light-mode { + background-color: #eff0f3; + color: #2a2a2a; + + .lefties, + .righties { + > * { + box-shadow: #eff0f3 0 0 1rem 1rem; + } + } + + article p a { + text-align: justify; + text-decoration: underline; + color: #2a2a2a; + } + b { + color: #2a2a2a; + + a { + color: #2a2a2a; + } + } + h3 { + color: #2a2a2a; + } + h1 { + color: #2a2a2a; + } + h2 { + color: #2a2a2a; + } + #navbar { + background-color: #b8c1ec; + + a { + color: black; + } + } + // #sidenavbar { + // background-color: #b8c1ec; + + // a { + // color: black; + // } + // } + button { + background-color: #b8c1ec; + color: black; + } + + /*Raster Einstellungen*/ + .raster > a { + background-color: #eff0f3; + } + a { + color: #2a2a2a; + } +} + +@media (min-width: 960px) { + article { + max-width: 80vw; + margin: auto; + } +} diff --git a/src/styles/overview.scss b/src/styles/overview.scss index 03064a4..7093cc9 100644 --- a/src/styles/overview.scss +++ b/src/styles/overview.scss @@ -21,399 +21,221 @@ background: #555; } -[class*="col-"] { - float: left; -} -.row { - clear: both; -} +body.overview { + background-color: #16161a; + color: #94a1b2; + text-align: center; + font-size: 1.4em; -#navbar { - z-index: 1; - overflow-y: auto; - overflow-x: hidden; - background-color: #121629; - position: fixed; - top: 0; - height: 100%; - margin-left: -8px; - - button { - border-radius: 16px; - scale: 0.9; - - &:hover { - scale: 1.06; - } + .main { + height: 100%; } - a { - float: none; - display: block; + h1 { + font-size: 2.5em; + color: #fffffe; + } + h2 { + font-size: 2em; + color: #fffffe; + } + h3 { + font-size: 1.6em; + clear: both; + color: #fffffe; + } + p { + text-align: justify; + font-size: 0.875em; + } + header { + text-align: center; + } + + footer, + aside, + article { + text-align: center; + } + > img { + width: 100%; + max-width: max-content; + height: auto; + } + + button { + background-color: #121629; color: #eff0f3; text-align: left; padding: 8px 8px; text-decoration: none; font-size: 0.9em; - - &:hover { - background: #eff0f3; - color: #121629; - cursor: pointer; - } } -} -#sidenavbar { - z-index: 1; - margin-left: -8px; - overflow: visible; - background-color: #121629; - position: fixed; - bottom: 0; - width: 100%; - height: 50px; - text-align: left; - display: flex; - justify-content: space-between; - - button { - all: unset; - margin: 5px auto; - color: #eff0f3; - padding-left: 10px; - padding-right: 10px; + p a { + text-align: justify; text-decoration: none; - font-size: 1.4em; - border: none; + color: #91c4ff; + border-bottom: 1px solid navy; &:hover { - background: #eff0f3; - color: #2a2a2a; - cursor: pointer; + border-bottom: 1px solid #91c4ff; } } -} - -.main { - height: 100%; -} - -body { - background-color: #16161a; - color: #94a1b2; - text-align: center; - font-size: 1.4em; -} -h1 { - font-size: 2.5em; - color: #fffffe; -} -h2 { - font-size: 2em; - color: #fffffe; -} -h3 { - font-size: 1.6em; - clear: both; - color: #fffffe; -} -p { - text-align: justify; - font-size: 0.875em; -} -header { - text-align: center; - padding-left: 140px; -} - -footer, -aside, -article { - text-align: center; - padding-left: 15px; - margin: 1.5%; - margin-left: 145px; -} -img { - width: 100%; - max-width: max-content; - height: auto; - margin-top: -8px; -} - -button { - background-color: #121629; - color: #eff0f3; - text-align: left; - padding: 8px 8px; - text-decoration: none; - font-size: 0.9em; -} - -p a { - text-align: justify; - text-decoration: none; - color: #91c4ff; - border-bottom: 1px solid navy; - - &:hover { - border-bottom: 1px solid #91c4ff; + .svg-inline--fa, + b { + color: #91c4ff; } -} -.svg-inline--fa, -b { - color: #91c4ff; -} -.righties { - margin: 0 2%; - margin-right: 0%; - padding: 0%; - width: 33%; - float: right; - transition: width 1.5s; - clear: both; - - &:hover { - width: 50%; + #vcutout { + width: 25%; } -} - -.lefties { - margin-right: 20px; - width: 33%; - height: 100%; - float: left; - transition: width 1.5s; - display: none; - - &:hover { - width: 50%; + #vcutout:hover { + width: 30%; } -} -#vcutout { - width: 25%; -} -#vcutout:hover { - width: 30%; -} - -.hidden { - /*position:absolute; + .hidden { + /*position:absolute; transform:translate(-50%,-50%); height:200px; width:200px; */ - float: left; - padding: 2%; - padding-left: 0%; - display: none; -} -/*wenn hover über text, zeige bild*/ -.imghover:hover + .hidden { - display: block; -} - -.light-mode { - background-color: #eff0f3; - color: #2a2a2a; - - article p a { - text-align: justify; - text-decoration: underline; - color: #2a2a2a; + float: left; + padding: 2%; + padding-left: 0%; + display: none; } - b { - color: #2a2a2a; - - a { - color: #2a2a2a; - } - } - h3 { - color: #2a2a2a; - } - h1 { - color: #2a2a2a; - } - h2 { - color: #2a2a2a; - } - #navbar { - background-color: #b8c1ec; - - a { - color: black; - } - } - #sidenavbar { - background-color: #b8c1ec; - - a { - color: black; - } - } - button { - background-color: #b8c1ec; - color: black; + /*wenn hover über text, zeige bild*/ + .imghover:hover + .hidden { + display: block; } - /*Raster Einstellungen*/ - .raster { - background-color: #eff0f3; - } a { - color: #2a2a2a; - } -} -a { - display: inline; - color: rgb(225, 223, 210); + display: inline; + color: rgb(225, 223, 210); - svg.left { - margin-right: 2px; - } - svg.right { - margin-left: 6px; - } - div img, - div video { - border-radius: 10%; - max-width: 260px; - max-height: 290px; - padding-top: 8px; - bottom: 0; - } - div h3 { - margin: 0.5%; - } -} -.raster { - width: 300px; - height: 350px; - float: left; - padding: 1%; - padding-top: 0; - border: #555; - border-width: 2px; - border-style: solid; - border-radius: 10%; - scale: 0.9; - font-size: 0.9em; - - &:hover { - scale: 1.06; - - a div img { - width: 110%; + svg.left { + margin-right: 2px; + } + svg.right { + margin-left: 6px; + } + div img, + div video { + border-radius: 10%; + max-width: 260px; + max-height: 290px; + padding-top: 8px; + bottom: 0; + } + div h3 { + margin: 0.5%; } } -} + .raster { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; -.logos { - height: 1.6em; - margin-bottom: -18px; -} + > a { + border: #555; + padding: 2rem 1rem; + border-width: 2px; + border-style: solid; + border-radius: 2rem; + display: flex; + flex-direction: column; + gap: 1rem; -.col-1 { - width: 8.33%; -} -.col-2 { - width: 12.5%; -} -.col-3 { - width: 25%; -} -.col-4 { - width: 33.33%; -} -.col-5 { - width: 41.66%; -} -.col-6 { - width: 50%; -} -.col-7 { - width: 58.33%; -} -.col-8 { - width: 66.66%; -} -.col-9 { - width: 75%; -} -.col-10 { - width: 83.33%; -} -.col-11 { - width: 91.66%; -} -.col-12 { - width: 100%; -} + transition: scale 0.5s; -@media (max-width: 767px) /*unter handy größe*/ { - header, - article, - img, - p, - h1, - h2, - h3 { - margin-left: 0%; - padding-left: 0; - } - [class*="col-"] { - width: 100%; - } - #navbar { - visibility: hidden; - } - #sidenavbar { - visibility: visible; - } - /*.raster {width: calc(100%/2);}*/ - .righties { - width: 100%; + &:hover { + scale: 1.06; + } - &:hover { + h3 { + font-size: 1.5rem; + margin: 0; + } + + img, + video { + height: 100%; + object-fit: cover; + border-radius: 1rem; + } + } + } + + .logos { + height: 1.6em; + margin-bottom: -18px; + } + + .table-half { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 2rem; + } + + @media (max-width: 767px) /*unter handy größe*/ { + header, + article, + img, + p, + h1, + h2, + h3 { + margin-left: 0%; + padding-left: 0; + } + // [class*="col-"] { + // width: 100%; + // } + #navbar { + visibility: hidden; + } + // #sidenavbar { + // visibility: visible; + // } + /*.raster {width: calc(100%/2);}*/ + .righties { width: 100%; + + &:hover { + width: 100%; + } } } -} -@media only screen and (min-width: 767px) /*über handy größe*/ { - #navbar { - visibility: visible; + @media only screen and (min-width: 767px) /*über handy größe*/ { + #navbar { + visibility: visible; + } + // #sidenavbar { + // visibility: hidden; + // } + /*.raster {width: calc(100%/5);}*/ } - #sidenavbar { - visibility: hidden; - } - /*.raster {width: calc(100%/5);}*/ - div div button { - visibility: hidden; - } -} -/*@media screen and (min-width:1200px) {.raster {width: calc(100%/6);}} + /*@media screen and (min-width:1200px) {.raster {width: calc(100%/6);}} @media screen and (min-width:1500px) {.raster {width: calc(100%/8);}}*/ -@media screen and (min-width: 1900px) /*HD Fullscreen only*/ { - .lefties { - display: block; - width: 27%; + @media screen and (min-width: 1900px) /*HD Fullscreen only*/ { + .lefties { + display: block; + width: 27%; + } + .righties { + width: 27%; + } } - .righties { - width: 27%; - } -} -@media screen and (min-width: 2250px) /*ab 2000px nicht weiter skalieren*/ { - * { - width: 1950px; - margin-left: auto; - margin-right: auto; + @media screen and (min-width: 2250px) /*ab 2000px nicht weiter skalieren*/ { + * { + width: 1950px; + margin-left: auto; + margin-right: auto; + } } } diff --git a/src/styles/start.scss b/src/styles/start.scss index 20af10a..d78e84e 100644 --- a/src/styles/start.scss +++ b/src/styles/start.scss @@ -21,91 +21,96 @@ background: #555; } -[class*="col-"] { - float: left; -} -.row { - clear: both; -} - -body { +body.start { background-color: #0f0e17; color: #a7a9be; text-align: left; font-size: 1.4em; - max-width: 900px; + max-width: 1200px; margin: auto; -} + display: flex; + align-items: center; + flex-direction: column; -p { - padding: 10px; -} - -#cover { - opacity: 60%; -} - -.container { - position: relative; - text-align: center; - color: white; -} -.centered { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} - -#gone { - display: none; - color: #fffffe; - text-align: center; -} - -#MoreButton { - margin: auto; - position: relative; - height: auto; - max-height: max-content; - width: auto; - max-width: max-content; - background-color: #ff8906; - border-radius: 5px; - color: #fffffe; - font-size: 1.2em; -} -a { - text-decoration: none; - - &:hover { - scale: 1.06; + > img, + > video { + max-height: 60vh; } - div p { - text-align: center; - padding: 20px; + .row { + clear: both; } -} -.righties { - padding-bottom: 30px; - padding-top: 20px; - width: 100%; - clear: both; -} + p { + padding: 10px; + } -@media (max-width: 767px) /*unter handy größe*/ { - .centered { - display: none; - } - #gone { - display: block; - } #cover { - opacity: 100%; + opacity: 60%; } + + .container { + position: relative; + text-align: center; + color: white; + } + .centered { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + #gone { + display: none; + color: #fffffe; + text-align: center; + } + + #MoreButton { + margin: auto; + position: relative; + height: auto; + max-height: max-content; + width: auto; + max-width: max-content; + background-color: #ff8906; + border-radius: 5px; + color: #fffffe; + font-size: 1.2em; + } + a { + text-decoration: none; + + &:hover { + scale: 1.06; + } + + div p { + text-align: center; + padding: 20px; + } + } + .righties { + padding-bottom: 30px; + padding-top: 20px; width: 100%; + clear: both; + } + + @media (max-width: 767px) /*unter handy größe*/ { + .centered { + display: none; + } + #gone { + display: block; + } + #cover { + opacity: 100%; + } + .righties { + width: 100%; + } } } From fad746ceec3b508be124ce275cf81e1cf0c43f95 Mon Sep 17 00:00:00 2001 From: aronmal Date: Sat, 9 Dec 2023 19:12:46 +0100 Subject: [PATCH 30/36] Chore: Accessibility --- src/components/Asset.tsx | 29 +++++++++++++++++++++++++++-- src/components/de/Navbar.tsx | 15 ++++++++++++++- src/components/en/Navbar.tsx | 15 ++++++++++++++- src/styles/global.scss | 27 ++++++++++++++++++++++----- src/styles/overview.scss | 30 ------------------------------ 5 files changed, 77 insertions(+), 39 deletions(-) diff --git a/src/components/Asset.tsx b/src/components/Asset.tsx index 060d464..6e39818 100644 --- a/src/components/Asset.tsx +++ b/src/components/Asset.tsx @@ -13,6 +13,7 @@ import { Switch, createEffect, createSignal, + onCleanup, } from "solid-js"; import { FontAwesomeIcon } from "./FontAwesomeIcon"; @@ -71,9 +72,33 @@ function AssetHandler() { setControlls(false); }); + const handleKeyDown = (event: KeyboardEvent) => { + if (!active() || "Escape" != event.key) return; + event.preventDefault(); + setActive(""); + }; + + const handleWheel = (event: WheelEvent) => { + if (!active()) return; + event.preventDefault(); + if (event.deltaY > 0 && !(zoomLevel() <= 0)) setZoomLevel((e) => e - 1); + else if (event.deltaY < 0 && !(zoomLevel() >= 4)) + setZoomLevel((e) => e + 1); + }; + + createEffect(() => { + window.addEventListener("keydown", handleKeyDown); + window.addEventListener("wheel", handleWheel, { passive: false }); + onCleanup(() => { + window.removeEventListener("keydown", handleKeyDown); + window.removeEventListener("wheel", handleWheel); + }); + }); + return (
    e.target === wrapperRef && setActive("")} onMouseMove={handleMouseMove} classList={{ "fullscreen-asset": true, active: !!active() }} > @@ -105,14 +130,14 @@ function AssetHandler() { - - +
    + + + +
    - - +
    + + + +
    +
    + ); } diff --git a/src/routes/de/KSS22.tsx b/src/routes/de/KSS22.tsx index 8f83836..ff36fae 100644 --- a/src/routes/de/KSS22.tsx +++ b/src/routes/de/KSS22.tsx @@ -1,12 +1,13 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/devices.scss"; function KSS22() { const { FullscreenView, Asset } = AssetHandler(); return ( - + KS S22 @@ -215,7 +216,7 @@ function KSS22() {
    - + ); } diff --git a/src/routes/de/imprint.tsx b/src/routes/de/imprint.tsx index 6d37a3c..8146253 100644 --- a/src/routes/de/imprint.tsx +++ b/src/routes/de/imprint.tsx @@ -1,14 +1,20 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/overview.scss"; function imprint() { return ( - + Impressum -
    +

    Impressum

    Verantwortlich für den Inhalt gemäß § 18 Abs. 1 MStV:

    @@ -42,7 +48,7 @@ function imprint() { Inhalt verantwortlich ist.

    - + ); } diff --git a/src/routes/de/index.tsx b/src/routes/de/index.tsx index 8cf7087..e08134d 100644 --- a/src/routes/de/index.tsx +++ b/src/routes/de/index.tsx @@ -1,15 +1,16 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; -import { A, Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; +import Wrapper from "~/components/Wrapper"; import { lightMode } from "~/components/de/Navbar"; import "~/styles/start.scss"; function Introduction() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Einführung @@ -49,30 +50,30 @@ function Introduction() {

    Interessiert? Dann tauche in die Welt der PEV's und EUC's ein:

    - +

    Ich will alles darüber lesen!

    -
    + - +

    Mir reichen Videos

    -
    + - +

    Switch to English

    -
    - + +
    ); } diff --git a/src/routes/de/manufacturers.tsx b/src/routes/de/manufacturers.tsx index cdee23f..ca0cd19 100644 --- a/src/routes/de/manufacturers.tsx +++ b/src/routes/de/manufacturers.tsx @@ -1,13 +1,14 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import R from "~/components/Reference"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/de/Navbar"; import "~/styles/overview.scss"; function Manufacturers() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Hersteller @@ -204,7 +205,7 @@ function Manufacturers() {

    - + ); } diff --git a/src/routes/de/overview.tsx b/src/routes/de/overview.tsx index 9afc74f..a05b433 100644 --- a/src/routes/de/overview.tsx +++ b/src/routes/de/overview.tsx @@ -1,14 +1,15 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/de/Navbar"; import "~/styles/overview.scss"; function overview() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Einführung EUCs @@ -1159,7 +1160,7 @@ function overview() {
    - + ); } diff --git a/src/routes/en/KSS22.tsx b/src/routes/en/KSS22.tsx index 86bec39..1e5e915 100644 --- a/src/routes/en/KSS22.tsx +++ b/src/routes/en/KSS22.tsx @@ -1,12 +1,13 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/devices.scss"; function KSS22() { const { FullscreenView, Asset } = AssetHandler(); return ( - + KS S22 @@ -213,7 +214,7 @@ function KSS22() { - + ); } diff --git a/src/routes/en/index.tsx b/src/routes/en/index.tsx index b39424d..341d9a8 100644 --- a/src/routes/en/index.tsx +++ b/src/routes/en/index.tsx @@ -1,15 +1,16 @@ import { faYoutube } from "@fortawesome/free-brands-svg-icons"; import { faBookOpen, faGlobe } from "@fortawesome/pro-regular-svg-icons"; -import { A, Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import { FontAwesomeIcon } from "~/components/FontAwesomeIcon"; +import Wrapper from "~/components/Wrapper"; import { lightMode } from "~/components/en/Navbar"; import "~/styles/start.scss"; function Introduction() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Introduction @@ -50,31 +51,31 @@ function Introduction() {

    Interested? Then take a deep dive into PEV's and EUC's:

    - +

    I want to read everything about it!{" "}

    -
    + - +

    Na, videos are just fine

    -
    + - +

    Wechsel zu Deutsch

    -
    - + +
    ); } diff --git a/src/routes/en/manufacturers.tsx b/src/routes/en/manufacturers.tsx index 9b4fc1e..688f437 100644 --- a/src/routes/en/manufacturers.tsx +++ b/src/routes/en/manufacturers.tsx @@ -1,13 +1,14 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import R from "~/components/Reference"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/overview.scss"; function Manufacturers() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Manufacturers @@ -195,7 +196,7 @@ function Manufacturers() {

    - + ); } diff --git a/src/routes/en/overview.tsx b/src/routes/en/overview.tsx index 8eb7db6..f054579 100644 --- a/src/routes/en/overview.tsx +++ b/src/routes/en/overview.tsx @@ -1,14 +1,15 @@ -import { Body, Title } from "solid-start"; +import { Title } from "@solidjs/meta"; import AssetHandler from "~/components/Asset"; import DeviceTile from "~/components/DeviceTile"; import R from "~/components/Reference"; +import Wrapper from "~/components/Wrapper"; import Navbar, { lightMode } from "~/components/en/Navbar"; import "~/styles/overview.scss"; function Overview() { const { FullscreenView, Asset } = AssetHandler(); return ( - + Introduction EUCs @@ -1170,7 +1171,7 @@ function Overview() {