diff --git a/.gitignore b/.gitignore index b930cf1..8b59381 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ src/permissions.ts # typescript *.tsbuildinfo next-env.d.ts + +# Renogare font, until further licensing agreement +public/fonts/Renogare/Renogare* +# Celeste assets (ripped) +public/assets/celeste/ \ No newline at end of file diff --git a/openapi.yaml b/openapi.yaml new file mode 100644 index 0000000..dbaff88 --- /dev/null +++ b/openapi.yaml @@ -0,0 +1,107 @@ +--- +openapi: 3.1.0 +tags: + - name: clan + description: "Clan operations" + - name: character + description: "Character operations" + - name: view + description: "Passive operations" + - name: create + description: "Constructive operations" + - name: edit + description: "Additive operations" + - name: delete + description: "Destructive operations" + - name: bulk + description: "Bulk operations" +info: + title: TrollCall API + version: 2.0.0 + contact: + name: MeowcaTheoRange + url: https://me.trollcall.xyz/ + description: Blah blah blah. +servers: + - url: https://trollcall.xyz/api + description: API server +paths: + "/clan": + post: + tags: + - clan + - create + description: Create a Clan. + operationId: createClan + responses: + "200": + description: Clan created successfully + "400": + description: ValidationError + "409": + description: Clan with name already exists + "503": + description: Database unavaliable + "/clan/...": + get: + tags: + - clan + - view + - bulk + description: View all Clans. + operationId: getManyClans + responses: + "200": + description: Array of Clans + "404": + description: Clans/page specified does not exist + "/clan/.../{page}": + parameters: + - name: page + in: path + required: true + description: Page offset + schema: + type: number + get: + tags: + - clan + - view + - bulk + description: View all Clans at page offset. + operationId: getManyClansWithPage + responses: + "200": + description: Array of Clans + "404": + description: Clans/page specified does not exist + "/clan/{clan}": + parameters: + - name: clan + in: path + description: Name of clan to view + required: true + schema: + type: string + get: + tags: + - clan + - view + description: View specified Clan. + operationId: getClan + responses: + "200": + description: Clan + "404": + description: Clan specified does not exist + put: + tags: + - clan + - edit + description: Edit specified Clan. + operationId: editClan + responses: + "200": + description: Clan + "404": + description: Clan specified does not exist diff --git a/package-lock.json b/package-lock.json index 479a758..1eda30e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "body-parser": "^1.20.2", "cookie": "^0.5.0", "cookie-parser": "^1.4.6", + "cookies-next": "^3.0.0", "crypto-js": "^4.1.1", "dotenv": "^16.3.0", "express": "^4.18.2", @@ -755,6 +756,34 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/cookies-next": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cookies-next/-/cookies-next-3.0.0.tgz", + "integrity": "sha512-VaSrsjQJ8yHnGAGulV9zJxBr7hrKJ/O2mo87evsGIMF7XvJI3AJNguevotx0Gek1MMMBkZvZNWu2JueSNoSKEQ==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/node": "^16.10.2", + "cookie": "^0.4.0" + } + }, + "node_modules/cookies-next/node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/cookies-next/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" + }, + "node_modules/cookies-next/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/crypto-js": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", diff --git a/package.json b/package.json index 310732c..8c5673c 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "body-parser": "^1.20.2", "cookie": "^0.5.0", "cookie-parser": "^1.4.6", + "cookies-next": "^3.0.0", "crypto-js": "^4.1.1", "dotenv": "^16.3.0", "express": "^4.18.2", diff --git a/public/assets/404/smash.webp b/public/assets/404/smash.webp new file mode 100644 index 0000000..001ed32 Binary files /dev/null and b/public/assets/404/smash.webp differ diff --git a/public/assets/404/stairs.webp b/public/assets/404/stairs.webp new file mode 100644 index 0000000..3607dae Binary files /dev/null and b/public/assets/404/stairs.webp differ diff --git a/public/assets/aspect/Blood.svg b/public/assets/aspect/Blood.svg new file mode 100644 index 0000000..97caea7 --- /dev/null +++ b/public/assets/aspect/Blood.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Breath.svg b/public/assets/aspect/Breath.svg new file mode 100644 index 0000000..fb7177c --- /dev/null +++ b/public/assets/aspect/Breath.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Doom.svg b/public/assets/aspect/Doom.svg new file mode 100644 index 0000000..8756106 --- /dev/null +++ b/public/assets/aspect/Doom.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Heart.svg b/public/assets/aspect/Heart.svg new file mode 100644 index 0000000..a18728b --- /dev/null +++ b/public/assets/aspect/Heart.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Hope.svg b/public/assets/aspect/Hope.svg new file mode 100644 index 0000000..a6997ed --- /dev/null +++ b/public/assets/aspect/Hope.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Life.svg b/public/assets/aspect/Life.svg new file mode 100644 index 0000000..8c1949a --- /dev/null +++ b/public/assets/aspect/Life.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Light.svg b/public/assets/aspect/Light.svg new file mode 100644 index 0000000..4481bf5 --- /dev/null +++ b/public/assets/aspect/Light.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Mind.svg b/public/assets/aspect/Mind.svg new file mode 100644 index 0000000..e08f4f8 --- /dev/null +++ b/public/assets/aspect/Mind.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Rage.svg b/public/assets/aspect/Rage.svg new file mode 100644 index 0000000..8f82d25 --- /dev/null +++ b/public/assets/aspect/Rage.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Space.svg b/public/assets/aspect/Space.svg new file mode 100644 index 0000000..46448ff --- /dev/null +++ b/public/assets/aspect/Space.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Time.svg b/public/assets/aspect/Time.svg new file mode 100644 index 0000000..40adc37 --- /dev/null +++ b/public/assets/aspect/Time.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/aspect/Void.svg b/public/assets/aspect/Void.svg new file mode 100644 index 0000000..370e5b5 --- /dev/null +++ b/public/assets/aspect/Void.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/fonts/FlowCircular-Regular.ttf b/public/assets/fonts/FlowCircular-Regular.ttf new file mode 100644 index 0000000..7e0cc8a Binary files /dev/null and b/public/assets/fonts/FlowCircular-Regular.ttf differ diff --git a/public/assets/fonts/Material.woff2 b/public/assets/fonts/Material.woff2 new file mode 100644 index 0000000..6c77ce8 Binary files /dev/null and b/public/assets/fonts/Material.woff2 differ diff --git a/public/assets/fonts/SpaceGrotesk.ttf b/public/assets/fonts/SpaceGrotesk.ttf new file mode 100644 index 0000000..b54a196 Binary files /dev/null and b/public/assets/fonts/SpaceGrotesk.ttf differ diff --git a/public/assets/fonts/TrollCallDisplay-Regular.otf b/public/assets/fonts/TrollCallDisplay-Regular.otf new file mode 100644 index 0000000..8574cbd Binary files /dev/null and b/public/assets/fonts/TrollCallDisplay-Regular.otf differ diff --git a/public/assets/fonts/TrollCallDisplay-Regular.woff b/public/assets/fonts/TrollCallDisplay-Regular.woff new file mode 100644 index 0000000..eb7bf28 Binary files /dev/null and b/public/assets/fonts/TrollCallDisplay-Regular.woff differ diff --git a/public/assets/fonts/TrollCallDisplay-Regular.woff2 b/public/assets/fonts/TrollCallDisplay-Regular.woff2 new file mode 100644 index 0000000..66b5950 Binary files /dev/null and b/public/assets/fonts/TrollCallDisplay-Regular.woff2 differ diff --git a/public/assets/hiveswap/aspects.png b/public/assets/hiveswap/aspects.png new file mode 100644 index 0000000..9afeac7 Binary files /dev/null and b/public/assets/hiveswap/aspects.png differ diff --git a/public/assets/hiveswap/signs.png b/public/assets/hiveswap/signs.png new file mode 100644 index 0000000..5101716 Binary files /dev/null and b/public/assets/hiveswap/signs.png differ diff --git a/public/assets/hiveswap/sway.png b/public/assets/hiveswap/sway.png new file mode 100644 index 0000000..bc2eccb Binary files /dev/null and b/public/assets/hiveswap/sway.png differ diff --git a/public/assets/pattern/pattern.png b/public/assets/pattern/pattern.png new file mode 100644 index 0000000..94b344d Binary files /dev/null and b/public/assets/pattern/pattern.png differ diff --git a/public/assets/pattern/pattern_inv.png b/public/assets/pattern/pattern_inv.png new file mode 100644 index 0000000..3dddfdb Binary files /dev/null and b/public/assets/pattern/pattern_inv.png differ diff --git a/public/assets/signs/Blue/Scorcen.svg b/public/assets/signs/Blue/Scorcen.svg new file mode 100644 index 0000000..e8e6773 --- /dev/null +++ b/public/assets/signs/Blue/Scorcen.svg @@ -0,0 +1,66 @@ + + + + + Scorcen + + + + + + image/svg+xml + + Scorcen + + + + + + + diff --git a/public/assets/signs/Blue/Scorcer.svg b/public/assets/signs/Blue/Scorcer.svg new file mode 100644 index 0000000..1d31e9c --- /dev/null +++ b/public/assets/signs/Blue/Scorcer.svg @@ -0,0 +1,66 @@ + + + + + Scorcer + + + + + + image/svg+xml + + Scorcer + + + + + + + diff --git a/public/assets/signs/Blue/Scorga.svg b/public/assets/signs/Blue/Scorga.svg new file mode 100644 index 0000000..cce7fc9 --- /dev/null +++ b/public/assets/signs/Blue/Scorga.svg @@ -0,0 +1,67 @@ + + + + + Scorga + + + + + + image/svg+xml + + Scorga + + + + + + + diff --git a/public/assets/signs/Blue/Scorgo.svg b/public/assets/signs/Blue/Scorgo.svg new file mode 100644 index 0000000..e7b1857 --- /dev/null +++ b/public/assets/signs/Blue/Scorgo.svg @@ -0,0 +1,66 @@ + + + + + Scorgo + + + + + + image/svg+xml + + Scorgo + + + + + + + diff --git a/public/assets/signs/Blue/Scoriborn.svg b/public/assets/signs/Blue/Scoriborn.svg new file mode 100644 index 0000000..606c59c --- /dev/null +++ b/public/assets/signs/Blue/Scoriborn.svg @@ -0,0 +1,66 @@ + + + + + Scoriborn + + + + + + image/svg+xml + + Scoriborn + + + + + + + diff --git a/public/assets/signs/Blue/Scoricorn.svg b/public/assets/signs/Blue/Scoricorn.svg new file mode 100644 index 0000000..5a552c2 --- /dev/null +++ b/public/assets/signs/Blue/Scoricorn.svg @@ -0,0 +1,66 @@ + + + + + Scoricorn + + + + + + image/svg+xml + + Scoricorn + + + + + + + diff --git a/public/assets/signs/Blue/Scories.svg b/public/assets/signs/Blue/Scories.svg new file mode 100644 index 0000000..b32a9c1 --- /dev/null +++ b/public/assets/signs/Blue/Scories.svg @@ -0,0 +1,66 @@ + + + + + Scories + + + + + + image/svg+xml + + Scories + + + + + + + diff --git a/public/assets/signs/Blue/Scorist.svg b/public/assets/signs/Blue/Scorist.svg new file mode 100644 index 0000000..aa25a79 --- /dev/null +++ b/public/assets/signs/Blue/Scorist.svg @@ -0,0 +1,67 @@ + + + + + Scorist + + + + + + image/svg+xml + + Scorist + + + + + + + diff --git a/public/assets/signs/Blue/Scorittanius.svg b/public/assets/signs/Blue/Scorittanius.svg new file mode 100644 index 0000000..672d1c0 --- /dev/null +++ b/public/assets/signs/Blue/Scorittanius.svg @@ -0,0 +1,67 @@ + + + + + Scorittanius + + + + + + image/svg+xml + + Scorittanius + + + + + + + diff --git a/public/assets/signs/Blue/Scorittarius.svg b/public/assets/signs/Blue/Scorittarius.svg new file mode 100644 index 0000000..b4a7334 --- /dev/null +++ b/public/assets/signs/Blue/Scorittarius.svg @@ -0,0 +1,66 @@ + + + + + Scorittarius + + + + + + image/svg+xml + + Scorittarius + + + + + + + diff --git a/public/assets/signs/Blue/Scorlo.svg b/public/assets/signs/Blue/Scorlo.svg new file mode 100644 index 0000000..3838b63 --- /dev/null +++ b/public/assets/signs/Blue/Scorlo.svg @@ -0,0 +1,67 @@ + + + + + Scorlo + + + + + + image/svg+xml + + Scorlo + + + + + + + diff --git a/public/assets/signs/Blue/Scormini.svg b/public/assets/signs/Blue/Scormini.svg new file mode 100644 index 0000000..5295663 --- /dev/null +++ b/public/assets/signs/Blue/Scormini.svg @@ -0,0 +1,66 @@ + + + + + Scormini + + + + + + image/svg+xml + + Scormini + + + + + + + diff --git a/public/assets/signs/Blue/Scormino.svg b/public/assets/signs/Blue/Scormino.svg new file mode 100644 index 0000000..153761c --- /dev/null +++ b/public/assets/signs/Blue/Scormino.svg @@ -0,0 +1,66 @@ + + + + + Scormino + + + + + + image/svg+xml + + Scormino + + + + + + + diff --git a/public/assets/signs/Blue/Scornius.svg b/public/assets/signs/Blue/Scornius.svg new file mode 100644 index 0000000..e6969e1 --- /dev/null +++ b/public/assets/signs/Blue/Scornius.svg @@ -0,0 +1,67 @@ + + + + + Scornius + + + + + + image/svg+xml + + Scornius + + + + + + + diff --git a/public/assets/signs/Blue/Scoro.svg b/public/assets/signs/Blue/Scoro.svg new file mode 100644 index 0000000..9f94980 --- /dev/null +++ b/public/assets/signs/Blue/Scoro.svg @@ -0,0 +1,66 @@ + + + + + Scoro + + + + + + image/svg+xml + + Scoro + + + + + + + diff --git a/public/assets/signs/Blue/Scorpia.svg b/public/assets/signs/Blue/Scorpia.svg new file mode 100644 index 0000000..16775c9 --- /dev/null +++ b/public/assets/signs/Blue/Scorpia.svg @@ -0,0 +1,66 @@ + + + + + Scorpia + + + + + + image/svg+xml + + Scorpia + + + + + + + diff --git a/public/assets/signs/Blue/Scorpio.svg b/public/assets/signs/Blue/Scorpio.svg new file mode 100644 index 0000000..7753ed1 --- /dev/null +++ b/public/assets/signs/Blue/Scorpio.svg @@ -0,0 +1,67 @@ + + + + + Scorpio + + + + + + image/svg+xml + + Scorpio + + + + + + + diff --git a/public/assets/signs/Blue/Scorra.svg b/public/assets/signs/Blue/Scorra.svg new file mode 100644 index 0000000..812220f --- /dev/null +++ b/public/assets/signs/Blue/Scorra.svg @@ -0,0 +1,66 @@ + + + + + Scorra + + + + + + image/svg+xml + + Scorra + + + + + + + diff --git a/public/assets/signs/Blue/Scorrius.svg b/public/assets/signs/Blue/Scorrius.svg new file mode 100644 index 0000000..825d544 --- /dev/null +++ b/public/assets/signs/Blue/Scorrius.svg @@ -0,0 +1,66 @@ + + + + + Scorrius + + + + + + image/svg+xml + + Scorrius + + + + + + + diff --git a/public/assets/signs/Blue/Scorsces.svg b/public/assets/signs/Blue/Scorsces.svg new file mode 100644 index 0000000..cd36add --- /dev/null +++ b/public/assets/signs/Blue/Scorsces.svg @@ -0,0 +1,67 @@ + + + + + Scorsces + + + + + + image/svg+xml + + Scorsces + + + + + + + diff --git a/public/assets/signs/Blue/Scorsci.svg b/public/assets/signs/Blue/Scorsci.svg new file mode 100644 index 0000000..09a605f --- /dev/null +++ b/public/assets/signs/Blue/Scorsci.svg @@ -0,0 +1,66 @@ + + + + + Scorsci + + + + + + image/svg+xml + + Scorsci + + + + + + + diff --git a/public/assets/signs/Blue/Scorun.svg b/public/assets/signs/Blue/Scorun.svg new file mode 100644 index 0000000..f1e29cf --- /dev/null +++ b/public/assets/signs/Blue/Scorun.svg @@ -0,0 +1,66 @@ + + + + + Scorun + + + + + + image/svg+xml + + Scorun + + + + + + + diff --git a/public/assets/signs/Blue/Scorus.svg b/public/assets/signs/Blue/Scorus.svg new file mode 100644 index 0000000..95d3ee0 --- /dev/null +++ b/public/assets/signs/Blue/Scorus.svg @@ -0,0 +1,66 @@ + + + + + Scorus + + + + + + image/svg+xml + + Scorus + + + + + + + diff --git a/public/assets/signs/Blue/Scorza.svg b/public/assets/signs/Blue/Scorza.svg new file mode 100644 index 0000000..2160d2d --- /dev/null +++ b/public/assets/signs/Blue/Scorza.svg @@ -0,0 +1,67 @@ + + + + + Scorza + + + + + + image/svg+xml + + Scorza + + + + + + + diff --git a/public/assets/signs/Bronze/Tarusci.svg b/public/assets/signs/Bronze/Tarusci.svg new file mode 100644 index 0000000..4e5f08b --- /dev/null +++ b/public/assets/signs/Bronze/Tarusci.svg @@ -0,0 +1,64 @@ + + + + + Taursci + + + + + + image/svg+xml + + Taursci + + + + + + + diff --git a/public/assets/signs/Bronze/Taurcen.svg b/public/assets/signs/Bronze/Taurcen.svg new file mode 100644 index 0000000..c87d258 --- /dev/null +++ b/public/assets/signs/Bronze/Taurcen.svg @@ -0,0 +1,62 @@ + + + + + Taurcen + + + + + + image/svg+xml + + Taurcen + + + + + + + diff --git a/public/assets/signs/Bronze/Taurcer.svg b/public/assets/signs/Bronze/Taurcer.svg new file mode 100644 index 0000000..ea6c2d0 --- /dev/null +++ b/public/assets/signs/Bronze/Taurcer.svg @@ -0,0 +1,60 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Bronze/Taurga.svg b/public/assets/signs/Bronze/Taurga.svg new file mode 100644 index 0000000..bb46703 --- /dev/null +++ b/public/assets/signs/Bronze/Taurga.svg @@ -0,0 +1,62 @@ + + + + + Taurga + + + + + + image/svg+xml + + Taurga + + + + + + + diff --git a/public/assets/signs/Bronze/Taurgo.svg b/public/assets/signs/Bronze/Taurgo.svg new file mode 100644 index 0000000..0ed473b --- /dev/null +++ b/public/assets/signs/Bronze/Taurgo.svg @@ -0,0 +1,60 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Bronze/Tauriborn.svg b/public/assets/signs/Bronze/Tauriborn.svg new file mode 100644 index 0000000..77b5698 --- /dev/null +++ b/public/assets/signs/Bronze/Tauriborn.svg @@ -0,0 +1,62 @@ + + + + + Tauriborn + + + + + + image/svg+xml + + Tauriborn + + + + + + + diff --git a/public/assets/signs/Bronze/Tauricorn.svg b/public/assets/signs/Bronze/Tauricorn.svg new file mode 100644 index 0000000..8d1ca57 --- /dev/null +++ b/public/assets/signs/Bronze/Tauricorn.svg @@ -0,0 +1,63 @@ + + + + + Tauricorn + + + + + + image/svg+xml + + Tauricorn + + + + + + + diff --git a/public/assets/signs/Bronze/Tauries.svg b/public/assets/signs/Bronze/Tauries.svg new file mode 100644 index 0000000..b52309a --- /dev/null +++ b/public/assets/signs/Bronze/Tauries.svg @@ -0,0 +1,62 @@ + + + + + Tauries + + + + + + image/svg+xml + + Tauries + + + + + + + diff --git a/public/assets/signs/Bronze/Taurist.svg b/public/assets/signs/Bronze/Taurist.svg new file mode 100644 index 0000000..973791b --- /dev/null +++ b/public/assets/signs/Bronze/Taurist.svg @@ -0,0 +1,62 @@ + + + + + Taurist + + + + + + image/svg+xml + + Taurist + + + + + + + diff --git a/public/assets/signs/Bronze/Taurittanius.svg b/public/assets/signs/Bronze/Taurittanius.svg new file mode 100644 index 0000000..764c81d --- /dev/null +++ b/public/assets/signs/Bronze/Taurittanius.svg @@ -0,0 +1,60 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Bronze/Taurlo.svg b/public/assets/signs/Bronze/Taurlo.svg new file mode 100644 index 0000000..e94bd27 --- /dev/null +++ b/public/assets/signs/Bronze/Taurlo.svg @@ -0,0 +1,62 @@ + + + + + Taurlo + + + + + + image/svg+xml + + Taurlo + + + + + + + diff --git a/public/assets/signs/Bronze/Taurmini.svg b/public/assets/signs/Bronze/Taurmini.svg new file mode 100644 index 0000000..b453e26 --- /dev/null +++ b/public/assets/signs/Bronze/Taurmini.svg @@ -0,0 +1,62 @@ + + + + + Taurmini + + + + + + image/svg+xml + + Taurmini + + + + + + + diff --git a/public/assets/signs/Bronze/Taurmino.svg b/public/assets/signs/Bronze/Taurmino.svg new file mode 100644 index 0000000..5fcae5e --- /dev/null +++ b/public/assets/signs/Bronze/Taurmino.svg @@ -0,0 +1,64 @@ + + + + + Taurmino + + + + + + image/svg+xml + + Taurmino + + + + + + + diff --git a/public/assets/signs/Bronze/Taurnius.svg b/public/assets/signs/Bronze/Taurnius.svg new file mode 100644 index 0000000..f485328 --- /dev/null +++ b/public/assets/signs/Bronze/Taurnius.svg @@ -0,0 +1,64 @@ + + + + + Taurnius + + + + + + image/svg+xml + + Taurnius + + + + + + + diff --git a/public/assets/signs/Bronze/Tauro.svg b/public/assets/signs/Bronze/Tauro.svg new file mode 100644 index 0000000..14621b3 --- /dev/null +++ b/public/assets/signs/Bronze/Tauro.svg @@ -0,0 +1,63 @@ + + + + + Tauro + + + + + + image/svg+xml + + Tauro + + + + + + + diff --git a/public/assets/signs/Bronze/Taurpia.svg b/public/assets/signs/Bronze/Taurpia.svg new file mode 100644 index 0000000..523772b --- /dev/null +++ b/public/assets/signs/Bronze/Taurpia.svg @@ -0,0 +1,62 @@ + + + + + Taurpia + + + + + + image/svg+xml + + Taurpia + + + + + + + diff --git a/public/assets/signs/Bronze/Taurpio.svg b/public/assets/signs/Bronze/Taurpio.svg new file mode 100644 index 0000000..528b5ee --- /dev/null +++ b/public/assets/signs/Bronze/Taurpio.svg @@ -0,0 +1,62 @@ + + + + + Taurpio + + + + + + image/svg+xml + + Taurpio + + + + + + + diff --git a/public/assets/signs/Bronze/Taurra.svg b/public/assets/signs/Bronze/Taurra.svg new file mode 100644 index 0000000..d4fe188 --- /dev/null +++ b/public/assets/signs/Bronze/Taurra.svg @@ -0,0 +1,68 @@ + + + + + Taurra + + + + + + image/svg+xml + + Taurra + + + + + + + + diff --git a/public/assets/signs/Bronze/Taurritarius.svg b/public/assets/signs/Bronze/Taurritarius.svg new file mode 100644 index 0000000..0c845fa --- /dev/null +++ b/public/assets/signs/Bronze/Taurritarius.svg @@ -0,0 +1,62 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Bronze/Taurrius.svg b/public/assets/signs/Bronze/Taurrius.svg new file mode 100644 index 0000000..20cb2ed --- /dev/null +++ b/public/assets/signs/Bronze/Taurrius.svg @@ -0,0 +1,62 @@ + + + + + Taurrius + + + + + + image/svg+xml + + Taurrius + + + + + + + diff --git a/public/assets/signs/Bronze/Taursces.svg b/public/assets/signs/Bronze/Taursces.svg new file mode 100644 index 0000000..e54763e --- /dev/null +++ b/public/assets/signs/Bronze/Taursces.svg @@ -0,0 +1,62 @@ + + + + + Taursces + + + + + + image/svg+xml + + Taursces + + + + + + + diff --git a/public/assets/signs/Bronze/Taurun.svg b/public/assets/signs/Bronze/Taurun.svg new file mode 100644 index 0000000..6dec25a --- /dev/null +++ b/public/assets/signs/Bronze/Taurun.svg @@ -0,0 +1,63 @@ + + + + + Taurun + + + + + + image/svg+xml + + Taurun + + + + + + + diff --git a/public/assets/signs/Bronze/Taurus.svg b/public/assets/signs/Bronze/Taurus.svg new file mode 100644 index 0000000..8229914 --- /dev/null +++ b/public/assets/signs/Bronze/Taurus.svg @@ -0,0 +1,59 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Bronze/Taurza.svg b/public/assets/signs/Bronze/Taurza.svg new file mode 100644 index 0000000..a5415f4 --- /dev/null +++ b/public/assets/signs/Bronze/Taurza.svg @@ -0,0 +1,62 @@ + + + + + Taurza + + + + + + image/svg+xml + + Taurza + + + + + + + diff --git a/public/assets/signs/Fuchsia/Piborn.svg b/public/assets/signs/Fuchsia/Piborn.svg new file mode 100644 index 0000000..bcaa19b --- /dev/null +++ b/public/assets/signs/Fuchsia/Piborn.svg @@ -0,0 +1,66 @@ + + + + + Piborn + + + + + + image/svg+xml + + Piborn + + + + + + + diff --git a/public/assets/signs/Fuchsia/Picen.svg b/public/assets/signs/Fuchsia/Picen.svg new file mode 100644 index 0000000..b128ac7 --- /dev/null +++ b/public/assets/signs/Fuchsia/Picen.svg @@ -0,0 +1,66 @@ + + + + + Picen + + + + + + image/svg+xml + + Picen + + + + + + + diff --git a/public/assets/signs/Fuchsia/Picer.svg b/public/assets/signs/Fuchsia/Picer.svg new file mode 100644 index 0000000..308dff0 --- /dev/null +++ b/public/assets/signs/Fuchsia/Picer.svg @@ -0,0 +1,66 @@ + + + + + Picer + + + + + + image/svg+xml + + Picer + + + + + + + diff --git a/public/assets/signs/Fuchsia/Picorn.svg b/public/assets/signs/Fuchsia/Picorn.svg new file mode 100644 index 0000000..326b155 --- /dev/null +++ b/public/assets/signs/Fuchsia/Picorn.svg @@ -0,0 +1,66 @@ + + + + + Picorn + + + + + + image/svg+xml + + Picorn + + + + + + + diff --git a/public/assets/signs/Fuchsia/Piga.svg b/public/assets/signs/Fuchsia/Piga.svg new file mode 100644 index 0000000..304f77f --- /dev/null +++ b/public/assets/signs/Fuchsia/Piga.svg @@ -0,0 +1,66 @@ + + + + + Piga + + + + + + image/svg+xml + + Piga + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pigo.svg b/public/assets/signs/Fuchsia/Pigo.svg new file mode 100644 index 0000000..c4c896d --- /dev/null +++ b/public/assets/signs/Fuchsia/Pigo.svg @@ -0,0 +1,66 @@ + + + + + Pigo + + + + + + image/svg+xml + + Pigo + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pilo.svg b/public/assets/signs/Fuchsia/Pilo.svg new file mode 100644 index 0000000..28abc09 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pilo.svg @@ -0,0 +1,67 @@ + + + + + Pilo + + + + + + image/svg+xml + + Pilo + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pimini.svg b/public/assets/signs/Fuchsia/Pimini.svg new file mode 100644 index 0000000..09e6d8e --- /dev/null +++ b/public/assets/signs/Fuchsia/Pimini.svg @@ -0,0 +1,66 @@ + + + + + Pimini + + + + + + image/svg+xml + + Pimini + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pimino.svg b/public/assets/signs/Fuchsia/Pimino.svg new file mode 100644 index 0000000..94daccd --- /dev/null +++ b/public/assets/signs/Fuchsia/Pimino.svg @@ -0,0 +1,67 @@ + + + + + Pimino + + + + + + image/svg+xml + + Pimino + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pinius.svg b/public/assets/signs/Fuchsia/Pinius.svg new file mode 100644 index 0000000..997825a --- /dev/null +++ b/public/assets/signs/Fuchsia/Pinius.svg @@ -0,0 +1,66 @@ + + + + + Pinius + + + + + + image/svg+xml + + Pinius + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pio.svg b/public/assets/signs/Fuchsia/Pio.svg new file mode 100644 index 0000000..b798746 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pio.svg @@ -0,0 +1,66 @@ + + + + + Pio + + + + + + image/svg+xml + + Pio + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pipia.svg b/public/assets/signs/Fuchsia/Pipia.svg new file mode 100644 index 0000000..07846a3 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pipia.svg @@ -0,0 +1,66 @@ + + + + + Pipia + + + + + + image/svg+xml + + Pipia + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pipio.svg b/public/assets/signs/Fuchsia/Pipio.svg new file mode 100644 index 0000000..cc80ec6 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pipio.svg @@ -0,0 +1,66 @@ + + + + + Pipio + + + + + + image/svg+xml + + Pipio + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pira.svg b/public/assets/signs/Fuchsia/Pira.svg new file mode 100644 index 0000000..e885d06 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pira.svg @@ -0,0 +1,69 @@ + + + + + Pira + + + + + + image/svg+xml + + Pira + + + + + + + diff --git a/public/assets/signs/Fuchsia/Piries.svg b/public/assets/signs/Fuchsia/Piries.svg new file mode 100644 index 0000000..68ac18b --- /dev/null +++ b/public/assets/signs/Fuchsia/Piries.svg @@ -0,0 +1,66 @@ + + + + + Piries + + + + + + image/svg+xml + + Piries + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pirist.svg b/public/assets/signs/Fuchsia/Pirist.svg new file mode 100644 index 0000000..da44d3a --- /dev/null +++ b/public/assets/signs/Fuchsia/Pirist.svg @@ -0,0 +1,66 @@ + + + + + Pirist + + + + + + image/svg+xml + + Pirist + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pirius.svg b/public/assets/signs/Fuchsia/Pirius.svg new file mode 100644 index 0000000..6ffa3b5 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pirius.svg @@ -0,0 +1,66 @@ + + + + + Pirius + + + + + + image/svg+xml + + Pirius + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pisces.svg b/public/assets/signs/Fuchsia/Pisces.svg new file mode 100644 index 0000000..acc1338 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pisces.svg @@ -0,0 +1,66 @@ + + + + + Pisces + + + + + + image/svg+xml + + Pisces + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pisci.svg b/public/assets/signs/Fuchsia/Pisci.svg new file mode 100644 index 0000000..d47bdee --- /dev/null +++ b/public/assets/signs/Fuchsia/Pisci.svg @@ -0,0 +1,66 @@ + + + + + Pisci + + + + + + image/svg+xml + + Pisci + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pittanius.svg b/public/assets/signs/Fuchsia/Pittanius.svg new file mode 100644 index 0000000..1bb6b5e --- /dev/null +++ b/public/assets/signs/Fuchsia/Pittanius.svg @@ -0,0 +1,66 @@ + + + + + Pittanius + + + + + + image/svg+xml + + Pittanius + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pittarius.svg b/public/assets/signs/Fuchsia/Pittarius.svg new file mode 100644 index 0000000..6b0fcef --- /dev/null +++ b/public/assets/signs/Fuchsia/Pittarius.svg @@ -0,0 +1,66 @@ + + + + + Pittarius + + + + + + image/svg+xml + + Pittarius + + + + + + + diff --git a/public/assets/signs/Fuchsia/Piun.svg b/public/assets/signs/Fuchsia/Piun.svg new file mode 100644 index 0000000..8011328 --- /dev/null +++ b/public/assets/signs/Fuchsia/Piun.svg @@ -0,0 +1,67 @@ + + + + + Piun + + + + + + image/svg+xml + + Piun + + + + + + + diff --git a/public/assets/signs/Fuchsia/Pius.svg b/public/assets/signs/Fuchsia/Pius.svg new file mode 100644 index 0000000..a703fd5 --- /dev/null +++ b/public/assets/signs/Fuchsia/Pius.svg @@ -0,0 +1,66 @@ + + + + + Pius + + + + + + image/svg+xml + + Pius + + + + + + + diff --git a/public/assets/signs/Fuchsia/Piza.svg b/public/assets/signs/Fuchsia/Piza.svg new file mode 100644 index 0000000..ce90179 --- /dev/null +++ b/public/assets/signs/Fuchsia/Piza.svg @@ -0,0 +1,66 @@ + + + + + Piza + + + + + + image/svg+xml + + Piza + + + + + + + diff --git a/public/assets/signs/Gold/Gemcen.svg b/public/assets/signs/Gold/Gemcen.svg new file mode 100644 index 0000000..da00ba7 --- /dev/null +++ b/public/assets/signs/Gold/Gemcen.svg @@ -0,0 +1,62 @@ + + + + + Gemcen + + + + + + image/svg+xml + + Gemcen + + + + + + + diff --git a/public/assets/signs/Gold/Gemcer.svg b/public/assets/signs/Gold/Gemcer.svg new file mode 100644 index 0000000..1794b07 --- /dev/null +++ b/public/assets/signs/Gold/Gemcer.svg @@ -0,0 +1,63 @@ + + + + + Gemcer + + + + + + image/svg+xml + + Gemcer + + + + + + + diff --git a/public/assets/signs/Gold/Gemga.svg b/public/assets/signs/Gold/Gemga.svg new file mode 100644 index 0000000..ba659ac --- /dev/null +++ b/public/assets/signs/Gold/Gemga.svg @@ -0,0 +1,62 @@ + + + + + Gemga + + + + + + image/svg+xml + + Gemga + + + + + + + diff --git a/public/assets/signs/Gold/Gemgo.svg b/public/assets/signs/Gold/Gemgo.svg new file mode 100644 index 0000000..6613d31 --- /dev/null +++ b/public/assets/signs/Gold/Gemgo.svg @@ -0,0 +1,62 @@ + + + + + Gemgo + + + + + + image/svg+xml + + Gemgo + + + + + + + diff --git a/public/assets/signs/Gold/Gemiborn.svg b/public/assets/signs/Gold/Gemiborn.svg new file mode 100644 index 0000000..4a1602d --- /dev/null +++ b/public/assets/signs/Gold/Gemiborn.svg @@ -0,0 +1,62 @@ + + + + + Gemiborn + + + + + + image/svg+xml + + Gemiborn + + + + + + + diff --git a/public/assets/signs/Gold/Gemicorn.svg b/public/assets/signs/Gold/Gemicorn.svg new file mode 100644 index 0000000..3362679 --- /dev/null +++ b/public/assets/signs/Gold/Gemicorn.svg @@ -0,0 +1,62 @@ + + + + + Gemicorn + + + + + + image/svg+xml + + Gemicorn + + + + + + + diff --git a/public/assets/signs/Gold/Gemini.svg b/public/assets/signs/Gold/Gemini.svg new file mode 100644 index 0000000..35eb718 --- /dev/null +++ b/public/assets/signs/Gold/Gemini.svg @@ -0,0 +1,62 @@ + + + + + Gemini + + + + + + image/svg+xml + + Gemini + + + + + + + diff --git a/public/assets/signs/Gold/Gemino.svg b/public/assets/signs/Gold/Gemino.svg new file mode 100644 index 0000000..202179c --- /dev/null +++ b/public/assets/signs/Gold/Gemino.svg @@ -0,0 +1,63 @@ + + + + + Gemino + + + + + + image/svg+xml + + Gemino + + + + + + + diff --git a/public/assets/signs/Gold/Gemittanius.svg b/public/assets/signs/Gold/Gemittanius.svg new file mode 100644 index 0000000..283ff73 --- /dev/null +++ b/public/assets/signs/Gold/Gemittanius.svg @@ -0,0 +1,64 @@ + + + + + Gemittanius + + + + + + image/svg+xml + + Gemittanius + + + + + + + diff --git a/public/assets/signs/Gold/Gemittarius.svg b/public/assets/signs/Gold/Gemittarius.svg new file mode 100644 index 0000000..57de6b4 --- /dev/null +++ b/public/assets/signs/Gold/Gemittarius.svg @@ -0,0 +1,64 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Gold/Gemlo.svg b/public/assets/signs/Gold/Gemlo.svg new file mode 100644 index 0000000..a554b01 --- /dev/null +++ b/public/assets/signs/Gold/Gemlo.svg @@ -0,0 +1,60 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Gold/Gemnius.svg b/public/assets/signs/Gold/Gemnius.svg new file mode 100644 index 0000000..0204ee6 --- /dev/null +++ b/public/assets/signs/Gold/Gemnius.svg @@ -0,0 +1,62 @@ + + + + + Gemnius + + + + + + image/svg+xml + + Gemnius + + + + + + + diff --git a/public/assets/signs/Gold/Gemo.svg b/public/assets/signs/Gold/Gemo.svg new file mode 100644 index 0000000..28ce145 --- /dev/null +++ b/public/assets/signs/Gold/Gemo.svg @@ -0,0 +1,62 @@ + + + + + Gemo + + + + + + image/svg+xml + + Gemo + + + + + + + diff --git a/public/assets/signs/Gold/Gempia.svg b/public/assets/signs/Gold/Gempia.svg new file mode 100644 index 0000000..68fc681 --- /dev/null +++ b/public/assets/signs/Gold/Gempia.svg @@ -0,0 +1,62 @@ + + + + + Gempia + + + + + + image/svg+xml + + Gempia + + + + + + + diff --git a/public/assets/signs/Gold/Gempio.svg b/public/assets/signs/Gold/Gempio.svg new file mode 100644 index 0000000..7ba6f11 --- /dev/null +++ b/public/assets/signs/Gold/Gempio.svg @@ -0,0 +1,60 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Gold/Gemra.svg b/public/assets/signs/Gold/Gemra.svg new file mode 100644 index 0000000..da65abf --- /dev/null +++ b/public/assets/signs/Gold/Gemra.svg @@ -0,0 +1,62 @@ + + + + + Gemra + + + + + + image/svg+xml + + Gemra + + + + + + + diff --git a/public/assets/signs/Gold/Gemries.svg b/public/assets/signs/Gold/Gemries.svg new file mode 100644 index 0000000..ff81eec --- /dev/null +++ b/public/assets/signs/Gold/Gemries.svg @@ -0,0 +1,63 @@ + + + + + Gemries + + + + + + image/svg+xml + + Gemries + + + + + + + diff --git a/public/assets/signs/Gold/Gemrist.svg b/public/assets/signs/Gold/Gemrist.svg new file mode 100644 index 0000000..e61a3eb --- /dev/null +++ b/public/assets/signs/Gold/Gemrist.svg @@ -0,0 +1,62 @@ + + + + + Gemrist + + + + + + image/svg+xml + + Gemrist + + + + + + + diff --git a/public/assets/signs/Gold/Gemrius.svg b/public/assets/signs/Gold/Gemrius.svg new file mode 100644 index 0000000..995ed16 --- /dev/null +++ b/public/assets/signs/Gold/Gemrius.svg @@ -0,0 +1,62 @@ + + + + + Gemrius + + + + + + image/svg+xml + + Gemrius + + + + + + + diff --git a/public/assets/signs/Gold/Gemsces.svg b/public/assets/signs/Gold/Gemsces.svg new file mode 100644 index 0000000..baeb277 --- /dev/null +++ b/public/assets/signs/Gold/Gemsces.svg @@ -0,0 +1,63 @@ + + + + + Gemsces + + + + + + image/svg+xml + + Gemsces + + + + + + + diff --git a/public/assets/signs/Gold/Gemsci.svg b/public/assets/signs/Gold/Gemsci.svg new file mode 100644 index 0000000..ecaffef --- /dev/null +++ b/public/assets/signs/Gold/Gemsci.svg @@ -0,0 +1,62 @@ + + + + + Gemsci + + + + + + image/svg+xml + + Gemsci + + + + + + + diff --git a/public/assets/signs/Gold/Gemun.svg b/public/assets/signs/Gold/Gemun.svg new file mode 100644 index 0000000..cce2455 --- /dev/null +++ b/public/assets/signs/Gold/Gemun.svg @@ -0,0 +1,61 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Gold/Gemus.svg b/public/assets/signs/Gold/Gemus.svg new file mode 100644 index 0000000..85b7776 --- /dev/null +++ b/public/assets/signs/Gold/Gemus.svg @@ -0,0 +1,62 @@ + + + + + Gemus + + + + + + image/svg+xml + + Gemus + + + + + + + diff --git a/public/assets/signs/Gold/Gemza.svg b/public/assets/signs/Gold/Gemza.svg new file mode 100644 index 0000000..cd6751d --- /dev/null +++ b/public/assets/signs/Gold/Gemza.svg @@ -0,0 +1,62 @@ + + + + + Gemza + + + + + + image/svg+xml + + Gemza + + + + + + + diff --git a/public/assets/signs/Indigo/Sagiborn.svg b/public/assets/signs/Indigo/Sagiborn.svg new file mode 100644 index 0000000..04c05d5 --- /dev/null +++ b/public/assets/signs/Indigo/Sagiborn.svg @@ -0,0 +1,66 @@ + + + + + Sagiborn + + + + + + image/svg+xml + + Sagiborn + + + + + + + diff --git a/public/assets/signs/Indigo/Sagicen.svg b/public/assets/signs/Indigo/Sagicen.svg new file mode 100644 index 0000000..811bbad --- /dev/null +++ b/public/assets/signs/Indigo/Sagicen.svg @@ -0,0 +1,67 @@ + + + + + Sagicen + + + + + + image/svg+xml + + Sagicen + + + + + + + diff --git a/public/assets/signs/Indigo/Sagicer.svg b/public/assets/signs/Indigo/Sagicer.svg new file mode 100644 index 0000000..ac2545c --- /dev/null +++ b/public/assets/signs/Indigo/Sagicer.svg @@ -0,0 +1,67 @@ + + + + + Sagicer + + + + + + image/svg+xml + + Sagicer + + + + + + + diff --git a/public/assets/signs/Indigo/Sagicorn.svg b/public/assets/signs/Indigo/Sagicorn.svg new file mode 100644 index 0000000..13b0ce6 --- /dev/null +++ b/public/assets/signs/Indigo/Sagicorn.svg @@ -0,0 +1,66 @@ + + + + + Sagicorn + + + + + + image/svg+xml + + Sagicorn + + + + + + + diff --git a/public/assets/signs/Indigo/Sagiga.svg b/public/assets/signs/Indigo/Sagiga.svg new file mode 100644 index 0000000..52062a9 --- /dev/null +++ b/public/assets/signs/Indigo/Sagiga.svg @@ -0,0 +1,67 @@ + + + + + Sagiga + + + + + + image/svg+xml + + Sagiga + + + + + + + diff --git a/public/assets/signs/Indigo/Sagigo.svg b/public/assets/signs/Indigo/Sagigo.svg new file mode 100644 index 0000000..396f98f --- /dev/null +++ b/public/assets/signs/Indigo/Sagigo.svg @@ -0,0 +1,67 @@ + + + + + Sagigo + + + + + + image/svg+xml + + Sagigo + + + + + + + diff --git a/public/assets/signs/Indigo/Sagilo.svg b/public/assets/signs/Indigo/Sagilo.svg new file mode 100644 index 0000000..b8b690c --- /dev/null +++ b/public/assets/signs/Indigo/Sagilo.svg @@ -0,0 +1,67 @@ + + + + + Sagilo + + + + + + image/svg+xml + + Sagilo + + + + + + + diff --git a/public/assets/signs/Indigo/Sagimini.svg b/public/assets/signs/Indigo/Sagimini.svg new file mode 100644 index 0000000..143c613 --- /dev/null +++ b/public/assets/signs/Indigo/Sagimini.svg @@ -0,0 +1,67 @@ + + + + + Sagimini + + + + + + image/svg+xml + + Sagimini + + + + + + + diff --git a/public/assets/signs/Indigo/Sagimino.svg b/public/assets/signs/Indigo/Sagimino.svg new file mode 100644 index 0000000..decd46e --- /dev/null +++ b/public/assets/signs/Indigo/Sagimino.svg @@ -0,0 +1,67 @@ + + + + + Sagimino + + + + + + image/svg+xml + + Sagimino + + + + + + + diff --git a/public/assets/signs/Indigo/Saginius.svg b/public/assets/signs/Indigo/Saginius.svg new file mode 100644 index 0000000..1fdde73 --- /dev/null +++ b/public/assets/signs/Indigo/Saginius.svg @@ -0,0 +1,66 @@ + + + + + Saginius + + + + + + image/svg+xml + + Saginius + + + + + + + diff --git a/public/assets/signs/Indigo/Sagio.svg b/public/assets/signs/Indigo/Sagio.svg new file mode 100644 index 0000000..f41a144 --- /dev/null +++ b/public/assets/signs/Indigo/Sagio.svg @@ -0,0 +1,67 @@ + + + + + Sagio + + + + + + image/svg+xml + + Sagio + + + + + + + diff --git a/public/assets/signs/Indigo/Sagipia.svg b/public/assets/signs/Indigo/Sagipia.svg new file mode 100644 index 0000000..94438f4 --- /dev/null +++ b/public/assets/signs/Indigo/Sagipia.svg @@ -0,0 +1,66 @@ + + + + + Sagipia + + + + + + image/svg+xml + + Sagipia + + + + + + + diff --git a/public/assets/signs/Indigo/Sagipio.svg b/public/assets/signs/Indigo/Sagipio.svg new file mode 100644 index 0000000..ccdafa4 --- /dev/null +++ b/public/assets/signs/Indigo/Sagipio.svg @@ -0,0 +1,66 @@ + + + + + Sagipio + + + + + + image/svg+xml + + Sagipio + + + + + + + diff --git a/public/assets/signs/Indigo/Sagira.svg b/public/assets/signs/Indigo/Sagira.svg new file mode 100644 index 0000000..ddfaf8d --- /dev/null +++ b/public/assets/signs/Indigo/Sagira.svg @@ -0,0 +1,67 @@ + + + + + Sagira + + + + + + image/svg+xml + + Sagira + + + + + + + diff --git a/public/assets/signs/Indigo/Sagiries.svg b/public/assets/signs/Indigo/Sagiries.svg new file mode 100644 index 0000000..7ced6c4 --- /dev/null +++ b/public/assets/signs/Indigo/Sagiries.svg @@ -0,0 +1,66 @@ + + + + + Sagiries + + + + + + image/svg+xml + + Sagiries + + + + + + + diff --git a/public/assets/signs/Indigo/Sagirist.svg b/public/assets/signs/Indigo/Sagirist.svg new file mode 100644 index 0000000..46589d9 --- /dev/null +++ b/public/assets/signs/Indigo/Sagirist.svg @@ -0,0 +1,67 @@ + + + + + Sagirist + + + + + + image/svg+xml + + Sagirist + + + + + + + diff --git a/public/assets/signs/Indigo/Sagirius.svg b/public/assets/signs/Indigo/Sagirius.svg new file mode 100644 index 0000000..f8ab60f --- /dev/null +++ b/public/assets/signs/Indigo/Sagirius.svg @@ -0,0 +1,66 @@ + + + + + Sagirius + + + + + + image/svg+xml + + Sagirius + + + + + + + diff --git a/public/assets/signs/Indigo/Sagisces.svg b/public/assets/signs/Indigo/Sagisces.svg new file mode 100644 index 0000000..1cbb2a1 --- /dev/null +++ b/public/assets/signs/Indigo/Sagisces.svg @@ -0,0 +1,67 @@ + + + + + Sagisces + + + + + + image/svg+xml + + Sagisces + + + + + + + diff --git a/public/assets/signs/Indigo/Sagisci.svg b/public/assets/signs/Indigo/Sagisci.svg new file mode 100644 index 0000000..8e96cf6 --- /dev/null +++ b/public/assets/signs/Indigo/Sagisci.svg @@ -0,0 +1,67 @@ + + + + + Sagisci + + + + + + image/svg+xml + + Sagisci + + + + + + + diff --git a/public/assets/signs/Indigo/Sagittanius.svg b/public/assets/signs/Indigo/Sagittanius.svg new file mode 100644 index 0000000..24b2fc8 --- /dev/null +++ b/public/assets/signs/Indigo/Sagittanius.svg @@ -0,0 +1,66 @@ + + + + + Sagittanius + + + + + + image/svg+xml + + Sagittanius + + + + + + + diff --git a/public/assets/signs/Indigo/Sagittarius.svg b/public/assets/signs/Indigo/Sagittarius.svg new file mode 100644 index 0000000..536fae2 --- /dev/null +++ b/public/assets/signs/Indigo/Sagittarius.svg @@ -0,0 +1,67 @@ + + + + + Sagittarius + + + + + + image/svg+xml + + Sagittarius + + + + + + + diff --git a/public/assets/signs/Indigo/Sagiun.svg b/public/assets/signs/Indigo/Sagiun.svg new file mode 100644 index 0000000..f77f6ae --- /dev/null +++ b/public/assets/signs/Indigo/Sagiun.svg @@ -0,0 +1,66 @@ + + + + + Sagiun + + + + + + image/svg+xml + + Sagiun + + + + + + + diff --git a/public/assets/signs/Indigo/Sagius.svg b/public/assets/signs/Indigo/Sagius.svg new file mode 100644 index 0000000..c4f1514 --- /dev/null +++ b/public/assets/signs/Indigo/Sagius.svg @@ -0,0 +1,67 @@ + + + + + Sagius + + + + + + image/svg+xml + + Sagius + + + + + + + diff --git a/public/assets/signs/Indigo/Sagiza.svg b/public/assets/signs/Indigo/Sagiza.svg new file mode 100644 index 0000000..bb70211 --- /dev/null +++ b/public/assets/signs/Indigo/Sagiza.svg @@ -0,0 +1,66 @@ + + + + + Sagiza + + + + + + image/svg+xml + + Sagiza + + + + + + + diff --git a/public/assets/signs/Jade/Vircen.svg b/public/assets/signs/Jade/Vircen.svg new file mode 100644 index 0000000..7bf02eb --- /dev/null +++ b/public/assets/signs/Jade/Vircen.svg @@ -0,0 +1,66 @@ + + + + + Vircen + + + + + + image/svg+xml + + Vircen + + + + + + + diff --git a/public/assets/signs/Jade/Vircer.svg b/public/assets/signs/Jade/Vircer.svg new file mode 100644 index 0000000..f9e349f --- /dev/null +++ b/public/assets/signs/Jade/Vircer.svg @@ -0,0 +1,67 @@ + + + + + Vircer + + + + + + image/svg+xml + + Vircer + + + + + + + diff --git a/public/assets/signs/Jade/Virga.svg b/public/assets/signs/Jade/Virga.svg new file mode 100644 index 0000000..b696659 --- /dev/null +++ b/public/assets/signs/Jade/Virga.svg @@ -0,0 +1,66 @@ + + + + + Virga + + + + + + image/svg+xml + + Virga + + + + + + + diff --git a/public/assets/signs/Jade/Virgo.svg b/public/assets/signs/Jade/Virgo.svg new file mode 100644 index 0000000..e0b0b4d --- /dev/null +++ b/public/assets/signs/Jade/Virgo.svg @@ -0,0 +1,66 @@ + + + + + Virgo + + + + + + image/svg+xml + + Virgo + + + + + + + diff --git a/public/assets/signs/Jade/Viriborn.svg b/public/assets/signs/Jade/Viriborn.svg new file mode 100644 index 0000000..723bf47 --- /dev/null +++ b/public/assets/signs/Jade/Viriborn.svg @@ -0,0 +1,66 @@ + + + + + Viriborn + + + + + + image/svg+xml + + Viriborn + + + + + + + diff --git a/public/assets/signs/Jade/Viricorn.svg b/public/assets/signs/Jade/Viricorn.svg new file mode 100644 index 0000000..22abe9c --- /dev/null +++ b/public/assets/signs/Jade/Viricorn.svg @@ -0,0 +1,67 @@ + + + + + Viricorn + + + + + + image/svg+xml + + Viricorn + + + + + + + diff --git a/public/assets/signs/Jade/Viries.svg b/public/assets/signs/Jade/Viries.svg new file mode 100644 index 0000000..a8e6347 --- /dev/null +++ b/public/assets/signs/Jade/Viries.svg @@ -0,0 +1,67 @@ + + + + + Viries + + + + + + image/svg+xml + + Viries + + + + + + + diff --git a/public/assets/signs/Jade/Virist.svg b/public/assets/signs/Jade/Virist.svg new file mode 100644 index 0000000..8d561c9 --- /dev/null +++ b/public/assets/signs/Jade/Virist.svg @@ -0,0 +1,66 @@ + + + + + Virist + + + + + + image/svg+xml + + Virist + + + + + + + diff --git a/public/assets/signs/Jade/Virittanius.svg b/public/assets/signs/Jade/Virittanius.svg new file mode 100644 index 0000000..36316f9 --- /dev/null +++ b/public/assets/signs/Jade/Virittanius.svg @@ -0,0 +1,67 @@ + + + + + Virittanius + + + + + + image/svg+xml + + Virittanius + + + + + + + diff --git a/public/assets/signs/Jade/Virittarius.svg b/public/assets/signs/Jade/Virittarius.svg new file mode 100644 index 0000000..1e0b162 --- /dev/null +++ b/public/assets/signs/Jade/Virittarius.svg @@ -0,0 +1,67 @@ + + + + + Virittarius + + + + + + image/svg+xml + + Virittarius + + + + + + + diff --git a/public/assets/signs/Jade/Virlo.svg b/public/assets/signs/Jade/Virlo.svg new file mode 100644 index 0000000..5a16ea0 --- /dev/null +++ b/public/assets/signs/Jade/Virlo.svg @@ -0,0 +1,67 @@ + + + + + Virlo + + + + + + image/svg+xml + + Virlo + + + + + + + diff --git a/public/assets/signs/Jade/Virmini.svg b/public/assets/signs/Jade/Virmini.svg new file mode 100644 index 0000000..49d8b1d --- /dev/null +++ b/public/assets/signs/Jade/Virmini.svg @@ -0,0 +1,66 @@ + + + + + Virmini + + + + + + image/svg+xml + + Virmini + + + + + + + diff --git a/public/assets/signs/Jade/Virmino.svg b/public/assets/signs/Jade/Virmino.svg new file mode 100644 index 0000000..88e28ec --- /dev/null +++ b/public/assets/signs/Jade/Virmino.svg @@ -0,0 +1,67 @@ + + + + + Virmino + + + + + + image/svg+xml + + Virmino + + + + + + + diff --git a/public/assets/signs/Jade/Virnius.svg b/public/assets/signs/Jade/Virnius.svg new file mode 100644 index 0000000..c0f2eca --- /dev/null +++ b/public/assets/signs/Jade/Virnius.svg @@ -0,0 +1,66 @@ + + + + + Virnius + + + + + + image/svg+xml + + Virnius + + + + + + + diff --git a/public/assets/signs/Jade/Viro.svg b/public/assets/signs/Jade/Viro.svg new file mode 100644 index 0000000..67bc3ae --- /dev/null +++ b/public/assets/signs/Jade/Viro.svg @@ -0,0 +1,67 @@ + + + + + Viro + + + + + + image/svg+xml + + Viro + + + + + + + diff --git a/public/assets/signs/Jade/Virpia.svg b/public/assets/signs/Jade/Virpia.svg new file mode 100644 index 0000000..8b52f27 --- /dev/null +++ b/public/assets/signs/Jade/Virpia.svg @@ -0,0 +1,67 @@ + + + + + Virpia + + + + + + image/svg+xml + + Virpia + + + + + + + diff --git a/public/assets/signs/Jade/Virpio.svg b/public/assets/signs/Jade/Virpio.svg new file mode 100644 index 0000000..ebfff37 --- /dev/null +++ b/public/assets/signs/Jade/Virpio.svg @@ -0,0 +1,65 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Jade/Virra.svg b/public/assets/signs/Jade/Virra.svg new file mode 100644 index 0000000..934579a --- /dev/null +++ b/public/assets/signs/Jade/Virra.svg @@ -0,0 +1,67 @@ + + + + + Virra + + + + + + image/svg+xml + + Virra + + + + + + + diff --git a/public/assets/signs/Jade/Virrius.svg b/public/assets/signs/Jade/Virrius.svg new file mode 100644 index 0000000..08cad9e --- /dev/null +++ b/public/assets/signs/Jade/Virrius.svg @@ -0,0 +1,66 @@ + + + + + Virrius + + + + + + image/svg+xml + + Virrius + + + + + + + diff --git a/public/assets/signs/Jade/Virsces.svg b/public/assets/signs/Jade/Virsces.svg new file mode 100644 index 0000000..d86a228 --- /dev/null +++ b/public/assets/signs/Jade/Virsces.svg @@ -0,0 +1,66 @@ + + + + + Virsces + + + + + + image/svg+xml + + Virsces + + + + + + + diff --git a/public/assets/signs/Jade/Virsci.svg b/public/assets/signs/Jade/Virsci.svg new file mode 100644 index 0000000..de5c310 --- /dev/null +++ b/public/assets/signs/Jade/Virsci.svg @@ -0,0 +1,69 @@ + + + + + Virsci + + + + + + image/svg+xml + + Virsci + + + + + + + diff --git a/public/assets/signs/Jade/Virun.svg b/public/assets/signs/Jade/Virun.svg new file mode 100644 index 0000000..0e67626 --- /dev/null +++ b/public/assets/signs/Jade/Virun.svg @@ -0,0 +1,66 @@ + + + + + Virun + + + + + + image/svg+xml + + Virun + + + + + + + diff --git a/public/assets/signs/Jade/Virus.svg b/public/assets/signs/Jade/Virus.svg new file mode 100644 index 0000000..3407914 --- /dev/null +++ b/public/assets/signs/Jade/Virus.svg @@ -0,0 +1,66 @@ + + + + + Virus + + + + + + image/svg+xml + + Virus + + + + + + + diff --git a/public/assets/signs/Jade/Virza.svg b/public/assets/signs/Jade/Virza.svg new file mode 100644 index 0000000..57c223b --- /dev/null +++ b/public/assets/signs/Jade/Virza.svg @@ -0,0 +1,66 @@ + + + + + Virza + + + + + + image/svg+xml + + Virza + + + + + + + diff --git a/public/assets/signs/Lime/Camini.svg b/public/assets/signs/Lime/Camini.svg new file mode 100644 index 0000000..d3929d7 --- /dev/null +++ b/public/assets/signs/Lime/Camini.svg @@ -0,0 +1,63 @@ + + + + + Camini + + + + + + image/svg+xml + + Camini + + + + + + + diff --git a/public/assets/signs/Lime/Camino.svg b/public/assets/signs/Lime/Camino.svg new file mode 100644 index 0000000..7f995a8 --- /dev/null +++ b/public/assets/signs/Lime/Camino.svg @@ -0,0 +1,62 @@ + + + + + Camino + + + + + + image/svg+xml + + Camino + + + + + + + diff --git a/public/assets/signs/Lime/Cancen.svg b/public/assets/signs/Lime/Cancen.svg new file mode 100644 index 0000000..1e22cc7 --- /dev/null +++ b/public/assets/signs/Lime/Cancen.svg @@ -0,0 +1,63 @@ + + + + + Cancen + + + + + + image/svg+xml + + Cancen + + + + + + + diff --git a/public/assets/signs/Lime/Cancer.svg b/public/assets/signs/Lime/Cancer.svg new file mode 100644 index 0000000..639c44e --- /dev/null +++ b/public/assets/signs/Lime/Cancer.svg @@ -0,0 +1,62 @@ + + + + + Cancer + + + + + + image/svg+xml + + Cancer + + + + + + + diff --git a/public/assets/signs/Lime/Canga.svg b/public/assets/signs/Lime/Canga.svg new file mode 100644 index 0000000..bcad8d0 --- /dev/null +++ b/public/assets/signs/Lime/Canga.svg @@ -0,0 +1,63 @@ + + + + + Canga + + + + + + image/svg+xml + + Canga + + + + + + + diff --git a/public/assets/signs/Lime/Cango.svg b/public/assets/signs/Lime/Cango.svg new file mode 100644 index 0000000..7a472a6 --- /dev/null +++ b/public/assets/signs/Lime/Cango.svg @@ -0,0 +1,62 @@ + + + + + Cango + + + + + + image/svg+xml + + Cango + + + + + + + diff --git a/public/assets/signs/Lime/Caniborn.svg b/public/assets/signs/Lime/Caniborn.svg new file mode 100644 index 0000000..e4928e3 --- /dev/null +++ b/public/assets/signs/Lime/Caniborn.svg @@ -0,0 +1,63 @@ + + + + + Caniborn + + + + + + image/svg+xml + + Caniborn + + + + + + + diff --git a/public/assets/signs/Lime/Canicorn.svg b/public/assets/signs/Lime/Canicorn.svg new file mode 100644 index 0000000..5121c51 --- /dev/null +++ b/public/assets/signs/Lime/Canicorn.svg @@ -0,0 +1,62 @@ + + + + + Canicorn + + + + + + image/svg+xml + + Canicorn + + + + + + + diff --git a/public/assets/signs/Lime/Canittanius.svg b/public/assets/signs/Lime/Canittanius.svg new file mode 100644 index 0000000..407c4d3 --- /dev/null +++ b/public/assets/signs/Lime/Canittanius.svg @@ -0,0 +1,62 @@ + + + + + Canittanius + + + + + + image/svg+xml + + Canittanius + + + + + + + diff --git a/public/assets/signs/Lime/Canittarius.svg b/public/assets/signs/Lime/Canittarius.svg new file mode 100644 index 0000000..d8a22b2 --- /dev/null +++ b/public/assets/signs/Lime/Canittarius.svg @@ -0,0 +1,62 @@ + + + + + Canittarius + + + + + + image/svg+xml + + Canittarius + + + + + + + diff --git a/public/assets/signs/Lime/Canlo.svg b/public/assets/signs/Lime/Canlo.svg new file mode 100644 index 0000000..43a86f5 --- /dev/null +++ b/public/assets/signs/Lime/Canlo.svg @@ -0,0 +1,63 @@ + + + + + Canlo + + + + + + image/svg+xml + + Canlo + + + + + + + diff --git a/public/assets/signs/Lime/Cannus.svg b/public/assets/signs/Lime/Cannus.svg new file mode 100644 index 0000000..de65c32 --- /dev/null +++ b/public/assets/signs/Lime/Cannus.svg @@ -0,0 +1,62 @@ + + + + + Cannus + + + + + + image/svg+xml + + Cannus + + + + + + + diff --git a/public/assets/signs/Lime/Cano.svg b/public/assets/signs/Lime/Cano.svg new file mode 100644 index 0000000..525e496 --- /dev/null +++ b/public/assets/signs/Lime/Cano.svg @@ -0,0 +1,62 @@ + + + + + Cano + + + + + + image/svg+xml + + Cano + + + + + + + diff --git a/public/assets/signs/Lime/Canpia.svg b/public/assets/signs/Lime/Canpia.svg new file mode 100644 index 0000000..4951384 --- /dev/null +++ b/public/assets/signs/Lime/Canpia.svg @@ -0,0 +1,63 @@ + + + + + Canpia + + + + + + image/svg+xml + + Canpia + + + + + + + diff --git a/public/assets/signs/Lime/Canpio.svg b/public/assets/signs/Lime/Canpio.svg new file mode 100644 index 0000000..09512db --- /dev/null +++ b/public/assets/signs/Lime/Canpio.svg @@ -0,0 +1,62 @@ + + + + + Canpio + + + + + + image/svg+xml + + Canpio + + + + + + + diff --git a/public/assets/signs/Lime/Canra.svg b/public/assets/signs/Lime/Canra.svg new file mode 100644 index 0000000..83e5c39 --- /dev/null +++ b/public/assets/signs/Lime/Canra.svg @@ -0,0 +1,62 @@ + + + + + Canra + + + + + + image/svg+xml + + Canra + + + + + + + diff --git a/public/assets/signs/Lime/Canries.svg b/public/assets/signs/Lime/Canries.svg new file mode 100644 index 0000000..99f7acb --- /dev/null +++ b/public/assets/signs/Lime/Canries.svg @@ -0,0 +1,63 @@ + + + + + Canries + + + + + + image/svg+xml + + Canries + + + + + + + diff --git a/public/assets/signs/Lime/Canrist.svg b/public/assets/signs/Lime/Canrist.svg new file mode 100644 index 0000000..b0fdad7 --- /dev/null +++ b/public/assets/signs/Lime/Canrist.svg @@ -0,0 +1,62 @@ + + + + + Canrist + + + + + + image/svg+xml + + Canrist + + + + + + + diff --git a/public/assets/signs/Lime/Canrius.svg b/public/assets/signs/Lime/Canrius.svg new file mode 100644 index 0000000..efbefa7 --- /dev/null +++ b/public/assets/signs/Lime/Canrius.svg @@ -0,0 +1,62 @@ + + + + + Canrius + + + + + + image/svg+xml + + Canrius + + + + + + + diff --git a/public/assets/signs/Lime/Cansces.svg b/public/assets/signs/Lime/Cansces.svg new file mode 100644 index 0000000..a48bf9c --- /dev/null +++ b/public/assets/signs/Lime/Cansces.svg @@ -0,0 +1,62 @@ + + + + + Cansces + + + + + + image/svg+xml + + Cansces + + + + + + + diff --git a/public/assets/signs/Lime/Cansci.svg b/public/assets/signs/Lime/Cansci.svg new file mode 100644 index 0000000..2b44ca3 --- /dev/null +++ b/public/assets/signs/Lime/Cansci.svg @@ -0,0 +1,62 @@ + + + + + Cansci + + + + + + image/svg+xml + + Cansci + + + + + + + diff --git a/public/assets/signs/Lime/Canun.svg b/public/assets/signs/Lime/Canun.svg new file mode 100644 index 0000000..d24e64c --- /dev/null +++ b/public/assets/signs/Lime/Canun.svg @@ -0,0 +1,62 @@ + + + + + Canun + + + + + + image/svg+xml + + Canun + + + + + + + diff --git a/public/assets/signs/Lime/Canus.svg b/public/assets/signs/Lime/Canus.svg new file mode 100644 index 0000000..7d8e57c --- /dev/null +++ b/public/assets/signs/Lime/Canus.svg @@ -0,0 +1,63 @@ + + + + + Canus + + + + + + image/svg+xml + + Canus + + + + + + + diff --git a/public/assets/signs/Lime/Canza.svg b/public/assets/signs/Lime/Canza.svg new file mode 100644 index 0000000..06e3829 --- /dev/null +++ b/public/assets/signs/Lime/Canza.svg @@ -0,0 +1,62 @@ + + + + + Canza + + + + + + image/svg+xml + + Canza + + + + + + + diff --git a/public/assets/signs/Olive/Lecen.svg b/public/assets/signs/Olive/Lecen.svg new file mode 100644 index 0000000..4a5e4e0 --- /dev/null +++ b/public/assets/signs/Olive/Lecen.svg @@ -0,0 +1,63 @@ + + + + + Lecen + + + + + + image/svg+xml + + Lecen + + + + + + + diff --git a/public/assets/signs/Olive/Lecer.svg b/public/assets/signs/Olive/Lecer.svg new file mode 100644 index 0000000..26d5910 --- /dev/null +++ b/public/assets/signs/Olive/Lecer.svg @@ -0,0 +1,67 @@ + + + + + Lecer + + + + + + image/svg+xml + + Lecer + + + + + + + diff --git a/public/assets/signs/Olive/Lega.svg b/public/assets/signs/Olive/Lega.svg new file mode 100644 index 0000000..1cb2308 --- /dev/null +++ b/public/assets/signs/Olive/Lega.svg @@ -0,0 +1,63 @@ + + + + + Lega + + + + + + image/svg+xml + + Lega + + + + + + + diff --git a/public/assets/signs/Olive/Lego.svg b/public/assets/signs/Olive/Lego.svg new file mode 100644 index 0000000..ad8177c --- /dev/null +++ b/public/assets/signs/Olive/Lego.svg @@ -0,0 +1,66 @@ + + + + + Lego + + + + + + image/svg+xml + + Lego + + + + + + + diff --git a/public/assets/signs/Olive/Leiborn.svg b/public/assets/signs/Olive/Leiborn.svg new file mode 100644 index 0000000..1591cb3 --- /dev/null +++ b/public/assets/signs/Olive/Leiborn.svg @@ -0,0 +1,62 @@ + + + + + Leiborn + + + + + + image/svg+xml + + Leiborn + + + + + + + diff --git a/public/assets/signs/Olive/Leicorn.svg b/public/assets/signs/Olive/Leicorn.svg new file mode 100644 index 0000000..ec80e3b --- /dev/null +++ b/public/assets/signs/Olive/Leicorn.svg @@ -0,0 +1,67 @@ + + + + + Leicorn + + + + + + image/svg+xml + + Leicorn + + + + + + + diff --git a/public/assets/signs/Olive/Leittanius.svg b/public/assets/signs/Olive/Leittanius.svg new file mode 100644 index 0000000..ef2ab91 --- /dev/null +++ b/public/assets/signs/Olive/Leittanius.svg @@ -0,0 +1,67 @@ + + + + + Leittanius + + + + + + image/svg+xml + + Leittanius + + + + + + + diff --git a/public/assets/signs/Olive/Leittarius.svg b/public/assets/signs/Olive/Leittarius.svg new file mode 100644 index 0000000..5f86047 --- /dev/null +++ b/public/assets/signs/Olive/Leittarius.svg @@ -0,0 +1,63 @@ + + + + + Leittarius + + + + + + image/svg+xml + + Leittarius + + + + + + + diff --git a/public/assets/signs/Olive/Lelo.svg b/public/assets/signs/Olive/Lelo.svg new file mode 100644 index 0000000..ce560f0 --- /dev/null +++ b/public/assets/signs/Olive/Lelo.svg @@ -0,0 +1,66 @@ + + + + + Lelo + + + + + + image/svg+xml + + Lelo + + + + + + + diff --git a/public/assets/signs/Olive/Lemini.svg b/public/assets/signs/Olive/Lemini.svg new file mode 100644 index 0000000..5e83589 --- /dev/null +++ b/public/assets/signs/Olive/Lemini.svg @@ -0,0 +1,63 @@ + + + + + Lemini + + + + + + image/svg+xml + + Lemini + + + + + + + diff --git a/public/assets/signs/Olive/Lemino.svg b/public/assets/signs/Olive/Lemino.svg new file mode 100644 index 0000000..22b617a --- /dev/null +++ b/public/assets/signs/Olive/Lemino.svg @@ -0,0 +1,66 @@ + + + + + Lemino + + + + + + image/svg+xml + + Lemino + + + + + + + diff --git a/public/assets/signs/Olive/Lenius.svg b/public/assets/signs/Olive/Lenius.svg new file mode 100644 index 0000000..6a8bcb9 --- /dev/null +++ b/public/assets/signs/Olive/Lenius.svg @@ -0,0 +1,67 @@ + + + + + Lenius + + + + + + image/svg+xml + + Lenius + + + + + + + diff --git a/public/assets/signs/Olive/Leo.svg b/public/assets/signs/Olive/Leo.svg new file mode 100644 index 0000000..fffe80b --- /dev/null +++ b/public/assets/signs/Olive/Leo.svg @@ -0,0 +1,63 @@ + + + + + Leo + + + + + + image/svg+xml + + Leo + + + + + + + diff --git a/public/assets/signs/Olive/Lepia.svg b/public/assets/signs/Olive/Lepia.svg new file mode 100644 index 0000000..9005ae9 --- /dev/null +++ b/public/assets/signs/Olive/Lepia.svg @@ -0,0 +1,62 @@ + + + + + Lepia + + + + + + image/svg+xml + + Lepia + + + + + + + diff --git a/public/assets/signs/Olive/Lepio.svg b/public/assets/signs/Olive/Lepio.svg new file mode 100644 index 0000000..1103ad0 --- /dev/null +++ b/public/assets/signs/Olive/Lepio.svg @@ -0,0 +1,66 @@ + + + + + Lepio + + + + + + image/svg+xml + + Lepio + + + + + + + diff --git a/public/assets/signs/Olive/Lera.svg b/public/assets/signs/Olive/Lera.svg new file mode 100644 index 0000000..4d27080 --- /dev/null +++ b/public/assets/signs/Olive/Lera.svg @@ -0,0 +1,67 @@ + + + + + Lera + + + + + + image/svg+xml + + Lera + + + + + + + diff --git a/public/assets/signs/Olive/Leries.svg b/public/assets/signs/Olive/Leries.svg new file mode 100644 index 0000000..5755708 --- /dev/null +++ b/public/assets/signs/Olive/Leries.svg @@ -0,0 +1,63 @@ + + + + + Leries + + + + + + image/svg+xml + + Leries + + + + + + + diff --git a/public/assets/signs/Olive/Lerist.svg b/public/assets/signs/Olive/Lerist.svg new file mode 100644 index 0000000..326439b --- /dev/null +++ b/public/assets/signs/Olive/Lerist.svg @@ -0,0 +1,66 @@ + + + + + Lerist + + + + + + image/svg+xml + + Lerist + + + + + + + diff --git a/public/assets/signs/Olive/Lerius.svg b/public/assets/signs/Olive/Lerius.svg new file mode 100644 index 0000000..7b44ac0 --- /dev/null +++ b/public/assets/signs/Olive/Lerius.svg @@ -0,0 +1,62 @@ + + + + + Lerius + + + + + + image/svg+xml + + Lerius + + + + + + + diff --git a/public/assets/signs/Olive/Lesces.svg b/public/assets/signs/Olive/Lesces.svg new file mode 100644 index 0000000..c8b7319 --- /dev/null +++ b/public/assets/signs/Olive/Lesces.svg @@ -0,0 +1,62 @@ + + + + + Lesces + + + + + + image/svg+xml + + Lesces + + + + + + + diff --git a/public/assets/signs/Olive/Lesci.svg b/public/assets/signs/Olive/Lesci.svg new file mode 100644 index 0000000..ad56f12 --- /dev/null +++ b/public/assets/signs/Olive/Lesci.svg @@ -0,0 +1,67 @@ + + + + + Lesci + + + + + + image/svg+xml + + Lesci + + + + + + + diff --git a/public/assets/signs/Olive/Leun.svg b/public/assets/signs/Olive/Leun.svg new file mode 100644 index 0000000..d986a0e --- /dev/null +++ b/public/assets/signs/Olive/Leun.svg @@ -0,0 +1,61 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/public/assets/signs/Olive/Leus.svg b/public/assets/signs/Olive/Leus.svg new file mode 100644 index 0000000..f45aac4 --- /dev/null +++ b/public/assets/signs/Olive/Leus.svg @@ -0,0 +1,66 @@ + + + + + Leus + + + + + + image/svg+xml + + Leus + + + + + + + diff --git a/public/assets/signs/Olive/Leza.svg b/public/assets/signs/Olive/Leza.svg new file mode 100644 index 0000000..3c2f7ed --- /dev/null +++ b/public/assets/signs/Olive/Leza.svg @@ -0,0 +1,63 @@ + + + + + Leza + + + + + + image/svg+xml + + Leza + + + + + + + diff --git a/public/assets/signs/Purple/Capriborn.svg b/public/assets/signs/Purple/Capriborn.svg new file mode 100644 index 0000000..d06c8a1 --- /dev/null +++ b/public/assets/signs/Purple/Capriborn.svg @@ -0,0 +1,67 @@ + + + + + Capriborn + + + + + + image/svg+xml + + Capriborn + + + + + + + diff --git a/public/assets/signs/Purple/Capricen.svg b/public/assets/signs/Purple/Capricen.svg new file mode 100644 index 0000000..54d8137 --- /dev/null +++ b/public/assets/signs/Purple/Capricen.svg @@ -0,0 +1,66 @@ + + + + + Capricen + + + + + + image/svg+xml + + Capricen + + + + + + + diff --git a/public/assets/signs/Purple/Capricer.svg b/public/assets/signs/Purple/Capricer.svg new file mode 100644 index 0000000..ce73504 --- /dev/null +++ b/public/assets/signs/Purple/Capricer.svg @@ -0,0 +1,66 @@ + + + + + Capricer + + + + + + image/svg+xml + + Capricer + + + + + + + diff --git a/public/assets/signs/Purple/Capricorn.svg b/public/assets/signs/Purple/Capricorn.svg new file mode 100644 index 0000000..8fe7d70 --- /dev/null +++ b/public/assets/signs/Purple/Capricorn.svg @@ -0,0 +1,66 @@ + + + + + Capricorn + + + + + + image/svg+xml + + Capricorn + + + + + + + diff --git a/public/assets/signs/Purple/Capries.svg b/public/assets/signs/Purple/Capries.svg new file mode 100644 index 0000000..d0ca5ad --- /dev/null +++ b/public/assets/signs/Purple/Capries.svg @@ -0,0 +1,67 @@ + + + + + Capries + + + + + + image/svg+xml + + Capries + + + + + + + diff --git a/public/assets/signs/Purple/Capriga.svg b/public/assets/signs/Purple/Capriga.svg new file mode 100644 index 0000000..f807715 --- /dev/null +++ b/public/assets/signs/Purple/Capriga.svg @@ -0,0 +1,67 @@ + + + + + Capriga + + + + + + image/svg+xml + + Capriga + + + + + + + diff --git a/public/assets/signs/Purple/Caprigo.svg b/public/assets/signs/Purple/Caprigo.svg new file mode 100644 index 0000000..f52d4c1 --- /dev/null +++ b/public/assets/signs/Purple/Caprigo.svg @@ -0,0 +1,66 @@ + + + + + Caprigo + + + + + + image/svg+xml + + Caprigo + + + + + + + diff --git a/public/assets/signs/Purple/Caprilo.svg b/public/assets/signs/Purple/Caprilo.svg new file mode 100644 index 0000000..3d12573 --- /dev/null +++ b/public/assets/signs/Purple/Caprilo.svg @@ -0,0 +1,67 @@ + + + + + Caprilo + + + + + + image/svg+xml + + Caprilo + + + + + + + diff --git a/public/assets/signs/Purple/Caprimini.svg b/public/assets/signs/Purple/Caprimini.svg new file mode 100644 index 0000000..0ba69d2 --- /dev/null +++ b/public/assets/signs/Purple/Caprimini.svg @@ -0,0 +1,67 @@ + + + + + Caprimini + + + + + + image/svg+xml + + Caprimini + + + + + + + diff --git a/public/assets/signs/Purple/Caprimino.svg b/public/assets/signs/Purple/Caprimino.svg new file mode 100644 index 0000000..919a163 --- /dev/null +++ b/public/assets/signs/Purple/Caprimino.svg @@ -0,0 +1,66 @@ + + + + + Caprimino + + + + + + image/svg+xml + + Caprimino + + + + + + + diff --git a/public/assets/signs/Purple/Caprinius.svg b/public/assets/signs/Purple/Caprinius.svg new file mode 100644 index 0000000..cac5915 --- /dev/null +++ b/public/assets/signs/Purple/Caprinius.svg @@ -0,0 +1,66 @@ + + + + + Caprinius + + + + + + image/svg+xml + + Caprinius + + + + + + + diff --git a/public/assets/signs/Purple/Caprio.svg b/public/assets/signs/Purple/Caprio.svg new file mode 100644 index 0000000..1e27bb2 --- /dev/null +++ b/public/assets/signs/Purple/Caprio.svg @@ -0,0 +1,66 @@ + + + + + Caprio + + + + + + image/svg+xml + + Caprio + + + + + + + diff --git a/public/assets/signs/Purple/Capripia.svg b/public/assets/signs/Purple/Capripia.svg new file mode 100644 index 0000000..4584b38 --- /dev/null +++ b/public/assets/signs/Purple/Capripia.svg @@ -0,0 +1,66 @@ + + + + + Capripia + + + + + + image/svg+xml + + Capripia + + + + + + + diff --git a/public/assets/signs/Purple/Capripio.svg b/public/assets/signs/Purple/Capripio.svg new file mode 100644 index 0000000..536d4b7 --- /dev/null +++ b/public/assets/signs/Purple/Capripio.svg @@ -0,0 +1,67 @@ + + + + + Capripio + + + + + + image/svg+xml + + Capripio + + + + + + + diff --git a/public/assets/signs/Purple/Caprira.svg b/public/assets/signs/Purple/Caprira.svg new file mode 100644 index 0000000..95b1b72 --- /dev/null +++ b/public/assets/signs/Purple/Caprira.svg @@ -0,0 +1,67 @@ + + + + + Caprira + + + + + + image/svg+xml + + Caprira + + + + + + + diff --git a/public/assets/signs/Purple/Capririus.svg b/public/assets/signs/Purple/Capririus.svg new file mode 100644 index 0000000..82e0bcb --- /dev/null +++ b/public/assets/signs/Purple/Capririus.svg @@ -0,0 +1,66 @@ + + + + + Capririus + + + + + + image/svg+xml + + Capririus + + + + + + + diff --git a/public/assets/signs/Purple/Caprisces.svg b/public/assets/signs/Purple/Caprisces.svg new file mode 100644 index 0000000..332d474 --- /dev/null +++ b/public/assets/signs/Purple/Caprisces.svg @@ -0,0 +1,66 @@ + + + + + Caprisces + + + + + + image/svg+xml + + Caprisces + + + + + + + diff --git a/public/assets/signs/Purple/Caprisci.svg b/public/assets/signs/Purple/Caprisci.svg new file mode 100644 index 0000000..6732797 --- /dev/null +++ b/public/assets/signs/Purple/Caprisci.svg @@ -0,0 +1,68 @@ + + + + + Caprisci + + + + + + image/svg+xml + + Caprisci + + + + + + + diff --git a/public/assets/signs/Purple/Caprist.svg b/public/assets/signs/Purple/Caprist.svg new file mode 100644 index 0000000..788e0f2 --- /dev/null +++ b/public/assets/signs/Purple/Caprist.svg @@ -0,0 +1,67 @@ + + + + + Caprist + + + + + + image/svg+xml + + Caprist + + + + + + + diff --git a/public/assets/signs/Purple/Caprittanius.svg b/public/assets/signs/Purple/Caprittanius.svg new file mode 100644 index 0000000..f5e2224 --- /dev/null +++ b/public/assets/signs/Purple/Caprittanius.svg @@ -0,0 +1,67 @@ + + + + + Caprittanius + + + + + + image/svg+xml + + Caprittanius + + + + + + + diff --git a/public/assets/signs/Purple/Caprittarius.svg b/public/assets/signs/Purple/Caprittarius.svg new file mode 100644 index 0000000..921be92 --- /dev/null +++ b/public/assets/signs/Purple/Caprittarius.svg @@ -0,0 +1,67 @@ + + + + + Caprittarius + + + + + + image/svg+xml + + Caprittarius + + + + + + + diff --git a/public/assets/signs/Purple/Capriun.svg b/public/assets/signs/Purple/Capriun.svg new file mode 100644 index 0000000..ba0ed10 --- /dev/null +++ b/public/assets/signs/Purple/Capriun.svg @@ -0,0 +1,67 @@ + + + + + Capriun + + + + + + image/svg+xml + + Capriun + + + + + + + diff --git a/public/assets/signs/Purple/Caprius.svg b/public/assets/signs/Purple/Caprius.svg new file mode 100644 index 0000000..985e644 --- /dev/null +++ b/public/assets/signs/Purple/Caprius.svg @@ -0,0 +1,67 @@ + + + + + Caprius + + + + + + image/svg+xml + + Caprius + + + + + + + diff --git a/public/assets/signs/Purple/Capriza.svg b/public/assets/signs/Purple/Capriza.svg new file mode 100644 index 0000000..32ad58e --- /dev/null +++ b/public/assets/signs/Purple/Capriza.svg @@ -0,0 +1,66 @@ + + + + + Capriza + + + + + + image/svg+xml + + Capriza + + + + + + + diff --git a/public/assets/signs/README.md b/public/assets/signs/README.md new file mode 100644 index 0000000..62fb4a2 --- /dev/null +++ b/public/assets/signs/README.md @@ -0,0 +1,11 @@ +# ExtendedSigns + +_Extended Zodiac_ SVGs provided by DeviantArt user [Ylimegirl](https://www.deviantart.com/ylimegirl/gallery). + +https://www.deviantart.com/ylimegirl/art/Extended-Zodiac-Vectors-All-signs-721467417 + +> 288 vectors in two weeks! About 20.6 signs a day. Someone better use these. Happy Christmas, Hannukah, Kwanzaa, New Years Day, Festivus, 12th Perigree's Eve, etc etc. +> +> These are free for you to use for whatever you wish, credit and/or large amounts of money are appreciated but not necessary. + +The Extended Zodiac and _Homestuck_ © What Pumpkin Games Inc., Homestuck, and VIZ Media. diff --git a/public/assets/signs/Rust/Arcen.svg b/public/assets/signs/Rust/Arcen.svg new file mode 100644 index 0000000..6e248ee --- /dev/null +++ b/public/assets/signs/Rust/Arcen.svg @@ -0,0 +1,70 @@ + + + + + Arcen + + + + + + image/svg+xml + + Arcen + + + + + + + diff --git a/public/assets/signs/Rust/Arcer.svg b/public/assets/signs/Rust/Arcer.svg new file mode 100644 index 0000000..968366f --- /dev/null +++ b/public/assets/signs/Rust/Arcer.svg @@ -0,0 +1,61 @@ + + + + + Arcer + + + + + + image/svg+xml + + Arcer + + + + + + + diff --git a/public/assets/signs/Rust/Arga.svg b/public/assets/signs/Rust/Arga.svg new file mode 100644 index 0000000..66d7550 --- /dev/null +++ b/public/assets/signs/Rust/Arga.svg @@ -0,0 +1,70 @@ + + + + + Arga + + + + + + image/svg+xml + + Arga + + + + + + + diff --git a/public/assets/signs/Rust/Argo.svg b/public/assets/signs/Rust/Argo.svg new file mode 100644 index 0000000..ccac8d5 --- /dev/null +++ b/public/assets/signs/Rust/Argo.svg @@ -0,0 +1,62 @@ + + + + + Argo + + + + + + image/svg+xml + + Argo + + + + + + + diff --git a/public/assets/signs/Rust/Ariborn.svg b/public/assets/signs/Rust/Ariborn.svg new file mode 100644 index 0000000..2e0222b --- /dev/null +++ b/public/assets/signs/Rust/Ariborn.svg @@ -0,0 +1,70 @@ + + + + + Ariborn + + + + + + image/svg+xml + + Ariborn + + + + + + + diff --git a/public/assets/signs/Rust/Aricorn.svg b/public/assets/signs/Rust/Aricorn.svg new file mode 100644 index 0000000..4afb02b --- /dev/null +++ b/public/assets/signs/Rust/Aricorn.svg @@ -0,0 +1,61 @@ + + + + + Aricorn + + + + + + image/svg+xml + + Aricorn + + + + + + + diff --git a/public/assets/signs/Rust/Aries.svg b/public/assets/signs/Rust/Aries.svg new file mode 100644 index 0000000..4ea85c3 --- /dev/null +++ b/public/assets/signs/Rust/Aries.svg @@ -0,0 +1,72 @@ + + + + + Aries + + + + + + image/svg+xml + + Aries + + + + + + + diff --git a/public/assets/signs/Rust/Arist.svg b/public/assets/signs/Rust/Arist.svg new file mode 100644 index 0000000..2d45efe --- /dev/null +++ b/public/assets/signs/Rust/Arist.svg @@ -0,0 +1,61 @@ + + + + + Arist + + + + + + image/svg+xml + + Arist + + + + + + + diff --git a/public/assets/signs/Rust/Arittanius.svg b/public/assets/signs/Rust/Arittanius.svg new file mode 100644 index 0000000..cd7283b --- /dev/null +++ b/public/assets/signs/Rust/Arittanius.svg @@ -0,0 +1,61 @@ + + + + + Arittanius + + + + + + image/svg+xml + + Arittanius + + + + + + + diff --git a/public/assets/signs/Rust/Arlo.svg b/public/assets/signs/Rust/Arlo.svg new file mode 100644 index 0000000..dced82c --- /dev/null +++ b/public/assets/signs/Rust/Arlo.svg @@ -0,0 +1,61 @@ + + + + + Arlo + + + + + + image/svg+xml + + Arlo + + + + + + + diff --git a/public/assets/signs/Rust/Armini.svg b/public/assets/signs/Rust/Armini.svg new file mode 100644 index 0000000..9142050 --- /dev/null +++ b/public/assets/signs/Rust/Armini.svg @@ -0,0 +1,60 @@ + + + + + Armini + + + + + + image/svg+xml + + Armini + + + + + + diff --git a/public/assets/signs/Rust/Armino.svg b/public/assets/signs/Rust/Armino.svg new file mode 100644 index 0000000..f575e25 --- /dev/null +++ b/public/assets/signs/Rust/Armino.svg @@ -0,0 +1,61 @@ + + + + + Armino + + + + + + image/svg+xml + + Armino + + + + + + + diff --git a/public/assets/signs/Rust/Arnius.svg b/public/assets/signs/Rust/Arnius.svg new file mode 100644 index 0000000..26526b9 --- /dev/null +++ b/public/assets/signs/Rust/Arnius.svg @@ -0,0 +1,61 @@ + + + + + Arnius + + + + + + image/svg+xml + + Arnius + + + + + + + diff --git a/public/assets/signs/Rust/Aro.svg b/public/assets/signs/Rust/Aro.svg new file mode 100644 index 0000000..c458f7d --- /dev/null +++ b/public/assets/signs/Rust/Aro.svg @@ -0,0 +1,70 @@ + + + + + Aro + + + + + + image/svg+xml + + Aro + + + + + + + diff --git a/public/assets/signs/Rust/Arpia.svg b/public/assets/signs/Rust/Arpia.svg new file mode 100644 index 0000000..d92293e --- /dev/null +++ b/public/assets/signs/Rust/Arpia.svg @@ -0,0 +1,69 @@ + + + + + Arpia + + + + + + image/svg+xml + + Arpia + + + + + + diff --git a/public/assets/signs/Rust/Arpio.svg b/public/assets/signs/Rust/Arpio.svg new file mode 100644 index 0000000..6870693 --- /dev/null +++ b/public/assets/signs/Rust/Arpio.svg @@ -0,0 +1,61 @@ + + + + + Arpio + + + + + + image/svg+xml + + Arpio + + + + + + + diff --git a/public/assets/signs/Rust/Arra.svg b/public/assets/signs/Rust/Arra.svg new file mode 100644 index 0000000..ec4557f --- /dev/null +++ b/public/assets/signs/Rust/Arra.svg @@ -0,0 +1,62 @@ + + + + + Arra + + + + + + image/svg+xml + + Arra + + + + + + + diff --git a/public/assets/signs/Rust/Arritarius.svg b/public/assets/signs/Rust/Arritarius.svg new file mode 100644 index 0000000..1c1597f --- /dev/null +++ b/public/assets/signs/Rust/Arritarius.svg @@ -0,0 +1,70 @@ + + + + + Arritarius + + + + + + image/svg+xml + + Arritarius + + + + + + + diff --git a/public/assets/signs/Rust/Arrius.svg b/public/assets/signs/Rust/Arrius.svg new file mode 100644 index 0000000..bb942ac --- /dev/null +++ b/public/assets/signs/Rust/Arrius.svg @@ -0,0 +1,78 @@ + + + + + Arrius + + + + + + + + image/svg+xml + + Arrius + + + + + + + diff --git a/public/assets/signs/Rust/Arsces.svg b/public/assets/signs/Rust/Arsces.svg new file mode 100644 index 0000000..32c8099 --- /dev/null +++ b/public/assets/signs/Rust/Arsces.svg @@ -0,0 +1,70 @@ + + + + + Arsces + + + + + + image/svg+xml + + Arsces + + + + + + + diff --git a/public/assets/signs/Rust/Arsci.svg b/public/assets/signs/Rust/Arsci.svg new file mode 100644 index 0000000..7ba7f8e --- /dev/null +++ b/public/assets/signs/Rust/Arsci.svg @@ -0,0 +1,61 @@ + + + + + Arsci + + + + + + image/svg+xml + + Arsci + + + + + + + diff --git a/public/assets/signs/Rust/Arun.svg b/public/assets/signs/Rust/Arun.svg new file mode 100644 index 0000000..5a99fe6 --- /dev/null +++ b/public/assets/signs/Rust/Arun.svg @@ -0,0 +1,60 @@ + + + + + Arun + + + + + + image/svg+xml + + Arun + + + + + + diff --git a/public/assets/signs/Rust/Arus.svg b/public/assets/signs/Rust/Arus.svg new file mode 100644 index 0000000..45be72b --- /dev/null +++ b/public/assets/signs/Rust/Arus.svg @@ -0,0 +1,61 @@ + + + + + Arus + + + + + + image/svg+xml + + Arus + + + + + + diff --git a/public/assets/signs/Rust/Arza.svg b/public/assets/signs/Rust/Arza.svg new file mode 100644 index 0000000..abcdf95 --- /dev/null +++ b/public/assets/signs/Rust/Arza.svg @@ -0,0 +1,70 @@ + + + + + Arza + + + + + + image/svg+xml + + Arza + + + + + + + diff --git a/public/assets/signs/Teal/Libiborn.svg b/public/assets/signs/Teal/Libiborn.svg new file mode 100644 index 0000000..70fa594 --- /dev/null +++ b/public/assets/signs/Teal/Libiborn.svg @@ -0,0 +1,67 @@ + + + + + Libiborn + + + + + + image/svg+xml + + Libiborn + + + + + + + diff --git a/public/assets/signs/Teal/Libicorn.svg b/public/assets/signs/Teal/Libicorn.svg new file mode 100644 index 0000000..7a07c72 --- /dev/null +++ b/public/assets/signs/Teal/Libicorn.svg @@ -0,0 +1,66 @@ + + + + + Libicorn + + + + + + image/svg+xml + + Libicorn + + + + + + + diff --git a/public/assets/signs/Teal/Libittanius.svg b/public/assets/signs/Teal/Libittanius.svg new file mode 100644 index 0000000..aa0dc5a --- /dev/null +++ b/public/assets/signs/Teal/Libittanius.svg @@ -0,0 +1,66 @@ + + + + + Libittanius + + + + + + image/svg+xml + + Libittanius + + + + + + + diff --git a/public/assets/signs/Teal/Libittarius.svg b/public/assets/signs/Teal/Libittarius.svg new file mode 100644 index 0000000..7b4551b --- /dev/null +++ b/public/assets/signs/Teal/Libittarius.svg @@ -0,0 +1,66 @@ + + + + + Libittarius + + + + + + image/svg+xml + + Libittarius + + + + + + + diff --git a/public/assets/signs/Teal/Liblo.svg b/public/assets/signs/Teal/Liblo.svg new file mode 100644 index 0000000..02c8936 --- /dev/null +++ b/public/assets/signs/Teal/Liblo.svg @@ -0,0 +1,66 @@ + + + + + Liblo + + + + + + image/svg+xml + + Liblo + + + + + + + diff --git a/public/assets/signs/Teal/Libnius.svg b/public/assets/signs/Teal/Libnius.svg new file mode 100644 index 0000000..9e90242 --- /dev/null +++ b/public/assets/signs/Teal/Libnius.svg @@ -0,0 +1,66 @@ + + + + + Libnius + + + + + + image/svg+xml + + Libnius + + + + + + + diff --git a/public/assets/signs/Teal/Libo.svg b/public/assets/signs/Teal/Libo.svg new file mode 100644 index 0000000..9f274f2 --- /dev/null +++ b/public/assets/signs/Teal/Libo.svg @@ -0,0 +1,66 @@ + + + + + Libo + + + + + + image/svg+xml + + Libo + + + + + + + diff --git a/public/assets/signs/Teal/Libra.svg b/public/assets/signs/Teal/Libra.svg new file mode 100644 index 0000000..6511611 --- /dev/null +++ b/public/assets/signs/Teal/Libra.svg @@ -0,0 +1,68 @@ + + + + + Libra + + + + + + image/svg+xml + + Libra + + + + + + + diff --git a/public/assets/signs/Teal/Libries.svg b/public/assets/signs/Teal/Libries.svg new file mode 100644 index 0000000..e126fa1 --- /dev/null +++ b/public/assets/signs/Teal/Libries.svg @@ -0,0 +1,68 @@ + + + + + Libries + + + + + + image/svg+xml + + Libries + + + + + + + diff --git a/public/assets/signs/Teal/Librist.svg b/public/assets/signs/Teal/Librist.svg new file mode 100644 index 0000000..af8ddca --- /dev/null +++ b/public/assets/signs/Teal/Librist.svg @@ -0,0 +1,66 @@ + + + + + Librist + + + + + + image/svg+xml + + Librist + + + + + + + diff --git a/public/assets/signs/Teal/Librius.svg b/public/assets/signs/Teal/Librius.svg new file mode 100644 index 0000000..cb9c4ac --- /dev/null +++ b/public/assets/signs/Teal/Librius.svg @@ -0,0 +1,66 @@ + + + + + Librius + + + + + + image/svg+xml + + Librius + + + + + + + diff --git a/public/assets/signs/Teal/Libsces.svg b/public/assets/signs/Teal/Libsces.svg new file mode 100644 index 0000000..b74b74c --- /dev/null +++ b/public/assets/signs/Teal/Libsces.svg @@ -0,0 +1,66 @@ + + + + + Libsces + + + + + + image/svg+xml + + Libsces + + + + + + + diff --git a/public/assets/signs/Teal/Libsci.svg b/public/assets/signs/Teal/Libsci.svg new file mode 100644 index 0000000..96f7f75 --- /dev/null +++ b/public/assets/signs/Teal/Libsci.svg @@ -0,0 +1,66 @@ + + + + + Libsci + + + + + + image/svg+xml + + Libsci + + + + + + + diff --git a/public/assets/signs/Teal/Libun.svg b/public/assets/signs/Teal/Libun.svg new file mode 100644 index 0000000..9783941 --- /dev/null +++ b/public/assets/signs/Teal/Libun.svg @@ -0,0 +1,66 @@ + + + + + Libun + + + + + + image/svg+xml + + Libun + + + + + + + diff --git a/public/assets/signs/Teal/Libus.svg b/public/assets/signs/Teal/Libus.svg new file mode 100644 index 0000000..2d38cbc --- /dev/null +++ b/public/assets/signs/Teal/Libus.svg @@ -0,0 +1,68 @@ + + + + + Libus + + + + + + image/svg+xml + + Libus + + + + + + + diff --git a/public/assets/signs/Teal/Libza.svg b/public/assets/signs/Teal/Libza.svg new file mode 100644 index 0000000..87d3c48 --- /dev/null +++ b/public/assets/signs/Teal/Libza.svg @@ -0,0 +1,66 @@ + + + + + Libza + + + + + + image/svg+xml + + Libza + + + + + + + diff --git a/public/assets/signs/Teal/Licen.svg b/public/assets/signs/Teal/Licen.svg new file mode 100644 index 0000000..a3df498 --- /dev/null +++ b/public/assets/signs/Teal/Licen.svg @@ -0,0 +1,66 @@ + + + + + Licen + + + + + + image/svg+xml + + Licen + + + + + + + diff --git a/public/assets/signs/Teal/Licer.svg b/public/assets/signs/Teal/Licer.svg new file mode 100644 index 0000000..5e23893 --- /dev/null +++ b/public/assets/signs/Teal/Licer.svg @@ -0,0 +1,66 @@ + + + + + Licer + + + + + + image/svg+xml + + Licer + + + + + + + diff --git a/public/assets/signs/Teal/Liga.svg b/public/assets/signs/Teal/Liga.svg new file mode 100644 index 0000000..8896e1d --- /dev/null +++ b/public/assets/signs/Teal/Liga.svg @@ -0,0 +1,67 @@ + + + + + Liga + + + + + + image/svg+xml + + Liga + + + + + + + diff --git a/public/assets/signs/Teal/Ligo.svg b/public/assets/signs/Teal/Ligo.svg new file mode 100644 index 0000000..b71c110 --- /dev/null +++ b/public/assets/signs/Teal/Ligo.svg @@ -0,0 +1,66 @@ + + + + + Ligo + + + + + + image/svg+xml + + Ligo + + + + + + + diff --git a/public/assets/signs/Teal/Limini.svg b/public/assets/signs/Teal/Limini.svg new file mode 100644 index 0000000..815665c --- /dev/null +++ b/public/assets/signs/Teal/Limini.svg @@ -0,0 +1,66 @@ + + + + + Limini + + + + + + image/svg+xml + + Limini + + + + + + + diff --git a/public/assets/signs/Teal/Limino.svg b/public/assets/signs/Teal/Limino.svg new file mode 100644 index 0000000..caceb33 --- /dev/null +++ b/public/assets/signs/Teal/Limino.svg @@ -0,0 +1,67 @@ + + + + + Limino + + + + + + image/svg+xml + + Limino + + + + + + + diff --git a/public/assets/signs/Teal/Lipia.svg b/public/assets/signs/Teal/Lipia.svg new file mode 100644 index 0000000..c0d8845 --- /dev/null +++ b/public/assets/signs/Teal/Lipia.svg @@ -0,0 +1,67 @@ + + + + + Lipia + + + + + + image/svg+xml + + Lipia + + + + + + + diff --git a/public/assets/signs/Teal/Lipio.svg b/public/assets/signs/Teal/Lipio.svg new file mode 100644 index 0000000..e1fe3a5 --- /dev/null +++ b/public/assets/signs/Teal/Lipio.svg @@ -0,0 +1,66 @@ + + + + + Lipio + + + + + + image/svg+xml + + Lipio + + + + + + + diff --git a/public/assets/signs/Violet/Aquacen.svg b/public/assets/signs/Violet/Aquacen.svg new file mode 100644 index 0000000..e9dcae6 --- /dev/null +++ b/public/assets/signs/Violet/Aquacen.svg @@ -0,0 +1,66 @@ + + + + + Aquacen + + + + + + image/svg+xml + + Aquacen + + + + + + + diff --git a/public/assets/signs/Violet/Aquacer.svg b/public/assets/signs/Violet/Aquacer.svg new file mode 100644 index 0000000..a3d2a3e --- /dev/null +++ b/public/assets/signs/Violet/Aquacer.svg @@ -0,0 +1,66 @@ + + + + + Aquacer + + + + + + image/svg+xml + + Aquacer + + + + + + + diff --git a/public/assets/signs/Violet/Aquaga.svg b/public/assets/signs/Violet/Aquaga.svg new file mode 100644 index 0000000..f33beda --- /dev/null +++ b/public/assets/signs/Violet/Aquaga.svg @@ -0,0 +1,66 @@ + + + + + Aquaga + + + + + + image/svg+xml + + Aquaga + + + + + + + diff --git a/public/assets/signs/Violet/Aquago.svg b/public/assets/signs/Violet/Aquago.svg new file mode 100644 index 0000000..5070aa0 --- /dev/null +++ b/public/assets/signs/Violet/Aquago.svg @@ -0,0 +1,67 @@ + + + + + Aquago + + + + + + image/svg+xml + + Aquago + + + + + + + diff --git a/public/assets/signs/Violet/Aqualo.svg b/public/assets/signs/Violet/Aqualo.svg new file mode 100644 index 0000000..41862df --- /dev/null +++ b/public/assets/signs/Violet/Aqualo.svg @@ -0,0 +1,66 @@ + + + + + Aqualo + + + + + + image/svg+xml + + Aqualo + + + + + + + diff --git a/public/assets/signs/Violet/Aquamini.svg b/public/assets/signs/Violet/Aquamini.svg new file mode 100644 index 0000000..532baa9 --- /dev/null +++ b/public/assets/signs/Violet/Aquamini.svg @@ -0,0 +1,67 @@ + + + + + Aquamini + + + + + + image/svg+xml + + Aquamini + + + + + + + diff --git a/public/assets/signs/Violet/Aquamino.svg b/public/assets/signs/Violet/Aquamino.svg new file mode 100644 index 0000000..21faae1 --- /dev/null +++ b/public/assets/signs/Violet/Aquamino.svg @@ -0,0 +1,66 @@ + + + + + Aquamino + + + + + + image/svg+xml + + Aquamino + + + + + + + diff --git a/public/assets/signs/Violet/Aquanius.svg b/public/assets/signs/Violet/Aquanius.svg new file mode 100644 index 0000000..f098811 --- /dev/null +++ b/public/assets/signs/Violet/Aquanius.svg @@ -0,0 +1,66 @@ + + + + + Aquanius + + + + + + image/svg+xml + + Aquanius + + + + + + + diff --git a/public/assets/signs/Violet/Aquapia.svg b/public/assets/signs/Violet/Aquapia.svg new file mode 100644 index 0000000..192293f --- /dev/null +++ b/public/assets/signs/Violet/Aquapia.svg @@ -0,0 +1,66 @@ + + + + + Aquapia + + + + + + image/svg+xml + + Aquapia + + + + + + + diff --git a/public/assets/signs/Violet/Aquapio.svg b/public/assets/signs/Violet/Aquapio.svg new file mode 100644 index 0000000..2ccd60a --- /dev/null +++ b/public/assets/signs/Violet/Aquapio.svg @@ -0,0 +1,66 @@ + + + + + Aquapio + + + + + + image/svg+xml + + Aquapio + + + + + + + diff --git a/public/assets/signs/Violet/Aquara.svg b/public/assets/signs/Violet/Aquara.svg new file mode 100644 index 0000000..6e0809b --- /dev/null +++ b/public/assets/signs/Violet/Aquara.svg @@ -0,0 +1,66 @@ + + + + + Aquara + + + + + + image/svg+xml + + Aquara + + + + + + + diff --git a/public/assets/signs/Violet/Aquaries.svg b/public/assets/signs/Violet/Aquaries.svg new file mode 100644 index 0000000..50a235e --- /dev/null +++ b/public/assets/signs/Violet/Aquaries.svg @@ -0,0 +1,67 @@ + + + + + Aquaries + + + + + + image/svg+xml + + Aquaries + + + + + + + diff --git a/public/assets/signs/Violet/Aquarist.svg b/public/assets/signs/Violet/Aquarist.svg new file mode 100644 index 0000000..5135114 --- /dev/null +++ b/public/assets/signs/Violet/Aquarist.svg @@ -0,0 +1,66 @@ + + + + + Aquarist + + + + + + image/svg+xml + + Aquarist + + + + + + + diff --git a/public/assets/signs/Violet/Aquarius.svg b/public/assets/signs/Violet/Aquarius.svg new file mode 100644 index 0000000..8a791c0 --- /dev/null +++ b/public/assets/signs/Violet/Aquarius.svg @@ -0,0 +1,66 @@ + + + + + Aquarius + + + + + + image/svg+xml + + Aquarius + + + + + + + diff --git a/public/assets/signs/Violet/Aquasces.svg b/public/assets/signs/Violet/Aquasces.svg new file mode 100644 index 0000000..8e91aab --- /dev/null +++ b/public/assets/signs/Violet/Aquasces.svg @@ -0,0 +1,66 @@ + + + + + Aquasces + + + + + + image/svg+xml + + Aquasces + + + + + + + diff --git a/public/assets/signs/Violet/Aquasci.svg b/public/assets/signs/Violet/Aquasci.svg new file mode 100644 index 0000000..ab13c0d --- /dev/null +++ b/public/assets/signs/Violet/Aquasci.svg @@ -0,0 +1,66 @@ + + + + + Aquasci + + + + + + image/svg+xml + + Aquasci + + + + + + + diff --git a/public/assets/signs/Violet/Aquaza.svg b/public/assets/signs/Violet/Aquaza.svg new file mode 100644 index 0000000..6a6268d --- /dev/null +++ b/public/assets/signs/Violet/Aquaza.svg @@ -0,0 +1,66 @@ + + + + + Aquaza + + + + + + image/svg+xml + + Aquaza + + + + + + + diff --git a/public/assets/signs/Violet/Aquiborn.svg b/public/assets/signs/Violet/Aquiborn.svg new file mode 100644 index 0000000..8b4ff2a --- /dev/null +++ b/public/assets/signs/Violet/Aquiborn.svg @@ -0,0 +1,66 @@ + + + + + Aquiborn + + + + + + image/svg+xml + + Aquiborn + + + + + + + diff --git a/public/assets/signs/Violet/Aquicorn.svg b/public/assets/signs/Violet/Aquicorn.svg new file mode 100644 index 0000000..5c0588d --- /dev/null +++ b/public/assets/signs/Violet/Aquicorn.svg @@ -0,0 +1,66 @@ + + + + + Aquicorn + + + + + + image/svg+xml + + Aquicorn + + + + + + + diff --git a/public/assets/signs/Violet/Aquittanius.svg b/public/assets/signs/Violet/Aquittanius.svg new file mode 100644 index 0000000..1c0fbfc --- /dev/null +++ b/public/assets/signs/Violet/Aquittanius.svg @@ -0,0 +1,66 @@ + + + + + Aquittanius + + + + + + image/svg+xml + + Aquittanius + + + + + + + diff --git a/public/assets/signs/Violet/Aquittarius.svg b/public/assets/signs/Violet/Aquittarius.svg new file mode 100644 index 0000000..c656fd8 --- /dev/null +++ b/public/assets/signs/Violet/Aquittarius.svg @@ -0,0 +1,66 @@ + + + + + Aquittarius + + + + + + image/svg+xml + + Aquittarius + + + + + + + diff --git a/public/assets/signs/Violet/Aquiun.svg b/public/assets/signs/Violet/Aquiun.svg new file mode 100644 index 0000000..90c6a69 --- /dev/null +++ b/public/assets/signs/Violet/Aquiun.svg @@ -0,0 +1,66 @@ + + + + + Aquiun + + + + + + image/svg+xml + + Aquiun + + + + + + + diff --git a/public/assets/signs/Violet/Aquius.svg b/public/assets/signs/Violet/Aquius.svg new file mode 100644 index 0000000..e7f7ebd --- /dev/null +++ b/public/assets/signs/Violet/Aquius.svg @@ -0,0 +1,66 @@ + + + + + Aquius + + + + + + image/svg+xml + + Aquius + + + + + + + diff --git a/public/assets/signs/Violet/Aquo.svg b/public/assets/signs/Violet/Aquo.svg new file mode 100644 index 0000000..0ca6a1f --- /dev/null +++ b/public/assets/signs/Violet/Aquo.svg @@ -0,0 +1,66 @@ + + + + + Aquo + + + + + + image/svg+xml + + Aquo + + + + + + + diff --git a/public/assets/sway/Derse.png b/public/assets/sway/Derse.png new file mode 100644 index 0000000..50c2fcc Binary files /dev/null and b/public/assets/sway/Derse.png differ diff --git a/public/assets/sway/Prospit.png b/public/assets/sway/Prospit.png new file mode 100644 index 0000000..320ade6 Binary files /dev/null and b/public/assets/sway/Prospit.png differ diff --git a/public/fonts/FlowCircular/FlowCircular.ttf b/public/fonts/FlowCircular/FlowCircular.ttf new file mode 100644 index 0000000..2704f18 Binary files /dev/null and b/public/fonts/FlowCircular/FlowCircular.ttf differ diff --git a/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.codepoints b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.codepoints new file mode 100644 index 0000000..2da45cc --- /dev/null +++ b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.codepoints @@ -0,0 +1,3275 @@ +10k e951 +10mp e952 +11mp e953 +123 eb8d +12mp e954 +13mp e955 +14mp e956 +15mp e957 +16mp e958 +17mp e959 +18_up_rating f8fd +18mp e95a +19mp e95b +1k e95c +1k_plus e95d +1x_mobiledata efcd +1x_mobiledata_badge f7f1 +20mp e95e +21mp e95f +22mp e960 +23mp e961 +24mp e962 +2d ef37 +2k e963 +2k_plus e964 +2mp e965 +30fps efce +30fps_select efcf +360 e577 +3d_rotation e84d +3g_mobiledata efd0 +3g_mobiledata_badge f7f0 +3k e966 +3k_plus e967 +3mp e968 +3p efd1 +4g_mobiledata efd2 +4g_mobiledata_badge f7ef +4g_plus_mobiledata efd3 +4k e072 +4k_plus e969 +4mp e96a +50mp f6f3 +5g ef38 +5g_mobiledata_badge f7ee +5k e96b +5k_plus e96c +5mp e96d +60fps efd4 +60fps_select efd5 +6_ft_apart f21e +6k e96e +6k_plus e96f +6mp e970 +7k e971 +7k_plus e972 +7mp e973 +8k e974 +8k_plus e975 +8mp e976 +9k e977 +9k_plus e978 +9mp e979 +abc eb94 +ac_unit eb3b +access_alarm e855 +access_alarms e855 +access_time efd6 +access_time_filled efd6 +accessibility e84e +accessibility_new e92c +accessible e914 +accessible_forward e934 +account_balance e84f +account_balance_wallet e850 +account_box e851 +account_circle efd7 +account_circle_filled efd7 +account_circle_off f7b3 +account_tree e97a +activity_zone e1e6 +acute e4cb +ad e65a +ad_group e65b +ad_group_off eae5 +ad_off f7b2 +ad_units ef39 +adb e60e +add e145 +add_a_photo e439 +add_ad e72a +add_alarm e856 +add_alert e003 +add_box e146 +add_business e729 +add_call f0b7 +add_card eb86 +add_chart ef3c +add_circle e3ba +add_circle_outline e3ba +add_comment e266 +add_home f8eb +add_home_work f8ed +add_ic_call f0b7 +add_link e178 +add_location e567 +add_location_alt ef3a +add_moderator e97d +add_notes e091 +add_photo_alternate e43e +add_reaction e1d3 +add_road ef3b +add_shopping_cart e854 +add_task f23a +add_to_drive e65c +add_to_home_screen e1fe +add_to_photos e39d +add_to_queue e05c +addchart ef3c +adf_scanner eada +adjust e39e +admin_meds e48d +admin_panel_settings ef3d +ads_click e762 +agender f888 +agriculture ea79 +air efd8 +air_freshener e2ca +air_purifier_gen e829 +airline_seat_flat e630 +airline_seat_flat_angled e631 +airline_seat_individual_suite e632 +airline_seat_legroom_extra e633 +airline_seat_legroom_normal e634 +airline_seat_legroom_reduced e635 +airline_seat_recline_extra e636 +airline_seat_recline_normal e637 +airline_stops e7d0 +airlines e7ca +airplane_ticket efd9 +airplanemode_active e53d +airplanemode_inactive e194 +airplay e055 +airport_shuttle eb3c +airware f154 +airwave f154 +alarm e855 +alarm_add e856 +alarm_off e857 +alarm_on e858 +alarm_smart_wake f6b0 +album e019 +align_center e356 +align_end f797 +align_flex_center f796 +align_flex_end f795 +align_flex_start f794 +align_horizontal_center e00f +align_horizontal_left e00d +align_horizontal_right e010 +align_items_stretch f793 +align_justify_center f792 +align_justify_flex_end f791 +align_justify_flex_start f790 +align_justify_space_around f78f +align_justify_space_between f78e +align_justify_space_even f78d +align_justify_stretch f78c +align_self_stretch f78b +align_space_around f78a +align_space_between f789 +align_space_even f788 +align_start f787 +align_stretch f786 +align_vertical_bottom e015 +align_vertical_center e011 +align_vertical_top e00c +all_inbox e97f +all_inclusive eb3d +all_match e093 +all_out e90b +allergies e094 +allergy e64e +alt_route f184 +alternate_email e0e6 +altitude f873 +ambient_screen f6c4 +ambulance f803 +amend f802 +amp_stories ea13 +analytics ef3e +anchor f1cd +android e859 +animation e71c +announcement e87f +aod efda +aod_tablet f89f +aod_watch f6ac +apartment ea40 +api f1b7 +apk_document f88e +apk_install f88f +app_badging f72f +app_blocking ef3f +app_promo e981 +app_registration ef40 +app_settings_alt ef41 +app_shortcut eae4 +approval e982 +approval_delegation f84a +apps e5c3 +apps_outage e7cc +ar_on_you ef7c +architecture ea3b +archive e149 +area_chart e770 +arming_countdown e78a +arrow_and_edge f5d7 +arrow_back e5c4 +arrow_back_ios e5e0 +arrow_back_ios_new e2ea +arrow_circle_down f181 +arrow_circle_left eaa7 +arrow_circle_right eaaa +arrow_circle_up f182 +arrow_downward e5db +arrow_downward_alt e984 +arrow_drop_down e5c5 +arrow_drop_down_circle e5c6 +arrow_drop_up e5c7 +arrow_forward e5c8 +arrow_forward_ios e5e1 +arrow_insert f837 +arrow_left e5de +arrow_left_alt ef7d +arrow_or_edge f5d6 +arrow_outward f8ce +arrow_range f69b +arrow_right e5df +arrow_right_alt e941 +arrow_selector_tool f82f +arrow_split e985 +arrow_top_left f72e +arrow_top_right f72d +arrow_upward e5d8 +arrow_upward_alt e986 +arrows_more_down f8ab +arrows_more_up f8ac +arrows_outward f72c +art_track e060 +article ef42 +article_shortcut f587 +aspect_ratio e85b +assessment e85c +assignment e85d +assignment_add f848 +assignment_ind e85e +assignment_late e85f +assignment_return e860 +assignment_returned e861 +assignment_turned_in e862 +assist_walker f8d5 +assistant e39f +assistant_direction e988 +assistant_navigation e989 +assistant_on_hub f6c1 +assistant_photo ea1a +assured_workload eb6f +astrophotography_auto f1d9 +astrophotography_off f1da +atm e573 +atr ebc7 +attach_email ea5e +attach_file e226 +attach_file_add f841 +attach_money e227 +attachment e2bc +attractions ea52 +attribution efdb +audio_description f58c +audio_file eb82 +audio_video_receiver f5d3 +audiotrack e405 +auto_activity_zone f8ad +auto_awesome e65f +auto_awesome_mosaic e660 +auto_awesome_motion e661 +auto_delete ea4c +auto_detect_voice f83e +auto_fix e663 +auto_fix_high e663 +auto_fix_normal e664 +auto_fix_off e665 +auto_graph e4fb +auto_label f6be +auto_meeting_room f6bf +auto_mode ec20 +auto_read_pause f219 +auto_read_play f216 +auto_schedule e214 +auto_stories e666 +auto_timer ef7f +auto_videocam f6c0 +autofps_select efdc +autopause f6b6 +autopay f84b +autoplay f6b5 +autorenew e863 +autostop f682 +av_timer e01b +avg_pace f6bb +avg_time f813 +award_star f612 +azm f6ec +baby_changing_station f19b +back_hand e764 +back_to_tab f72b +background_dot_large f79e +background_grid_small f79d +background_replace f20a +backlight_high f7ed +backlight_low f7ec +backpack f19c +backspace e14a +backup e864 +backup_table ef43 +badge ea67 +badge_critical_battery f156 +bakery_dining ea53 +balance eaf6 +balcony e58f +ballot e172 +bar_chart e26b +bar_chart_4_bars f681 +barcode e70b +barcode_reader f85c +barcode_scanner e70c +barefoot f871 +batch_prediction f0f5 +bath_outdoor f6fb +bath_private f6fa +bath_public_large f6f9 +bathroom efdd +bathtub ea41 +battery_0_bar ebdc +battery_1_bar ebd9 +battery_20 f0a1 +battery_2_bar ebe0 +battery_30 f0a1 +battery_3_bar ebdd +battery_4_bar ebe2 +battery_50 f0a1 +battery_5_bar ebd4 +battery_60 f0a1 +battery_6_bar ebd2 +battery_80 f0a1 +battery_90 f0a1 +battery_alert e19c +battery_change f7eb +battery_charging_20 f0a2 +battery_charging_30 f0a3 +battery_charging_50 f0a4 +battery_charging_60 f0a5 +battery_charging_80 f0a6 +battery_charging_90 f0a7 +battery_charging_full e1a3 +battery_error f7ea +battery_full f0a1 +battery_full_alt f13b +battery_horiz_000 f8ae +battery_horiz_050 f8af +battery_horiz_075 f8b0 +battery_low f155 +battery_plus f7e9 +battery_profile e206 +battery_saver efde +battery_share f67e +battery_status_good f67d +battery_std f0a1 +battery_unknown e1a6 +battery_vert_005 f8b1 +battery_vert_020 f8b2 +battery_vert_050 f8b3 +battery_very_low f156 +beach_access eb3e +bed efdf +bedroom_baby efe0 +bedroom_child efe1 +bedroom_parent efe2 +bedtime ef44 +bedtime_off eb76 +beenhere e52d +bento f1f4 +bia f6eb +bid_landscape e667 +bid_landscape_disabled ef81 +bike_scooter ef45 +biotech ea3a +blanket e828 +blender efe3 +blind f8d6 +blinds e286 +blinds_closed ec1f +block f326 +blood_pressure e097 +bloodtype efe4 +bluetooth e1a7 +bluetooth_audio e1aa +bluetooth_connected e1a8 +bluetooth_disabled e1a9 +bluetooth_drive efe5 +bluetooth_searching e1aa +blur_circular e3a2 +blur_linear e3a3 +blur_medium e84c +blur_off e3a4 +blur_on e3a5 +blur_short e8cf +body_fat e098 +body_system e099 +bolt ea0b +book e865 +book_online f217 +bookmark e8e7 +bookmark_add e598 +bookmark_added e599 +bookmark_border e8e7 +bookmark_manager f7b1 +bookmark_remove e59a +bookmarks e98b +border_all e228 +border_bottom e229 +border_clear e22a +border_color e22b +border_horizontal e22c +border_inner e22d +border_left e22e +border_outer e22f +border_right e230 +border_style e231 +border_top e232 +border_vertical e233 +bottom_app_bar e730 +bottom_drawer e72d +bottom_navigation e98c +bottom_panel_close f72a +bottom_panel_open f729 +bottom_right_click f684 +bottom_sheets e98d +box f5a4 +box_add f5a5 +box_edit f5a6 +boy eb67 +brand_awareness e98e +branding_watermark e06b +breakfast_dining ea54 +breaking_news ea08 +breaking_news_alt_1 f0ba +breastfeeding f856 +brightness_1 e3fa +brightness_2 f036 +brightness_3 e3a8 +brightness_4 e3a9 +brightness_5 e3aa +brightness_6 e3ab +brightness_7 e3ac +brightness_alert f5cf +brightness_auto e1ab +brightness_empty f7e8 +brightness_high e1ac +brightness_low e1ad +brightness_medium e1ae +bring_your_own_ip e016 +broadcast_on_home f8f8 +broadcast_on_personal f8f9 +broken_image e3ad +browse eb13 +browse_activity f8a5 +browse_gallery ebd1 +browser_not_supported ef47 +browser_updated e7cf +brunch_dining ea73 +brush e3ae +bubble ef83 +bubble_chart e6dd +bubbles f64e +bug_report e868 +build f8cd +build_circle ef48 +bungalow e591 +burst_mode e43c +bus_alert e98f +business e7ee +business_center eb3f +business_chip f84c +business_messages ef84 +buttons_alt e72f +cabin e589 +cable efe6 +cached e86a +cake e7e9 +cake_add f85b +calculate ea5f +calendar_add_on ef85 +calendar_apps_script f0bb +calendar_month ebcc +calendar_today e935 +calendar_view_day e936 +calendar_view_month efe7 +calendar_view_week efe8 +call f0d4 +call_end f0bc +call_end_alt f0bc +call_log e08e +call_made e0b2 +call_merge e0b3 +call_missed e0b4 +call_missed_outgoing e0e4 +call_quality f652 +call_received e0b5 +call_split e0b6 +call_to_action e06c +camera e3af +camera_alt e412 +camera_enhance e8fc +camera_front e3b1 +camera_indoor efe9 +camera_outdoor efea +camera_rear e3b2 +camera_roll e3b3 +camera_video f7a6 +cameraswitch efeb +campaign ef49 +camping f8a2 +cancel e888 +cancel_presentation e0e9 +cancel_schedule_send ea39 +candle f588 +candlestick_chart ead4 +captive_portal f728 +capture f727 +car_crash ebf2 +car_rental ea55 +car_repair ea56 +card_giftcard e8f6 +card_membership e8f7 +card_travel e8f8 +cardiology e09c +cards e991 +carpenter f1f8 +cases e992 +casino eb40 +cast e307 +cast_connected e308 +cast_for_education efec +cast_pause f5f0 +cast_warning f5ef +castle eab1 +category e574 +celebration ea65 +cell_merge f82e +cell_tower ebba +cell_wifi e0ec +center_focus_strong e3b4 +center_focus_weak e3b5 +chair efed +chair_alt efee +chalet e585 +change_circle e2e7 +change_history e86b +charger e2ae +charging_station f19d +chart_data e473 +chat e0c9 +chat_add_on f0f3 +chat_apps_script f0bd +chat_bubble e0cb +chat_bubble_outline e0cb +chat_error f7ac +chat_paste_go f6bd +check e5ca +check_box e834 +check_box_outline_blank e835 +check_circle e86c +check_circle_filled e86c +check_circle_outline e86c +check_in_out f6f6 +check_indeterminate_small f88a +check_small f88b +checklist e6b1 +checklist_rtl e6b3 +checkroom f19e +cheer f6a8 +chess f5e7 +chevron_left e5cb +chevron_right e5cc +child_care eb41 +child_friendly eb42 +chip_extraction f821 +chips e993 +chrome_reader_mode e86d +chromecast_2 f17b +chromecast_device e83c +chronic ebb2 +church eaae +cinematic_blur f853 +circle ef4a +circle_notifications e994 +circles e7ea +circles_ext e7ec +clarify f0bf +class e865 +clean_hands f21f +cleaning_bucket f8b4 +cleaning_services f0ff +clear e5cd +clear_all e0b8 +clear_day f157 +clear_night f159 +climate_mini_split f8b5 +clinical_notes e09e +clock_loader_10 f726 +clock_loader_20 f725 +clock_loader_40 f724 +clock_loader_60 f723 +clock_loader_80 f722 +clock_loader_90 f721 +close e5cd +close_fullscreen f1cf +closed_caption e996 +closed_caption_disabled f1dc +closed_caption_off e996 +cloud f15c +cloud_circle e2be +cloud_done e2bf +cloud_download e2c0 +cloud_off e2c1 +cloud_queue f15c +cloud_sync eb5a +cloud_upload e2c3 +cloudy f15c +cloudy_filled f15c +cloudy_snowing e810 +co2 e7b0 +co_present eaf0 +code e86f +code_blocks f84d +code_off e4f3 +coffee efef +coffee_maker eff0 +cognition e09f +collapse_all e944 +collections e3d3 +collections_bookmark e431 +color_lens e40a +colorize e3b8 +colors e997 +comic_bubble f5dd +comment e24c +comment_bank ea4e +comments_disabled e7a2 +commit eaf5 +communication e27c +communities e7ed +communities_filled e7ed +commute e940 +compare e3b9 +compare_arrows e915 +compass_calibration e57c +component_exchange f1e7 +compost e761 +compress e94d +computer e31e +conditions e0a0 +confirmation_number e638 +congenital e0a1 +connect_without_contact f223 +connected_tv e998 +connecting_airports e7c9 +construction ea3c +contact_emergency f8d1 +contact_mail e0d0 +contact_page f22e +contact_phone f0c0 +contact_phone_filled f0c0 +contact_support e94c +contactless ea71 +contactless_off f858 +contacts e0ba +content_copy e14d +content_cut e14e +content_paste e14f +content_paste_go ea8e +content_paste_off e4f8 +content_paste_search ea9b +contract f5a0 +contract_delete f5a2 +contract_edit f5a1 +contrast eb37 +contrast_rtl_off ec72 +control_camera e074 +control_point e3ba +control_point_duplicate e3bb +controller_gen e83d +conversion_path f0c1 +conversion_path_off f7b4 +conveyor_belt f867 +cookie eaac +cookie_off f79a +cooking e2b6 +cool_to_dry e276 +copy_all e2ec +copyright e90c +coronavirus f221 +corporate_fare f1d0 +cottage e587 +counter_0 f785 +counter_1 f784 +counter_2 f783 +counter_3 f782 +counter_4 f781 +counter_5 f780 +counter_6 f77f +counter_7 f77e +counter_8 f77d +counter_9 f77c +countertops f1f7 +create f345 +create_new_folder e2cc +credit_card e8a1 +credit_card_off e4f4 +credit_score eff1 +crib e588 +crisis_alert ebe9 +crop e3be +crop_16_9 e3bc +crop_3_2 e3bd +crop_5_4 e3bf +crop_7_5 e3c0 +crop_din e3c6 +crop_free e3c2 +crop_landscape e3c3 +crop_original e3f4 +crop_portrait e3c5 +crop_rotate e437 +crop_square e3c6 +crossword f5e5 +crowdsource eb18 +cruelty_free e799 +css eb93 +csv e6cf +currency_bitcoin ebc5 +currency_exchange eb70 +currency_franc eafa +currency_lira eaef +currency_pound eaf1 +currency_ruble eaec +currency_rupee eaf7 +currency_yen eafb +currency_yuan eaf9 +curtains ec1e +curtains_closed ec1d +custom_typography e732 +cut f08b +cycle f854 +cyclone ebd5 +dangerous e99a +dark_mode e51c +dashboard e871 +dashboard_customize e99b +data_alert f7f6 +data_array ead1 +data_check f7f2 +data_exploration e76f +data_info_alert f7f5 +data_loss_prevention e2dc +data_object ead3 +data_saver_off eff2 +data_saver_on eff3 +data_table e99c +data_thresholding eb9f +data_usage eff2 +database f20e +dataset f8ee +dataset_linked f8ef +date_range e916 +deblur eb77 +deceased e0a5 +decimal_decrease f82d +decimal_increase f82c +deck ea42 +dehaze e3c7 +delete e872 +delete_forever e92b +delete_outline e872 +delete_sweep e16c +demography e489 +density_large eba9 +density_medium eb9e +density_small eba8 +dentistry e0a6 +departure_board e576 +deployed_code f720 +deployed_code_alert f5f2 +deployed_code_history f5f3 +deployed_code_update f5f4 +dermatology e0a7 +description e873 +deselect ebb6 +design_services f10a +desk f8f4 +deskphone f7fa +desktop_access_disabled e99d +desktop_mac e30b +desktop_windows e30c +destruction f585 +details e3c8 +detection_and_zone e29f +detector e282 +detector_alarm e1f7 +detector_battery e204 +detector_co e2af +detector_offline e223 +detector_smoke e285 +detector_status e1e8 +developer_board e30d +developer_board_off e4ff +developer_guide e99e +developer_mode e1b0 +developer_mode_tv e874 +device_hub e335 +device_reset e8b3 +device_thermostat e1ff +device_unknown e339 +devices e326 +devices_fold ebde +devices_off f7a5 +devices_other e337 +devices_wearables f6ab +dew_point f879 +diagnosis e0a8 +dialer_sip e0bb +dialogs e99f +dialpad e0bc +diamond ead5 +difference eb7d +digital_out_of_home f1de +dining eff4 +dinner_dining ea57 +directions e52e +directions_alt f880 +directions_alt_off f881 +directions_bike e52f +directions_boat eff5 +directions_boat_filled eff5 +directions_bus eff6 +directions_bus_filled eff6 +directions_car eff7 +directions_car_filled eff7 +directions_off f10f +directions_railway eff8 +directions_railway_filled eff8 +directions_run e566 +directions_subway effa +directions_subway_filled effa +directions_transit effa +directions_transit_filled effa +directions_walk e536 +directory_sync e394 +dirty_lens ef4b +disabled_by_default f230 +disabled_visible e76e +disc_full e610 +discover_tune e018 +dishwasher_gen e832 +display_external_input f7e7 +display_settings eb97 +distance f6ea +diversity_1 f8d7 +diversity_2 f8d8 +diversity_3 f8d9 +diversity_4 f857 +dns e875 +do_disturb f326 +do_disturb_alt f08d +do_disturb_off f329 +do_disturb_on f08f +do_not_disturb f08d +do_not_disturb_alt f326 +do_not_disturb_off f329 +do_not_disturb_on f08f +do_not_disturb_on_total_silence effb +do_not_step f19f +do_not_touch f1b0 +dock e30e +dock_to_bottom f7e6 +dock_to_left f7e5 +dock_to_right f7e4 +docs_add_on f0c2 +docs_apps_script f0c3 +document_scanner e5fa +domain e7ee +domain_add eb62 +domain_disabled e0ef +domain_verification ef4c +domain_verification_off f7b0 +domino_mask f5e4 +done e876 +done_all e877 +done_outline e92f +donut_large e917 +donut_small e918 +door_back effc +door_front effd +door_open e77c +door_sensor e28a +door_sliding effe +doorbell efff +doorbell_3p e1e7 +doorbell_chime e1f3 +double_arrow ea50 +downhill_skiing e509 +download f090 +download_done f091 +download_for_offline f000 +downloading f001 +draft e66d +draft_orders e7b3 +drafts e151 +drag_click f71f +drag_handle e25d +drag_indicator e945 +drag_pan f71e +draw e746 +draw_abstract f7f8 +draw_collage f7f7 +dresser e210 +drive_eta eff7 +drive_file_move e9a1 +drive_file_move_outline e9a1 +drive_file_move_rtl e9a1 +drive_file_rename_outline e9a2 +drive_folder_upload e9a3 +drive_fusiontable e667 +dropdown e9a4 +dry f1b3 +dry_cleaning ea58 +dual_screen f6cf +duo e9a5 +dvr e1b2 +dynamic_feed ea14 +dynamic_form f1bf +e911_avatar f11a +e911_emergency f119 +e_mobiledata f002 +e_mobiledata_badge f7e3 +earbuds f003 +earbuds_battery f004 +early_on e2ba +earthquake f64f +east f1df +ecg f80f +ecg_heart f6e9 +eco ea35 +eda f6e8 +edgesensor_high f005 +edgesensor_low f006 +edit f345 +edit_attributes e578 +edit_calendar e742 +edit_document f88c +edit_location e568 +edit_location_alt e1c5 +edit_note e745 +edit_notifications e525 +edit_off e950 +edit_road ef4d +edit_square f88d +egg eacc +egg_alt eac8 +eject e8fb +elderly f21a +elderly_woman eb69 +electric_bike eb1b +electric_bolt ec1c +electric_car eb1c +electric_meter ec1b +electric_moped eb1d +electric_rickshaw eb1e +electric_scooter eb1f +electrical_services f102 +elevation f6e7 +elevator f1a0 +email e159 +emergency e1eb +emergency_heat f15d +emergency_home e82a +emergency_recording ebf4 +emergency_share ebf6 +emergency_share_off f59e +emoji_emotions ea22 +emoji_events ea23 +emoji_flags ea1a +emoji_food_beverage ea1b +emoji_nature ea1c +emoji_objects ea24 +emoji_people ea1d +emoji_symbols ea1e +emoji_transportation ea1f +emoticon e5f3 +empty_dashboard f844 +enable f188 +encrypted e593 +endocrinology e0a9 +energy_program_saving f15f +energy_program_time_used f161 +energy_savings_leaf ec1a +engineering ea3d +enhanced_encryption e63f +ent e0aa +equal f77b +equalizer e01d +error f8b6 +error_circle_rounded f8b6 +error_med e49b +error_outline f8b6 +escalator f1a1 +escalator_warning f1ac +euro ea15 +euro_symbol e926 +ev_charger e56d +ev_mobiledata_badge f7e2 +ev_shadow ef8f +ev_shadow_add f580 +ev_shadow_minus f57f +ev_station e56d +event e878 +event_available e614 +event_busy e615 +event_list f683 +event_note e616 +event_repeat eb7b +event_seat e903 +event_upcoming f238 +exclamation f22f +exercise f6e6 +exit_to_app e879 +expand e94f +expand_all e946 +expand_circle_down e7cd +expand_circle_right f591 +expand_circle_up f5d2 +expand_content f830 +expand_less e5ce +expand_more e5cf +explicit e01e +explore e87a +explore_off e9a8 +explosion f685 +export_notes e0ac +exposure e3f6 +exposure_neg_1 e3cb +exposure_neg_2 e3cc +exposure_plus_1 e800 +exposure_plus_2 e3ce +exposure_zero e3cf +extension e87b +extension_off e4f5 +eyeglasses f6ee +face f008 +face_2 f8da +face_3 f8db +face_4 f8dc +face_5 f8dd +face_6 f8de +face_retouching_natural ef4e +face_retouching_off f007 +face_unlock f008 +fact_check f0c5 +factory ebbc +falling f60d +familiar_face_and_zone e21c +family_history e0ad +family_link eb19 +family_restroom f1a2 +fast_forward e01f +fast_rewind e020 +fastfood e57a +faucet e278 +favorite e87e +favorite_border e87e +fax ead8 +feature_search e9a9 +featured_play_list e06d +featured_video e06e +feed f009 +feedback e87f +female e590 +femur f891 +femur_alt f892 +fence f1f6 +fertile f6e5 +festival ea68 +fiber_dvr e05d +fiber_manual_record e061 +fiber_new e05e +fiber_pin e06a +fiber_smart_record e062 +file_copy e173 +file_download f090 +file_download_done f091 +file_download_off e4fe +file_open eaf3 +file_present ea0e +file_upload f09b +file_upload_off f886 +filter e3d3 +filter_1 e3d0 +filter_2 e3d1 +filter_3 e3d2 +filter_4 e3d4 +filter_5 e3d5 +filter_6 e3d6 +filter_7 e3d7 +filter_8 e3d8 +filter_9 e3d9 +filter_9_plus e3da +filter_alt ef4f +filter_alt_off eb32 +filter_b_and_w e3db +filter_center_focus e3dc +filter_drama e3dd +filter_frames e3de +filter_hdr e3df +filter_list e152 +filter_list_alt e94e +filter_list_off eb57 +filter_none e3e0 +filter_tilt_shift e3e2 +filter_vintage e3e3 +finance e6bf +finance_chip f84e +find_in_page e880 +find_replace e881 +fingerprint e90d +fire_extinguisher f1d8 +fire_hydrant f1a3 +fire_truck f8f2 +fireplace ea43 +first_page e5dc +fit_page f77a +fit_screen ea10 +fit_width f779 +fitness_center eb43 +flag ea1a +flag_circle eaf8 +flag_filled ea1a +flaky ef50 +flare e3e4 +flash_auto e3e5 +flash_off e3e6 +flash_on e3e7 +flashlight_off f00a +flashlight_on f00b +flatware f00c +flex_direction f778 +flex_no_wrap f777 +flex_wrap f776 +flight e539 +flight_class e7cb +flight_land e904 +flight_takeoff e905 +flightsmode e6ca +flip e3e8 +flip_camera_android ea37 +flip_camera_ios ea38 +flip_to_back e882 +flip_to_front e883 +flood ebe6 +floor f6e4 +floor_lamp e21e +flourescent f00d +flowsheet e0ae +fluid e483 +fluid_balance f80d +fluid_med f80c +fluorescent f00d +flutter f1dd +flutter_dash e00b +fmd_bad f00e +fmd_good f1db +foggy e818 +folded_hands f5ed +folder e2c7 +folder_copy ebbd +folder_data f586 +folder_delete eb34 +folder_managed f775 +folder_off eb83 +folder_open e2c8 +folder_shared e2c9 +folder_special e617 +folder_supervised f774 +folder_zip eb2c +follow_the_signs f222 +font_download e167 +font_download_off e4f9 +food_bank f1f2 +foot_bones f893 +footprint f87d +forest ea99 +fork_left eba0 +fork_right ebac +forklift f868 +format_align_center e234 +format_align_justify e235 +format_align_left e236 +format_align_right e237 +format_bold e238 +format_clear e239 +format_color_fill e23a +format_color_reset e23b +format_color_text e23c +format_h1 f85d +format_h2 f85e +format_h3 f85f +format_h4 f860 +format_h5 f861 +format_h6 f862 +format_image_left f863 +format_image_right f864 +format_indent_decrease e23d +format_indent_increase e23e +format_ink_highlighter f82b +format_italic e23f +format_letter_spacing f773 +format_letter_spacing_2 f618 +format_letter_spacing_standard f617 +format_letter_spacing_wide f616 +format_letter_spacing_wider f615 +format_line_spacing e240 +format_list_bulleted e241 +format_list_bulleted_add f849 +format_list_numbered e242 +format_list_numbered_rtl e267 +format_overline eb65 +format_paint e243 +format_paragraph f865 +format_quote e244 +format_shapes e25e +format_size e245 +format_strikethrough e246 +format_text_clip f82a +format_text_overflow f829 +format_text_wrap f828 +format_textdirection_l_to_r e247 +format_textdirection_r_to_l e248 +format_underlined e249 +format_underlined_squiggle f885 +forms_add_on f0c7 +forms_apps_script f0c8 +fort eaad +forum e8af +forward f57a +forward_10 e056 +forward_30 e057 +forward_5 e058 +forward_circle f6f5 +forward_media f6f4 +forward_to_inbox f187 +foundation f200 +frame_inspect f772 +frame_person f8a6 +frame_person_off f7d1 +frame_reload f771 +frame_source f770 +free_breakfast eb44 +free_cancellation e748 +front_hand e769 +front_loader f869 +full_coverage eb12 +full_hd f58b +full_stacked_bar_chart f212 +fullscreen e5d0 +fullscreen_exit e5d1 +function f866 +functions e24a +g_mobiledata f010 +g_mobiledata_badge f7e1 +g_translate e927 +gallery_thumbnail f86f +gamepad e30f +games e30f +garage f011 +garage_home e82d +garden_cart f8a9 +gas_meter ec19 +gastroenterology e0f1 +gate e277 +gavel e90e +generating_tokens e749 +genetics e0f3 +genres e022 +gesture e155 +gesture_select f657 +get_app f090 +gif e908 +gif_box e7a3 +girl eb68 +gite e58b +glass_cup f6e3 +globe_asia f799 +globe_uk f798 +glucose e4a0 +glyphs f8a3 +go_to_line f71d +golf_course eb45 +google_plus_reshare f57a +google_tv_remote f5db +google_wifi f579 +gpp_bad f012 +gpp_good f013 +gpp_maybe f014 +gps_fixed e55c +gps_not_fixed e1b7 +gps_off e1b6 +grade e885 +gradient e3e9 +grading ea4f +grain e3ea +graphic_eq e1b8 +grass f205 +grid_3x3 f015 +grid_3x3_off f67c +grid_4x4 f016 +grid_goldenratio f017 +grid_guides f76f +grid_off e3eb +grid_on e3ec +grid_view e9b0 +group ea21 +group_add e7f0 +group_off e747 +group_remove e7ad +group_work e886 +grouped_bar_chart f211 +groups f233 +groups_2 f8df +groups_3 f8e0 +gynecology e0f4 +h_mobiledata f018 +h_mobiledata_badge f7e0 +h_plus_mobiledata f019 +h_plus_mobiledata_badge f7df +hail e9b1 +hallway e6f8 +hand_bones f894 +hand_gesture ef9c +handshake ebcb +handyman f10b +hangout_video e0c1 +hangout_video_off e0c2 +hard_drive f80e +hard_drive_2 f7a4 +hardware ea59 +hd e052 +hdr_auto f01a +hdr_auto_select f01b +hdr_enhanced_select ef51 +hdr_off e3ed +hdr_off_select f01c +hdr_on e3ee +hdr_on_select f01d +hdr_plus f01e +hdr_strong e3f1 +hdr_weak e3f2 +headphones f01f +headphones_battery f020 +headset f01f +headset_mic e311 +headset_off e33a +healing e3f3 +health_and_safety e1d5 +health_metrics f6e2 +heap_snapshot_large f76e +heap_snapshot_multiple f76d +heap_snapshot_thumbnail f76c +hearing e023 +hearing_disabled f104 +heart_broken eac2 +heart_check f60a +heart_minus f883 +heart_plus f884 +heat_pump ec18 +heat_pump_balance e27e +height ea16 +helicopter f60c +help e8fd +help_center f1c0 +help_clinic f810 +help_outline e8fd +hematology e0f6 +hevc f021 +hexagon eb39 +hide ef9e +hide_image f022 +hide_source f023 +high_density f79c +high_quality e024 +highlight e25f +highlight_off e888 +highlighter_size_1 f76b +highlighter_size_2 f76a +highlighter_size_3 f769 +highlighter_size_4 f768 +highlighter_size_5 f767 +hiking e50a +history e8b3 +history_edu ea3e +history_toggle_off f17d +hive eaa6 +hls eb8a +hls_off eb8c +holiday_village e58a +home e88a +home_app_logo e295 +home_filled e88a +home_health e4b9 +home_iot_device e283 +home_max f024 +home_max_dots e849 +home_mini f025 +home_pin f14d +home_repair_service f100 +home_speaker f11c +home_storage f86c +home_work f030 +horizontal_distribute e014 +horizontal_rule f108 +horizontal_split e947 +hot_tub eb46 +hotel e549 +hotel_class e743 +hourglass_bottom ea5c +hourglass_disabled ef53 +hourglass_empty e88b +hourglass_full e88c +hourglass_top ea5b +house ea44 +house_siding f202 +house_with_shield e786 +houseboat e584 +how_to_reg e174 +how_to_vote e175 +hr_resting f6ba +html eb7e +http e902 +https e88d +hub e9f4 +humerus f895 +humerus_alt f896 +humidity_high f163 +humidity_low f164 +humidity_mid f165 +humidity_percentage f87e +hvac f10e +ice_skating e50b +icecream ea69 +ifl e025 +iframe f71b +iframe_off f71c +image e3f4 +image_aspect_ratio e3f5 +image_not_supported f116 +image_search e43f +imagesearch_roller e9b4 +imagesmode efa2 +immunology e0fb +import_contacts e0e0 +import_export e8d5 +important_devices e912 +in_home_mode e833 +inactive_order e0fc +inbox e156 +inbox_customize f859 +incomplete_circle e79b +indeterminate_check_box e909 +info e88e +info_i f59b +infrared f87c +ink_eraser e6d0 +ink_eraser_off e7e3 +ink_highlighter e6d1 +ink_marker e6d2 +ink_pen e6d3 +inpatient e0fe +input e890 +input_circle f71a +insert_chart e85c +insert_chart_filled e85c +insert_chart_outlined e85c +insert_comment e24c +insert_drive_file e66d +insert_emoticon ea22 +insert_invitation e878 +insert_link e250 +insert_page_break eaca +insert_photo e3f4 +insert_text f827 +insights f092 +install_desktop eb71 +install_mobile eb72 +instant_mix e026 +integration_instructions ef54 +interactive_space f7ff +interests e7c8 +interpreter_mode e83b +inventory e179 +inventory_2 e1a1 +invert_colors e891 +invert_colors_off e0c4 +ios_share e6b8 +iron e583 +iso e3f6 +jamboard_kiosk e9b5 +javascript eb7c +join f84f +join_full eaeb +join_inner eaf4 +join_left eaf2 +join_right eaea +joystick f5ee +jump_to_element f719 +kayaking e50c +kebab_dining e842 +kettle e2b9 +key e73c +key_off eb84 +key_visualizer f199 +keyboard e312 +keyboard_alt f028 +keyboard_arrow_down e313 +keyboard_arrow_left e314 +keyboard_arrow_right e315 +keyboard_arrow_up e316 +keyboard_backspace e317 +keyboard_capslock e318 +keyboard_capslock_badge f7de +keyboard_command_key eae7 +keyboard_control_key eae6 +keyboard_double_arrow_down ead0 +keyboard_double_arrow_left eac3 +keyboard_double_arrow_right eac9 +keyboard_double_arrow_up eacf +keyboard_external_input f7dd +keyboard_full f7dc +keyboard_hide e31a +keyboard_keys f67b +keyboard_off f67a +keyboard_onscreen f7db +keyboard_option_key eae8 +keyboard_previous_language f7da +keyboard_return e31b +keyboard_tab e31c +keyboard_tab_rtl ec73 +keyboard_voice e31d +king_bed ea45 +kitchen eb47 +kitesurfing e50d +lab_panel e103 +lab_profile e104 +lab_research f80b +label e893 +label_important e948 +label_important_outline e948 +label_off e9b6 +label_outline e893 +labs e105 +lan eb2f +landscape e564 +landslide ebd7 +language e894 +language_chinese_array f766 +language_chinese_cangjie f765 +language_chinese_dayi f764 +language_chinese_pinyin f763 +language_chinese_quick f762 +language_chinese_wubi f761 +language_french f760 +language_gb_english f75f +language_international f75e +language_korean_latin f75d +language_pinyin f75c +language_spanish f5e9 +language_us f759 +language_us_colemak f75b +language_us_dvorak f75a +laps f6b9 +laptop e31e +laptop_chromebook e31f +laptop_mac e320 +laptop_windows e321 +lasso_select eb03 +last_page e5dd +launch e89e +laundry e2a8 +layers e53b +layers_clear e53c +lda e106 +leaderboard f20c +leak_add e3f8 +leak_remove e3f9 +left_click f718 +left_panel_close f717 +left_panel_open f716 +legend_toggle f11b +lens e3fa +lens_blur f029 +letter_switch f758 +library_add e03c +library_add_check e9b7 +library_books e02f +library_music e030 +lift_to_talk efa3 +light f02a +light_group e28b +light_mode e518 +lightbulb e90f +lightbulb_circle ebfe +lightbulb_outline e90f +line_axis ea9a +line_curve f757 +line_end f826 +line_end_arrow f81d +line_end_arrow_notch f81c +line_end_circle f81b +line_end_diamond f81a +line_end_square f819 +line_start f825 +line_start_arrow f818 +line_start_arrow_notch f817 +line_start_circle f816 +line_start_diamond f815 +line_start_square f814 +line_style e919 +line_weight e91a +linear_scale e260 +link e250 +link_off e16f +linked_camera e438 +liquor ea60 +list e896 +list_alt e0ee +list_alt_add f756 +lists e9b9 +live_help e0c6 +live_tv e63b +living f02b +local_activity e553 +local_airport e53d +local_atm e53e +local_bar e540 +local_cafe eb44 +local_car_wash e542 +local_convenience_store e543 +local_dining e561 +local_drink e544 +local_fire_department f33b +local_florist e545 +local_gas_station e546 +local_grocery_store e8cc +local_hospital e548 +local_hotel e549 +local_laundry_service e54a +local_library e54b +local_mall e54c +local_movies e8da +local_offer f05b +local_parking e54f +local_pharmacy e550 +local_phone f0d4 +local_pizza e552 +local_play e553 +local_police ef56 +local_post_office e554 +local_printshop e8ad +local_see e557 +local_shipping e558 +local_taxi e559 +location_automation f14f +location_away f150 +location_chip f850 +location_city e7f1 +location_disabled e1b6 +location_home f152 +location_off e0c7 +location_on f1db +location_pin f1db +location_searching e1b7 +locator_tag f8c1 +lock e88d +lock_clock ef57 +lock_open e898 +lock_open_right f656 +lock_outline e88d +lock_person f8f3 +lock_reset eade +login ea77 +logo_dev ead6 +logout e9ba +looks e3fc +looks_3 e3fb +looks_4 e3fd +looks_5 e3fe +looks_6 e3ff +looks_one e400 +looks_two e401 +loop e863 +loupe e402 +low_density f79b +low_priority e16d +loyalty e89a +lte_mobiledata f02c +lte_mobiledata_badge f7d9 +lte_plus_mobiledata f02d +lte_plus_mobiledata_badge f7d8 +luggage f235 +lunch_dining ea61 +lyrics ec0b +macro_auto f6f2 +macro_off f8d2 +magic_button f136 +magic_exchange f7f4 +magic_tether f7d7 +magnification_large f83d +magnification_small f83c +magnify_docked f7d6 +magnify_fullscreen f7d5 +mail e159 +mail_lock ec0a +mail_outline e159 +male e58e +man e4eb +man_2 f8e1 +man_3 f8e2 +man_4 f8e3 +manage_accounts f02e +manage_history ebe7 +manage_search f02f +manga f5e3 +map e55b +maps_home_work f030 +maps_ugc ef58 +margin e9bb +mark_as_unread e9bc +mark_chat_read f18b +mark_chat_unread f189 +mark_email_read f18c +mark_email_unread f18a +mark_unread_chat_alt eb9d +markunread e159 +markunread_mailbox e89b +masked_transitions e72e +masks f218 +match_case f6f1 +match_word f6f0 +matter e907 +maximize e930 +measuring_tape f6af +media_bluetooth_off f031 +media_bluetooth_on f032 +media_link f83f +mediation efa7 +medical_information ebed +medical_mask f80a +medical_services f109 +medication f033 +medication_liquid ea87 +meeting_room eb4f +memory e322 +memory_alt f7a3 +menstrual_health f6e1 +menu e5d2 +menu_book ea19 +menu_open e9bd +merge eb98 +merge_type e252 +message e0c9 +metabolism e10b +mfg_nest_yale_lock f11d +mic e31d +mic_double f5d1 +mic_external_off ef59 +mic_external_on ef5a +mic_none e31d +mic_off e02b +microbiology e10c +microwave f204 +microwave_gen e847 +military_tech ea3f +mimo e9be +mimo_disconnect e9bf +mindfulness f6e0 +minimize e931 +minor_crash ebf1 +missed_video_call f0ce +missed_video_call_filled f0ce +mist e188 +mixture_med e4c8 +mms e618 +mobile_friendly e200 +mobile_off e201 +mobile_screen_share e0e7 +mobiledata_off f034 +mode f345 +mode_comment e253 +mode_cool f166 +mode_cool_off f167 +mode_edit f345 +mode_edit_outline f345 +mode_fan f168 +mode_fan_off ec17 +mode_heat f16a +mode_heat_cool f16b +mode_heat_off f16d +mode_night f036 +mode_of_travel e7ce +mode_off_on f16f +mode_standby f037 +model_training f0cf +monetization_on e263 +money e57d +money_off f038 +money_off_csred f038 +monitor ef5b +monitor_heart eaa2 +monitor_weight f039 +monitor_weight_gain f6df +monitor_weight_loss f6de +monitoring f190 +monochrome_photos e403 +mood ea22 +mood_bad e7f3 +mop e28d +more e619 +more_down f196 +more_horiz e5d3 +more_time ea5d +more_up f197 +more_vert e5d4 +mosque eab2 +motion_blur f0d0 +motion_mode f842 +motion_photos_auto f03a +motion_photos_off e9c0 +motion_photos_on e9c1 +motion_photos_pause f349 +motion_photos_paused f349 +motion_sensor_active e792 +motion_sensor_alert e784 +motion_sensor_idle e783 +motion_sensor_urgent e78e +motorcycle e91b +mountain_flag f5e2 +mouse e323 +move e740 +move_down eb61 +move_group f715 +move_item f1ff +move_location e741 +move_selection_down f714 +move_selection_left f713 +move_selection_right f712 +move_selection_up f711 +move_to_inbox e168 +move_up eb64 +moved_location e594 +movie e404 +movie_creation e404 +movie_edit f840 +movie_filter e43a +movie_info e02d +moving e501 +moving_beds e73d +moving_ministry e73e +mp e9c3 +multicooker e293 +multiline_chart e6df +multiple_stop f1b9 +museum ea36 +music_note e405 +music_off e440 +music_video e063 +my_location e55c +mystery f5e1 +nat ef5c +nature e406 +nature_people e407 +navigate_before e408 +navigate_next e409 +navigation e55d +near_me e569 +near_me_disabled f1ef +nearby e6b7 +nearby_error f03b +nearby_off f03c +nephrology e10d +nest_audio ebbf +nest_cam_floodlight f8b7 +nest_cam_indoor f11e +nest_cam_iq f11f +nest_cam_iq_outdoor f120 +nest_cam_magnet_mount f8b8 +nest_cam_outdoor f121 +nest_cam_stand f8b9 +nest_cam_wall_mount f8ba +nest_cam_wired_stand ec16 +nest_clock_farsight_analog f8bb +nest_clock_farsight_digital f8bc +nest_connect f122 +nest_detect f123 +nest_display f124 +nest_display_max f125 +nest_doorbell_visitor f8bd +nest_eco_leaf f8be +nest_farsight_weather f8bf +nest_found_savings f8c0 +nest_gale_wifi f579 +nest_heat_link_e f126 +nest_heat_link_gen_3 f127 +nest_hello_doorbell e82c +nest_locator_tag f8c1 +nest_mini e789 +nest_multi_room f8c2 +nest_protect e68e +nest_remote f5db +nest_remote_comfort_sensor f12a +nest_secure_alarm f12b +nest_sunblock f8c3 +nest_tag f8c1 +nest_thermostat e68f +nest_thermostat_e_eu f12d +nest_thermostat_gen_3 f12e +nest_thermostat_sensor f12f +nest_thermostat_sensor_eu f130 +nest_thermostat_zirconium_eu f131 +nest_true_radiant f8c4 +nest_wake_on_approach f8c5 +nest_wake_on_press f8c6 +nest_wifi_gale f132 +nest_wifi_mistral f133 +nest_wifi_point f134 +nest_wifi_point_vento f134 +nest_wifi_router f133 +network_cell e1b9 +network_check e640 +network_intelligence_history f5f6 +network_intelligence_update f5f5 +network_locked e61a +network_manage f7ab +network_ping ebca +network_wifi e1ba +network_wifi_1_bar ebe4 +network_wifi_1_bar_locked f58f +network_wifi_2_bar ebd6 +network_wifi_2_bar_locked f58e +network_wifi_3_bar ebe1 +network_wifi_3_bar_locked f58d +neurology e10e +new_label e609 +new_releases ef76 +new_window f710 +news e032 +newsmode efad +newspaper eb81 +next_plan ef5d +next_week e16a +nfc e1bb +night_shelter f1f1 +night_sight_auto f1d7 +night_sight_auto_off f1f9 +night_sight_max f6c3 +nightlife ea62 +nightlight f03d +nightlight_round f03d +nights_stay ea46 +no_accounts f03e +no_adult_content f8fe +no_backpack f237 +no_crash ebf0 +no_drinks f1a5 +no_encryption f03f +no_encryption_gmailerrorred f03f +no_flash f1a6 +no_food f1a7 +no_luggage f23b +no_meals f1d6 +no_meeting_room eb4e +no_photography f1a8 +no_sim e1ce +no_sound e710 +no_stroller f1af +no_transfer f1d5 +noise_aware ebec +noise_control_off ebf3 +noise_control_on f8a8 +nordic_walking e50e +north f1e0 +north_east f1e1 +north_west f1e2 +not_accessible f0fe +not_interested f326 +not_listed_location e575 +not_started f0d1 +note e66d +note_add e89c +note_alt f040 +notes e26c +notification_add e399 +notification_important e004 +notification_multiple e6c2 +notifications e7f5 +notifications_active e7f7 +notifications_none e7f5 +notifications_off e7f6 +notifications_paused e7f8 +numbers eac7 +nutrition e110 +ods e6e8 +odt e6e9 +offline_bolt e932 +offline_pin e90a +offline_share e9c5 +oil_barrel ec15 +on_device_training ebfd +oncology e114 +ondemand_video e63b +online_prediction f0eb +onsen f6f8 +opacity e91c +open_in_browser e89d +open_in_full f1ce +open_in_new e89e +open_in_new_down f70f +open_in_new_off e4f6 +open_in_phone e702 +open_jam efae +open_with e89f +ophthalmology e115 +oral_disease e116 +order_approve f812 +order_play f811 +orthopedics f897 +other_admission e47b +other_houses e58c +outbound e1ca +outbox ef5f +outbox_alt eb17 +outdoor_garden e205 +outdoor_grill ea47 +outgoing_mail f0d2 +outlet f1d4 +outlined_flag ea1a +outpatient e118 +outpatient_med e119 +output ebbe +output_circle f70e +oven_gen e843 +overview e4a7 +overview_key f7d4 +oxygen_saturation e4de +pace f6b8 +pacemaker e656 +package e48f +padding e9c8 +page_control e731 +page_info f614 +pages e7f9 +pageview e8a0 +paid f041 +palette e40a +pallet f86a +pan_tool e925 +pan_tool_alt ebb9 +pan_zoom f655 +panorama e40b +panorama_fish_eye e40c +panorama_horizontal e40d +panorama_photosphere e9c9 +panorama_vertical e40e +panorama_wide_angle e40f +paragliding e50f +park ea63 +partly_cloudy_day f172 +partly_cloudy_night f174 +partner_exchange f7f9 +partner_reports efaf +party_mode e7fa +password f042 +patient_list e653 +pattern f043 +pause e034 +pause_circle e1a2 +pause_circle_filled e1a2 +pause_circle_outline e1a2 +pause_presentation e0ea +payment e8a1 +payments ef63 +pedal_bike eb29 +pediatrics e11d +pen_size_1 f755 +pen_size_2 f754 +pen_size_3 f753 +pen_size_4 f752 +pen_size_5 f751 +pending ef64 +pending_actions f1bb +pentagon eb50 +people ea21 +people_alt ea21 +people_outline ea21 +percent eb58 +performance_max e51a +pergola e203 +perm_camera_mic e8a2 +perm_contact_calendar e8a3 +perm_data_setting e8a4 +perm_device_information e8a5 +perm_identity f0d3 +perm_media e8a7 +perm_phone_msg e8a8 +perm_scan_wifi e8a9 +person f0d3 +person_2 f8e4 +person_3 f8e5 +person_4 f8e6 +person_add ea4d +person_add_alt ea4d +person_add_disabled e9cb +person_apron f5a3 +person_book f5e8 +person_celebrate f7fe +person_filled f0d3 +person_off e510 +person_outline f0d3 +person_pin e55a +person_pin_circle e56a +person_play f7fd +person_raised_hand f59a +person_remove ef66 +person_search f106 +personal_injury e6da +personal_video e333 +pest_control f0fa +pest_control_rodent f0fd +pet_supplies efb1 +pets e91d +phishing ead7 +phone f0d4 +phone_alt f0d4 +phone_android e324 +phone_bluetooth_speaker e61b +phone_callback e649 +phone_disabled e9cc +phone_enabled e9cd +phone_forwarded e61c +phone_in_talk e61d +phone_iphone e325 +phone_locked e61e +phone_missed e61f +phone_paused e620 +phonelink e326 +phonelink_erase e0db +phonelink_lock e0dc +phonelink_off e327 +phonelink_ring e0dd +phonelink_ring_off f7aa +phonelink_setup ef41 +photo e432 +photo_album e411 +photo_camera e412 +photo_camera_back ef68 +photo_camera_front ef69 +photo_filter e43b +photo_frame f0d9 +photo_library e413 +photo_prints efb2 +photo_size_select_actual e432 +photo_size_select_large e433 +photo_size_select_small e434 +php eb8f +physical_therapy e11e +piano e521 +piano_off e520 +picture_as_pdf e415 +picture_in_picture e8aa +picture_in_picture_alt e911 +pie_chart f044 +pie_chart_filled f044 +pie_chart_outline f044 +pie_chart_outlined f044 +pill e11f +pill_off f809 +pin f045 +pin_drop e55e +pin_end e767 +pin_invoke e763 +pinch eb38 +pinch_zoom_in f1fa +pinch_zoom_out f1fb +pip f64d +pip_exit f70d +pivot_table_chart e9ce +place f1db +place_item f1f0 +plagiarism ea5a +planner_banner_ad_pt e692 +play_arrow e037 +play_circle e1c4 +play_disabled ef6a +play_for_work e906 +play_lesson f047 +play_music e022 +play_pause f137 +play_shapes f7fc +playing_cards f5dc +playlist_add e03b +playlist_add_check e065 +playlist_add_check_circle e7e6 +playlist_add_circle e7e5 +playlist_play e05f +playlist_remove eb80 +plumbing f107 +plus_one e800 +podcasts f048 +podiatry e120 +podium f7fb +point_of_sale f17e +point_scan f70c +policy ea17 +poll e85c +polyline ebbb +polymer e8ab +pool eb48 +portable_wifi_off f087 +portrait e851 +position_bottom_left f70b +position_bottom_right f70a +position_top_right f709 +post e705 +post_add ea20 +potted_plant f8aa +power e63c +power_input e336 +power_off e646 +power_rounded f8c7 +power_settings_new e8ac +prayer_times f838 +precision_manufacturing f049 +pregnancy f5f1 +pregnant_woman f5f1 +preliminary e7d8 +prescriptions e121 +present_to_all e0df +preview f1c5 +preview_off f7af +price_change f04a +price_check f04b +print e8ad +print_add f7a2 +print_connect f7a1 +print_disabled e9cf +print_error f7a0 +print_lock f651 +priority e19f +priority_high e645 +privacy f148 +privacy_tip f0dc +private_connectivity e744 +problem e122 +procedure e651 +process_chart f855 +production_quantity_limits e1d1 +productivity e296 +progress_activity e9d0 +propane ec14 +propane_tank ec13 +psychiatry e123 +psychology ea4a +psychology_alt f8ea +public e80b +public_off f1ca +publish e255 +published_with_changes f232 +pulmonology e124 +punch_clock eaa8 +push_pin f10d +qr_code ef6b +qr_code_2 e00a +qr_code_2_add f658 +qr_code_scanner f206 +query_builder efd6 +query_stats e4fc +question_answer e8af +question_exchange f7f3 +question_mark eb8b +queue e03c +queue_music e03d +queue_play_next e066 +quick_phrases e7d1 +quick_reference e46e +quick_reference_all f801 +quickreply ef6c +quiet_time e1f9 +quiet_time_active e291 +quiz f04c +r_mobiledata f04d +radar f04e +radio e03e +radio_button_checked e837 +radio_button_unchecked e836 +radiology e125 +railway_alert e9d1 +rainy f176 +rainy_heavy f61f +rainy_light f61e +rainy_snow f61d +ramen_dining ea64 +ramp_left eb9c +ramp_right eb96 +range_hood e1ea +rate_review e560 +raw_off f04f +raw_on f050 +read_more ef6d +readiness_score f6dd +real_estate_agent e73a +rear_camera f6c2 +rebase f845 +rebase_edit f846 +receipt e8b0 +receipt_long ef6e +recent_actors e03f +recent_patient f808 +recommend e9d2 +record_voice_over e91f +rectangle eb54 +recycling e760 +redeem e8f6 +redo e15a +reduce_capacity f21c +refresh e5d5 +regular_expression f750 +relax f6dc +release_alert f654 +remember_me f051 +reminder e695 +reminders_alt e695 +remote_gen e83e +remove e15b +remove_circle f08f +remove_circle_outline f08f +remove_done e9d3 +remove_from_queue e067 +remove_moderator e9d4 +remove_red_eye e8f4 +remove_road ebfc +remove_selection e9d5 +remove_shopping_cart e928 +reopen_window f708 +reorder e8fe +repartition f8e8 +repeat e040 +repeat_on e9d6 +repeat_one e041 +repeat_one_on e9d7 +replay e042 +replay_10 e059 +replay_30 e05a +replay_5 e05b +replay_circle_filled e9d8 +reply e15e +reply_all e15f +report f052 +report_gmailerrorred f052 +report_off e170 +report_problem f083 +request_page f22c +request_quote f1b6 +reset_image f824 +reset_tv e9d9 +resize f707 +respiratory_rate e127 +restart_alt f053 +restaurant e56c +restaurant_menu e561 +restore e8b3 +restore_from_trash e938 +restore_page e929 +resume f7d0 +reviews f054 +rewarded_ads efb6 +rheumatology e128 +rib_cage f898 +rice_bowl f1f5 +right_click f706 +right_panel_close f705 +right_panel_open f704 +ring_volume f0dd +ring_volume_filled f0dd +ripples e9db +robot f882 +robot_2 f5d0 +rocket eba5 +rocket_launch eb9b +roller_shades ec12 +roller_shades_closed ec11 +roller_skating ebcd +roofing f201 +room f1db +room_preferences f1b8 +room_service eb49 +rotate_90_degrees_ccw e418 +rotate_90_degrees_cw eaab +rotate_left e419 +rotate_right e41a +roundabout_left eb99 +roundabout_right eba3 +rounded_corner e920 +route eacd +router e328 +routine e20c +rowing e921 +rss_feed e0e5 +rsvp f055 +rtt e9ad +rule f1c2 +rule_folder f1c9 +rule_settings f64c +run_circle ef6f +running_with_errors e51d +rv_hookup e642 +safety_check ebef +safety_check_off f59d +safety_divider e1cc +sailing e502 +salinity f876 +sanitizer f21d +satellite e562 +satellite_alt eb3a +sauna f6f7 +save e161 +save_alt f090 +save_as eb60 +saved_search ea11 +savings e2eb +scale eb5f +scan f74e +scan_delete f74f +scanner e329 +scatter_plot e268 +scene e2a7 +schedule efd6 +schedule_send ea0a +schema e4fd +school e80c +science ea4b +score e269 +scoreboard ebd0 +screen_lock_landscape e1be +screen_lock_portrait e1bf +screen_lock_rotation e1c0 +screen_record f679 +screen_rotation e1c1 +screen_rotation_alt ebee +screen_rotation_up f678 +screen_search_desktop ef70 +screen_share e0e2 +screenshot f056 +screenshot_frame f677 +screenshot_keyboard f7d3 +screenshot_monitor ec08 +screenshot_region f7d2 +screenshot_tablet f697 +scrollable_header e9dc +scuba_diving ebce +sd e9dd +sd_card e623 +sd_card_alert f057 +sd_storage e623 +search e8b6 +search_check f800 +search_off ea76 +security e32a +security_update f072 +security_update_good f073 +security_update_warning f074 +segment e94b +select f74d +select_all e162 +select_check_box f1fe +select_to_speak f7cf +select_window e6fa +select_window_off e506 +self_care f86d +self_improvement ea78 +sell f05b +send e163 +send_and_archive ea0c +send_money e8b7 +send_time_extension eadb +send_to_mobile f05c +sensor_door f1b5 +sensor_occupied ec10 +sensor_window f1b4 +sensors e51e +sensors_off e51f +sentiment_calm f6a7 +sentiment_content f6a6 +sentiment_dissatisfied e811 +sentiment_excited f6a5 +sentiment_extremely_dissatisfied f194 +sentiment_frustrated f6a4 +sentiment_neutral e812 +sentiment_sad f6a3 +sentiment_satisfied e813 +sentiment_satisfied_alt e813 +sentiment_stressed f6a2 +sentiment_very_dissatisfied e814 +sentiment_very_satisfied e815 +sentiment_worried f6a1 +set_meal f1ea +settings e8b8 +settings_accessibility f05d +settings_account_box f835 +settings_alert f143 +settings_applications e8b9 +settings_b_roll f625 +settings_backup_restore e8ba +settings_bluetooth e8bb +settings_brightness e8bd +settings_cell e8bc +settings_cinematic_blur f624 +settings_ethernet e8be +settings_input_antenna e8bf +settings_input_component e8c0 +settings_input_composite e8c0 +settings_input_hdmi e8c2 +settings_input_svideo e8c3 +settings_motion_mode f833 +settings_night_sight f832 +settings_overscan e8c4 +settings_panorama f831 +settings_phone e8c5 +settings_photo_camera f834 +settings_power e8c6 +settings_remote e8c7 +settings_slow_motion f623 +settings_suggest f05e +settings_system_daydream e1c3 +settings_timelapse f622 +settings_video_camera f621 +settings_voice e8c8 +settop_component e2ac +severe_cold ebd3 +shadow e9df +shadow_add f584 +shadow_minus f583 +shape_line f8d3 +shapes e602 +share e80d +share_location f05f +share_off f6cb +share_reviews f8a4 +share_windows f613 +sheets_rtl f823 +shelf_auto_hide f703 +shelf_position f702 +shelves f86e +shield e9e0 +shield_lock f686 +shield_locked f592 +shield_moon eaa9 +shield_person f650 +shield_with_heart e78f +shield_with_house e78d +shift e5f2 +shift_lock f7ae +shop e8c9 +shop_2 e8ca +shop_two e8ca +shopping_bag f1cc +shopping_basket e8cb +shopping_cart e8cc +shopping_cart_checkout eb88 +short_stay e4d0 +short_text e261 +shortcut f57a +show_chart e6e1 +shower f061 +shuffle e043 +shuffle_on e9e1 +shutter_speed e43d +shutter_speed_add f57e +shutter_speed_minus f57d +sick f220 +side_navigation e9e2 +sign_language ebe5 +signal_cellular_0_bar f0a8 +signal_cellular_1_bar f0a9 +signal_cellular_2_bar f0aa +signal_cellular_3_bar f0ab +signal_cellular_4_bar e1c8 +signal_cellular_add f7a9 +signal_cellular_alt e202 +signal_cellular_alt_1_bar ebdf +signal_cellular_alt_2_bar ebe3 +signal_cellular_connected_no_internet_0_bar f0ac +signal_cellular_connected_no_internet_4_bar e1cd +signal_cellular_no_sim e1ce +signal_cellular_nodata f062 +signal_cellular_null e1cf +signal_cellular_off e1d0 +signal_cellular_pause f5a7 +signal_disconnected f239 +signal_wifi_0_bar f0b0 +signal_wifi_4_bar f065 +signal_wifi_4_bar_lock e1e1 +signal_wifi_bad f064 +signal_wifi_connected_no_internet_4 f064 +signal_wifi_off e1da +signal_wifi_statusbar_4_bar f065 +signal_wifi_statusbar_not_connected f0ef +signal_wifi_statusbar_null f067 +signature f74c +signpost eb91 +sim_card e32b +sim_card_alert f057 +sim_card_download f068 +single_bed ea48 +sip f069 +skateboarding e511 +skeleton f899 +skip_next e044 +skip_previous e045 +skull f89a +sledding e512 +sleep e213 +sleep_score f6b7 +slide_library f822 +sliders e9e3 +slideshow e41b +slow_motion_video e068 +smart_button f1c1 +smart_display f06a +smart_outlet e844 +smart_screen f06b +smart_toy f06c +smartphone e32c +smb_share f74b +smoke_free eb4a +smoking_rooms eb4b +sms e625 +sms_failed e87f +snippet_folder f1c7 +snooze e046 +snowboarding e513 +snowing e80f +snowing_heavy f61c +snowmobile e503 +snowshoeing e514 +soap f1b2 +social_distance e1cb +social_leaderboard f6a0 +solar_power ec0f +sort e164 +sort_by_alpha e053 +sos ebf7 +sound_detection_dog_barking f149 +sound_detection_glass_break f14a +sound_detection_loud_sound f14b +sound_sampler f6b4 +soup_kitchen e7d3 +source f1c8 +source_notes e12d +south f1e3 +south_america e7e4 +south_east f1e4 +south_west f1e5 +spa eb4c +space_bar e256 +space_dashboard e66b +spatial_audio ebeb +spatial_audio_off ebe8 +spatial_tracking ebea +speaker e32d +speaker_group e32e +speaker_notes e8cd +speaker_notes_off e92a +speaker_phone e0d2 +special_character f74a +specific_gravity f872 +speech_to_text f8a7 +speed e9e4 +spellcheck e8ce +splitscreen f06d +splitscreen_bottom f676 +splitscreen_left f675 +splitscreen_right f674 +splitscreen_top f673 +spo2 f6db +spoke e9a7 +sports ea30 +sports_bar f1f3 +sports_baseball ea51 +sports_basketball ea26 +sports_cricket ea27 +sports_esports ea28 +sports_football ea29 +sports_golf ea2a +sports_gymnastics ebc4 +sports_handball ea33 +sports_hockey ea2b +sports_kabaddi ea34 +sports_martial_arts eae9 +sports_mma ea2c +sports_motorsports ea2d +sports_rugby ea2e +sports_score f06e +sports_soccer ea2f +sports_tennis ea32 +sports_volleyball ea31 +sprinkler e29a +sprint f81f +square eb36 +square_foot ea49 +ssid_chart eb66 +stack f609 +stack_off f608 +stack_star f607 +stacked_bar_chart e9e6 +stacked_email e6c7 +stacked_inbox e6c9 +stacked_line_chart f22b +stadia_controller f135 +stadium eb90 +stairs f1a9 +star e838 +star_border e885 +star_border_purple500 e885 +star_half e839 +star_outline e885 +star_purple500 e838 +star_rate f0ec +star_rate_half ec45 +stars e8d0 +start e089 +stat_1 e698 +stat_2 e699 +stat_3 e69a +stat_minus_1 e69b +stat_minus_2 e69c +stat_minus_3 e69d +stay_current_landscape e0d3 +stay_current_portrait e0d4 +stay_primary_landscape e0d5 +stay_primary_portrait e0d6 +step f6fe +step_into f701 +step_out f700 +step_over f6ff +steppers e9e7 +steps f6da +stethoscope f805 +stethoscope_arrow f807 +stethoscope_check f806 +sticky_note e9e8 +sticky_note_2 f1fc +stop e047 +stop_circle ef71 +stop_screen_share e0e3 +storage e1db +store e8d1 +store_mall_directory e8d1 +storefront ea12 +storm f070 +straight eb95 +straighten e41c +strategy f5df +stream e9e9 +stream_apps f79f +streetview e56e +stress_management f6d9 +strikethrough_s e257 +stroke_full f749 +stroke_partial f748 +stroller f1ae +style e41d +styler e273 +stylus f604 +stylus_laser_pointer f747 +stylus_note f603 +subdirectory_arrow_left e5d9 +subdirectory_arrow_right e5da +subheader e9ea +subject e8d2 +subscript f111 +subscriptions e064 +subtitles e048 +subtitles_off ef72 +subway e56f +summarize f071 +sunny e81a +sunny_snowing e819 +superscript f112 +supervised_user_circle e939 +supervised_user_circle_off f60e +supervisor_account e8d3 +support ef73 +support_agent f0e2 +surfing e515 +surgical e131 +surround_sound e049 +swap_calls e0d7 +swap_driving_apps_wheel e69f +swap_horiz e8d4 +swap_horizontal_circle e933 +swap_vert e8d5 +swap_vertical_circle e8d6 +sweep e6ac +swipe e9ec +swipe_down eb53 +swipe_down_alt eb30 +swipe_left eb59 +swipe_left_alt eb33 +swipe_right eb52 +swipe_right_alt eb56 +swipe_up eb2e +swipe_up_alt eb35 +swipe_vertical eb51 +switch e1f4 +switch_access f6fd +switch_access_shortcut e7e1 +switch_access_shortcut_add e7e2 +switch_account e9ed +switch_camera e41e +switch_left f1d1 +switch_right f1d2 +switch_video e41f +switches e733 +sword_rose f5de +swords f889 +symptoms e132 +synagogue eab0 +sync e627 +sync_alt ea18 +sync_disabled e628 +sync_lock eaee +sync_problem e629 +sync_saved_locally f820 +syringe e133 +system_security_update f072 +system_security_update_good f073 +system_security_update_warning f074 +system_update f072 +system_update_alt e8d7 +tab e8d8 +tab_close f745 +tab_close_right f746 +tab_duplicate f744 +tab_group f743 +tab_move f742 +tab_new_right f741 +tab_recent f740 +tab_unselected e8d9 +table f191 +table_bar ead2 +table_chart e265 +table_chart_view f6ef +table_lamp e1f2 +table_restaurant eac6 +table_rows f101 +table_rows_narrow f73f +table_view f1be +tablet e32f +tablet_android e330 +tablet_mac e331 +tabs e9ee +tag e9ef +tag_faces ea22 +takeout_dining ea74 +tamper_detection_off e82e +tamper_detection_on f8c8 +tap_and_play e62b +tapas f1e9 +target e719 +task f075 +task_alt e2e6 +taunt f69f +taxi_alert ef74 +team_dashboard e013 +temp_preferences_custom f8c9 +temp_preferences_eco f8ca +temple_buddhist eab3 +temple_hindu eaaf +tenancy f0e3 +terminal eb8e +terrain e564 +text_ad e728 +text_decrease eadd +text_fields e262 +text_format e165 +text_increase eae2 +text_rotate_up e93a +text_rotate_vertical e93b +text_rotation_angledown e93c +text_rotation_angleup e93d +text_rotation_down e93e +text_rotation_none e93f +text_select_end f73e +text_select_jump_to_beginning f73d +text_select_jump_to_end f73c +text_select_move_back_character f73b +text_select_move_back_word f73a +text_select_move_down f739 +text_select_move_forward_character f738 +text_select_move_forward_word f737 +text_select_move_up f736 +text_select_start f735 +text_snippet f1c6 +text_to_speech f1bc +textsms e625 +texture e421 +texture_add f57c +texture_minus f57b +theater_comedy ea66 +theaters e8da +thermometer e846 +thermometer_add f582 +thermometer_gain f6d8 +thermometer_loss f6d7 +thermometer_minus f581 +thermostat f076 +thermostat_auto f077 +thermostat_carbon f178 +thumb_down f578 +thumb_down_alt f578 +thumb_down_filled f578 +thumb_down_off f578 +thumb_down_off_alt f578 +thumb_up f577 +thumb_up_alt f577 +thumb_up_filled f577 +thumb_up_off f577 +thumb_up_off_alt f577 +thumbnail_bar f734 +thumbs_up_down e8dd +thunderstorm ebdb +tibia f89b +tibia_alt f89c +time_auto f0e4 +time_to_leave eff7 +timelapse e422 +timeline e922 +timer e425 +timer_10 e423 +timer_10_alt_1 efbf +timer_10_select f07a +timer_3 e424 +timer_3_alt_1 efc0 +timer_3_select f07b +timer_off e426 +tips_and_updates e79a +tire_repair ebc8 +title e264 +toast efc1 +toc e8de +today e8df +toggle_off e9f5 +toggle_on e9f6 +token ea25 +toll e8e0 +tonality e427 +toolbar e9f7 +tools_flat_head f8cb +tools_installation_kit e2ab +tools_ladder e2cb +tools_level e77b +tools_phillips f8cc +tools_pliers_wire_stripper e2aa +tools_power_drill e1e9 +tools_wrench f8cd +tooltip e9f8 +top_panel_close f733 +top_panel_open f732 +topic f1c8 +tornado e199 +total_dissolved_solids f877 +touch_app e913 +touchpad_mouse f687 +tour ef75 +toys e332 +toys_fan f887 +track_changes e8e1 +traffic e565 +trail_length eb5e +trail_length_medium eb63 +trail_length_short eb6d +train e570 +tram e571 +transcribe f8ec +transfer_within_a_station e572 +transform e428 +transgender e58d +transit_enterexit e579 +translate e8e2 +transportation e21d +travel e6ca +travel_explore e2db +trending_down e8e3 +trending_flat e8e4 +trending_up e8e5 +trip_origin e57b +trolley f86b +trophy ea23 +troubleshoot e1d2 +try f054 +tsunami ebd8 +tsv e6d6 +tty f1aa +tune e429 +tungsten f00d +turn_left eba6 +turn_right ebab +turn_sharp_left eba7 +turn_sharp_right ebaa +turn_slight_left eba4 +turn_slight_right eb9a +turned_in e8e7 +turned_in_not e8e7 +tv e333 +tv_gen e830 +tv_guide e1dc +tv_off e647 +tv_options_edit_channels e1dd +tv_remote f5d9 +tv_signin e71b +tv_with_assistant e785 +two_wheeler e9f9 +type_specimen f8f0 +u_turn_left eba1 +u_turn_right eba2 +ulna_radius f89d +ulna_radius_alt f89e +umbrella f1ad +unarchive e169 +undo e166 +unfold_less e5d6 +unfold_less_double f8cf +unfold_more e5d7 +unfold_more_double f8d0 +ungroup f731 +universal_currency_alt e734 +unknown_2 e6a2 +unknown_5 e6a5 +unknown_document f804 +unknown_med eabd +unpublished f236 +unsubscribe e0eb +upcoming f07e +update e923 +update_disabled e075 +upgrade f0fb +upload f09b +upload_file e9fc +urology e137 +usb e1e0 +usb_off e4fa +vaccines e138 +valve e224 +vape_free ebc6 +vaping_rooms ebcf +variables f851 +ventilator e139 +verified ef76 +verified_user f013 +vertical_align_bottom e258 +vertical_align_center e259 +vertical_align_top e25a +vertical_distribute e076 +vertical_shades ec0e +vertical_shades_closed ec0d +vertical_split e949 +vibration e62d +video_call e070 +video_camera_back f07f +video_camera_front f080 +video_camera_front_off f83b +video_chat f8a0 +video_file eb87 +video_label e071 +video_library e04a +video_search efc6 +video_settings ea75 +video_stable f081 +videocam e04b +videocam_off e04c +videogame_asset e338 +videogame_asset_off e500 +view_agenda e8e9 +view_array e8ea +view_carousel e8eb +view_column e8ec +view_column_2 f847 +view_comfy e42a +view_comfy_alt eb73 +view_compact e42b +view_compact_alt eb74 +view_cozy eb75 +view_day e8ed +view_headline e8ee +view_in_ar efc9 +view_in_ar_new efc9 +view_in_ar_off f61b +view_kanban eb7f +view_list e8ef +view_module e8f0 +view_quilt e8f1 +view_sidebar f114 +view_stream e8f2 +view_timeline eb85 +view_week e8f3 +vignette e435 +villa e586 +visibility e8f4 +visibility_lock f653 +visibility_off e8f5 +vital_signs e650 +vitals e13b +voice_chat e62e +voice_over_off e94a +voice_selection f58a +voicemail e0d9 +volcano ebda +volume_down e04d +volume_down_alt e79c +volume_mute e04e +volume_off e04f +volume_up e050 +volunteer_activism ea70 +voting_chip f852 +vpn_key e0da +vpn_key_alert f6cc +vpn_key_off eb7a +vpn_lock e62f +vr180_create2d efca +vrpano f082 +wall_art efcb +wall_lamp e2b4 +wallet f8ff +wallpaper e1bc +wallpaper_slideshow f672 +ward e13c +warehouse ebb8 +warning f083 +warning_amber f083 +warning_off f7ad +wash f1b1 +watch e334 +watch_button_press f6aa +watch_later efd6 +watch_off eae3 +watch_screentime f6ae +watch_wake f6a9 +water f084 +water_bottle f69d +water_bottle_large f69e +water_damage f203 +water_do f870 +water_drop e798 +water_ec f875 +water_full f6d6 +water_heater e284 +water_lock f6ad +water_loss f6d5 +water_lux f874 +water_medium f6d4 +water_orp f878 +water_ph f87a +water_pump f5d8 +water_voc f87b +waterfall_chart ea00 +waves e176 +waving_hand e766 +wb_auto e42c +wb_cloudy f15c +wb_incandescent f07d +wb_iridescent f00d +wb_shade ea01 +wb_sunny e430 +wb_twilight e1c6 +wc e63d +weather_hail f67f +weather_mix f60b +weather_snowy e2cd +web e051 +web_asset e069 +web_asset_off ef47 +web_stories e595 +webhook eb92 +weekend e16b +weight e13d +west f1e6 +whatshot e80e +wheelchair_pickup f1ab +where_to_vote e177 +widgets e1bd +width f730 +width_full f8f5 +width_normal f8f6 +width_wide f8f7 +wifi e63e +wifi_1_bar e4ca +wifi_2_bar e4d9 +wifi_add f7a8 +wifi_calling ef77 +wifi_calling_1 f0e7 +wifi_calling_2 f0e7 +wifi_calling_3 f0e7 +wifi_channel eb6a +wifi_find eb31 +wifi_home f671 +wifi_lock e1e1 +wifi_notification f670 +wifi_off e648 +wifi_password eb6b +wifi_protected_setup f0fc +wifi_proxy f7a7 +wifi_tethering e1e2 +wifi_tethering_error ead9 +wifi_tethering_off f087 +wind_power ec0c +window f088 +window_closed e77e +window_open e78c +window_sensor e2bb +wine_bar f1e8 +woman e13e +woman_2 f8e7 +work e943 +work_alert f5f7 +work_history ec09 +work_off e942 +work_outline e943 +work_update f5f8 +workflow e985 +workspace_premium e7af +workspaces e1a0 +workspaces_outline e1a0 +wounds_injuries e13f +wrap_text e25b +wrist f69c +wrong_location ef78 +wysiwyg f1c3 +yard f089 +your_trips eb2b +youtube_activity f85a +youtube_searched_for e8fa +zone_person_alert e781 +zone_person_idle e77a +zone_person_urgent e788 +zoom_in e8ff +zoom_in_map eb2d +zoom_out e900 +zoom_out_map e56b diff --git a/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.ttf b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.ttf new file mode 100644 index 0000000..257b9c3 Binary files /dev/null and b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.ttf differ diff --git a/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.woff2 b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.woff2 new file mode 100644 index 0000000..41eb33c Binary files /dev/null and b/public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.woff2 differ diff --git a/public/fonts/Poppins/Poppins.ttf b/public/fonts/Poppins/Poppins.ttf new file mode 100644 index 0000000..74c726e Binary files /dev/null and b/public/fonts/Poppins/Poppins.ttf differ diff --git a/public/fonts/SpaceGrotesk/SpaceGrotesk.ttf b/public/fonts/SpaceGrotesk/SpaceGrotesk.ttf new file mode 100644 index 0000000..cf0b503 Binary files /dev/null and b/public/fonts/SpaceGrotesk/SpaceGrotesk.ttf differ diff --git a/public/fonts/SpaceMono/SpaceMono.ttf b/public/fonts/SpaceMono/SpaceMono.ttf new file mode 100644 index 0000000..04e56b9 Binary files /dev/null and b/public/fonts/SpaceMono/SpaceMono.ttf differ diff --git a/public/fonts/TrollCallDisplay/TrollCallDisplay.otf b/public/fonts/TrollCallDisplay/TrollCallDisplay.otf new file mode 100644 index 0000000..8574cbd Binary files /dev/null and b/public/fonts/TrollCallDisplay/TrollCallDisplay.otf differ diff --git a/public/fonts/TrollCallDisplay/TrollCallDisplay.woff b/public/fonts/TrollCallDisplay/TrollCallDisplay.woff new file mode 100644 index 0000000..eb7bf28 Binary files /dev/null and b/public/fonts/TrollCallDisplay/TrollCallDisplay.woff differ diff --git a/public/fonts/TrollCallDisplay/TrollCallDisplay.woff2 b/public/fonts/TrollCallDisplay/TrollCallDisplay.woff2 new file mode 100644 index 0000000..66b5950 Binary files /dev/null and b/public/fonts/TrollCallDisplay/TrollCallDisplay.woff2 differ diff --git a/src/components/Box/Box.module.css b/src/components/Box/Box.module.css new file mode 100644 index 0000000..6109351 --- /dev/null +++ b/src/components/Box/Box.module.css @@ -0,0 +1,33 @@ +.Box { + background-color: var(--pri-bg); + color: var(--pri-fg); + border: 1px solid currentColor; + border-radius: 2px; + box-sizing: border-box; + display: flex; + flex-direction: column; + padding: 8px; + width: max-content; + max-width: 100%; +} + +.Box.secondary { + background-color: var(--sec-bg); + color: var(--sec-fg); +} + +.Box.fw { + width: 100%; +} + +.Box .innerContent { + padding: 4px 4px; + padding-top: 8px; + display: inline-flex; + flex-direction: column; + gap: 8px; +} + +.Box .innerContentNoTitle { + padding: 0; +} diff --git a/src/components/Box/Box.tsx b/src/components/Box/Box.tsx new file mode 100644 index 0000000..7c3c318 --- /dev/null +++ b/src/components/Box/Box.tsx @@ -0,0 +1,71 @@ +import globals from "@/styles/global.module.css"; +import Conditional, { ConditionalParent } from "@/utility/react/Conditional"; +import { ThemeModeContext } from "@/utility/react/Themer"; +import Link from "next/link"; +import { useContext } from "react"; +import styles from "./Box.module.css"; +import { BoxConfig } from "./types"; + +export default function Box({ + children, + properties +}: { + children: React.ReactNode; + properties?: BoxConfig; +}) { + const inverted = useContext(ThemeModeContext); + const style = ( + properties?.theme + ? inverted + ? { + "--pri-bg": "#" + properties?.theme?.lighten(70).toHex(), + "--pri-fg": "#" + properties?.theme?.darken(70).toHex() + } + : { + "--pri-bg": "#" + properties?.theme?.darken(70).toHex(), + "--pri-fg": "#" + properties?.theme?.lighten(70).toHex() + } + : {} + ) as React.CSSProperties; + return ( +
+ + + ( + + {children} + + )} + > + {properties?.title?.text} + + + +
+ {children} +
+
+ ); +} diff --git a/src/components/Box/types.tsx b/src/components/Box/types.tsx new file mode 100644 index 0000000..79b6cd5 --- /dev/null +++ b/src/components/Box/types.tsx @@ -0,0 +1,12 @@ +import { Color3 } from "@/types/assist/color"; + +export type BoxConfig = { + title?: { + text: string; + link?: string; + small?: boolean; + }; + theme?: Color3; + nfw?: boolean; + class?: string; +}; diff --git a/src/components/CelesteBox/CelesteBox.module.css b/src/components/CelesteBox/CelesteBox.module.css new file mode 100644 index 0000000..edf7868 --- /dev/null +++ b/src/components/CelesteBox/CelesteBox.module.css @@ -0,0 +1,76 @@ +.CelesteBoxScrim { + position: fixed; + top: -100vh; + left: 0; + background-color: #0000; + width: 100vw; + height: 100vh; + backdrop-filter: blur(0px); + pointer-events: none; + z-index: 8; + transition: backdrop-filter 0.5s, background-color 0.5s, top 0.5s step-end; +} + +.CelesteBoxScrim.open { + top: 0; + background-color: #0008; + backdrop-filter: blur(10px); + pointer-events: all; + transition: backdrop-filter 0.5s, background-color 0.5s; +} + +.CelesteBox { + position: fixed; + top: -224px; + left: 0; + margin: 24px; + height: 176px; + width: calc(100vw - 48px); + background-color: black; + z-index: 8; + transform: scaleY(0); + transition: transform 0.25s cubic-bezier(0.25, 0, 1, 0.5), + top 0.25s step-end; + + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + padding: 24px; + box-sizing: border-box; + gap: 24px; +} + +.CelesteBox.open { + top: 56px; + transform: scaleY(1); + transition: transform 0.25s cubic-bezier(0, 0.25, 0.5, 1); +} + +.CelesteBox .TextHolder { + visibility: hidden; +} + +.CelesteBox.open .TextHolder { + visibility: visible; + transition: visibility 0.25s step-end; +} + +.PortraitHolder { + width: 128px; + height: 128px; +} + +.TextHolder { + width: 100%; + height: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + font-family: "Renogare", "Poppins"; + color: white; + font-size: 28px; + line-height: 35px; + user-select: none; +} diff --git a/src/components/CelesteBox/CelesteBox.tsx b/src/components/CelesteBox/CelesteBox.tsx new file mode 100644 index 0000000..72cc34d --- /dev/null +++ b/src/components/CelesteBox/CelesteBox.tsx @@ -0,0 +1,58 @@ +// import globals from "@/styles/global.module.css"; +import { useRef, useState } from "react"; +import styles from "./CelesteBox.module.css"; +import TextHandler from "./TextHandler/TextHandler"; +import { DialogList } from "./types"; + +export default function CelesteBox({ dialogList }: { dialogList: DialogList }) { + const [open, setOpen] = useState(false); + const [currentDialog, setCurrentDialog] = useState(dialogList.list[0]); + const [textboxDone, setTextboxDone] = useState(false); + const [wantTextboxDone, setWantTextboxDone] = useState(false); + const currentIndex = useRef(0); + function openDialog() { + console.log("Opening", currentIndex); + setOpen(true); + currentIndex.current = 0; + console.log("Opened", currentIndex); + setCurrentDialog(dialogList.list[currentIndex.current]); + } + function nextDialog() { + if (textboxDone) { + console.log("Next", currentIndex, currentIndex.current); + currentIndex.current += 1; + console.log("Next-ed", currentIndex); + if (currentIndex.current >= dialogList.list.length) { + setOpen(false); + return; + } + setCurrentDialog(dialogList.list[currentIndex.current]); + } else { + setWantTextboxDone(true); + } + } + return [ + openDialog, +
+
+
+
+ +
+
+
+ ] as [() => void, React.ReactNode]; +} diff --git a/src/components/CelesteBox/TextHandler/TextHandler.module.css b/src/components/CelesteBox/TextHandler/TextHandler.module.css new file mode 100644 index 0000000..2f5d85f --- /dev/null +++ b/src/components/CelesteBox/TextHandler/TextHandler.module.css @@ -0,0 +1,35 @@ +@keyframes wavy { + 0% { + top: -2px; + } + 50% { + top: 2px; + } + 100% { + top: -2px; + } +} + +.TextHandler { + /* display: inline; */ + max-width: 80%; + white-space: pre-line; +} + +.TextHandler .letter { + position: relative; + opacity: 0; + top: -10px; + transition: all 0.2s; +} + +.TextHandler .letter.visible { + top: 0px; + opacity: 1; +} + +.TextHandler .wavy .letter { + animation-duration: 0.75s; + animation-timing-function: cubic-bezier(0.5, 0.25, 0.5, 0.75); + animation-iteration-count: infinite; +} diff --git a/src/components/CelesteBox/TextHandler/TextHandler.tsx b/src/components/CelesteBox/TextHandler/TextHandler.tsx new file mode 100644 index 0000000..9c269f0 --- /dev/null +++ b/src/components/CelesteBox/TextHandler/TextHandler.tsx @@ -0,0 +1,195 @@ +import { useEffect, useRef, useState } from "react"; +import { DialogIndex, ElementArray, wait } from "../types"; +import styles from "./TextHandler.module.css"; + +export default function TextHandler({ + dialogIndex, + dialogIsOpen, + textboxDoneStuff: [textboxDone, setTextboxDone], + wantTextboxDoneStuff: [wantTextboxDone, setWantTextboxDone] +}: { + dialogIndex: DialogIndex; + dialogIsOpen: boolean; + textboxDoneStuff: [boolean, (textboxDone: boolean) => void]; + wantTextboxDoneStuff: [boolean, (wantTextboxDone: boolean) => void]; +}) { + const textSpan = useRef(null); + const [content, setContent] = useState(Runner(dialogIndex.dialog)); + const animationFrame = useRef(0); + let clickSound: AudioBuffer; + let inSound: AudioBuffer; + let outSound: AudioBuffer; + let context: AudioContext; + let gain: GainNode; + let contextGot = false; + async function getContext() { + context = new AudioContext(); + gain = context.createGain(); + gain.gain.value = 0.2; + gain.connect(context.destination); + await fetch("assets/celeste/click.wav") + .then(response => response.arrayBuffer()) + .then(arrayBuffer => context.decodeAudioData(arrayBuffer)) + .then((audioBuffer: AudioBuffer) => (clickSound = audioBuffer)); + await fetch("assets/celeste/in.wav") + .then(response => response.arrayBuffer()) + .then(arrayBuffer => context.decodeAudioData(arrayBuffer)) + .then((audioBuffer: AudioBuffer) => (inSound = audioBuffer)); + await fetch("assets/celeste/out.wav") + .then(response => response.arrayBuffer()) + .then(arrayBuffer => context.decodeAudioData(arrayBuffer)) + .then((audioBuffer: AudioBuffer) => (outSound = audioBuffer)); + } + useEffect(generateContent, [dialogIndex, dialogIsOpen]); + function generateContent() { + console.log("generating"); + if (!dialogIsOpen) return; + if (textSpan.current == null) return; + cancelAnimationFrame(animationFrame.current); + setContent(Runner(dialogIndex.dialog)); + } + (async () => { + await getContext(); + contextGot = true; + })(); + useEffect(formatContent, [content]); + function formatContent() { + console.log("formatting", content); + if (textSpan.current == null) return; + cancelAnimationFrame(animationFrame.current); + const innerSpan = textSpan.current + .children[0] as HTMLSpanElement | null; + if (innerSpan == null) return; + textSpan.current.style.width = "100%"; + textSpan.current.style.width = innerSpan.offsetWidth + 2 + "px"; + + // Wave stuff + const allWavy = textSpan.current.querySelectorAll("* .wavy"); + allWavy.forEach(wavyElement => { + const children = wavyElement.querySelectorAll("span.letter"); + let index = 1; + for (let child of children) { + const currentLetter = child as HTMLSpanElement; + currentLetter.style.animationName = styles.wavy; + currentLetter.style.animationDelay = + (0.5 / children.length) * index + "s"; + index++; + } + }); + writeContent(); + } + useEffect(() => { + if (textSpan.current == null) return; + const allLetters = textSpan.current.querySelectorAll("span.letter"); + if (wantTextboxDone) { + for (let i = 0; i < allLetters.length; i++) { + const currentLetter = allLetters[i] as HTMLSpanElement; + currentLetter.classList.add(styles.visible); + } + cancelAnimationFrame(animationFrame.current); + setTextboxDone(true); + setWantTextboxDone(false); + return; + } + }, [wantTextboxDone]); + function writeContent() { + if (textSpan.current == null) return; + if (!dialogIsOpen) return; + cancelAnimationFrame(animationFrame.current); + setTextboxDone(false); + const allLetters = textSpan.current.querySelectorAll("span.letter"); + for (let i = 0; i < allLetters.length; i++) { + const currentLetter = allLetters[i] as HTMLSpanElement; + currentLetter.classList.remove(styles.visible); + } + var letterProgress = 0; + async function showLetters() { + if (letterProgress >= allLetters.length) { + setTextboxDone(true); + cancelAnimationFrame(animationFrame.current); + return; + } + const currentLetter = allLetters[letterProgress] as HTMLSpanElement; + currentLetter.classList.add(styles.visible); + letterProgress++; + let waitLength = 0; + let makeSound = true; + switch (currentLetter.innerHTML) { + case " ": + makeSound = false; + waitLength = 0.01; + break; + case ".": + waitLength = 0.5; + break; + case ",": + waitLength = 0.125; + break; + case "!": + waitLength = 0.5; + break; + case "?": + waitLength = 0.5; + break; + default: + waitLength = 0.025; + } + // if (makeSound && contextGot) { + // let source = context.createBufferSource(); + // source.buffer = clickSound; + // source.connect(gain); + // source.start(); + // } + await wait(waitLength).then(() => { + animationFrame.current = requestAnimationFrame(showLetters); + }); + } + wait(0.25).then( + () => (animationFrame.current = requestAnimationFrame(showLetters)) + ); + } + return ( + + {content} + + ); +} + +function Runner(text: ElementArray) { + if (typeof text === "string") return StringRunner(text); + else if (Array.isArray(text)) return {text.map(Runner)}; + else if (typeof text === "object") { + return ( + + {Runner(text.text)} + + ); + } +} + +function StringRunner(string: string) { + return ( + <> + {string.split("").map((letter, i) => ( + + {letter} + + ))} + + ); +} diff --git a/src/components/CelesteBox/types.tsx b/src/components/CelesteBox/types.tsx new file mode 100644 index 0000000..fa35b16 --- /dev/null +++ b/src/components/CelesteBox/types.tsx @@ -0,0 +1,23 @@ +export type DialogList = { + name: string; + list: DialogIndex[]; +}; + +export type DialogIndex = { + character: string; + dialog: ElementArray; +}; + +type DialogElement = { + effects?: { className?: string; style?: React.CSSProperties }; + text: ElementArray; +}; + +export type ElementArray = string | DialogElement | EAA; +type EAA = ElementArray[]; + +export const clamp = (n: number, mi: number, ma: number) => + Math.max(mi, Math.min(n, ma)); + +export const wait = (time: number): Promise => + new Promise(res => setTimeout(() => res(), time * 1000)); diff --git a/src/components/Nav/Nav.module.css b/src/components/Nav/Nav.module.css new file mode 100644 index 0000000..7a65cf5 --- /dev/null +++ b/src/components/Nav/Nav.module.css @@ -0,0 +1,61 @@ +.Nav { + background-color: var(--pri-bg); + color: var(--pri-fg); + + position: sticky; + top: 8px; + left: 8px; + z-index: 9; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + text-align: center; + width: calc(100vw - 16px); + height: 48px; + border: 1px solid currentColor; + border-radius: 2px; + box-sizing: border-box; + padding: 8px 12px; +} + +.Nav .left { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + text-align: center; + width: 100%; + gap: 16px; +} + +.Nav .right { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-end; + text-align: center; + width: 100%; + gap: 16px; +} + +.Nav .titlePath { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + text-align: left; + gap: 4px; +} + +.Nav .path { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + text-align: left; + overflow: hidden; + text-overflow: ellipsis; + gap: 6px; + max-width: 100px; +} diff --git a/src/components/Nav/Nav.tsx b/src/components/Nav/Nav.tsx new file mode 100644 index 0000000..a2db16b --- /dev/null +++ b/src/components/Nav/Nav.tsx @@ -0,0 +1,45 @@ +import globals from "@/styles/global.module.css"; +import { AnyObject } from "@/types/generics"; +import Link from "next/link"; +import styles from "./Nav.module.css"; + +export default function Nav(elementProps: AnyObject) { + return ( +
+
+
+ + + TrollCall + + +
+ + + add + + + + + HS + + + + + groups + + +
+
+ + Part of{" "} + + The Admin Clan + + + settings + logout +
+
+ ); +} diff --git a/src/components/cards/ClanCard/ClanCard.module.css b/src/components/cards/ClanCard/ClanCard.module.css new file mode 100644 index 0000000..8815473 --- /dev/null +++ b/src/components/cards/ClanCard/ClanCard.module.css @@ -0,0 +1,58 @@ +.ClanCard { + min-width: 600px; + width: 100%; +} + +.ClanCard.Skeleton { + opacity: 0.25; + user-select: none; +} + +.ClanCard .headerImage { + margin: 0 -8px; + margin-top: -8px; + width: auto; + height: 100px; + background-color: var(--pri-fg); + border: none; +} + +.ClanCard .headerImage img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.ClanCard .horizontal { + display: grid; + grid-template-columns: auto 1fr; + gap: 16px; + padding: 8px; + box-sizing: border-box; +} + +.ClanCard .horizontal .horizontalLeft { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + aspect-ratio: 1 / 1; + object-fit: cover; + border-radius: 48px; + overflow: hidden; + width: 96px; + height: auto; + background-color: var(--pri-fg); +} + +.ClanCard .horizontal .horizontalLeft img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.ClanCard .horizontal .horizontalRight { + display: flex; + flex-direction: column; + gap: 4px; +} diff --git a/src/components/cards/ClanCard/ClanCard.tsx b/src/components/cards/ClanCard/ClanCard.tsx new file mode 100644 index 0000000..def522e --- /dev/null +++ b/src/components/cards/ClanCard/ClanCard.tsx @@ -0,0 +1,81 @@ +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global.module.css"; +import { Color3 } from "@/types/assist/color"; +import { ClientClan } from "@/types/clan"; +import { PronounGrouper } from "@/utility/language"; +import Conditional from "@/utility/react/Conditional"; +import Link from "next/link"; +import styles from "./ClanCard.module.css"; + +export default function ClanCard({ clan }: { clan: ClientClan }) { + return ( + + +
+ +
+
+
+ +
+ +
+
+
+

+ + {clan.displayName ?? clan.name} + +

+

+ group + + {clan.members + .map( + member => + `${member.name} (${PronounGrouper( + member.pronouns + )})` + ) + .join(", ")} + +

+ +

+ link + + + {clan.url} + + +

+
+

+ description + {clan.description} +

+
+
+
+ ); +} diff --git a/src/components/cards/ClanCard/ClanSkeleton.tsx b/src/components/cards/ClanCard/ClanSkeleton.tsx new file mode 100644 index 0000000..8cf6092 --- /dev/null +++ b/src/components/cards/ClanCard/ClanSkeleton.tsx @@ -0,0 +1,45 @@ +import globals from "@/styles/global_skeleton.module.css"; +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import styles from "./ClanCard.module.css"; + +export default function ClanSkeleton() { + return ( + +
+
+
+
+

+ fjfjfjf fjf fjfjfjfjfjfj fj fj fjfjfj +

+

+ group + + jjffjf j f fjfjfjfjjjjff jffff + +

+

+ link + + https://fjfjfjfjfjfjfjfjfjfjf.fjf/fjfjfjfj + +

+

+ description + + ffffffffffffffffffjjjfjf fj j jjffjf + jfjfjfjfjfjjfffjffjjjjfjfjffjfjj ffjfjf fj j fj + fjfjjfjfj jjffjjjfjfjfjfjfjjfj fj fj jf jf jf jf + fjjfjffjfjfj fjffjf fjfj + +

+
+
+
+ ); +} diff --git a/src/components/cards/SignCard/SignCard.module.css b/src/components/cards/SignCard/SignCard.module.css new file mode 100644 index 0000000..54bf4fb --- /dev/null +++ b/src/components/cards/SignCard/SignCard.module.css @@ -0,0 +1,33 @@ +.SignCard { + display: grid !important; + grid-template-columns: auto auto; + gap: 8px !important; + /* padding: 2px !important; */ +} + +.SignCard.Skeleton { + user-select: none; +} + +.SignCard .gridItem { + width: auto; + height: auto; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 4px; +} + +.SignCard .secondary { + padding: 4px; +} +.SignCard .topImage { + height: 52px; + width: auto; + filter: drop-shadow(1px 1px 0 currentcolor) + drop-shadow(-1px -1px 0 currentcolor) + drop-shadow(1px -1px 0 currentcolor) + drop-shadow(-1px 1px 0 currentcolor); +} diff --git a/src/components/cards/SignCard/SignCard.tsx b/src/components/cards/SignCard/SignCard.tsx new file mode 100644 index 0000000..df97154 --- /dev/null +++ b/src/components/cards/SignCard/SignCard.tsx @@ -0,0 +1,42 @@ +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global.module.css"; +import { Color3 } from "@/types/assist/color"; +import { TrueSignType } from "@/types/assist/extended_zodiac"; +import Link from "next/link"; +import styles from "./SignCard.module.css"; + +export default function SignCard({ sign }: { sign: TrueSignType }) { + return ( + +
+ +
+
+

+ + {sign.name} + +

+

+ {sign.sway.name} + + + {sign.aspect.name} +

+
+
+ ); +} diff --git a/src/components/cards/SignCard/SignSkeleton.tsx b/src/components/cards/SignCard/SignSkeleton.tsx new file mode 100644 index 0000000..19a5814 --- /dev/null +++ b/src/components/cards/SignCard/SignSkeleton.tsx @@ -0,0 +1,31 @@ +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global_skeleton.module.css"; +import styles from "./SignCard.module.css"; + +export default function SignSkeleton() { + return ( + +
+ +
+
+

jjjjfjfjffjfjjffj

+

+ jjjfjfj + + + jjjfjfj +

+
+
+ ); +} diff --git a/src/components/cards/TrollCard/TrollCard.module.css b/src/components/cards/TrollCard/TrollCard.module.css new file mode 100644 index 0000000..d816f3f --- /dev/null +++ b/src/components/cards/TrollCard/TrollCard.module.css @@ -0,0 +1,74 @@ +.TrollCard { + min-width: 600px; + width: 100%; +} + +.TrollCard.Skeleton { + opacity: 0.25; + user-select: none; +} + +.TrollCard .top { + display: grid; + grid-template-columns: max-content auto; + gap: 8px; +} + +.TrollCard .top .gridItem { + width: auto; + height: auto; + display: flex; + flex-direction: column; +} + +.TrollCard .top .primary { + align-items: center; + justify-content: center; +} + +.TrollCard .top .secondary { + gap: 4px; + padding: 4px; +} + +.TrollCard .top .topImage { + width: 150px; + height: 200px; + object-fit: contain; +} + +.TrollCard .bottom { + display: flex; + flex-direction: column; + gap: 4px; +} + +.TrollCard .stack { + --offset-value: 32px; + position: relative; + padding-bottom: var(--offset-value); + padding-right: var(--offset-value); + width: max-content; +} + +.TrollCard .stack.noFalseSign { + padding: 0; +} + +.TrollCard .stack > div:nth-child(1) { + position: relative; + z-index: 2; + /* width: max-content; */ +} + +.TrollCard .stack > div:nth-child(2) { + position: absolute; + /* width: max-content; */ + top: var(--offset-value); + left: var(--offset-value); + z-index: 1; +} + +.TrollCard .stack > div:nth-child(2):hover { + z-index: 3; +} diff --git a/src/components/cards/TrollCard/TrollCard.tsx b/src/components/cards/TrollCard/TrollCard.tsx new file mode 100644 index 0000000..1802f1f --- /dev/null +++ b/src/components/cards/TrollCard/TrollCard.tsx @@ -0,0 +1,140 @@ +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global.module.css"; +import { Color3 } from "@/types/assist/color"; +import { TrueSignType } from "@/types/assist/extended_zodiac"; +import { ClientTroll } from "@/types/troll"; +import { pickRandom } from "@/utility/array"; +import { AgeConverter, PronounGrouper } from "@/utility/language"; +import { parseQuirk } from "@/utility/quirk"; +import Conditional from "@/utility/react/Conditional"; +import Link from "next/link"; +import { useEffect, useState } from "react"; +import SignCard from "../SignCard/SignCard"; +import styles from "./TrollCard.module.css"; + +export default function TrollCard({ troll }: { troll: ClientTroll }) { + const [randomLove, setRandomLove] = useState(""); + const [randomHate, setRandomHate] = useState(""); + const [randomQuote, setRandomQuote] = useState(""); + const trollColor = + troll.pageColor ?? + troll.textColor ?? + troll.falseSign?.color.color ?? + troll.trueSign?.color.color; + useEffect(() => { + if (troll.preferences.love != null && troll.preferences.love.length > 0) + setRandomLove(pickRandom(troll.preferences.love)); + if (troll.preferences.hate != null && troll.preferences.hate.length > 0) + setRandomHate(pickRandom(troll.preferences.hate)); + if (troll.quotes != null && troll.quotes.length > 0) + setRandomQuote(pickRandom(troll.quotes)); + }, []); + return ( + +
+ 0}> +
+ +
+
+
+

+ + {troll.name.join(" ")} + +

+

+ ({troll.pronunciation.join(" ")}) +

+

+ Also known as {troll.username} online. +

+
+

+ + {AgeConverter(troll.age, true)} + + - + {troll.gender} + - + + {PronounGrouper(troll.pronouns)} + +

+
+ +
    + {troll.facts?.map((fact, index) => ( +
  • + {fact} +
  • + ))} +
+
+
+ +
+ + + + + + +
+
+
+
+
+ +

+ thumb_up + {randomLove} +

+
+ +

+ thumb_down + {randomHate} +

+
+ +

+ format_quote + + {parseQuirk(randomQuote, troll.quirks["default"])} + +

+
+
+
+ ); +} diff --git a/src/components/cards/TrollCard/TrollSkeleton.tsx b/src/components/cards/TrollCard/TrollSkeleton.tsx new file mode 100644 index 0000000..8ba2df3 --- /dev/null +++ b/src/components/cards/TrollCard/TrollSkeleton.tsx @@ -0,0 +1,71 @@ +/* eslint-disable @next/next/no-img-element */ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global_skeleton.module.css"; +import SignSkeleton from "../SignCard/SignSkeleton"; +import styles from "./TrollCard.module.css"; + +export default function TrollSkeleton() { + return ( + +
+
+ +
+
+

ffjfjf fjfjjj

+

(fjjjf-jjfj fjjfjf-fjffj)

+

+ Also known as ffjfjjfjjfjfjjjjjfjjf online. +

+
+

+ fj + - + ffjfj + - + fj/fjj/fjjjf +

+
+
    +
  • fjjfjjfjffj
  • +
  • fjjjjfjffjjfffjfj
  • +
  • + fjjjjffjjjfjjjfjjffjfjfj +
  • +
+
+
+ +
+
+
+
+

+ thumb_up + + ffjj fjf jjffffjfjfj fjfjjfjfjjj + +

+

+ thumb_down + + ffjjj fjjfjjf jf jj jjfjjjffj j fff + +

+

+ format_quote + + jjj fjjf jfjjjf f j ffff j f jjfj jf fj fjjjfj jfj + +

+
+
+ ); +} diff --git a/src/lib/trollcall/api/clan.ts b/src/lib/trollcall/api/clan.ts index 6cb22ab..d90b206 100644 --- a/src/lib/trollcall/api/clan.ts +++ b/src/lib/trollcall/api/clan.ts @@ -12,10 +12,9 @@ export async function ClanGET( existingClan?: ServerClan ): Promise { const clan = - existingClan ?? - (await getSingleClan({ - name: query?.clan - })); + existingClan != null || query == null + ? existingClan + : await getSingleClan(query); if (clan == null) return null; const serverClan = await ServerClanToClientClan(clan); serverClan.flairs = cutArray( diff --git a/src/pages/404.tsx b/src/pages/404.tsx new file mode 100644 index 0000000..a857646 --- /dev/null +++ b/src/pages/404.tsx @@ -0,0 +1,30 @@ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global.module.css"; +import "@/styles/index.module.css"; +import { ThemerGetSet } from "@/types/generics"; + +export default function Error({ + themerVars: [theme, setTheme] +}: { + themerVars: ThemerGetSet; +}) { + return ( + <> + +

+ Your resource could not be found. +

+

+ "IT KEEPS HAPPENING" +

+ +
+ + ); +} diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 1fa2d52..93336df 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,129 @@ +import Box from "@/components/Box/Box"; +import Nav from "@/components/Nav/Nav"; +import "@/styles/_app.css"; +import "@/styles/global.module.css"; +import globals from "@/styles/global.module.css"; +import { Color3 } from "@/types/assist/color"; +import Themer, { ThemeModeContext } from "@/utility/react/Themer"; import type { AppProps } from "next/app"; -import React from "react"; +import Link from "next/link"; +import { useState } from "react"; export default function App({ Component, pageProps }: AppProps) { - return ; + const [theme, setTheme] = useState([ + new Color3(0.9, 0.9, 0.8), + new Color3(0.7, 0.7, 0.6), + false + ] as [Color3, Color3, boolean?]); + return ( +
+ +
+ ); } diff --git a/src/pages/_error.tsx b/src/pages/_error.tsx deleted file mode 100644 index 55b1990..0000000 --- a/src/pages/_error.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function ErrorPage() { - return "404"; -} diff --git a/src/pages/api/clan/.../[[...page]]/index.ts b/src/pages/api/clan/.../[[...page]]/index.ts index dab6802..dec9307 100644 --- a/src/pages/api/clan/.../[[...page]]/index.ts +++ b/src/pages/api/clan/.../[[...page]]/index.ts @@ -1,5 +1,7 @@ +import { ClanGET } from "@/lib/trollcall/api/clan"; import { getManyPagedClans } from "@/lib/trollcall/clan"; import { ServerClanToClientClan } from "@/lib/trollcall/convert/clan"; +import { ClientClan } from "@/types/clan"; import { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -11,7 +13,11 @@ export default async function handler( if (method === "GET") { const clans = await getManyPagedClans( {}, - ServerClanToClientClan, + async (clan: any) => { + let thisClan = await ServerClanToClientClan(clan); + thisClan = (await ClanGET(null, clan)) as ClientClan; + return thisClan; + }, 5, page ); diff --git a/src/pages/api/troll/.../[[...page]]/index.ts b/src/pages/api/troll/.../[[...page]]/index.ts index 7335c0b..049d2a3 100644 --- a/src/pages/api/troll/.../[[...page]]/index.ts +++ b/src/pages/api/troll/.../[[...page]]/index.ts @@ -1,5 +1,7 @@ +import { ClanGET } from "@/lib/trollcall/api/clan"; import { ServerTrollToClientTroll } from "@/lib/trollcall/convert/troll"; import { getManyPagedTrolls } from "@/lib/trollcall/troll"; +import { ClientClan } from "@/types/clan"; import { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -11,11 +13,17 @@ export default async function handler( if (method === "GET") { const trolls = await getManyPagedTrolls( {}, - ServerTrollToClientTroll, + async (troll: any) => { + const thisTroll = await ServerTrollToClientTroll(troll); + thisTroll.owner = (await ClanGET({ + _id: troll.owner + })) as ClientClan; + + return thisTroll; + }, 5, page ); - console.log(trolls); if (trolls == null) return res.status(404).end(); res.json(trolls); } else return res.status(405).end(); diff --git a/src/pages/api/troll/[clan]/.../[[...page]]/index.ts b/src/pages/api/troll/[clan]/.../[[...page]]/index.ts index 9b0445c..360f0a9 100644 --- a/src/pages/api/troll/[clan]/.../[[...page]]/index.ts +++ b/src/pages/api/troll/[clan]/.../[[...page]]/index.ts @@ -1,6 +1,8 @@ +import { ClanGET } from "@/lib/trollcall/api/clan"; import { getSingleClan } from "@/lib/trollcall/clan"; import { ServerTrollToClientTroll } from "@/lib/trollcall/convert/troll"; import { getManyPagedTrolls } from "@/lib/trollcall/troll"; +import { ClientClan } from "@/types/clan"; import { NextApiRequest, NextApiResponse } from "next"; export default async function handler( @@ -18,7 +20,14 @@ export default async function handler( { "owner": clan._id }, - ServerTrollToClientTroll, + async (troll: any) => { + const thisTroll = await ServerTrollToClientTroll(troll); + thisTroll.owner = (await ClanGET({ + _id: troll.owner + })) as ClientClan; + + return thisTroll; + }, 5, page ); diff --git a/src/pages/help/opensource/index.tsx b/src/pages/help/opensource/index.tsx new file mode 100644 index 0000000..cf86200 --- /dev/null +++ b/src/pages/help/opensource/index.tsx @@ -0,0 +1,372 @@ +import Box from "@/components/Box/Box"; +import globals from "@/styles/global.module.css"; +import "@/styles/index.module.css"; +import { ThemerGetSet } from "@/types/generics"; +import Link from "next/link"; + +export default function Index({ + themerVars: [theme, setTheme] +}: { + themerVars: ThemerGetSet; +}) { + return ( + <> + +

+ TrollCall is software licensed under the{" "} + + GNU General Public License + + . You can find the source code on Github in the{" "} + + MeowcaTheoRange/TrollCallAPIs + {" "} + repository. +

+
+ +

+ You may find the following packages are required when using + the source code: +

+
    +
  • + + @types/cookie + +
  • +
  • + + @types/express + +
  • +
  • + + @types/lodash + +
  • +
  • + + @types/node + +
  • +
  • + + concurrently + +
  • +
  • + + nodemon + +
  • +
  • + + tsc-alias + +
  • +
  • + + typescript + +
  • + {/* End dev dependencies */} +
  • + + @types/cookie-parser + +
  • +
  • + + @types/crypto-js + +
  • +
  • + + @types/react + +
  • +
  • + + body-parser + +
  • +
  • + + cookie + +
  • +
  • + + cookie-parser + +
  • +
  • + + cookies-next + +
  • +
  • + + crypto-js + +
  • +
  • + + dotenv + +
  • +
  • + + express + +
  • +
  • + + lodash + +
  • +
  • + + mongodb + +
  • +
  • + + nanoid + +
  • +
  • + + next + +
  • +
  • + + react + +
  • +
  • + + react-dom + +
  • +
  • + + tsconfig-paths + +
  • +
  • + + yup + +
  • +
+
+ +

+ TrollCall rev. 4 created by MeowcaTheoRange. +

+

+ trollcall.xyz domain owned by Redact. +

+

+ The TrollCall name is derived from the original Hiveswap + Troll Call. The name may be used in an entity context or a + project context. +

+

+ The textboxes found in the [INSERT PAGE HERE] are inspired + by those from the game Celeste. +

+

+ + + TrollCall Display + {" "} + font by MeowcaTheoRange. + + + + Space Grotesk + {" "} + font by Florian Karsten. + + + + Space Mono + {" "} + font by Colophon Foundry. + + + + Poppins + {" "} + font by Indian Type Foundry. + + + + Flow Circular + {" "} + font by Dan Ross. + + + + Renogare + {" "} + font by Deepak Dogra. + +

+

+ Homestuck and HIVESWAP © Homestuck Inc. +

+
+ + ); +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c0f2413..65d6e8a 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,3 +1,100 @@ -export default function Home() { - return "Welcome home!"; +import Box from "@/components/Box/Box"; +import ClanCard from "@/components/cards/ClanCard/ClanCard"; +import ClanSkeleton from "@/components/cards/ClanCard/ClanSkeleton"; +import TrollCard from "@/components/cards/TrollCard/TrollCard"; +import TrollSkeleton from "@/components/cards/TrollCard/TrollSkeleton"; +import globals from "@/styles/global.module.css"; +import "@/styles/index.module.css"; +import { ClientClan } from "@/types/clan"; +import { ThemerGetSet } from "@/types/generics"; +import { ClientTroll } from "@/types/troll"; +import { getCookies } from "cookies-next"; +import { useEffect, useState } from "react"; + +getCookies(); + +export default function Index({ + themerVars: [theme, setTheme] +}: { + themerVars: ThemerGetSet; +}) { + const [fetchedTrolls, setFetchedTrolls] = useState( + null + ); + const [fetchedClans, setFetchedClans] = useState(null); + useEffect(() => { + async function getTroll() { + const res = await fetch("/api/troll/..."); + const json = await res.json(); + setFetchedTrolls(json); + } + getTroll(); + async function getClan() { + const res = await fetch("/api/clan/..."); + const json = await res.json(); + setFetchedClans(json); + } + getClan(); + }, []); + return ( + <> + + Welcome to TrollCall! + + + {/* + This is a series of cards that represent the most important + aspects of TrollCall. + */} + {fetchedTrolls == null ? ( + <> + + + + + ) : ( + fetchedTrolls.map((troll: ClientTroll, idx) => ( + + )) + )} + + + {/* + This is a series of cards that represent the most important + aspects of TrollCall. + */} + {fetchedClans == null ? ( + <> + + + + + ) : ( + fetchedClans.map((clan: ClientClan, idx) => ( + + )) + )} + + + ); } diff --git a/src/pages/test/index.tsx b/src/pages/test/index.tsx new file mode 100644 index 0000000..a2c6de3 --- /dev/null +++ b/src/pages/test/index.tsx @@ -0,0 +1,345 @@ +import Box from "@/components/Box/Box"; +import CelesteBox from "@/components/CelesteBox/CelesteBox"; +import ClanCard from "@/components/cards/ClanCard/ClanCard"; +import ClanSkeleton from "@/components/cards/ClanCard/ClanSkeleton"; +import SignCard from "@/components/cards/SignCard/SignCard"; +import SignSkeleton from "@/components/cards/SignCard/SignSkeleton"; +import TrollCard from "@/components/cards/TrollCard/TrollCard"; +import TrollSkeleton from "@/components/cards/TrollCard/TrollSkeleton"; +import globals from "@/styles/global.module.css"; +import "@/styles/index.module.css"; +import { Color3 } from "@/types/assist/color"; +import { ThemerGetSet } from "@/types/generics"; +import { ClientTroll } from "@/types/troll"; +import { getCookies } from "cookies-next"; +import { useEffect, useState } from "react"; + +getCookies(); + +export default function Index({ + themerVars: [theme, setTheme] +}: { + themerVars: ThemerGetSet; +}) { + const [fetchedTroll, setFetchedTroll] = useState(null); + useEffect(() => { + async function getTroll() { + const res = await fetch("/api/troll/meowcatheorange/traobi"); + const json = await res.json(); + setFetchedTroll(json); + } + getTroll(); + }, []); + + const [openCB, CelesteBoxInstance] = CelesteBox({ + dialogList: { + name: "CelesteBoxTest", + list: [ + { + character: "madeline_lol", + dialog: [ + "Hello, ", + { + effects: { style: { color: "#8000FF" } }, + text: "world! " + }, + { + effects: { + style: { color: "#FFFF00" } + }, + text: [ + "This is a ", + { + effects: { + className: "wavy" + }, + text: "test" + }, + ".\n" + ] + }, + "I am very proud of myself for making this!" + ] + } + ] + } + }); + return ( + <> + + + Welcome to the TrollCall test page! Here you will find some + fun stuff that you can mess around with. + + + + + This is a series of cards that represent the most important + aspects of TrollCall. + + {fetchedTroll == null ? ( + + ) : ( + + )} + {fetchedTroll == null ? ( + + ) : ( + + )} + {fetchedTroll == null ? ( + + ) : fetchedTroll.trueSign != null ? ( + + ) : ( + <> + )} + + +

Troll Skeleton

+ +

Clan Skeleton

+ +

Sign Skeleton

+ +
+ + + {CelesteBoxInstance} + + +
+ + + + + + + + + + + + +
+
+ + +
+
+ +
+
+ +

Blah blah blah

+

Blah blah blah

+

Blah blah blah

+

Blah blah blah

+

Blah blah blah

+

Blah blah blah

+
+ + ); +} diff --git a/src/styles/_app.css b/src/styles/_app.css new file mode 100644 index 0000000..c5062e2 --- /dev/null +++ b/src/styles/_app.css @@ -0,0 +1,57 @@ +body, +div#__next, +main.App { + margin: 0; + min-height: 100vh; + width: 100vw; + box-sizing: border-box; + + /* Default text styling */ + font-size: 16px; + line-height: 20px; + font-family: "Space Grotesk"; +} + +main.App { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 8px; + background-color: var(--sec-bg); + color: var(--sec-fg); + background-image: url("/assets/pattern/pattern.png"); + background-blend-mode: hard-light; +} + +main.App.inverted { + background-image: url("/assets/pattern/pattern_inv.png"); +} + +main.App div.mainContent { + display: flex; + box-sizing: border-box; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding: 8px 0; + gap: 8px; + width: 100%; + max-width: 768px; + /* height: 100vh; */ +} + +/* Change behaviour of some elements */ + +p, +ul, +ol { + margin: 0; + padding: 0; + display: block; +} + +ul, +ol { + list-style-position: inside; +} diff --git a/src/styles/fonts.css b/src/styles/fonts.css new file mode 100644 index 0000000..dbc8f08 --- /dev/null +++ b/src/styles/fonts.css @@ -0,0 +1,50 @@ +@font-face { + font-family: "TrollCall Display"; + src: url("../../public/fonts/TrollCallDisplay/TrollCallDisplay.woff") + format("woff"), + url("../../public/fonts/TrollCallDisplay/TrollCallDisplay.woff2") + format("woff2"), + url("../../public/fonts/TrollCallDisplay/TrollCallDisplay.otf") + format("opentype"); +} + +/* ANY usage of the Renogare font should also specify a fallback! Try the Poppins font found below. */ +@font-face { + font-family: "Renogare"; + src: url("../../public/fonts/Renogare/Renogare.woff") format("woff"), + url("../../public/fonts/Renogare/Renogare.woff2") format("woff2"), + url("../../public/fonts/Renogare/Renogare.otf") format("opentype"); +} + +@font-face { + font-family: "Poppins"; + src: url("../../public/fonts/Poppins/Poppins.ttf") format("truetype"); +} + +@font-face { + font-family: "Flow Circular"; + src: url("../../public/fonts/FlowCircular/FlowCircular.ttf") + format("truetype"); +} + +@font-face { + font-family: "Material Symbols Outlined"; + font-style: normal; + src: url("../../public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.woff2") + format("woff2"), + url("../../public/fonts/MaterialSymbolsOutlined/MaterialSymbolsOutlined.ttf") + format("truetype"); +} + +@font-face { + font-family: "Space Grotesk"; + font-style: normal; + src: url("../../public/fonts/SpaceGrotesk/SpaceGrotesk.ttf") + format("truetype"); +} + +@font-face { + font-family: "Space Mono"; + font-style: normal; + src: url("../../public/fonts/SpaceMono/SpaceMono.ttf") format("truetype"); +} diff --git a/src/styles/global.module.css b/src/styles/global.module.css new file mode 100644 index 0000000..f34e84e --- /dev/null +++ b/src/styles/global.module.css @@ -0,0 +1,143 @@ +@import url(./fonts.css); + +.title { + font-size: 16px; + line-height: 20px; + font-family: "TrollCall Display"; + text-transform: uppercase; +} + +.titleSmall { + font-size: 14px; + line-height: 18px; + font-family: "TrollCall Display"; + text-transform: uppercase; +} + +.text { + font-size: 16px; + line-height: 20px; + font-family: "Space Grotesk"; +} + +.blockText { + display: block; + font-size: 16px; + line-height: 20px; + font-family: "Space Grotesk"; +} + +.small { + font-size: 12px; + line-height: 14px; + font-family: "Space Grotesk"; +} + +.mono { + font-size: 16px; + line-height: 20px; + font-family: "Space Mono"; +} + +.icon { + font-size: 24px; + line-height: 24px; + font-family: "Material Symbols Outlined"; + font-variation-settings: "FILL" 1, "opsz" 24, "GRAD" 0, "wght" 400; + user-select: none; +} + +.iconSmall { + font-size: 16px; + line-height: 16px; + font-family: "Material Symbols Outlined"; + font-variation-settings: "FILL" 1, "opsz" 24, "GRAD" 0, "wght" 400; + user-select: none; +} + +.iconlike { + font-size: 20px; + line-height: 20px; + font-family: "Space Mono"; + user-select: none; +} + +.link { + text-decoration: none; + color: inherit; + text-shadow: 0 0 2px currentColor; + cursor: pointer; + transition: text-shadow 0.125s; +} + +.link:hover { + text-decoration: underline; + text-shadow: 0 0 8px currentColor; +} + +.button { + color: inherit; + box-shadow: 0 0 2px currentColor; + background-color: transparent; + border: 1px solid currentColor; + + padding: 4px 8px; + border-radius: 2px; + font-size: 16px; + line-height: 20px; + font-family: "Space Grotesk"; + cursor: pointer; + + transition: box-shadow 0.125s; +} + +.button:hover { + box-shadow: 0 0 8px currentColor; +} + +.buttonLink { + color: inherit; + background-color: transparent; + border: none; + text-decoration: none; + font-size: 16px; + line-height: 20px; + font-family: "Space Grotesk"; + padding: 0; + margin: 0; + display: inline; + text-align: left; + cursor: pointer; + + text-shadow: 0 0 2px currentColor; + transition: text-shadow 0.125s; +} + +.buttonLink:hover { + text-decoration: underline; + text-shadow: 0 0 8px currentColor; +} + +.buttonRow, +.horizontalList { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + gap: 8px; +} +.horizontalListLeft { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + gap: 8px; +} + +.iconText { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 8px; +} diff --git a/src/styles/global_skeleton.module.css b/src/styles/global_skeleton.module.css new file mode 100644 index 0000000..019b2fb --- /dev/null +++ b/src/styles/global_skeleton.module.css @@ -0,0 +1,143 @@ +@import url(./fonts.css); + +.title { + font-size: 24px; + line-height: 20px; + font-family: "Flow Circular"; + text-transform: uppercase; +} + +.titleSmall { + font-size: 20px; + line-height: 16px; + font-family: "Flow Circular"; + text-transform: uppercase; +} + +.text { + font-size: 16px; + line-height: 18px; + font-family: "Flow Circular"; +} + +.blockText { + display: block; + font-size: 16px; + line-height: 18px; + font-family: "Flow Circular"; +} + +.small { + font-size: 12px; + line-height: 14px; + font-family: "Flow Circular"; +} + +.mono { + font-size: 16px; + line-height: 20px; + font-family: "Flow Circular"; +} + +.icon { + font-size: 24px; + line-height: 24px; + font-family: "Material Symbols Outlined"; + font-variation-settings: "FILL" 1, "opsz" 24, "GRAD" 0, "wght" 400; + user-select: none; +} + +.iconSmall { + font-size: 16px; + line-height: 16px; + font-family: "Material Symbols Outlined"; + font-variation-settings: "FILL" 1, "opsz" 24, "GRAD" 0, "wght" 400; + user-select: none; +} + +.iconlike { + font-size: 20px; + line-height: 20px; + font-family: "Flow Circular"; + user-select: none; +} + +.link { + text-decoration: none; + color: inherit; + text-shadow: 0 0 2px currentColor; + cursor: pointer; + transition: text-shadow 0.125s; +} + +.link:hover { + text-decoration: underline; + text-shadow: 0 0 8px currentColor; +} + +.button { + color: inherit; + box-shadow: 0 0 2px currentColor; + background-color: transparent; + border: 1px solid currentColor; + + padding: 4px 8px; + border-radius: 2px; + font-size: 16px; + line-height: 20px; + font-family: "Flow Circular"; + cursor: pointer; + + transition: box-shadow 0.125s; +} + +.button:hover { + box-shadow: 0 0 8px currentColor; +} + +.buttonLink { + color: inherit; + background-color: transparent; + border: none; + text-decoration: none; + font-size: 16px; + line-height: 20px; + font-family: "Flow Circular"; + padding: 0; + margin: 0; + display: inline; + text-align: left; + cursor: pointer; + + text-shadow: 0 0 2px currentColor; + transition: text-shadow 0.125s; +} + +.buttonLink:hover { + text-decoration: underline; + text-shadow: 0 0 8px currentColor; +} + +.buttonRow, +.horizontalList { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + gap: 8px; +} +.horizontalListLeft { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + gap: 8px; +} + +.iconText { + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + gap: 8px; +} diff --git a/src/styles/index.module.css b/src/styles/index.module.css new file mode 100644 index 0000000..e69de29 diff --git a/src/types/assist/language.ts b/src/types/assist/language.ts deleted file mode 100644 index d06f4aa..0000000 --- a/src/types/assist/language.ts +++ /dev/null @@ -1,53 +0,0 @@ -export function AdaptivePossessive(owner: string, possession: string) { - return owner + (owner.endsWith("s") ? "'" : "'s") + " " + possession; -} - -export function PronounGrouper( - pronouns: [string, string, string], - sep?: string, - amount?: number -) { - return pronouns.slice(0, amount ?? 2).join(sep ?? "/"); -} - -export function HeightConverter(inches: number) { - var feetandinches = Math.floor(inches / 12) + "'" + (inches % 12) + '"'; - var meters = Math.floor((inches / 39.37) * 100) / 100 + "m"; - return feetandinches + " (" + meters + ")"; -} - -export function AgeConverter(sweeps: number, years?: boolean) { - return years - ? `${Math.round(sweeps * 2.1667 * 10) / 10} years` - : `${sweeps} sweeps`; -} - -export function Pluralize(stringe: string) { - if (stringe.match(/(?:s|ch|sh|x|z|[^aeiou]o)$/)) return stringe + "es"; - else if (stringe.match(/[aeiou](?:y|o)$/)) return stringe + "s"; - else if (stringe.match(/[^aeiou]y$/)) return stringe.slice(0, -1) + "ies"; - else if (stringe.match(/(?:f|fe)$/)) return stringe.slice(0, -1) + "ves"; - else return stringe + "s"; -} - -export function ArraySample(array: any[]) { - return array[Math.floor(Math.random() * array.length)]; -} - -export function ProperNounCase(string: string) { - return string - .split(" ") - .map(x => x.charAt(0).toUpperCase() + x.slice(1).toLowerCase()) - .join(" "); -} - -export function PesterchumNameFormatter(string: string) { - return ( - string + - " [" + - string - .replace(/^(([a-z])[a-z]+)(([A-Z])[a-z]+)$/, "$2$4") - .toUpperCase() + - "]" - ); -} diff --git a/src/types/client/dialoglog.ts b/src/types/client/dialoglog.ts deleted file mode 100644 index 6c2e550..0000000 --- a/src/types/client/dialoglog.ts +++ /dev/null @@ -1,53 +0,0 @@ -import * as yup from "yup"; - -export const SubmitDialogSchema = yup.object({ - owners: yup.array().of(yup.string().required()).required().min(1), - name: yup.string().required().min(3).max(100), - description: yup.string().max(10000).ensure(), - characters: yup - .array() - .of( - yup - .object({ - troll: yup.string().required(), - time: yup.string().ensure() - }) - .required() - ) - .required(), - log: yup - .array() - .of( - yup - .object({ - character: yup.number().notRequired().min(0), - quirk: yup.string().default("default"), - text: yup.string().required().max(2000) - }) - .required() - ) - .required() -}); - -export type SubmitDialog = yup.InferType; - -export const PartialDialogSchema = yup.object({ - owners: yup.array().of(yup.string()).min(1), - name: yup.string().min(3).max(100), - description: yup.string().max(10000), - characters: yup.array().of( - yup.object({ - troll: yup.string(), - time: yup.string() - }) - ), - log: yup.array().of( - yup.object({ - character: yup.number().min(0), - quirk: yup.string().default("default"), - text: yup.string().max(2000) - }) - ) -}); - -export type PartialDialog = yup.InferType; diff --git a/src/types/client/troll.ts b/src/types/client/troll.ts index c648a1c..afc27fd 100644 --- a/src/types/client/troll.ts +++ b/src/types/client/troll.ts @@ -75,7 +75,7 @@ export const SubmitTrollSchema = yup gender: yup .string() .required() - .matches(/^[A-z-_]+$/, "Letters only") + .matches(/^[A-z- ]+$/, "Letters only") .min(3) .max(30), @@ -132,13 +132,15 @@ export const SubmitTrollSchema = yup age: yup.number().required().positive(), // Sweeps images: yup.array().of(yup.string().required().url()).required(), // Meta stuff - policies: yup.object({ - fanart: PolicySchema.required(), - fanartOthers: PolicySchema.required(), - kinning: PolicySchema.required(), - shipping: PolicySchema.required(), - fanfiction: PolicySchema.required() - }) + policies: yup + .object({ + fanart: PolicySchema.notRequired(), + fanartOthers: PolicySchema.notRequired(), + kinning: PolicySchema.notRequired(), + shipping: PolicySchema.notRequired(), + fanfiction: PolicySchema.notRequired() + }) + .notRequired() }) .required(); diff --git a/src/types/dialoglog.ts b/src/types/dialoglog.ts deleted file mode 100644 index b0839a3..0000000 --- a/src/types/dialoglog.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { WithId } from "@/lib/db/crud"; -import * as yup from "yup"; -import { ObjectIdSchema } from "./assist/mongo"; -import { ClientClanSchema } from "./clan"; -import { SubmitDialogSchema } from "./client/dialoglog"; -import { ClientTroll, ClientTrollSchema } from "./troll"; - -export const ServerDialogSchema = SubmitDialogSchema.shape({ - owners: yup.array().of(ObjectIdSchema.required()).required().min(1), - characters: yup - .array() - .of( - yup - .object({ - troll: ObjectIdSchema.required(), - time: yup.string().ensure() - }) - .required() - ) - .required() -}); - -export type ServerDialog = WithId>; - -export const ClientDialogSchema = SubmitDialogSchema.shape({ - owners: yup.array().of(ClientClanSchema.required()).required().min(1), - characters: yup - .array() - .of( - yup - .object({ - troll: ClientTrollSchema.required(), - time: yup.string().ensure() - }) - .required() - ) - .required() -}); - -export interface ClientDialog extends yup.InferType { - characters: { - troll: ClientTroll; - time: string; - }[]; -} // [SEARCH: HACK] a hack. thanks, jquense diff --git a/src/types/generics.ts b/src/types/generics.ts new file mode 100644 index 0000000..7d39b8f --- /dev/null +++ b/src/types/generics.ts @@ -0,0 +1,12 @@ +import { Color3 } from "./assist/color"; + +export type AnyObject = { [key: string]: any }; + +export type AnyObjectAnd = T & { [key: string]: any }; + +// Color + +export type ThemerGetSet = [ + [Color3, Color3, boolean?], + (x: [Color3, Color3, boolean?]) => void +]; diff --git a/src/utility/array.ts b/src/utility/array.ts new file mode 100644 index 0000000..105ba9b --- /dev/null +++ b/src/utility/array.ts @@ -0,0 +1,2 @@ +export const pickRandom = (arr: any[]) => + arr[Math.round(Math.random() * (arr.length - 1))]; diff --git a/src/utility/fonts.ts b/src/utility/fonts.ts new file mode 100644 index 0000000..38b96c1 --- /dev/null +++ b/src/utility/fonts.ts @@ -0,0 +1,11 @@ +import { Space_Grotesk, Space_Mono } from "next/font/google"; + +export const spaceGrotesk = Space_Grotesk({ + subsets: ["latin"], + display: "swap", +}); +export const spaceMono = Space_Mono({ + subsets: ["latin"], + weight: ["400"], + display: "swap", +}); diff --git a/src/utility/language.ts b/src/utility/language.ts new file mode 100644 index 0000000..0cc2681 --- /dev/null +++ b/src/utility/language.ts @@ -0,0 +1,53 @@ +export function AdaptivePossessive(owner: string, possession: string) { + return owner + (owner.endsWith("s") ? "'" : "'s") + " " + possession; +} + +export function PronounGrouper( + pronouns: [string, string, string][], + sep?: string, + amount?: number +) { + if (pronouns.length > 1) + return pronouns.map((pronounSet) => pronounSet[0]).join("/"); + else return pronouns[0].slice(0, amount ?? 2).join(sep ?? "/"); +} + +export function HeightConverter(inches: number) { + var feetandinches = Math.floor(inches / 12) + "'" + (inches % 12) + '"'; + var meters = Math.floor((inches / 39.37) * 100) / 100 + "m"; + return feetandinches + " (" + meters + ")"; +} + +export function AgeConverter(age: number, years?: boolean) { + return years + ? `${Math.round((age / 2.1667) * 10) / 10} sweeps` + : `${Math.round(age * 2.1667 * 10) / 10} years`; +} + +export function Pluralize(stringe: string) { + if (stringe.match(/(?:s|ch|sh|x|z|[^aeiou]o)$/)) return stringe + "es"; + else if (stringe.match(/[aeiou](?:y|o)$/)) return stringe + "s"; + else if (stringe.match(/[^aeiou]y$/)) return stringe.slice(0, -1) + "ies"; + else if (stringe.match(/(?:f|fe)$/)) return stringe.slice(0, -1) + "ves"; + else return stringe + "s"; +} + +export function ArraySample(array: any[]) { + return array[Math.floor(Math.random() * array.length)]; +} + +export function ProperNounCase(string: string) { + return string + .split(" ") + .map((x) => x.charAt(0).toUpperCase() + x.slice(1).toLowerCase()) + .join(" "); +} + +export function PesterchumNameFormatter(string: string) { + return ( + string + + " [" + + string.replace(/^(([a-z])[a-z]+)(([A-Z])[a-z]+)$/, "$2$4").toUpperCase() + + "]" + ); +} diff --git a/src/utility/number.ts b/src/utility/number.ts new file mode 100644 index 0000000..f77b6aa --- /dev/null +++ b/src/utility/number.ts @@ -0,0 +1,2 @@ +export const clamp = (n: number, mi: number, ma: number) => + Math.max(mi, Math.min(n, ma)); diff --git a/src/utility/quirk.ts b/src/utility/quirk.ts new file mode 100644 index 0000000..e602d11 --- /dev/null +++ b/src/utility/quirk.ts @@ -0,0 +1,119 @@ +import { Quirk } from "@/types/quirks"; +import { ArraySample } from "./language"; + +export function parseQuirk(string: string, quirk: Quirk) { + var mutatingString = string; + quirk.quirk.forEach((quirkFunction) => { + var conditionRegex; + if (quirkFunction.condition) { + try { + conditionRegex = new RegExp(quirkFunction.condition, "g"); + } catch (e) { + conditionRegex = null; + return; + } + } + var replaceValue = ArraySample(quirkFunction.replace); + if (conditionRegex && !mutatingString.match(conditionRegex)) return; + switch (quirkFunction.type) { + case "prefix": { + mutatingString = replaceValue + mutatingString; + break; + } + case "suffix": { + mutatingString = mutatingString + replaceValue; + break; + } + case "simple": { + if (quirkFunction.find == undefined) break; + mutatingString = mutatingString.replaceAll( + quirkFunction.find, + replaceValue + ); + break; + } + case "regex": { + if (quirkFunction.find == undefined) break; + var testRegex; + try { + testRegex = new RegExp(quirkFunction.find, "g"); + } catch (e) { + break; + } + mutatingString = mutatingString.replace(testRegex, replaceValue); + break; + } + case "case": { + mutatingString = + replaceValue === "lower" + ? mutatingString.toLowerCase() + : mutatingString.toUpperCase(); + break; + } + case "case_simple": { + if (quirkFunction.find == undefined) break; + mutatingString = mutatingString.replaceAll(quirkFunction.find, (m) => + replaceValue === "lower" ? m.toLowerCase() : m.toUpperCase() + ); + break; + } + case "case_pos": { + // morbidJester + if (quirkFunction.find == undefined) break; + const [ca, sp, cs, ow] = quirkFunction.find.split(", "); + if (ca == null || sp == null) break; + var characterAmount: number = +ca; + var startPos: string = sp; + var characterSep: number = +(cs ?? 0); + var oneword: boolean = ow === "true"; + var brokenSentence = oneword + ? [mutatingString] + : mutatingString.split(" "); + mutatingString = brokenSentence + .map((word) => { + var leftNC, rightNC; + let newStr = word + .replace( + /^([^a-zA-Z]*)(.*?)([^a-zA-Z]*)$/g, + (match, left, center, right, _, __) => { + leftNC = left; + rightNC = right; + return center; + } + ) + .split(""); + for ( + let i = 0; + i < characterAmount * (characterSep + 1); + i += characterSep + 1 + ) { + if (i >= newStr.length) break; + var trueIndex = startPos === "end" ? newStr.length - (i + 1) : i; + newStr[trueIndex] = + replaceValue === "lower" + ? newStr[trueIndex].toLowerCase() + : newStr[trueIndex].toUpperCase(); + } + return leftNC + newStr.join("") + rightNC; + }) + .join(" "); + + break; + } + case "case_regex": { + if (quirkFunction.find == undefined) break; + var testRegex; + try { + testRegex = new RegExp(quirkFunction.find, "g"); + } catch (e) { + break; + } + mutatingString = mutatingString.replace(testRegex, (m) => + replaceValue === "lower" ? m.toLowerCase() : m.toUpperCase() + ); + break; + } + } + }); + return mutatingString; +} diff --git a/src/utility/react/Conditional.tsx b/src/utility/react/Conditional.tsx new file mode 100644 index 0000000..2646a0e --- /dev/null +++ b/src/utility/react/Conditional.tsx @@ -0,0 +1,23 @@ +import { ReactNode } from "react"; + +export default function Conditional({ + condition, + children, +}: { + condition: boolean; + children: ReactNode; +}) { + return condition ? children : <>; +} + +export function ConditionalParent({ + condition, + parent, + children, +}: { + condition: boolean; + children: ReactNode; + parent: (children: ReactNode) => ReactNode; +}) { + return condition ? parent(children) : children; +} diff --git a/src/utility/react/Themer.tsx b/src/utility/react/Themer.tsx new file mode 100644 index 0000000..a197d90 --- /dev/null +++ b/src/utility/react/Themer.tsx @@ -0,0 +1,38 @@ +import { Color3 } from "@/types/assist/color"; +import { createContext } from "react"; + +export default function Themer({ + pri, + sec, + inverted, +}: { + pri: Color3; + sec: Color3; + inverted?: boolean; +}) { + return inverted ? ( + + ) : ( + + ); +} + +export const ThemeModeContext = createContext(false as boolean | undefined); diff --git a/src/utility/text.ts b/src/utility/text.ts new file mode 100644 index 0000000..1c5a18c --- /dev/null +++ b/src/utility/text.ts @@ -0,0 +1,2 @@ +export const truncate = (str: string, len: number) => + str.length <= len ? str : str.slice(0, len) + "..."; diff --git a/tsconfig.json b/tsconfig.json index f082d2e..b976dbc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "es2015", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, @@ -8,9 +8,8 @@ "forceConsistentCasingInFileNames": true, "noEmit": true, "esModuleInterop": true, - "noErrorTruncation": true, "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve", @@ -19,6 +18,6 @@ "@/*": ["./src/*"] } }, - "include": ["src/**/*.d.ts", "src/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "exclude": ["node_modules"] }