diff --git a/.eslintrc.yml b/.eslintrc.yml
new file mode 100644
index 0000000..eed067d
--- /dev/null
+++ b/.eslintrc.yml
@@ -0,0 +1,12 @@
+env:
+ browser: true
+ es2021: true
+extends:
+ - standard-with-typescript
+ - plugin:react/recommended
+parserOptions:
+ ecmaVersion: latest
+ sourceType: module
+plugins:
+ - react
+rules: {}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fd3dbb5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+.yarn/install-state.gz
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/.idea/doryan-blog-next-turbo.iml b/.idea/doryan-blog-next-turbo.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/doryan-blog-next-turbo.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..e405a35
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..fd8d70f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml
new file mode 100644
index 0000000..b105855
--- /dev/null
+++ b/.idea/watcherTasks.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..512a3f2
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,604 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "customColor": "",
+ "associatedIndex": 2
+}
+
+
+
+
+
+ {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "git-widget-placeholder": "experimental",
+ "last_opened_file_path": "/home/doryan04/DoryanNetwork/doryan-blog-next-turbo/src/styles",
+ "list.type.of.created.stylesheet": "Sass",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "preferences.lookFeel",
+ "ts.external.directory.path": "/home/doryan04/DoryanNetwork/doryan-blog-next-turbo/node_modules/typescript/lib",
+ "vue.rearranger.settings.migration": "true"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1704143295326
+
+
+ 1704143295326
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1704526583970
+
+
+
+ 1704526583970
+
+
+
+ 1704526600066
+
+
+
+ 1704526600066
+
+
+
+ 1704526612167
+
+
+
+ 1704526612167
+
+
+
+ 1704526646792
+
+
+
+ 1704526646792
+
+
+
+ 1704526658894
+
+
+
+ 1704526658894
+
+
+
+ 1704526668819
+
+
+
+ 1704526668819
+
+
+
+ 1704577073405
+
+
+
+ 1704577073405
+
+
+
+ 1704577088372
+
+
+
+ 1704577088372
+
+
+
+ 1704577111494
+
+
+
+ 1704577111494
+
+
+
+ 1704577125154
+
+
+
+ 1704577125154
+
+
+
+ 1704577139599
+
+
+
+ 1704577139599
+
+
+
+ 1704665181492
+
+
+
+ 1704665181492
+
+
+
+ 1704665219291
+
+
+
+ 1704665219291
+
+
+
+ 1704665235238
+
+
+
+ 1704665235238
+
+
+
+ 1704665243297
+
+
+
+ 1704665243297
+
+
+
+ 1704665255268
+
+
+
+ 1704665255268
+
+
+
+ 1704665272238
+
+
+
+ 1704665272238
+
+
+
+ 1704665285628
+
+
+
+ 1704665285628
+
+
+
+ 1704665322221
+
+
+
+ 1704665322221
+
+
+
+ 1704665352879
+
+
+
+ 1704665352879
+
+
+
+ 1704665367142
+
+
+
+ 1704665367142
+
+
+
+ 1704665398936
+
+
+
+ 1704665398936
+
+
+
+ 1704665410733
+
+
+
+ 1704665410733
+
+
+
+ 1704748096828
+
+
+
+ 1704748096828
+
+
+
+ 1704748124500
+
+
+
+ 1704748124500
+
+
+
+ 1704748135954
+
+
+
+ 1704748135954
+
+
+
+ 1704748153364
+
+
+
+ 1704748153364
+
+
+
+ 1704751209333
+
+
+
+ 1704751209333
+
+
+
+ 1704751889114
+
+
+
+ 1704751889114
+
+
+
+ 1704837754211
+
+
+
+ 1704837754211
+
+
+
+ 1704837786812
+
+
+
+ 1704837786812
+
+
+
+ 1704837827996
+
+
+
+ 1704837827996
+
+
+
+ 1704837841727
+
+
+
+ 1704837841727
+
+
+
+ 1704837855501
+
+
+
+ 1704837855501
+
+
+
+ 1704837877968
+
+
+
+ 1704837877968
+
+
+
+ 1704837881086
+
+
+
+ 1704837881086
+
+
+
+ 1704837896608
+
+
+
+ 1704837896608
+
+
+
+ 1704837910534
+
+
+
+ 1704837910534
+
+
+
+ 1705098993824
+
+
+
+ 1705098993824
+
+
+
+ 1705187043022
+
+
+
+ 1705187043022
+
+
+
+ 1705187047711
+
+
+
+ 1705187047711
+
+
+
+ 1705187050731
+
+
+
+ 1705187050731
+
+
+
+ 1705187070169
+
+
+
+ 1705187070169
+
+
+
+ 1705187096566
+
+
+
+ 1705187096567
+
+
+
+ 1705446770845
+
+
+
+ 1705446770846
+
+
+
+ 1705788187457
+
+
+
+ 1705788187457
+
+
+
+ 1705788194219
+
+
+
+ 1705788194219
+
+
+
+ 1705877491483
+
+
+
+ 1705877491483
+
+
+
+ 1705955541881
+
+
+
+ 1705955541881
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/components/buttons.tsx b/app/components/buttons.tsx
new file mode 100644
index 0000000..99d04d2
--- /dev/null
+++ b/app/components/buttons.tsx
@@ -0,0 +1,62 @@
+"use client"
+
+import React, {useCallback, useState} from 'react';
+import {Button} from "../../src/primitive-components/material-you-components";
+import axios from "axios";
+
+export default function Buttons() {
+
+ const [state, setState] = useState(1);
+
+ const callback = useCallback(() =>
+ setState(prevState => prevState + 1)
+ , [state]);
+
+ return (
+
+
Buttons
+
+
+
Default buttons
+
+
+
+
+
+
+
+
+
+
Buttons with icon
+
+
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/checkboxes.tsx b/app/components/checkboxes.tsx
new file mode 100644
index 0000000..e59bff6
--- /dev/null
+++ b/app/components/checkboxes.tsx
@@ -0,0 +1,48 @@
+"use client"
+
+import React from 'react';
+import {Button, Checkbox } from '../../src/primitive-components/material-you-components';
+
+export default function Checkboxes() {
+
+ return (
+
+ );
+}
diff --git a/app/components/fabs.tsx b/app/components/fabs.tsx
new file mode 100644
index 0000000..7de622f
--- /dev/null
+++ b/app/components/fabs.tsx
@@ -0,0 +1,85 @@
+import React from 'react';
+import {FAB} from "../../src/primitive-components/material-you-components";
+
+export default function Fabs() {
+ return (
+
+
FABs
+
+
+
+
+
+
Extended
+
+
+
+ Label
+
+
+
+
+ Label
+
+
+
+
+ Label
+
+
+
+
+ Label
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/icon-buttons.tsx b/app/components/icon-buttons.tsx
new file mode 100644
index 0000000..c8b738c
--- /dev/null
+++ b/app/components/icon-buttons.tsx
@@ -0,0 +1,116 @@
+"use client"
+
+import React from 'react';
+import {IconButton} from "../../src/primitive-components/material-you-components";
+
+function IconButtons() {
+
+ return (
+
+
Icon buttons
+
+
+
Default buttons
+
+
+
+
+
+
+
Disabled default buttons
+
+
+
+
+
+
+
+
+
Toggle buttons
+
+
+
+
+
+
+
Disabled toggle buttons
+
+
+
+
+
+
+
Disabled selected toggle buttons
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default IconButtons;
\ No newline at end of file
diff --git a/app/components/radios.tsx b/app/components/radios.tsx
new file mode 100644
index 0000000..75e5232
--- /dev/null
+++ b/app/components/radios.tsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import { Radio } from '../../src/primitive-components/material-you-components';
+
+export default function Radios() {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/switches.tsx b/app/components/switches.tsx
new file mode 100644
index 0000000..c194e4c
--- /dev/null
+++ b/app/components/switches.tsx
@@ -0,0 +1,55 @@
+import React from 'react';
+import {Switch} from "../../src/primitive-components/material-you-components";
+
+export default function Switches() {
+ return (
+
+
Switches
+
+
Without icon
+
+
+
Default
+
+
+
+
+
Disabled
+
+
+
+
+
+
+
With icon (both)
+
+
+
Default
+
+
+
+
+
Disabled
+
+
+
+
+
+
+
With icon (selected)
+
+
+
Default
+
+
+
+
+
Disabled
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/app/components/text-fields.tsx b/app/components/text-fields.tsx
new file mode 100644
index 0000000..bade667
--- /dev/null
+++ b/app/components/text-fields.tsx
@@ -0,0 +1,424 @@
+import React from 'react';
+import {TextField} from "../../src/primitive-components/text-field/text-field";
+import {Button} from "../../src/primitive-components/button/button";
+
+export function TextFields(_props : any) {
+ return (
+
+ );
+}
\ No newline at end of file
diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..e1616aa
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,17 @@
+import "../src/styles/generics.css"
+import "../src/styles/button.css"
+import "../src/styles/ripple.css"
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+
+ {children}
+
+
+ )
+}
diff --git a/app/page.tsx b/app/page.tsx
new file mode 100644
index 0000000..08a115a
--- /dev/null
+++ b/app/page.tsx
@@ -0,0 +1,46 @@
+import {Fragment} from "react";
+import Buttons from "./components/buttons"
+import Switches from "./components/switches";
+import Checkboxes from "./components/checkboxes";
+import Radios from "./components/radios";
+import Fabs from "./components/fabs";
+import IconButtons from "./components/icon-buttons";
+import {TextFields} from "./components/text-fields";
+
+export default function Page() {
+ return(
+
+
+
Google Material You UI kit
+
+ {/*
*/}
+ {/* */}
+ {/* */}
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+
+
+
+
+ )
+}
diff --git a/dist/output.css b/dist/output.css
new file mode 100644
index 0000000..426267b
--- /dev/null
+++ b/dist/output.css
@@ -0,0 +1,541 @@
+/*
+! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com
+*/
+
+/*
+1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
+2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
+*/
+
+*,
+::before,
+::after {
+ box-sizing: border-box;
+ /* 1 */
+ border-width: 0;
+ /* 2 */
+ border-style: solid;
+ /* 2 */
+ border-color: #e5e7eb;
+ /* 2 */
+}
+
+::before,
+::after {
+ --tw-content: '';
+}
+
+/*
+1. Use a consistent sensible line-height in all browsers.
+2. Prevent adjustments of font size after orientation changes in iOS.
+3. Use a more readable tab size.
+4. Use the user's configured `sans` font-family by default.
+5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
+*/
+
+html {
+ line-height: 1.5;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+ -moz-tab-size: 4;
+ /* 3 */
+ -o-tab-size: 4;
+ tab-size: 4;
+ /* 3 */
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ /* 4 */
+ font-feature-settings: normal;
+ /* 5 */
+ font-variation-settings: normal;
+ /* 6 */
+}
+
+/*
+1. Remove the margin in all browsers.
+2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
+*/
+
+body {
+ margin: 0;
+ /* 1 */
+ line-height: inherit;
+ /* 2 */
+}
+
+/*
+1. Add the correct height in Firefox.
+2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
+3. Ensure horizontal rules are visible by default.
+*/
+
+hr {
+ height: 0;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ border-top-width: 1px;
+ /* 3 */
+}
+
+/*
+Add the correct text decoration in Chrome, Edge, and Safari.
+*/
+
+abbr:where([title]) {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+}
+
+/*
+Remove the default font size and weight for headings.
+*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-size: inherit;
+ font-weight: inherit;
+}
+
+/*
+Reset links to optimize for opt-in styling instead of opt-out.
+*/
+
+a {
+ color: inherit;
+ text-decoration: inherit;
+}
+
+/*
+Add the correct font weight in Edge and Safari.
+*/
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/*
+1. Use the user's configured `mono` font-family by default.
+2. Use the user's configured `mono` font-feature-settings by default.
+3. Use the user's configured `mono` font-variation-settings by default.
+4. Correct the odd `em` font sizing in all browsers.
+*/
+
+code,
+kbd,
+samp,
+pre {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ /* 1 */
+ font-feature-settings: normal;
+ /* 2 */
+ font-variation-settings: normal;
+ /* 3 */
+ font-size: 1em;
+ /* 4 */
+}
+
+/*
+Add the correct font size in all browsers.
+*/
+
+small {
+ font-size: 80%;
+}
+
+/*
+Prevent `sub` and `sup` elements from affecting the line height in all browsers.
+*/
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/*
+1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
+2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
+3. Remove gaps between table borders by default.
+*/
+
+table {
+ text-indent: 0;
+ /* 1 */
+ border-color: inherit;
+ /* 2 */
+ border-collapse: collapse;
+ /* 3 */
+}
+
+/*
+1. Change the font styles in all browsers.
+2. Remove the margin in Firefox and Safari.
+3. Remove default padding in all browsers.
+*/
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-feature-settings: inherit;
+ /* 1 */
+ font-variation-settings: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ font-weight: inherit;
+ /* 1 */
+ line-height: inherit;
+ /* 1 */
+ color: inherit;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+ padding: 0;
+ /* 3 */
+}
+
+/*
+Remove the inheritance of text transform in Edge and Firefox.
+*/
+
+button,
+select {
+ text-transform: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Remove default button-skeleton styles.
+*/
+
+button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ -webkit-appearance: button;
+ /* 1 */
+ background-color: transparent;
+ /* 2 */
+ background-image: none;
+ /* 2 */
+}
+
+/*
+Use the modern Firefox focus style for all focusable elements.
+*/
+
+:-moz-focusring {
+ outline: auto;
+}
+
+/*
+Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
+*/
+
+:-moz-ui-invalid {
+ box-shadow: none;
+}
+
+/*
+Add the correct vertical alignment in Chrome and Firefox.
+*/
+
+progress {
+ vertical-align: baseline;
+}
+
+/*
+Correct the cursor style of increment and decrement buttons in Safari.
+*/
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/*
+1. Correct the odd appearance in Chrome and Safari.
+2. Correct the outline style in Safari.
+*/
+
+[type='search'] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/*
+Remove the inner padding in Chrome and Safari on macOS.
+*/
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Change font properties to `inherit` in Safari.
+*/
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/*
+Add the correct display in Chrome and Safari.
+*/
+
+summary {
+ display: list-item;
+}
+
+/*
+Removes the default spacing and border for appropriate elements.
+*/
+
+blockquote,
+dl,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+hr,
+figure,
+p,
+pre {
+ margin: 0;
+}
+
+fieldset {
+ margin: 0;
+ padding: 0;
+}
+
+legend {
+ padding: 0;
+}
+
+ol,
+ul,
+menu {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+/*
+Reset default styling for dialogs.
+*/
+
+dialog {
+ padding: 0;
+}
+
+/*
+Prevent resizing textareas horizontally by default.
+*/
+
+textarea {
+ resize: vertical;
+}
+
+/*
+1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
+2. Set the default placeholder color to the user's configured gray 400 color.
+*/
+
+input::-moz-placeholder, textarea::-moz-placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+input::placeholder,
+textarea::placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+/*
+Set the default cursor for buttons.
+*/
+
+button,
+[role="button"] {
+ cursor: pointer;
+}
+
+/*
+Make sure disabled buttons don't get the pointer cursor.
+*/
+
+:disabled {
+ cursor: default;
+}
+
+/*
+1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
+2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
+ This can trigger a poorly considered lint error in some tools but is included by design.
+*/
+
+img,
+svg,
+video,
+canvas,
+audio,
+iframe,
+embed,
+object {
+ display: block;
+ /* 1 */
+ vertical-align: middle;
+ /* 2 */
+}
+
+/*
+Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
+*/
+
+img,
+video {
+ max-width: 100%;
+ height: auto;
+}
+
+/* Make elements with the HTML hidden attribute stay hidden by default */
+
+[hidden] {
+ display: none;
+}
+
+*, ::before, ::after {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+}
+
+::backdrop {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+}
\ No newline at end of file
diff --git a/dist/styles/styles.css b/dist/styles/styles.css
new file mode 100644
index 0000000..426267b
--- /dev/null
+++ b/dist/styles/styles.css
@@ -0,0 +1,541 @@
+/*
+! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com
+*/
+
+/*
+1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
+2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
+*/
+
+*,
+::before,
+::after {
+ box-sizing: border-box;
+ /* 1 */
+ border-width: 0;
+ /* 2 */
+ border-style: solid;
+ /* 2 */
+ border-color: #e5e7eb;
+ /* 2 */
+}
+
+::before,
+::after {
+ --tw-content: '';
+}
+
+/*
+1. Use a consistent sensible line-height in all browsers.
+2. Prevent adjustments of font size after orientation changes in iOS.
+3. Use a more readable tab size.
+4. Use the user's configured `sans` font-family by default.
+5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
+*/
+
+html {
+ line-height: 1.5;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+ -moz-tab-size: 4;
+ /* 3 */
+ -o-tab-size: 4;
+ tab-size: 4;
+ /* 3 */
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ /* 4 */
+ font-feature-settings: normal;
+ /* 5 */
+ font-variation-settings: normal;
+ /* 6 */
+}
+
+/*
+1. Remove the margin in all browsers.
+2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
+*/
+
+body {
+ margin: 0;
+ /* 1 */
+ line-height: inherit;
+ /* 2 */
+}
+
+/*
+1. Add the correct height in Firefox.
+2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
+3. Ensure horizontal rules are visible by default.
+*/
+
+hr {
+ height: 0;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ border-top-width: 1px;
+ /* 3 */
+}
+
+/*
+Add the correct text decoration in Chrome, Edge, and Safari.
+*/
+
+abbr:where([title]) {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+}
+
+/*
+Remove the default font size and weight for headings.
+*/
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-size: inherit;
+ font-weight: inherit;
+}
+
+/*
+Reset links to optimize for opt-in styling instead of opt-out.
+*/
+
+a {
+ color: inherit;
+ text-decoration: inherit;
+}
+
+/*
+Add the correct font weight in Edge and Safari.
+*/
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/*
+1. Use the user's configured `mono` font-family by default.
+2. Use the user's configured `mono` font-feature-settings by default.
+3. Use the user's configured `mono` font-variation-settings by default.
+4. Correct the odd `em` font sizing in all browsers.
+*/
+
+code,
+kbd,
+samp,
+pre {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ /* 1 */
+ font-feature-settings: normal;
+ /* 2 */
+ font-variation-settings: normal;
+ /* 3 */
+ font-size: 1em;
+ /* 4 */
+}
+
+/*
+Add the correct font size in all browsers.
+*/
+
+small {
+ font-size: 80%;
+}
+
+/*
+Prevent `sub` and `sup` elements from affecting the line height in all browsers.
+*/
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/*
+1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
+2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
+3. Remove gaps between table borders by default.
+*/
+
+table {
+ text-indent: 0;
+ /* 1 */
+ border-color: inherit;
+ /* 2 */
+ border-collapse: collapse;
+ /* 3 */
+}
+
+/*
+1. Change the font styles in all browsers.
+2. Remove the margin in Firefox and Safari.
+3. Remove default padding in all browsers.
+*/
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-feature-settings: inherit;
+ /* 1 */
+ font-variation-settings: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ font-weight: inherit;
+ /* 1 */
+ line-height: inherit;
+ /* 1 */
+ color: inherit;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+ padding: 0;
+ /* 3 */
+}
+
+/*
+Remove the inheritance of text transform in Edge and Firefox.
+*/
+
+button,
+select {
+ text-transform: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Remove default button-skeleton styles.
+*/
+
+button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ -webkit-appearance: button;
+ /* 1 */
+ background-color: transparent;
+ /* 2 */
+ background-image: none;
+ /* 2 */
+}
+
+/*
+Use the modern Firefox focus style for all focusable elements.
+*/
+
+:-moz-focusring {
+ outline: auto;
+}
+
+/*
+Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
+*/
+
+:-moz-ui-invalid {
+ box-shadow: none;
+}
+
+/*
+Add the correct vertical alignment in Chrome and Firefox.
+*/
+
+progress {
+ vertical-align: baseline;
+}
+
+/*
+Correct the cursor style of increment and decrement buttons in Safari.
+*/
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/*
+1. Correct the odd appearance in Chrome and Safari.
+2. Correct the outline style in Safari.
+*/
+
+[type='search'] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/*
+Remove the inner padding in Chrome and Safari on macOS.
+*/
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/*
+1. Correct the inability to style clickable types in iOS and Safari.
+2. Change font properties to `inherit` in Safari.
+*/
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/*
+Add the correct display in Chrome and Safari.
+*/
+
+summary {
+ display: list-item;
+}
+
+/*
+Removes the default spacing and border for appropriate elements.
+*/
+
+blockquote,
+dl,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+hr,
+figure,
+p,
+pre {
+ margin: 0;
+}
+
+fieldset {
+ margin: 0;
+ padding: 0;
+}
+
+legend {
+ padding: 0;
+}
+
+ol,
+ul,
+menu {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+/*
+Reset default styling for dialogs.
+*/
+
+dialog {
+ padding: 0;
+}
+
+/*
+Prevent resizing textareas horizontally by default.
+*/
+
+textarea {
+ resize: vertical;
+}
+
+/*
+1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
+2. Set the default placeholder color to the user's configured gray 400 color.
+*/
+
+input::-moz-placeholder, textarea::-moz-placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+input::placeholder,
+textarea::placeholder {
+ opacity: 1;
+ /* 1 */
+ color: #9ca3af;
+ /* 2 */
+}
+
+/*
+Set the default cursor for buttons.
+*/
+
+button,
+[role="button"] {
+ cursor: pointer;
+}
+
+/*
+Make sure disabled buttons don't get the pointer cursor.
+*/
+
+:disabled {
+ cursor: default;
+}
+
+/*
+1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
+2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
+ This can trigger a poorly considered lint error in some tools but is included by design.
+*/
+
+img,
+svg,
+video,
+canvas,
+audio,
+iframe,
+embed,
+object {
+ display: block;
+ /* 1 */
+ vertical-align: middle;
+ /* 2 */
+}
+
+/*
+Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
+*/
+
+img,
+video {
+ max-width: 100%;
+ height: auto;
+}
+
+/* Make elements with the HTML hidden attribute stay hidden by default */
+
+[hidden] {
+ display: none;
+}
+
+*, ::before, ::after {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+}
+
+::backdrop {
+ --tw-border-spacing-x: 0;
+ --tw-border-spacing-y: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-rotate: 0;
+ --tw-skew-x: 0;
+ --tw-skew-y: 0;
+ --tw-scale-x: 1;
+ --tw-scale-y: 1;
+ --tw-pan-x: ;
+ --tw-pan-y: ;
+ --tw-pinch-zoom: ;
+ --tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
+ --tw-ordinal: ;
+ --tw-slashed-zero: ;
+ --tw-numeric-figure: ;
+ --tw-numeric-spacing: ;
+ --tw-numeric-fraction: ;
+ --tw-ring-inset: ;
+ --tw-ring-offset-width: 0px;
+ --tw-ring-offset-color: #fff;
+ --tw-ring-color: rgb(59 130 246 / 0.5);
+ --tw-ring-offset-shadow: 0 0 #0000;
+ --tw-ring-shadow: 0 0 #0000;
+ --tw-shadow: 0 0 #0000;
+ --tw-shadow-colored: 0 0 #0000;
+ --tw-blur: ;
+ --tw-brightness: ;
+ --tw-contrast: ;
+ --tw-grayscale: ;
+ --tw-hue-rotate: ;
+ --tw-invert: ;
+ --tw-saturate: ;
+ --tw-sepia: ;
+ --tw-drop-shadow: ;
+ --tw-backdrop-blur: ;
+ --tw-backdrop-brightness: ;
+ --tw-backdrop-contrast: ;
+ --tw-backdrop-grayscale: ;
+ --tw-backdrop-hue-rotate: ;
+ --tw-backdrop-invert: ;
+ --tw-backdrop-opacity: ;
+ --tw-backdrop-saturate: ;
+ --tw-backdrop-sepia: ;
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..343555f
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,4248 @@
+{
+ "name": "doryan-blog-next-turbo",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "axios": "^1.6.5",
+ "lodash": "^4.17.21",
+ "mui": "^0.0.1",
+ "next": "latest",
+ "normalize.css": "^8.0.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-transition-group": "^4.4.5",
+ "styled-components": "^6.1.1"
+ },
+ "devDependencies": {
+ "@types/node": "20.8.10",
+ "@types/react": "18.2.33",
+ "@types/react-dom": "18.2.14",
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
+ "autoprefixer": "^10.4.16",
+ "eslint": "^8.56.0",
+ "eslint-config-standard-with-typescript": "^43.0.0",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.33.2",
+ "postcss": "^8.4.32",
+ "typescript": "^5.3.3"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
+ "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+ "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@next/env": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz",
+ "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ=="
+ },
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz",
+ "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz",
+ "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-gnu": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz",
+ "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-arm64-musl": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz",
+ "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz",
+ "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-musl": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz",
+ "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-arm64-msvc": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz",
+ "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-ia32-msvc": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz",
+ "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz",
+ "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@swc/helpers": {
+ "version": "0.5.2",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/json5": {
+ "version": "0.0.29",
+ "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
+ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "20.8.10",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.11",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.2.33",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "@types/scheduler": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.2.14",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/scheduler": {
+ "version": "0.16.6",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
+ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
+ "dev": true
+ },
+ "node_modules/@types/stylis": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.4.tgz",
+ "integrity": "sha512-36ZrGJ8fgtBr6nwNnuJ9jXIj+bn/pF6UoqmrQT7+Y99+tFFeHHsoR54+194dHdyhPjgbeoNz3Qru0oRt0l6ASQ=="
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz",
+ "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.19.0",
+ "@typescript-eslint/type-utils": "6.19.0",
+ "@typescript-eslint/utils": "6.19.0",
+ "@typescript-eslint/visitor-keys": "6.19.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz",
+ "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.19.0",
+ "@typescript-eslint/types": "6.19.0",
+ "@typescript-eslint/typescript-estree": "6.19.0",
+ "@typescript-eslint/visitor-keys": "6.19.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz",
+ "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.19.0",
+ "@typescript-eslint/visitor-keys": "6.19.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz",
+ "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.19.0",
+ "@typescript-eslint/utils": "6.19.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz",
+ "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz",
+ "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.19.0",
+ "@typescript-eslint/visitor-keys": "6.19.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz",
+ "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.19.0",
+ "@typescript-eslint/types": "6.19.0",
+ "@typescript-eslint/typescript-estree": "6.19.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.19.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz",
+ "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.19.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
+ "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlastindex": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz",
+ "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz",
+ "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+ "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz",
+ "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.16",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "browserslist": "^4.21.10",
+ "caniuse-lite": "^1.0.30001538",
+ "fraction.js": "^4.3.6",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/axios": {
+ "version": "1.6.5",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz",
+ "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==",
+ "dependencies": {
+ "follow-redirects": "^1.15.4",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.2",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/builtins": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
+ "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001570",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/client-only": {
+ "version": "0.0.1",
+ "license": "MIT"
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.2",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-helpers": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz",
+ "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==",
+ "dependencies": {
+ "@babel/runtime": "^7.8.7",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.612",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/es-abstract": {
+ "version": "1.22.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz",
+ "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.12",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.15",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz",
+ "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==",
+ "dev": true,
+ "dependencies": {
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.0.1"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz",
+ "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-compat-utils": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz",
+ "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/eslint-config-standard": {
+ "version": "17.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz",
+ "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+ "eslint-plugin-promise": "^6.0.0"
+ }
+ },
+ "node_modules/eslint-config-standard-with-typescript": {
+ "version": "43.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.0.tgz",
+ "integrity": "sha512-AT0qK01M5bmsWiE3UZvaQO5da1y1n6uQckAKqGNe6zPW5IOzgMLXZxw77nnFm+C11nxAZXsCPrbsgJhSrGfX6Q==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/parser": "^6.4.0",
+ "eslint-config-standard": "17.1.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "^6.4.0",
+ "eslint": "^8.0.1",
+ "eslint-plugin-import": "^2.25.2",
+ "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
+ "eslint-plugin-promise": "^6.0.0",
+ "typescript": "*"
+ }
+ },
+ "node_modules/eslint-import-resolver-node": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
+ "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "is-core-module": "^2.13.0",
+ "resolve": "^1.22.4"
+ }
+ },
+ "node_modules/eslint-import-resolver-node/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-module-utils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
+ "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-module-utils/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-es-x": {
+ "version": "7.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz",
+ "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.1.2",
+ "@eslint-community/regexpp": "^4.6.0",
+ "eslint-compat-utils": "^0.1.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ },
+ "peerDependencies": {
+ "eslint": ">=8"
+ }
+ },
+ "node_modules/eslint-plugin-import": {
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
+ "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.7",
+ "array.prototype.findlastindex": "^1.2.3",
+ "array.prototype.flat": "^1.3.2",
+ "array.prototype.flatmap": "^1.3.2",
+ "debug": "^3.2.7",
+ "doctrine": "^2.1.0",
+ "eslint-import-resolver-node": "^0.3.9",
+ "eslint-module-utils": "^2.8.0",
+ "hasown": "^2.0.0",
+ "is-core-module": "^2.13.1",
+ "is-glob": "^4.0.3",
+ "minimatch": "^3.1.2",
+ "object.fromentries": "^2.0.7",
+ "object.groupby": "^1.0.1",
+ "object.values": "^1.1.7",
+ "semver": "^6.3.1",
+ "tsconfig-paths": "^3.15.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-import/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-plugin-n": {
+ "version": "16.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
+ "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "builtins": "^5.0.1",
+ "eslint-plugin-es-x": "^7.5.0",
+ "get-tsconfig": "^4.7.0",
+ "globals": "^13.24.0",
+ "ignore": "^5.2.4",
+ "is-builtin-module": "^3.2.1",
+ "is-core-module": "^2.12.1",
+ "minimatch": "^3.1.2",
+ "resolve": "^1.22.2",
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-n/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-n/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-promise": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
+ "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react": {
+ "version": "7.33.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz",
+ "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.12",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.4",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/eslint-plugin-react/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
+ "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz",
+ "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==",
+ "dev": true,
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
+ "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
+ "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-async-function": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-builtin-module": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/mui": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/mui/-/mui-0.0.1.tgz",
+ "integrity": "sha512-iB9zfxsJBcMkZ/SY6X+HGSPr4fftCZIQ76ZMH8iSMfVkidVzRtZlLW2gbWXUe+IMcj8JLv1p+dGKvPVlgtiocA=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/next": {
+ "version": "14.0.4",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz",
+ "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==",
+ "dependencies": {
+ "@next/env": "14.0.4",
+ "@swc/helpers": "0.5.2",
+ "busboy": "1.6.0",
+ "caniuse-lite": "^1.0.30001406",
+ "graceful-fs": "^4.2.11",
+ "postcss": "8.4.31",
+ "styled-jsx": "5.1.1",
+ "watchpack": "2.4.0"
+ },
+ "bin": {
+ "next": "dist/bin/next"
+ },
+ "engines": {
+ "node": ">=18.17.0"
+ },
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "14.0.4",
+ "@next/swc-darwin-x64": "14.0.4",
+ "@next/swc-linux-arm64-gnu": "14.0.4",
+ "@next/swc-linux-arm64-musl": "14.0.4",
+ "@next/swc-linux-x64-gnu": "14.0.4",
+ "@next/swc-linux-x64-musl": "14.0.4",
+ "@next/swc-win32-arm64-msvc": "14.0.4",
+ "@next/swc-win32-ia32-msvc": "14.0.4",
+ "@next/swc-win32-x64-msvc": "14.0.4"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.1.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "sass": "^1.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next/node_modules/postcss": {
+ "version": "8.4.31",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize.css": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz",
+ "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg=="
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.entries": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz",
+ "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.fromentries": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
+ "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.groupby": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz",
+ "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1"
+ }
+ },
+ "node_modules/object.hasown": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz",
+ "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.32",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/prop-types/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/react": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.0"
+ },
+ "peerDependencies": {
+ "react": "^18.2.0"
+ }
+ },
+ "node_modules/react-transition-group": {
+ "version": "4.4.5",
+ "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz",
+ "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.5.5",
+ "dom-helpers": "^5.0.1",
+ "loose-envify": "^1.4.0",
+ "prop-types": "^15.6.2"
+ },
+ "peerDependencies": {
+ "react": ">=16.6.0",
+ "react-dom": ">=16.6.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz",
+ "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+ "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz",
+ "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
+ "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
+ "is-regex": "^1.1.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/scheduler": {
+ "version": "0.23.0",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz",
+ "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.2",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
+ "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
+ "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+ "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+ "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+ "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-components": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.1.tgz",
+ "integrity": "sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==",
+ "dependencies": {
+ "@emotion/is-prop-valid": "^1.2.1",
+ "@emotion/unitless": "^0.8.0",
+ "@types/stylis": "^4.0.2",
+ "css-to-react-native": "^3.2.0",
+ "csstype": "^3.1.2",
+ "postcss": "^8.4.31",
+ "shallowequal": "^1.1.0",
+ "stylis": "^4.3.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/stylis": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
+ "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
+ },
+ "node_modules/styled-jsx": {
+ "version": "5.1.1",
+ "license": "MIT",
+ "dependencies": {
+ "client-only": "0.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz",
+ "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.13.0"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "3.15.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
+ "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json5": "^0.0.29",
+ "json5": "^1.0.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "license": "MIT",
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+ "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+ "dev": true,
+ "dependencies": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "dev": true,
+ "dependencies": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..7edb6bc
--- /dev/null
+++ b/package.json
@@ -0,0 +1,34 @@
+{
+ "private": true,
+ "scripts": {
+ "dev": "next dev --turbo",
+ "build": "next build",
+ "start": "next start"
+ },
+ "dependencies": {
+ "axios": "^1.6.5",
+ "lodash": "^4.17.21",
+ "mui": "^0.0.1",
+ "next": "latest",
+ "normalize.css": "^8.0.1",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-transition-group": "^4.4.5",
+ "styled-components": "^6.1.1"
+ },
+ "devDependencies": {
+ "@types/node": "20.8.10",
+ "@types/react": "18.2.33",
+ "@types/react-dom": "18.2.14",
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
+ "autoprefixer": "^10.4.16",
+ "eslint": "^8.56.0",
+ "eslint-config-standard-with-typescript": "^43.0.0",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.33.2",
+ "postcss": "^8.4.32",
+ "typescript": "^5.3.3"
+ }
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..90d9fff
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ plugins: {
+ autoprefixer: {},
+ },
+}
diff --git a/src/primitive-components/button-skeleton/button-skeleton.tsx b/src/primitive-components/button-skeleton/button-skeleton.tsx
new file mode 100644
index 0000000..7340e64
--- /dev/null
+++ b/src/primitive-components/button-skeleton/button-skeleton.tsx
@@ -0,0 +1,43 @@
+"use client"
+
+import {RippleArea} from "../ripple/ripple-area";
+import React, {forwardRef, useId, useRef, useState} from "react";
+import useRippleEffect from "../ripple/hooks/useRippleEffect";
+
+const ButtonSkeleton = forwardRef(
+
+ function ButtonBase(props : any, ref){
+
+ const [isActive, setIsActive] = useState(false),
+ ripplesRef = useRef(null),
+ buttonId = useId(),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ let {
+ variant,
+ disabled,
+ className
+ } = props;
+
+ let classes = className ?
+ `m3 ${className} ${variant}${isActive ? " is-active" : ""}` :
+ `m3 ${variant}${isActive ? " is-active" : ""}`;
+
+ return (
+
+ )
+
+ }
+
+)
+
+export {ButtonSkeleton};
\ No newline at end of file
diff --git a/src/primitive-components/button-skeleton/button.types.ts b/src/primitive-components/button-skeleton/button.types.ts
new file mode 100644
index 0000000..0617cda
--- /dev/null
+++ b/src/primitive-components/button-skeleton/button.types.ts
@@ -0,0 +1,25 @@
+import {PropsWithChildren} from "react";
+
+type toggleButtonType = {
+ selected: string,
+ unselected: string,
+}
+
+export interface buttonMainProps extends PropsWithChildren{
+ disabled? : boolean,
+ variant? : "filled" | "outlined" | "elevated" | "tonal" | "text",
+}
+
+export interface FABMainProps extends PropsWithChildren{
+ icon : string;
+ disabled? : boolean;
+ size? : "small" | "default" | "large" | "extended";
+ variant? : "surface" | "primary" | "secondary" | "tertiary";
+}
+
+export interface iconButtonMainProps extends PropsWithChildren{
+ icon : string;
+ toggled? : false | toggleButtonType;
+ disabled? : boolean;
+ variant? : "default" | "filled" | "tonal" | "outlined";
+}
\ No newline at end of file
diff --git a/src/primitive-components/button/button.tsx b/src/primitive-components/button/button.tsx
new file mode 100644
index 0000000..26f97b8
--- /dev/null
+++ b/src/primitive-components/button/button.tsx
@@ -0,0 +1,30 @@
+import {forwardRef} from "react";
+import {buttonMainProps} from "../button-skeleton/button.types";
+import {ButtonSkeleton} from "../button-skeleton/button-skeleton";
+
+/**
+ * Button component
+ ** description
+ */
+
+export const Button = forwardRef(
+
+ (props : buttonMainProps, ref) => (
+
+ {
+ props.icon ?
+
+ {props.icon}
+
+ : <>>
+ }
+
+ {props.children}
+
+
+ )
+
+)
\ No newline at end of file
diff --git a/src/primitive-components/checkbox-skeleton/check-box-skeleton.tsx b/src/primitive-components/checkbox-skeleton/check-box-skeleton.tsx
new file mode 100644
index 0000000..4c06908
--- /dev/null
+++ b/src/primitive-components/checkbox-skeleton/check-box-skeleton.tsx
@@ -0,0 +1,34 @@
+"use client"
+
+import React, {forwardRef, useEffect, useImperativeHandle, useRef} from 'react';
+
+export const CheckBoxSkeleton = forwardRef(
+
+ function CheckBoxBase(props : any, ref) : JSX.Element {
+
+ const checkboxRef = useRef(null);
+
+ useEffect(() => {
+ checkboxRef.current.indeterminate = props.indeterminate === "true";
+ }, []);
+
+ useImperativeHandle(ref, () => checkboxRef);
+
+ let type = props.typeInput || props.type,
+ _props = {...props};
+ if(_props.indeterminate) delete _props.indeterminate;
+ if(_props.typeInput) delete _props.typeInput;
+
+ const classes = props.className !== undefined ?
+ `m3 m3-${type} ${props.className}` : `m3 m3-${type}`
+
+ return (
+
+ );
+
+ }
+
+);
\ No newline at end of file
diff --git a/src/primitive-components/checkbox/checkbox.tsx b/src/primitive-components/checkbox/checkbox.tsx
new file mode 100644
index 0000000..7258e2b
--- /dev/null
+++ b/src/primitive-components/checkbox/checkbox.tsx
@@ -0,0 +1,38 @@
+import {RippleArea} from "../ripple/ripple-area";
+import {forwardRef, useRef, useState} from "react";
+import useRippleEffect from "../ripple/hooks/useRippleEffect";
+import {CheckBoxSkeleton} from "../checkbox-skeleton/check-box-skeleton";
+
+/**
+ * Checkbox component
+ ** description
+ */
+
+export const Checkbox = forwardRef(
+ (props : any, ref) => {
+
+ const [isActive, setIsActive] = useState(false),
+ ripplesRef = useRef(null),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ const classes = `m3 m3-checkbox-label ${isActive === true ? "visible" : ""}`.trimEnd();
+ const indeterminate = (props.indeterminate === true).toString();
+
+ return (
+
+ )
+
+ }
+
+)
\ No newline at end of file
diff --git a/src/primitive-components/fab/fab.tsx b/src/primitive-components/fab/fab.tsx
new file mode 100644
index 0000000..1b584db
--- /dev/null
+++ b/src/primitive-components/fab/fab.tsx
@@ -0,0 +1,32 @@
+import {forwardRef} from "react";
+import {FABMainProps} from "../button-skeleton/button.types";
+import {ButtonSkeleton} from "../button-skeleton/button-skeleton";
+
+/**
+ * FABs component
+ ** description
+ */
+
+export const FAB = forwardRef(
+
+ (props : FABMainProps, ref) => (
+
+
+ {props.icon}
+
+ {
+ props.size === "extended" ? (
+
+ {props.children}
+
+ )
+ : <>>
+ }
+
+ )
+
+);
\ No newline at end of file
diff --git a/src/primitive-components/icon-button/icon-button.tsx b/src/primitive-components/icon-button/icon-button.tsx
new file mode 100644
index 0000000..b05df37
--- /dev/null
+++ b/src/primitive-components/icon-button/icon-button.tsx
@@ -0,0 +1,55 @@
+import {ButtonSkeleton} from "../button-skeleton/button-skeleton";
+import {iconButtonMainProps} from "../button-skeleton/button.types";
+import {forwardRef, useCallback, useImperativeHandle, useRef, useState} from "react";
+
+/**
+ * Icon button-skeleton component
+ ** description
+ */
+
+export const IconButton = forwardRef(
+
+ ({icon, variant, disabled, selected = false, toggled = false, ...props} : iconButtonMainProps, ref) => {
+
+ const [toggleIcon, setToggleIcon] = useState({
+ state : selected == true ? "selected" : "unselected",
+ icon : toggled ? toggled.unselected : ""
+ });
+
+ const toggle = useCallback((classes, icon) => {
+ setToggleIcon(() => ({
+ state : classes,
+ icon : icon,
+ }))
+ }, [])
+
+ let buttonRef = useRef(null);
+
+ const callback = useCallback(() => {
+ if(toggled) {
+ if (toggleIcon.state === "selected") toggle("", toggled.unselected)
+ else toggle("selected", toggled.selected)
+ }
+ if(props.onClick) props.onClick();
+ }, [toggleIcon])
+
+ useImperativeHandle(ref, () => buttonRef);
+
+ return (
+
+
+ {
+ toggled ? toggleIcon.icon : icon ? icon : <>>
+ }
+
+
+ )
+
+ }
+
+)
\ No newline at end of file
diff --git a/src/primitive-components/material-you-components.tsx b/src/primitive-components/material-you-components.tsx
new file mode 100644
index 0000000..58b315d
--- /dev/null
+++ b/src/primitive-components/material-you-components.tsx
@@ -0,0 +1,12 @@
+"use client"
+
+export {FAB} from "./fab/fab";
+export {Radio} from "./radio/radio";
+export {Switch} from "./switch/switch";
+export {Button} from "./button/button";
+export {Checkbox} from "./checkbox/checkbox";
+export {RippleArea} from "./ripple/ripple-area";
+export {Ripples, Ripple} from "./ripple/ripple";
+export {TextField} from "./text-field/text-field";
+export {IconButton} from "./icon-button/icon-button";
+export {ButtonSkeleton} from "./button-skeleton/button-skeleton";
diff --git a/src/primitive-components/radio/radio.tsx b/src/primitive-components/radio/radio.tsx
new file mode 100644
index 0000000..8c183cb
--- /dev/null
+++ b/src/primitive-components/radio/radio.tsx
@@ -0,0 +1,37 @@
+import {RippleArea} from "../ripple/ripple-area";
+import {forwardRef, useRef, useState} from "react";
+import useRippleEffect from "../ripple/hooks/useRippleEffect";
+import {CheckBoxSkeleton} from "../checkbox-skeleton/check-box-skeleton";
+
+/**
+ * Radio component
+ ** description
+ */
+
+export const Radio = forwardRef(
+
+ (props : any, ref) => {
+
+ const [isActive, setIsActive] = useState(false),
+ ripplesRef = useRef(null),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ const classes = `m3 m3-radio-label ${isActive === true ? "visible" : ""}`.trimEnd();
+
+ return (
+
+ )
+
+ }
+
+)
\ No newline at end of file
diff --git a/src/primitive-components/ripple/hooks/useRippleEffect.ts b/src/primitive-components/ripple/hooks/useRippleEffect.ts
new file mode 100644
index 0000000..a20d06e
--- /dev/null
+++ b/src/primitive-components/ripple/hooks/useRippleEffect.ts
@@ -0,0 +1,41 @@
+import React, {useEffect, useState} from 'react';
+
+interface RippleEventHandlers {
+ onBlur: React.FocusEventHandler;
+ onContextMenu: React.MouseEventHandler;
+ onDragLeave: React.DragEventHandler;
+ onMouseDown: React.MouseEventHandler;
+ onMouseLeave: React.MouseEventHandler;
+ onMouseUp: React.MouseEventHandler;
+ onTouchEnd: React.TouchEventHandler;
+ onTouchMove: React.TouchEventHandler;
+ onTouchStart: React.TouchEventHandler;
+}
+
+const UseRippleEffect = (ref, callback) : undefined | RippleEventHandlers => {
+
+ const [mounted, setMounted] = useState(false)
+
+ useEffect(() => {
+ if (!mounted) setMounted(true);
+ })
+
+ if (!mounted) return;
+
+ const {start, stop} = ref.current;
+
+ return {
+ onBlur: (event) => stop(event, callback),
+ onContextMenu: (event) => start(event, callback),
+ onDragLeave: (event) => stop(event, callback),
+ onMouseDown: (event) => start(event, callback),
+ onMouseLeave: (event) => stop(event, callback),
+ onMouseUp: (event) => stop(event, callback),
+ onTouchEnd: (event) => stop(event, callback),
+ onTouchMove: (event) => stop(event, callback),
+ onTouchStart: (event) => stop(event, callback),
+ }
+
+}
+
+export default UseRippleEffect;
\ No newline at end of file
diff --git a/src/primitive-components/ripple/ripple-area.tsx b/src/primitive-components/ripple/ripple-area.tsx
new file mode 100644
index 0000000..2b09703
--- /dev/null
+++ b/src/primitive-components/ripple/ripple-area.tsx
@@ -0,0 +1,114 @@
+"use client"
+
+import React, {
+ useId,
+ useRef,
+ useState,
+ forwardRef,
+ useCallback,
+ useImperativeHandle
+} from 'react';
+import {Ripple} from "./ripple";
+import {Ripples} from "./ripple";
+import {RippleAreaProps} from "./ripple.types";
+
+const TIMEOUT : number = 550;
+const rippleAreaContext = React.createContext(false);
+
+const RippleArea = forwardRef(
+
+ function RippleArea(props : RippleAreaProps, ref) {
+
+ const [ripples, setRipples] = useState>([]),
+ rippleDomain = useRef(null),
+ clicked = useRef(false),
+ uniqueKey = useRef(0),
+ uniqueId = useId();
+
+ let classes = props.className ?
+ `m3 m3-ripple-domain ${props.className}`.trimEnd() :
+ "m3 m3-ripple-domain";
+
+ const start = useCallback((event : any, cb : (state : boolean) => void) : void => {
+
+ clicked.current = true;
+ cb(clicked.current);
+
+ const rippleDomainChar = rippleDomain.current ? rippleDomain.current.getBoundingClientRect() : {
+ width: 0,
+ height: 0,
+ left: 0,
+ top: 0,
+ }
+
+ let rippleX : number = event.clientX - rippleDomainChar.left,
+ rippleY : number = event.clientY - rippleDomainChar.top,
+ rippleSizeX : number = Math.max(Math.abs(rippleDomainChar.width - rippleX), rippleX) * 2 + 2,
+ rippleSizeY : number = Math.max(Math.abs(rippleDomainChar.height - rippleY), rippleY) * 2 + 2,
+ rippleS : number = (rippleSizeX ** 2 + rippleSizeY ** 2) ** 0.5;
+
+ setRipples((prevRipples : Array) => {
+ if(prevRipples.length === 0){
+ return [
+
+ ]
+ } else {
+ let old = [...prevRipples];
+ old.push(
+
+ )
+ return old;
+ }
+ }
+ )
+
+ uniqueKey.current += 1;
+
+ }, []);
+
+ const stop = useCallback((_event : any, cb : (state : boolean) => void) => {
+
+ clicked.current = false;
+ cb(clicked.current);
+
+ setRipples((prevRipples : Array) => {
+ if(prevRipples.length > 0) {
+ let old = [...prevRipples];
+ old.shift();
+ return old;
+ }
+ return prevRipples
+ });
+
+ },[]);
+
+ useImperativeHandle(ref, () => ({
+ start,
+ stop,
+ }), [start, stop]);
+
+ return (
+
+
+
+ {ripples}
+
+
+
+ );
+
+ }
+
+)
+
+export {rippleAreaContext, RippleArea};
\ No newline at end of file
diff --git a/src/primitive-components/ripple/ripple.tsx b/src/primitive-components/ripple/ripple.tsx
new file mode 100644
index 0000000..9c94480
--- /dev/null
+++ b/src/primitive-components/ripple/ripple.tsx
@@ -0,0 +1,84 @@
+"use client"
+
+import React, {useCallback, useContext, useEffect, useRef, useState, useTransition} from 'react';
+import RippleEffectBuild from "./utils/ripple-effect-builder";
+import {rippleAreaContext} from "./ripple-area";
+import {rippleProps} from "./ripple.types";
+import isEmpty from "./utils/utils";
+
+function Ripples(props : any){
+ const [ripples, setRipples] = useState({});
+ const firstRender = useRef(true);
+ const [pending, startTransition] = useTransition();
+
+ const LifetimeEnd = useCallback((child) => {
+
+ if (child.props.endLifetime) {
+ child.props.endLifetime();
+ }
+
+ setRipples(state => {
+ let children = {...state};
+ delete children[child.key];
+ return children;
+ })
+
+ }, []);
+
+ useEffect(() => {
+
+ if(props.children.length > 0){
+ startTransition(() => {
+ if (firstRender.current || isEmpty(ripples)) {
+ setRipples(RippleEffectBuild(props.children, LifetimeEnd));
+ firstRender.current = false;
+ } else {
+ setRipples(RippleEffectBuild(props.children, LifetimeEnd, ripples))
+ }
+ });
+ }
+
+ }, [props.children]);
+
+ return(
+ <>
+ { Object.values(ripples) }
+ >
+ )
+
+}
+
+function Ripple(props : rippleProps) {
+
+ const {
+ rippleX,
+ rippleY,
+ rippleS,
+ endLifetime,
+ lifetime
+ } = props;
+
+ const clicked = useContext(rippleAreaContext);
+ const [classes, setClasses] = useState("m3 ripple visible");
+
+ useEffect(() => {
+ if(endLifetime !== null && !clicked) {
+ setClasses("m3 ripple")
+ setTimeout(endLifetime, lifetime);
+ }
+ }, [clicked, endLifetime]);
+
+ return (
+
+ );
+
+}
+
+export {Ripple, Ripples};
diff --git a/src/primitive-components/ripple/ripple.types.ts b/src/primitive-components/ripple/ripple.types.ts
new file mode 100644
index 0000000..d36083f
--- /dev/null
+++ b/src/primitive-components/ripple/ripple.types.ts
@@ -0,0 +1,15 @@
+import React, {ComponentProps, Dispatch, SetStateAction} from "react";
+
+export interface RippleAreaProps extends ComponentProps {
+ ref : React.ForwardedRef,
+ callback : Dispatch>,
+}
+
+export type rippleProps = {
+ rippleX : number,
+ rippleY : number,
+ rippleS : number,
+ endLifetime? : any,
+ lifetime : number,
+ key? : number,
+}
\ No newline at end of file
diff --git a/src/primitive-components/ripple/utils/array-convert-to-obj.ts b/src/primitive-components/ripple/utils/array-convert-to-obj.ts
new file mode 100644
index 0000000..2895cd1
--- /dev/null
+++ b/src/primitive-components/ripple/utils/array-convert-to-obj.ts
@@ -0,0 +1,18 @@
+import {cloneElement, ReactElement} from "react";
+
+export default function ArrayConvertToObj(
+ obj : Object,
+ nextChildren : ReactElement[],
+ callback : (child: any) => void
+) : void {
+
+ Object
+ .values(nextChildren)
+ .forEach((child : JSX.Element) =>
+ obj[child.key] = cloneElement(child, {
+ ...child.props,
+ endLifetime: callback.bind(null, child)
+ })
+ );
+
+}
\ No newline at end of file
diff --git a/src/primitive-components/ripple/utils/ripple-effect-builder.ts b/src/primitive-components/ripple/utils/ripple-effect-builder.ts
new file mode 100644
index 0000000..f093862
--- /dev/null
+++ b/src/primitive-components/ripple/utils/ripple-effect-builder.ts
@@ -0,0 +1,36 @@
+import ArrayConvertToObj from "./array-convert-to-obj";
+import {cloneElement, ReactElement} from "react";
+import isEmpty from "./utils";
+
+export default function RippleEffectBuild(
+ nextRipples : ReactElement[],
+ callback : (child : any) => void,
+ prevRipples? : any | null
+) {
+
+ let empty : boolean = isEmpty(prevRipples);
+ let preparedRipples : object = empty ? {} : prevRipples;
+
+ switch (empty) {
+ case true:
+ ArrayConvertToObj(preparedRipples, nextRipples, callback);
+ break;
+
+ case false:
+ let next : object = {};
+ ArrayConvertToObj(next, nextRipples, callback)
+ for(let rippleKey of Object.keys(next)){
+ if(preparedRipples[rippleKey] == undefined){
+ preparedRipples[rippleKey] = cloneElement(next[rippleKey], {
+ ...next[rippleKey].props,
+ endLifetime: callback.bind(null, next[rippleKey])
+ })
+ }
+ }
+ break;
+
+ }
+
+ return preparedRipples;
+
+}
\ No newline at end of file
diff --git a/src/primitive-components/ripple/utils/utils.ts b/src/primitive-components/ripple/utils/utils.ts
new file mode 100644
index 0000000..42a1fe9
--- /dev/null
+++ b/src/primitive-components/ripple/utils/utils.ts
@@ -0,0 +1,4 @@
+export default function isEmpty(obj : Object) : boolean{
+ for(let _i in obj) return false;
+ return true;
+}
\ No newline at end of file
diff --git a/src/primitive-components/switch/switch.tsx b/src/primitive-components/switch/switch.tsx
new file mode 100644
index 0000000..cc75d44
--- /dev/null
+++ b/src/primitive-components/switch/switch.tsx
@@ -0,0 +1,24 @@
+import {forwardRef} from "react";
+import {switchMainProps} from "./switch.types";
+import {CheckBoxSkeleton} from "../checkbox-skeleton/check-box-skeleton";
+
+/**
+ * Switch component
+ ** description
+ */
+
+export const Switch = forwardRef(
+
+ ({icon, disabled, selected = false, ...props} : switchMainProps, ref) => (
+
+ )
+
+)
\ No newline at end of file
diff --git a/src/primitive-components/switch/switch.types.ts b/src/primitive-components/switch/switch.types.ts
new file mode 100644
index 0000000..9556e4b
--- /dev/null
+++ b/src/primitive-components/switch/switch.types.ts
@@ -0,0 +1,7 @@
+import {PropsWithChildren} from "react";
+
+export interface switchMainProps extends PropsWithChildren{
+ disabled? : boolean,
+ icon? : boolean,
+ selected? : boolean
+}
\ No newline at end of file
diff --git a/src/primitive-components/text-field/text-field.tsx b/src/primitive-components/text-field/text-field.tsx
new file mode 100644
index 0000000..bcb8095
--- /dev/null
+++ b/src/primitive-components/text-field/text-field.tsx
@@ -0,0 +1,56 @@
+"use client"
+
+import React, {PropsWithChildren, useState} from 'react';
+import {bool, string} from "prop-types";
+
+interface TextFieldInterface extends PropsWithChildren{
+ variant: "filled" | "outlined",
+ withAfterIcon?: boolean,
+ withBeforeIcon?: boolean,
+ supportingText?: string,
+}
+
+export function TextField({variant, withAfterIcon, withBeforeIcon, supportingText, ...props} : TextFieldInterface) {
+
+ const [used, setUsed] = useState(false);
+
+ const callback = (e : any) => {
+ if(e.type === "blur" && e.target.value.length === 0) setUsed(false);
+ else if(e.type === "focus") setUsed(true);
+ }
+
+ const iconStyles = withBeforeIcon && withAfterIcon ? "with-before-icon with-after-icon" :
+ withBeforeIcon ? "with-before-icon" : withAfterIcon ? "with-after-icon" : ""
+
+ return (
+
+
+ {withBeforeIcon && {withBeforeIcon && "search"}}
+ {
+ callback(event);
+ if(props.onFocus) props.onFocus(event)
+ }}
+ onBlur={(event) => {
+ callback(event)
+ if(props.onBlur) props.onBlur(event)
+ }}/>
+
+
+ {withAfterIcon && {withAfterIcon && "cancel"}}
+
+ {supportingText && {supportingText}}
+
+ );
+
+}
+
+TextField.propTypes = {
+ children: string,
+ withBeforeIcon: bool,
+ withAfterIcon: bool,
+ className: string,
+ variant: string,
+ supportingText: string,
+}
\ No newline at end of file
diff --git a/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/button.sassc b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/button.sassc
new file mode 100644
index 0000000..d238658
Binary files /dev/null and b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/button.sassc differ
diff --git a/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/elevation.sassc b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/elevation.sassc
new file mode 100644
index 0000000..e3059c9
Binary files /dev/null and b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/elevation.sassc differ
diff --git a/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/generics.sassc b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/generics.sassc
new file mode 100644
index 0000000..ad6273b
Binary files /dev/null and b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/generics.sassc differ
diff --git a/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/ripple.sassc b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/ripple.sassc
new file mode 100644
index 0000000..34ad640
Binary files /dev/null and b/src/styles/.sass-cache/998ea355c9e5fe51d5ac6a8473a62439e355a0d8/ripple.sassc differ
diff --git a/src/styles/button.css b/src/styles/button.css
new file mode 100644
index 0000000..5f3982a
--- /dev/null
+++ b/src/styles/button.css
@@ -0,0 +1,127 @@
+button:not(.m3-fab, .m3-icon-button) {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+}
+button:not(.m3-fab, .m3-icon-button) > span.m3-icon {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 18px;
+}
+button:not(.m3-fab, .m3-icon-button).m3 {
+ contain: content;
+ box-sizing: border-box;
+ border-radius: 100px;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ padding: 10px 24px;
+ border: none;
+ gap: 8px;
+}
+button:not(.m3-fab, .m3-icon-button).filled {
+ background-color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).filled, button:not(.m3-fab, .m3-icon-button).filled > span.m3-icon {
+ color: var(--md-sys-color-on-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined {
+ border: 1px solid var(--md-sys-color-outline) !important;
+ background-color: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).outlined, button:not(.m3-fab, .m3-icon-button).outlined > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text {
+ padding: 10px 12px !important;
+ background-color: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).text, button:not(.m3-fab, .m3-icon-button).text > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).elevated {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+ background-color: var(--md-sys-color-surface-container-low);
+}
+button:not(.m3-fab, .m3-icon-button).elevated, button:not(.m3-fab, .m3-icon-button).elevated > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).tonal {
+ background-color: var(--md-sys-color-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button).tonal, button:not(.m3-fab, .m3-icon-button).tonal > span.m3-icon {
+ color: var(--md-sys-color-on-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button)::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).filled > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):is(.outlined, .text, .elevated) > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button).tonal > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):active:is(.filled, .tonal) {
+ box-shadow: none !important;
+}
+button:not(.m3-fab, .m3-icon-button):active.elevated {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3) !important;
+}
+button:not(.m3-fab, .m3-icon-button):active.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.outlined {
+ border-color: var(--md-sys-color-primary) !important;
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.filled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible:is(.outlined, .text, .elevated)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover:is(.filled, .tonal) {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+button:not(.m3-fab, .m3-icon-button):hover.elevated {
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+button:not(.m3-fab, .m3-icon-button):hover.filled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover:is(.outlined, .text, .elevated)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled {
+ pointer-events: none;
+}
+button:not(.m3-fab, .m3-icon-button):disabled:is(.filled, .elevated, .tonal, .outlined, .text) {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled:is(.filled, .elevated, .tonal) {
+ background: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled.elevated {
+ box-shadow: none;
+}
+button:not(.m3-fab, .m3-icon-button):disabled.outlined {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important;
+}
+
+/*# sourceMappingURL=button.css.map */
diff --git a/src/styles/button.css.map b/src/styles/button.css.map
new file mode 100644
index 0000000..3ab9483
--- /dev/null
+++ b/src/styles/button.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["button.sass","mixins/m3-mixins.sass"],"names":[],"mappings":"AAEA;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;;AAER;EACI;EACA;;AACA;EACI;;AAER;EACI;EACA;;AACA;EACI;;AAER;ECHI;EDKA;;AACA;EACI;;AAER;EACI;;AACA;EACI;;AAER;ECaA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADjBA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;ECpCA;;ADuCA;ECjCA;;ADoCA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;ECnDA;;ADsDA;EChDA;;ADmDA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI","file":"button.css"}
\ No newline at end of file
diff --git a/src/styles/button.sass b/src/styles/button.sass
new file mode 100644
index 0000000..27e0fa8
--- /dev/null
+++ b/src/styles/button.sass
@@ -0,0 +1,118 @@
+@import "mixins/m3-mixins"
+
+button:not(.m3-fab, .m3-icon-button)
+ transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) !important
+
+ & > span.m3-icon
+ font-family: Material-Symbols-Outlined-Regular, sans-serif
+ font-weight: 500
+ font-size: 18px
+ line-height: 18px
+
+ &.m3
+ contain: content
+ box-sizing: border-box
+ border-radius: 100px
+ display: inline-flex
+ flex-direction: row
+ justify-content: center
+ align-items: center
+ text-align: center
+ padding: 10px 24px
+ border: none
+ gap: 8px
+
+ &.filled
+ background-color: var(--md-sys-color-primary)
+ &, & > span.m3-icon
+ color: var(--md-sys-color-on-primary)
+
+ &.outlined
+ border: 1px solid var(--md-sys-color-outline) !important
+ background-color: #00000000
+ &, & > span.m3-icon
+ color: var(--md-sys-color-primary)
+
+ &.text
+ padding: 10px 12px !important
+ background-color: #00000000
+ &, & > span.m3-icon
+ color: var(--md-sys-color-primary)
+
+ &.elevated
+ @include elevation-1(false)
+ background-color: var(--md-sys-color-surface-container-low)
+ &, & > span.m3-icon
+ color: var(--md-sys-color-primary)
+
+ &.tonal
+ background-color: var(--md-sys-color-secondary-container)
+ &, & > span.m3-icon
+ color: var(--md-sys-color-on-secondary-container)
+
+ &::before
+ @include state-layer
+
+ &.filled > .m3.m3-ripple-domain > .m3.ripple
+ background: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent)
+
+ &:is(.outlined, .text, .elevated)
+ & > .m3.m3-ripple-domain > .m3.ripple
+ background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &.tonal > .m3.m3-ripple-domain > .m3.ripple
+ background: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+
+ &:active
+ &:is(.filled, .tonal)
+ @include elevation-0(true)
+
+ &.elevated
+ @include elevation-1(true)
+
+ &.tonal::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+
+ &:focus-visible
+ &.outlined
+ border-color: var(--md-sys-color-primary) !important
+
+ &.filled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent)
+
+ &:is(.outlined, .text, .elevated)::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &.tonal::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+
+ &:hover
+ &:is(.filled, .tonal)
+ @include elevation-1(false)
+
+ &.elevated
+ @include elevation-2(false)
+
+ &.filled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent)
+
+ &:is(.outlined, .text, .elevated)::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &.tonal::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent)
+
+ &:disabled
+ pointer-events: none
+
+ &:is(.filled, .elevated, .tonal, .outlined, .text)
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ &:is(.filled, .elevated, .tonal)
+ background: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+
+ &.elevated
+ box-shadow: none
+
+ &.outlined
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important
diff --git a/src/styles/checkbox.css b/src/styles/checkbox.css
new file mode 100644
index 0000000..54b4568
--- /dev/null
+++ b/src/styles/checkbox.css
@@ -0,0 +1,102 @@
+label.m3.m3-checkbox-label {
+ display: flex;
+ position: relative;
+ align-items: center;
+ justify-content: center;
+ aspect-ratio: 1;
+}
+label.m3.m3-checkbox-label > span.m3.m3-checkbox-state-layer {
+ position: absolute;
+ width: 40px;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+
+span.m3.m3-checkbox-ripple-layer {
+ z-index: 20;
+ contain: content;
+ border-radius: 50%;
+ position: absolute;
+ width: 40px;
+ height: 40px;
+}
+
+input[type=checkbox].m3.m3-checkbox {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: content-box;
+ z-index: 10;
+ width: 14px;
+ height: 14px;
+ margin: 0;
+ border-radius: 2px;
+ border: 2px solid var(--md-sys-color-on-surface-variant);
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+input[type=checkbox].m3.m3-checkbox:is(:user-invalid:is(:checked, :indeterminate), .m3.m3-error:is(:checked, :indeterminate)) {
+ border: 2px solid var(--md-sys-color-error);
+ background-color: var(--md-sys-color-error);
+}
+input[type=checkbox].m3.m3-checkbox:is(.m3.m3-error, :user-invalid) {
+ border: 2px solid var(--md-sys-color-error);
+}
+input[type=checkbox].m3.m3-checkbox:is(:checked:is(:hover, input[type=checkbox].m3.m3-checkbox):not(.m3.m3-error, :disabled), :indeterminate:is(:hover, input[type=checkbox].m3.m3-checkbox):not(.m3.m3-error, :disabled)) {
+ border: 2px solid var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-primary);
+}
+input[type=checkbox].m3.m3-checkbox:disabled:is(:hover, input[type=checkbox].m3.m3-checkbox:disabled) {
+ opacity: 38%;
+ border: 2px solid var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox:disabled:checked:is(:hover, input[type=checkbox].m3.m3-checkbox:disabled) {
+ opacity: 38%;
+ background-color: var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox::after {
+ line-height: 18px;
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 700;
+ font-size: 18px;
+ color: var(--md-sys-color-on-primary);
+}
+input[type=checkbox].m3.m3-checkbox:checked::after {
+ content: "done";
+}
+input[type=checkbox].m3.m3-checkbox:indeterminate::after {
+ content: "check_indeterminate_small";
+}
+input[type=checkbox].m3.m3-checkbox:hover {
+ border: 2px solid var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:hover, :indeterminate:hover), .m3.m3-error:hover) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 20%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:hover, :indeterminate:hover) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):hover + span.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):active + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):active + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent);
+}
+
+/*# sourceMappingURL=checkbox.css.map */
diff --git a/src/styles/checkbox.css.map b/src/styles/checkbox.css.map
new file mode 100644
index 0000000..3f236ec
--- /dev/null
+++ b/src/styles/checkbox.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["checkbox.sass","mixins/m3-mixins.sass"],"names":[],"mappings":"AAEA;ECDI;EACA;EACA;EACA;EACA;;ADDA;ECIA;EACA;EACA;EACA;EACA;;;ADLJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAII;EACI;;AAER;EACI;;AACA;EACI;;AAER;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI","file":"checkbox.css"}
\ No newline at end of file
diff --git a/src/styles/checkbox.sass b/src/styles/checkbox.sass
new file mode 100644
index 0000000..532ec5e
--- /dev/null
+++ b/src/styles/checkbox.sass
@@ -0,0 +1,92 @@
+@import "mixins/m3-mixins"
+
+label.m3.m3-checkbox-label
+ @include m3-label-mixin
+ & > span.m3.m3-checkbox-state-layer
+ @include m3-state-layer-mixin
+
+span.m3.m3-checkbox-ripple-layer
+ z-index: 20
+ contain: content
+ border-radius: 50%
+ position: absolute
+ width: 40px
+ height: 40px
+
+input[type="checkbox"].m3.m3-checkbox
+ appearance: none
+ display: flex
+ align-items: center
+ justify-content: center
+ box-sizing: content-box
+ z-index: 10
+ width: 14px
+ height: 14px
+ margin: 0
+ border-radius: 2px
+ border: 2px solid var(--md-sys-color-on-surface-variant)
+ transition: background-color .2s cubic-bezier(0.2, 0, 0, 1)
+
+ &:is(:user-invalid:is(:checked, :indeterminate), .m3.m3-error:is(:checked, :indeterminate))
+ border: 2px solid var(--md-sys-color-error)
+ background-color: var(--md-sys-color-error)
+
+ &:is(.m3.m3-error, :user-invalid)
+ border: 2px solid var(--md-sys-color-error)
+
+ &:is(:checked:is(:hover, &):not(.m3.m3-error, :disabled), :indeterminate:is(:hover, &):not(.m3.m3-error, :disabled))
+ border: 2px solid var(--md-sys-color-primary)
+ background-color: var(--md-sys-color-primary)
+
+ &:disabled
+ &:is(:hover, &)
+ opacity: 38%
+ border: 2px solid var(--md-sys-color-on-surface)
+
+ &:checked:is(:hover, &)
+ opacity: 38%
+ background-color: var(--md-sys-color-on-surface)
+
+ &::after
+ line-height: 18px
+ font-family: Material-Symbols-Outlined-Regular, sans-serif
+ font-weight: 700
+ font-size: 18px
+ color: var(--md-sys-color-on-primary)
+
+ &:checked::after
+ content: "done"
+
+ &:indeterminate::after
+ content: "check_indeterminate_small"
+
+ &:hover
+ border: 2px solid var(--md-sys-color-on-surface)
+
+ &:not(:disabled)
+ &:is(:user-invalid:is(:hover, :indeterminate:hover), .m3.m3-error:hover)
+ & + span.m3.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 8%, transparent)
+
+ &:is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) + span.m3.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 12%, transparent)
+ & + span.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 20%, transparent)
+
+ &:is(:checked:hover, :indeterminate:hover) + span.m3.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &:is(:checked:active, :indeterminate:active) + span.m3.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+ & + span.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent)
+
+ &:hover
+ & + span.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent)
+
+ &:active + span.m3.m3-checkbox-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+ & + span.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent)
+
diff --git a/src/styles/css/dark-hc.css b/src/styles/css/dark-hc.css
new file mode 100644
index 0000000..28c9fad
--- /dev/null
+++ b/src/styles/css/dark-hc.css
@@ -0,0 +1,51 @@
+.dark-high-contrast {
+ --md-sys-color-primary: rgb(255 249 251);
+ --md-sys-color-surface-tint: rgb(227 183 244);
+ --md-sys-color-on-primary: rgb(0 0 0);
+ --md-sys-color-primary-container: rgb(231 187 248);
+ --md-sys-color-on-primary-container: rgb(0 0 0);
+ --md-sys-color-secondary: rgb(255 249 251);
+ --md-sys-color-on-secondary: rgb(0 0 0);
+ --md-sys-color-secondary-container: rgb(216 196 220);
+ --md-sys-color-on-secondary-container: rgb(0 0 0);
+ --md-sys-color-tertiary: rgb(255 249 249);
+ --md-sys-color-on-tertiary: rgb(0 0 0);
+ --md-sys-color-tertiary-container: rgb(249 187 186);
+ --md-sys-color-on-tertiary-container: rgb(0 0 0);
+ --md-sys-color-error: rgb(255 249 249);
+ --md-sys-color-on-error: rgb(0 0 0);
+ --md-sys-color-error-container: rgb(255 186 177);
+ --md-sys-color-on-error-container: rgb(0 0 0);
+ --md-sys-color-background: rgb(22 18 23);
+ --md-sys-color-on-background: rgb(233 224 231);
+ --md-sys-color-surface: rgb(22 18 23);
+ --md-sys-color-on-surface: rgb(255 255 255);
+ --md-sys-color-surface-variant: rgb(76 68 77);
+ --md-sys-color-on-surface-variant: rgb(255 249 251);
+ --md-sys-color-outline: rgb(210 199 210);
+ --md-sys-color-outline-variant: rgb(210 199 210);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(233 224 231);
+ --md-sys-color-inverse-on-surface: rgb(0 0 0);
+ --md-sys-color-inverse-primary: rgb(60 27 77);
+ --md-sys-color-primary-fixed: rgb(248 222 255);
+ --md-sys-color-on-primary-fixed: rgb(0 0 0);
+ --md-sys-color-primary-fixed-dim: rgb(231 187 248);
+ --md-sys-color-on-primary-fixed-variant: rgb(39 5 56);
+ --md-sys-color-secondary-fixed: rgb(245 224 248);
+ --md-sys-color-on-secondary-fixed: rgb(0 0 0);
+ --md-sys-color-secondary-fixed-dim: rgb(216 196 220);
+ --md-sys-color-on-secondary-fixed-variant: rgb(29 18 34);
+ --md-sys-color-tertiary-fixed: rgb(255 224 222);
+ --md-sys-color-on-tertiary-fixed: rgb(0 0 0);
+ --md-sys-color-tertiary-fixed-dim: rgb(249 187 186);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(44 11 13);
+ --md-sys-color-surface-dim: rgb(22 18 23);
+ --md-sys-color-surface-bright: rgb(61 55 61);
+ --md-sys-color-surface-container-lowest: rgb(17 13 18);
+ --md-sys-color-surface-container-low: rgb(30 26 31);
+ --md-sys-color-surface-container: rgb(35 30 35);
+ --md-sys-color-surface-container-high: rgb(45 40 46);
+ --md-sys-color-surface-container-highest: rgb(56 51 57);
+}
diff --git a/src/styles/css/dark-mc.css b/src/styles/css/dark-mc.css
new file mode 100644
index 0000000..bff7c8b
--- /dev/null
+++ b/src/styles/css/dark-mc.css
@@ -0,0 +1,51 @@
+.dark-medium-contrast {
+ --md-sys-color-primary: rgb(231 187 248);
+ --md-sys-color-surface-tint: rgb(227 183 244);
+ --md-sys-color-on-primary: rgb(39 5 56);
+ --md-sys-color-primary-container: rgb(170 130 187);
+ --md-sys-color-on-primary-container: rgb(0 0 0);
+ --md-sys-color-secondary: rgb(216 196 220);
+ --md-sys-color-on-secondary: rgb(29 18 34);
+ --md-sys-color-secondary-container: rgb(156 139 161);
+ --md-sys-color-on-secondary-container: rgb(0 0 0);
+ --md-sys-color-tertiary: rgb(249 187 186);
+ --md-sys-color-on-tertiary: rgb(44 11 13);
+ --md-sys-color-tertiary-container: rgb(186 131 130);
+ --md-sys-color-on-tertiary-container: rgb(0 0 0);
+ --md-sys-color-error: rgb(255 186 177);
+ --md-sys-color-on-error: rgb(55 0 1);
+ --md-sys-color-error-container: rgb(255 84 73);
+ --md-sys-color-on-error-container: rgb(0 0 0);
+ --md-sys-color-background: rgb(22 18 23);
+ --md-sys-color-on-background: rgb(233 224 231);
+ --md-sys-color-surface: rgb(22 18 23);
+ --md-sys-color-on-surface: rgb(255 249 251);
+ --md-sys-color-surface-variant: rgb(76 68 77);
+ --md-sys-color-on-surface-variant: rgb(210 199 210);
+ --md-sys-color-outline: rgb(170 160 170);
+ --md-sys-color-outline-variant: rgb(137 128 138);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(233 224 231);
+ --md-sys-color-inverse-on-surface: rgb(45 40 46);
+ --md-sys-color-inverse-primary: rgb(93 58 109);
+ --md-sys-color-primary-fixed: rgb(246 217 255);
+ --md-sys-color-on-primary-fixed: rgb(33 0 50);
+ --md-sys-color-primary-fixed-dim: rgb(227 183 244);
+ --md-sys-color-on-primary-fixed-variant: rgb(74 40 90);
+ --md-sys-color-secondary-fixed: rgb(240 220 244);
+ --md-sys-color-on-secondary-fixed: rgb(24 13 29);
+ --md-sys-color-secondary-fixed-dim: rgb(212 192 216);
+ --md-sys-color-on-secondary-fixed-variant: rgb(63 49 68);
+ --md-sys-color-tertiary-fixed: rgb(255 218 217);
+ --md-sys-color-on-tertiary-fixed: rgb(37 7 8);
+ --md-sys-color-tertiary-fixed-dim: rgb(245 183 182);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(83 43 43);
+ --md-sys-color-surface-dim: rgb(22 18 23);
+ --md-sys-color-surface-bright: rgb(61 55 61);
+ --md-sys-color-surface-container-lowest: rgb(17 13 18);
+ --md-sys-color-surface-container-low: rgb(30 26 31);
+ --md-sys-color-surface-container: rgb(35 30 35);
+ --md-sys-color-surface-container-high: rgb(45 40 46);
+ --md-sys-color-surface-container-highest: rgb(56 51 57);
+}
diff --git a/src/styles/css/dark.css b/src/styles/css/dark.css
new file mode 100644
index 0000000..db82532
--- /dev/null
+++ b/src/styles/css/dark.css
@@ -0,0 +1,51 @@
+.dark {
+ --md-sys-color-primary: rgb(227 183 244);
+ --md-sys-color-surface-tint: rgb(227 183 244);
+ --md-sys-color-on-primary: rgb(67 34 84);
+ --md-sys-color-primary-container: rgb(92 57 108);
+ --md-sys-color-on-primary-container: rgb(246 217 255);
+ --md-sys-color-secondary: rgb(212 192 216);
+ --md-sys-color-on-secondary: rgb(57 44 62);
+ --md-sys-color-secondary-container: rgb(80 66 85);
+ --md-sys-color-on-secondary-container: rgb(240 220 244);
+ --md-sys-color-tertiary: rgb(245 183 182);
+ --md-sys-color-on-tertiary: rgb(76 37 37);
+ --md-sys-color-tertiary-container: rgb(102 59 59);
+ --md-sys-color-on-tertiary-container: rgb(255 218 217);
+ --md-sys-color-error: rgb(255 180 171);
+ --md-sys-color-on-error: rgb(105 0 5);
+ --md-sys-color-error-container: rgb(147 0 10);
+ --md-sys-color-on-error-container: rgb(255 218 214);
+ --md-sys-color-background: rgb(22 18 23);
+ --md-sys-color-on-background: rgb(233 224 231);
+ --md-sys-color-surface: rgb(22 18 23);
+ --md-sys-color-on-surface: rgb(233 224 231);
+ --md-sys-color-surface-variant: rgb(76 68 77);
+ --md-sys-color-on-surface-variant: rgb(206 195 206);
+ --md-sys-color-outline: rgb(151 142 151);
+ --md-sys-color-outline-variant: rgb(76 68 77);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(233 224 231);
+ --md-sys-color-inverse-on-surface: rgb(52 47 52);
+ --md-sys-color-inverse-primary: rgb(117 80 134);
+ --md-sys-color-primary-fixed: rgb(246 217 255);
+ --md-sys-color-on-primary-fixed: rgb(45 11 62);
+ --md-sys-color-primary-fixed-dim: rgb(227 183 244);
+ --md-sys-color-on-primary-fixed-variant: rgb(92 57 108);
+ --md-sys-color-secondary-fixed: rgb(240 220 244);
+ --md-sys-color-on-secondary-fixed: rgb(35 23 40);
+ --md-sys-color-secondary-fixed-dim: rgb(212 192 216);
+ --md-sys-color-on-secondary-fixed-variant: rgb(80 66 85);
+ --md-sys-color-tertiary-fixed: rgb(255 218 217);
+ --md-sys-color-on-tertiary-fixed: rgb(51 17 18);
+ --md-sys-color-tertiary-fixed-dim: rgb(245 183 182);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(102 59 59);
+ --md-sys-color-surface-dim: rgb(22 18 23);
+ --md-sys-color-surface-bright: rgb(61 55 61);
+ --md-sys-color-surface-container-lowest: rgb(17 13 18);
+ --md-sys-color-surface-container-low: rgb(30 26 31);
+ --md-sys-color-surface-container: rgb(35 30 35);
+ --md-sys-color-surface-container-high: rgb(45 40 46);
+ --md-sys-color-surface-container-highest: rgb(56 51 57);
+}
diff --git a/src/styles/css/light-hc.css b/src/styles/css/light-hc.css
new file mode 100644
index 0000000..5568dc8
--- /dev/null
+++ b/src/styles/css/light-hc.css
@@ -0,0 +1,51 @@
+.light-high-contrast {
+ --md-sys-color-primary: rgb(52 19 69);
+ --md-sys-color-surface-tint: rgb(117 80 134);
+ --md-sys-color-on-primary: rgb(255 255 255);
+ --md-sys-color-primary-container: rgb(87 53 104);
+ --md-sys-color-on-primary-container: rgb(255 255 255);
+ --md-sys-color-secondary: rgb(42 30 47);
+ --md-sys-color-on-secondary: rgb(255 255 255);
+ --md-sys-color-secondary-container: rgb(76 62 81);
+ --md-sys-color-on-secondary-container: rgb(255 255 255);
+ --md-sys-color-tertiary: rgb(59 23 24);
+ --md-sys-color-on-tertiary: rgb(255 255 255);
+ --md-sys-color-tertiary-container: rgb(98 55 55);
+ --md-sys-color-on-tertiary-container: rgb(255 255 255);
+ --md-sys-color-error: rgb(78 0 2);
+ --md-sys-color-on-error: rgb(255 255 255);
+ --md-sys-color-error-container: rgb(140 0 9);
+ --md-sys-color-on-error-container: rgb(255 255 255);
+ --md-sys-color-background: rgb(255 247 252);
+ --md-sys-color-on-background: rgb(30 26 31);
+ --md-sys-color-surface: rgb(255 247 252);
+ --md-sys-color-on-surface: rgb(0 0 0);
+ --md-sys-color-surface-variant: rgb(235 223 234);
+ --md-sys-color-on-surface-variant: rgb(40 34 42);
+ --md-sys-color-outline: rgb(72 65 73);
+ --md-sys-color-outline-variant: rgb(72 65 73);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(52 47 52);
+ --md-sys-color-inverse-on-surface: rgb(255 255 255);
+ --md-sys-color-inverse-primary: rgb(251 229 255);
+ --md-sys-color-primary-fixed: rgb(87 53 104);
+ --md-sys-color-on-primary-fixed: rgb(255 255 255);
+ --md-sys-color-primary-fixed-dim: rgb(63 30 80);
+ --md-sys-color-on-primary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-secondary-fixed: rgb(76 62 81);
+ --md-sys-color-on-secondary-fixed: rgb(255 255 255);
+ --md-sys-color-secondary-fixed-dim: rgb(53 40 58);
+ --md-sys-color-on-secondary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-tertiary-fixed: rgb(98 55 55);
+ --md-sys-color-on-tertiary-fixed: rgb(255 255 255);
+ --md-sys-color-tertiary-fixed-dim: rgb(72 33 34);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-surface-dim: rgb(225 215 223);
+ --md-sys-color-surface-bright: rgb(255 247 252);
+ --md-sys-color-surface-container-lowest: rgb(255 255 255);
+ --md-sys-color-surface-container-low: rgb(251 241 248);
+ --md-sys-color-surface-container: rgb(245 235 243);
+ --md-sys-color-surface-container-high: rgb(239 229 237);
+ --md-sys-color-surface-container-highest: rgb(233 224 231);
+}
diff --git a/src/styles/css/light-mc.css b/src/styles/css/light-mc.css
new file mode 100644
index 0000000..48c5c39
--- /dev/null
+++ b/src/styles/css/light-mc.css
@@ -0,0 +1,51 @@
+.light-medium-contrast {
+ --md-sys-color-primary: rgb(87 53 104);
+ --md-sys-color-surface-tint: rgb(117 80 134);
+ --md-sys-color-on-primary: rgb(255 255 255);
+ --md-sys-color-primary-container: rgb(140 102 157);
+ --md-sys-color-on-primary-container: rgb(255 255 255);
+ --md-sys-color-secondary: rgb(76 62 81);
+ --md-sys-color-on-secondary: rgb(255 255 255);
+ --md-sys-color-secondary-container: rgb(127 111 132);
+ --md-sys-color-on-secondary-container: rgb(255 255 255);
+ --md-sys-color-tertiary: rgb(98 55 55);
+ --md-sys-color-on-tertiary: rgb(255 255 255);
+ --md-sys-color-tertiary-container: rgb(154 103 103);
+ --md-sys-color-on-tertiary-container: rgb(255 255 255);
+ --md-sys-color-error: rgb(140 0 9);
+ --md-sys-color-on-error: rgb(255 255 255);
+ --md-sys-color-error-container: rgb(218 52 46);
+ --md-sys-color-on-error-container: rgb(255 255 255);
+ --md-sys-color-background: rgb(255 247 252);
+ --md-sys-color-on-background: rgb(30 26 31);
+ --md-sys-color-surface: rgb(255 247 252);
+ --md-sys-color-on-surface: rgb(30 26 31);
+ --md-sys-color-surface-variant: rgb(235 223 234);
+ --md-sys-color-on-surface-variant: rgb(72 65 73);
+ --md-sys-color-outline: rgb(100 93 101);
+ --md-sys-color-outline-variant: rgb(129 120 129);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(52 47 52);
+ --md-sys-color-inverse-on-surface: rgb(248 238 246);
+ --md-sys-color-inverse-primary: rgb(227 183 244);
+ --md-sys-color-primary-fixed: rgb(140 102 157);
+ --md-sys-color-on-primary-fixed: rgb(255 255 255);
+ --md-sys-color-primary-fixed-dim: rgb(114 78 131);
+ --md-sys-color-on-primary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-secondary-fixed: rgb(127 111 132);
+ --md-sys-color-on-secondary-fixed: rgb(255 255 255);
+ --md-sys-color-secondary-fixed-dim: rgb(102 87 107);
+ --md-sys-color-on-secondary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-tertiary-fixed: rgb(154 103 103);
+ --md-sys-color-on-tertiary-fixed: rgb(255 255 255);
+ --md-sys-color-tertiary-fixed-dim: rgb(127 79 79);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(255 255 255);
+ --md-sys-color-surface-dim: rgb(225 215 223);
+ --md-sys-color-surface-bright: rgb(255 247 252);
+ --md-sys-color-surface-container-lowest: rgb(255 255 255);
+ --md-sys-color-surface-container-low: rgb(251 241 248);
+ --md-sys-color-surface-container: rgb(245 235 243);
+ --md-sys-color-surface-container-high: rgb(239 229 237);
+ --md-sys-color-surface-container-highest: rgb(233 224 231);
+}
diff --git a/src/styles/css/light.css b/src/styles/css/light.css
new file mode 100644
index 0000000..ce6acbe
--- /dev/null
+++ b/src/styles/css/light.css
@@ -0,0 +1,51 @@
+.light {
+ --md-sys-color-primary: rgb(117 80 134);
+ --md-sys-color-surface-tint: rgb(117 80 134);
+ --md-sys-color-on-primary: rgb(255 255 255);
+ --md-sys-color-primary-container: rgb(246 217 255);
+ --md-sys-color-on-primary-container: rgb(45 11 62);
+ --md-sys-color-secondary: rgb(104 89 109);
+ --md-sys-color-on-secondary: rgb(255 255 255);
+ --md-sys-color-secondary-container: rgb(240 220 244);
+ --md-sys-color-on-secondary-container: rgb(35 23 40);
+ --md-sys-color-tertiary: rgb(129 82 81);
+ --md-sys-color-on-tertiary: rgb(255 255 255);
+ --md-sys-color-tertiary-container: rgb(255 218 217);
+ --md-sys-color-on-tertiary-container: rgb(51 17 18);
+ --md-sys-color-error: rgb(186 26 26);
+ --md-sys-color-on-error: rgb(255 255 255);
+ --md-sys-color-error-container: rgb(255 218 214);
+ --md-sys-color-on-error-container: rgb(65 0 2);
+ --md-sys-color-background: rgb(255 247 252);
+ --md-sys-color-on-background: rgb(30 26 31);
+ --md-sys-color-surface: rgb(255 247 252);
+ --md-sys-color-on-surface: rgb(30 26 31);
+ --md-sys-color-surface-variant: rgb(235 223 234);
+ --md-sys-color-on-surface-variant: rgb(76 68 77);
+ --md-sys-color-outline: rgb(125 116 126);
+ --md-sys-color-outline-variant: rgb(206 195 206);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(52 47 52);
+ --md-sys-color-inverse-on-surface: rgb(248 238 246);
+ --md-sys-color-inverse-primary: rgb(227 183 244);
+ --md-sys-color-primary-fixed: rgb(246 217 255);
+ --md-sys-color-on-primary-fixed: rgb(45 11 62);
+ --md-sys-color-primary-fixed-dim: rgb(227 183 244);
+ --md-sys-color-on-primary-fixed-variant: rgb(92 57 108);
+ --md-sys-color-secondary-fixed: rgb(240 220 244);
+ --md-sys-color-on-secondary-fixed: rgb(35 23 40);
+ --md-sys-color-secondary-fixed-dim: rgb(212 192 216);
+ --md-sys-color-on-secondary-fixed-variant: rgb(80 66 85);
+ --md-sys-color-tertiary-fixed: rgb(255 218 217);
+ --md-sys-color-on-tertiary-fixed: rgb(51 17 18);
+ --md-sys-color-tertiary-fixed-dim: rgb(245 183 182);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(102 59 59);
+ --md-sys-color-surface-dim: rgb(225 215 223);
+ --md-sys-color-surface-bright: rgb(255 247 252);
+ --md-sys-color-surface-container-lowest: rgb(255 255 255);
+ --md-sys-color-surface-container-low: rgb(251 241 248);
+ --md-sys-color-surface-container: rgb(245 235 243);
+ --md-sys-color-surface-container-high: rgb(239 229 237);
+ --md-sys-color-surface-container-highest: rgb(233 224 231);
+}
diff --git a/src/styles/elevation.css b/src/styles/elevation.css
new file mode 100644
index 0000000..5395743
--- /dev/null
+++ b/src/styles/elevation.css
@@ -0,0 +1,21 @@
+.elevation-1 {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+
+.elevation-2 {
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+
+.elevation-3 {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+
+.elevation-4 {
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 6px 10px 4px rgba(0, 0, 0, 0.15);
+}
+
+.elevation-5 {
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.3), 0 8px 12px 6px rgba(0, 0, 0, 0.15);
+}
+
+/*# sourceMappingURL=elevation.css.map */
diff --git a/src/styles/elevation.css.map b/src/styles/elevation.css.map
new file mode 100644
index 0000000..6423049
--- /dev/null
+++ b/src/styles/elevation.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["elevation.sass"],"names":[],"mappings":"AAAA;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE","file":"elevation.css"}
\ No newline at end of file
diff --git a/src/styles/elevation.sass b/src/styles/elevation.sass
new file mode 100644
index 0000000..ec672be
--- /dev/null
+++ b/src/styles/elevation.sass
@@ -0,0 +1,14 @@
+.elevation-1
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30)
+
+.elevation-2
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30)
+
+.elevation-3
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.30), 0 4px 8px 3px rgba(0, 0, 0, 0.15)
+
+.elevation-4
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.30), 0 6px 10px 4px rgba(0, 0, 0, 0.15)
+
+.elevation-5
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.30), 0 8px 12px 6px rgba(0, 0, 0, 0.15)
\ No newline at end of file
diff --git a/src/styles/fabs.css b/src/styles/fabs.css
new file mode 100644
index 0000000..a878986
--- /dev/null
+++ b/src/styles/fabs.css
@@ -0,0 +1,127 @@
+button.m3.m3-fab {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+}
+button.m3.m3-fab > span.m3-icon {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+}
+button.m3.m3-fab.m3 {
+ contain: content;
+ box-sizing: border-box;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border: none;
+ gap: 12px;
+}
+button.m3.m3-fab::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, 0);
+}
+button.m3.m3-fab.surface {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-surface-container-high);
+}
+button.m3.m3-fab.surface > span.m3-icon, button.m3.m3-fab.surface {
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-fab.surface > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-fab.primary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-primary-container);
+}
+button.m3.m3-fab.primary > span.m3-icon, button.m3.m3-fab.primary {
+ color: var(--md-sys-color-on-primary-container);
+}
+button.m3.m3-fab.primary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-primary-container) 12%, transparent);
+}
+button.m3.m3-fab.secondary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-secondary-container);
+}
+button.m3.m3-fab.secondary > span.m3-icon, button.m3.m3-fab.secondary {
+ color: var(--md-sys-color-on-secondary-container);
+}
+button.m3.m3-fab.secondary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-fab.tertiary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-tertiary-container);
+}
+button.m3.m3-fab.tertiary > span.m3-icon, button.m3.m3-fab.tertiary {
+ color: var(--md-sys-color-on-tertiary-container);
+}
+button.m3.m3-fab.tertiary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 12%, transparent);
+}
+button.m3.m3-fab.m3-small-fab {
+ width: 40px;
+ height: 40px;
+ border-radius: 12px;
+ padding: 11px;
+ font-size: 24px;
+}
+button.m3.m3-fab.m3-default-fab {
+ width: 56px;
+ height: 56px;
+ border-radius: 16px;
+ padding: 19px;
+ font-size: 24px;
+}
+button.m3.m3-fab.m3-large-fab {
+ width: 96px;
+ height: 96px;
+ border-radius: 28px;
+ padding: 34.5px;
+ font-size: 36px;
+}
+button.m3.m3-fab.m3-extended-fab {
+ width: auto;
+ height: 56px;
+ border-radius: 16px;
+ padding: 19px;
+ font-size: 24px;
+}
+button.m3.m3-fab:is(.surface, .primary, .secondary, .tertiary):hover {
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 6px 10px 4px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab:is(.surface, .primary, .secondary, .tertiary):active {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15) !important;
+}
+button.m3.m3-fab:hover.surface::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button.m3.m3-fab:hover.primary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 8%, transparent);
+}
+button.m3.m3-fab:hover.secondary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button.m3.m3-fab:hover.tertiary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 8%, transparent);
+}
+button.m3.m3-fab:focus-visible.surface::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.primary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.secondary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.tertiary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 12%, transparent);
+}
+
+/*# sourceMappingURL=fabs.css.map */
diff --git a/src/styles/fabs.css.map b/src/styles/fabs.css.map
new file mode 100644
index 0000000..7d189db
--- /dev/null
+++ b/src/styles/fabs.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["fabs.sass","mixins/m3-mixins.sass"],"names":[],"mappings":"AAEA;EACI;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EC8CA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADlDA;EC4BI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADDJ;ECyBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADEJ;ECsBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADKJ;ECmBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADQJ;ECnBA,ODoBkC;ECnBlC,QDmBwC;EClBxC,eDkB4B;ECjB5B,SDiB8C;EAC1C;;AAEJ;ECvBA,ODwBkC;ECvBlC,QDuBwC;ECtBxC,eDsB4B;ECrB5B,SDqB8C;EAC1C;;AAEJ;EC3BA,OD4BkC;EC3BlC,QD2BwC;EC1BxC,eD0B4B;ECzB5B,SDyB8C;EAC1C;;AAEJ;EC/BA,ODgCkC;EC/BlC,QD+BwC;EC9BxC,eD8B4B;EC7B5B,SD6B8C;EAC1C;;AAEJ;ECMI;;ADHJ;ECLI;;ADSA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI","file":"fabs.css"}
\ No newline at end of file
diff --git a/src/styles/fabs.sass b/src/styles/fabs.sass
new file mode 100644
index 0000000..3766b89
--- /dev/null
+++ b/src/styles/fabs.sass
@@ -0,0 +1,81 @@
+@import "mixins/m3-mixins"
+
+button.m3.m3-fab
+ transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) !important
+
+ & > span.m3-icon
+ font-family: Material-Symbols-Outlined-Regular, sans-serif
+
+ &.m3
+ contain: content
+ box-sizing: border-box
+ display: inline-flex
+ flex-direction: row
+ justify-content: center
+ align-items: center
+ text-align: center
+ border: none
+ gap: 12px
+
+ &::before
+ @include state-layer
+
+ &.surface
+ @include m3-fab-colors-palette(--md-sys-color-surface-container-high, --md-sys-color-primary)
+
+ &.primary
+ @include m3-fab-colors-palette(--md-sys-color-primary-container, --md-sys-color-on-primary-container)
+
+ &.secondary
+ @include m3-fab-colors-palette(--md-sys-color-secondary-container, --md-sys-color-on-secondary-container)
+
+ &.tertiary
+ @include m3-fab-colors-palette(--md-sys-color-tertiary-container, --md-sys-color-on-tertiary-container)
+
+ &.m3-small-fab
+ @include m3-fab-default(12px, 40px, 40px, 11px)
+ font-size: 24px
+
+ &.m3-default-fab
+ @include m3-fab-default(16px, 56px, 56px, 19px)
+ font-size: 24px
+
+ &.m3-large-fab
+ @include m3-fab-default(28px, 96px, 96px, 34.5px)
+ font-size: 36px
+
+ &.m3-extended-fab
+ @include m3-fab-default(16px, auto, 56px, 19px)
+ font-size: 24px
+
+ &:is(.surface, .primary, .secondary, .tertiary):hover
+ @include elevation-4(false)
+
+ &:is(.surface, .primary, .secondary, .tertiary):active
+ @include elevation-3(true)
+
+ &:hover
+ &.surface::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &.primary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 8%, transparent)
+
+ &.secondary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent)
+
+ &.tertiary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 8%, transparent)
+
+ &:focus-visible
+ &.surface::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &.primary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 12%, transparent)
+
+ &.secondary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+
+ &.tertiary::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 12%, transparent)
\ No newline at end of file
diff --git a/src/styles/font/MaterialIcons-Regular.codepoints b/src/styles/font/MaterialIcons-Regular.codepoints
new file mode 100644
index 0000000..f27640f
--- /dev/null
+++ b/src/styles/font/MaterialIcons-Regular.codepoints
@@ -0,0 +1,2235 @@
+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
+20mp e95e
+21mp e95f
+22mp e960
+23mp e961
+24mp e962
+2k e963
+2k_plus e964
+2mp e965
+30fps efce
+30fps_select efcf
+360 e577
+3d_rotation e84d
+3g_mobiledata efd0
+3k e966
+3k_plus e967
+3mp e968
+3p efd1
+4g_mobiledata efd2
+4g_plus_mobiledata efd3
+4k e072
+4k_plus e969
+4mp e96a
+5g ef38
+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 e190
+access_alarms e191
+access_time e192
+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 e853
+account_tree e97a
+ad_units ef39
+adb e60e
+add e145
+add_a_photo e439
+add_alarm e193
+add_alert e003
+add_box e146
+add_business e729
+add_call e0e8
+add_card eb86
+add_chart e97b
+add_circle e147
+add_circle_outline e148
+add_comment e266
+add_home f8eb
+add_home_work f8ed
+add_ic_call e97c
+add_link e178
+add_location e567
+add_location_alt ef3a
+add_moderator e97d
+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_panel_settings ef3d
+adobe ea96
+ads_click e762
+agriculture ea79
+air efd8
+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 e195
+airplanemode_inactive e194
+airplanemode_off e194
+airplanemode_on e195
+airplay e055
+airport_shuttle eb3c
+alarm e855
+alarm_add e856
+alarm_off e857
+alarm_on e858
+album e019
+align_horizontal_center e00f
+align_horizontal_left e00d
+align_horizontal_right e010
+align_vertical_bottom e015
+align_vertical_center e011
+align_vertical_top e00c
+all_inbox e97f
+all_inclusive eb3d
+all_out e90b
+alt_route f184
+alternate_email e0e6
+amp_stories ea13
+analytics ef3e
+anchor f1cd
+android e859
+animation e71c
+announcement e85a
+aod efda
+apartment ea40
+api f1b7
+app_blocking ef3f
+app_registration ef40
+app_settings_alt ef41
+app_shortcut eae4
+apple ea80
+approval e982
+apps e5c3
+apps_outage e7cc
+architecture ea3b
+archive e149
+area_chart e770
+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_drop_down e5c5
+arrow_drop_down_circle e5c6
+arrow_drop_up e5c7
+arrow_forward e5c8
+arrow_forward_ios e5e1
+arrow_left e5de
+arrow_outward f8ce
+arrow_right e5df
+arrow_right_alt e941
+arrow_upward e5d8
+art_track e060
+article ef42
+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_photo e3a0
+assured_workload eb6f
+atm e573
+attach_email ea5e
+attach_file e226
+attach_money e227
+attachment e2bc
+attractions ea52
+attribution efdb
+audio_file eb82
+audiotrack e3a1
+auto_awesome e65f
+auto_awesome_mosaic e660
+auto_awesome_motion e661
+auto_delete ea4c
+auto_fix_high e663
+auto_fix_normal e664
+auto_fix_off e665
+auto_graph e4fb
+auto_mode ec20
+auto_stories e666
+autofps_select efdc
+autorenew e863
+av_timer e01b
+baby_changing_station f19b
+back_hand e764
+backpack f19c
+backspace e14a
+backup e864
+backup_table ef43
+badge ea67
+bakery_dining ea53
+balance eaf6
+balcony e58f
+ballot e172
+bar_chart e26b
+barcode_reader f85c
+batch_prediction f0f5
+bathroom efdd
+bathtub ea41
+battery_0_bar ebdc
+battery_1_bar ebd9
+battery_2_bar ebe0
+battery_3_bar ebdd
+battery_4_bar ebe2
+battery_5_bar ebd4
+battery_6_bar ebd2
+battery_alert e19c
+battery_charging_full e1a3
+battery_full e1a4
+battery_saver efde
+battery_std e1a5
+battery_unknown e1a6
+beach_access eb3e
+bed efdf
+bedroom_baby efe0
+bedroom_child efe1
+bedroom_parent efe2
+bedtime ef44
+bedtime_off eb76
+beenhere e52d
+bento f1f4
+bike_scooter ef45
+biotech ea3a
+blender efe3
+blind f8d6
+blinds e286
+blinds_closed ec1f
+block e14b
+block_flipped ef46
+bloodtype efe4
+bluetooth e1a7
+bluetooth_audio e60f
+bluetooth_connected e1a8
+bluetooth_disabled e1a9
+bluetooth_drive efe5
+bluetooth_searching e1aa
+blur_circular e3a2
+blur_linear e3a3
+blur_off e3a4
+blur_on e3a5
+bolt ea0b
+book e865
+book_online f217
+bookmark e866
+bookmark_add e598
+bookmark_added e599
+bookmark_border e867
+bookmark_outline e867
+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
+boy eb67
+branding_watermark e06b
+breakfast_dining ea54
+brightness_1 e3a6
+brightness_2 e3a7
+brightness_3 e3a8
+brightness_4 e3a9
+brightness_5 e3aa
+brightness_6 e3ab
+brightness_7 e3ac
+brightness_auto e1ab
+brightness_high e1ac
+brightness_low e1ad
+brightness_medium e1ae
+broadcast_on_home f8f8
+broadcast_on_personal f8f9
+broken_image e3ad
+browse_gallery ebd1
+browser_not_supported ef47
+browser_updated e7cf
+brunch_dining ea73
+brush e3ae
+bubble_chart e6dd
+bug_report e868
+build e869
+build_circle ef48
+bungalow e591
+burst_mode e43c
+bus_alert e98f
+business e0af
+business_center eb3f
+cabin e589
+cable efe6
+cached e86a
+cake e7e9
+calculate ea5f
+calendar_month ebcc
+calendar_today e935
+calendar_view_day e936
+calendar_view_month efe7
+calendar_view_week efe8
+call e0b0
+call_end e0b1
+call_made e0b2
+call_merge e0b3
+call_missed e0b4
+call_missed_outgoing e0e4
+call_received e0b5
+call_split e0b6
+call_to_action e06c
+camera e3af
+camera_alt e3b0
+camera_enhance e8fc
+camera_front e3b1
+camera_indoor efe9
+camera_outdoor efea
+camera_rear e3b2
+camera_roll e3b3
+cameraswitch efeb
+campaign ef49
+cancel e5c9
+cancel_presentation e0e9
+cancel_schedule_send ea39
+candlestick_chart ead4
+car_crash ebf2
+car_rental ea55
+car_repair ea56
+card_giftcard e8f6
+card_membership e8f7
+card_travel e8f8
+carpenter f1f8
+cases e992
+casino eb40
+cast e307
+cast_connected e308
+cast_for_education efec
+castle eab1
+catching_pokemon e508
+category e574
+celebration ea65
+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
+charging_station f19d
+chat e0b7
+chat_bubble e0ca
+chat_bubble_outline e0cb
+check e5ca
+check_box e834
+check_box_outline_blank e835
+check_circle e86c
+check_circle_outline e92d
+checklist e6b1
+checklist_rtl e6b3
+checkroom f19e
+chevron_left e5cb
+chevron_right e5cc
+child_care eb41
+child_friendly eb42
+chrome_reader_mode e86d
+church eaae
+circle ef4a
+circle_notifications e994
+class e86e
+clean_hands f21f
+cleaning_services f0ff
+clear e14c
+clear_all e0b8
+close e5cd
+close_fullscreen f1cf
+closed_caption e01c
+closed_caption_disabled f1dc
+closed_caption_off e996
+cloud e2bd
+cloud_circle e2be
+cloud_done e2bf
+cloud_download e2c0
+cloud_off e2c1
+cloud_queue e2c2
+cloud_sync eb5a
+cloud_upload e2c3
+cloudy_snowing e810
+co2 e7b0
+co_present eaf0
+code e86f
+code_off e4f3
+coffee efef
+coffee_maker eff0
+collections e3b6
+collections_bookmark e431
+color_lens e3b7
+colorize e3b8
+comment e0b9
+comment_bank ea4e
+comments_disabled e7a2
+commit eaf5
+commute e940
+compare e3b9
+compare_arrows e915
+compass_calibration e57c
+compost e761
+compress e94d
+computer e30a
+confirmation_num e638
+confirmation_number e638
+connect_without_contact f223
+connected_tv e998
+connecting_airports e7c9
+construction ea3c
+contact_emergency f8d1
+contact_mail e0d0
+contact_page f22e
+contact_phone e0cf
+contact_support e94c
+contactless ea71
+contacts e0ba
+content_copy e14d
+content_cut e14e
+content_paste e14f
+content_paste_go ea8e
+content_paste_off e4f8
+content_paste_search ea9b
+contrast eb37
+control_camera e074
+control_point e3ba
+control_point_duplicate e3bb
+conveyor_belt f867
+cookie eaac
+copy_all e2ec
+copyright e90c
+coronavirus f221
+corporate_fare f1d0
+cottage e587
+countertops f1f7
+create e150
+create_new_folder e2cc
+credit_card e870
+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 e3c1
+crop_free e3c2
+crop_landscape e3c3
+crop_original e3c4
+crop_portrait e3c5
+crop_rotate e437
+crop_square e3c6
+cruelty_free e799
+css eb93
+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
+cyclone ebd5
+dangerous e99a
+dark_mode e51c
+dashboard e871
+dashboard_customize e99b
+data_array ead1
+data_exploration e76f
+data_object ead3
+data_saver_off eff2
+data_saver_on eff3
+data_thresholding eb9f
+data_usage e1af
+dataset f8ee
+dataset_linked f8ef
+date_range e916
+deblur eb77
+deck ea42
+dehaze e3c7
+delete e872
+delete_forever e92b
+delete_outline e92e
+delete_sweep e16c
+delivery_dining ea72
+density_large eba9
+density_medium eb9e
+density_small eba8
+departure_board e576
+description e873
+deselect ebb6
+design_services f10a
+desk f8f4
+desktop_access_disabled e99d
+desktop_mac e30b
+desktop_windows e30c
+details e3c8
+developer_board e30d
+developer_board_off e4ff
+developer_mode e1b0
+device_hub e335
+device_thermostat e1ff
+device_unknown e339
+devices e1b1
+devices_fold ebde
+devices_other e337
+dew_point f879
+dialer_sip e0bb
+dialpad e0bc
+diamond ead5
+difference eb7d
+dining eff4
+dinner_dining ea57
+directions e52e
+directions_bike e52f
+directions_boat e532
+directions_boat_filled eff5
+directions_bus e530
+directions_bus_filled eff6
+directions_car e531
+directions_car_filled eff7
+directions_ferry e532
+directions_off f10f
+directions_railway e534
+directions_railway_filled eff8
+directions_run e566
+directions_subway e533
+directions_subway_filled eff9
+directions_train e534
+directions_transit e535
+directions_transit_filled effa
+directions_walk e536
+dirty_lens ef4b
+disabled_by_default f230
+disabled_visible e76e
+disc_full e610
+discord ea6c
+discount ebc9
+display_settings eb97
+diversity_1 f8d7
+diversity_2 f8d8
+diversity_3 f8d9
+dnd_forwardslash e611
+dns e875
+do_disturb f08c
+do_disturb_alt f08d
+do_disturb_off f08e
+do_disturb_on f08f
+do_not_disturb e612
+do_not_disturb_alt e611
+do_not_disturb_off e643
+do_not_disturb_on e644
+do_not_disturb_on_total_silence effb
+do_not_step f19f
+do_not_touch f1b0
+dock e30e
+document_scanner e5fa
+domain e7ee
+domain_add eb62
+domain_disabled e0ef
+domain_verification ef4c
+done e876
+done_all e877
+done_outline e92f
+donut_large e917
+donut_small e918
+door_back effc
+door_front effd
+door_sliding effe
+doorbell efff
+double_arrow ea50
+downhill_skiing e509
+download f090
+download_done f091
+download_for_offline f000
+downloading f001
+drafts e151
+drag_handle e25d
+drag_indicator e945
+draw e746
+drive_eta e613
+drive_file_move e675
+drive_file_move_outline e9a1
+drive_file_move_rtl e76d
+drive_file_rename_outline e9a2
+drive_folder_upload e9a3
+dry f1b3
+dry_cleaning ea58
+duo e9a5
+dvr e1b2
+dynamic_feed ea14
+dynamic_form f1bf
+e_mobiledata f002
+earbuds f003
+earbuds_battery f004
+east f1df
+eco ea35
+edgesensor_high f005
+edgesensor_low f006
+edit e3c9
+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
+elevator f1a0
+email e0be
+emergency e1eb
+emergency_recording ebf4
+emergency_share ebf6
+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
+energy_savings_leaf ec1a
+engineering ea3d
+enhance_photo_translate e8fc
+enhanced_encryption e63f
+equalizer e01d
+error e000
+error_outline e001
+escalator f1a1
+escalator_warning f1ac
+euro ea15
+euro_symbol e926
+ev_station e56d
+event e878
+event_available e614
+event_busy e615
+event_note e616
+event_repeat eb7b
+event_seat e903
+exit_to_app e879
+expand e94f
+expand_circle_down e7cd
+expand_less e5ce
+expand_more e5cf
+explicit e01e
+explore e87a
+explore_off e9a8
+exposure e3ca
+exposure_minus_1 e3cb
+exposure_minus_2 e3cc
+exposure_neg_1 e3cb
+exposure_neg_2 e3cc
+exposure_plus_1 e3cd
+exposure_plus_2 e3ce
+exposure_zero e3cf
+extension e87b
+extension_off e4f5
+face e87c
+face_2 f8da
+face_3 f8db
+face_4 f8dc
+face_5 f8dd
+face_6 f8de
+face_retouching_natural ef4e
+face_retouching_off f007
+facebook f234
+fact_check f0c5
+factory ebbc
+family_restroom f1a2
+fast_forward e01f
+fast_rewind e020
+fastfood e57a
+favorite e87d
+favorite_border e87e
+favorite_outline e87e
+fax ead8
+featured_play_list e06d
+featured_video e06e
+feed f009
+feedback e87f
+female e590
+fence f1f6
+festival ea68
+fiber_dvr e05d
+fiber_manual_record e061
+fiber_new e05e
+fiber_pin e06a
+fiber_smart_record e062
+file_copy e173
+file_download e2c4
+file_download_done e9aa
+file_download_off e4fe
+file_open eaf3
+file_present ea0e
+file_upload e2c6
+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
+find_in_page e880
+find_replace e881
+fingerprint e90d
+fire_extinguisher f1d8
+fire_hydrant f1a3
+fire_hydrant_alt f8f1
+fire_truck f8f2
+fireplace ea43
+first_page e5dc
+fit_screen ea10
+fitbit e82b
+fitness_center eb43
+flag e153
+flag_circle eaf8
+flaky ef50
+flare e3e4
+flash_auto e3e5
+flash_off e3e6
+flash_on e3e7
+flashlight_off f00a
+flashlight_on f00b
+flatware f00c
+flight e539
+flight_class e7cb
+flight_land e904
+flight_takeoff e905
+flip e3e8
+flip_camera_android ea37
+flip_camera_ios ea38
+flip_to_back e882
+flip_to_front e883
+flood ebe6
+flourescent ec31
+flourescent f00d
+fluorescent ec31
+flutter_dash e00b
+fmd_bad f00e
+fmd_good f00f
+foggy e818
+folder e2c7
+folder_copy ebbd
+folder_delete eb34
+folder_off eb83
+folder_open e2c8
+folder_shared e2c9
+folder_special e617
+folder_zip eb2c
+follow_the_signs f222
+font_download e167
+font_download_off e4f9
+food_bank f1f2
+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_indent_decrease e23d
+format_indent_increase e23e
+format_italic e23f
+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_quote e244
+format_shapes e25e
+format_size e245
+format_strikethrough e246
+format_textdirection_l_to_r e247
+format_textdirection_r_to_l e248
+format_underline e249
+format_underlined e249
+fort eaad
+forum e0bf
+forward e154
+forward_10 e056
+forward_30 e057
+forward_5 e058
+forward_to_inbox f187
+foundation f200
+free_breakfast eb44
+free_cancellation e748
+front_hand e769
+front_loader f869
+fullscreen e5d0
+fullscreen_exit e5d1
+functions e24a
+g_mobiledata f010
+g_translate e927
+gamepad e30f
+games e021
+garage f011
+gas_meter ec19
+gavel e90e
+generating_tokens e749
+gesture e155
+get_app e884
+gif e908
+gif_box e7a3
+girl eb68
+gite e58b
+goat 10fffd
+golf_course eb45
+gpp_bad f012
+gpp_good f013
+gpp_maybe f014
+gps_fixed e1b3
+gps_not_fixed e1b4
+gps_off e1b5
+grade e885
+gradient e3e9
+grading ea4f
+grain e3ea
+graphic_eq e1b8
+grass f205
+grid_3x3 f015
+grid_4x4 f016
+grid_goldenratio f017
+grid_off e3eb
+grid_on e3ec
+grid_view e9b0
+group e7ef
+group_add e7f0
+group_off e747
+group_remove e7ad
+group_work e886
+groups f233
+groups_2 f8df
+groups_3 f8e0
+h_mobiledata f018
+h_plus_mobiledata f019
+hail e9b1
+handshake ebcb
+handyman f10b
+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 e310
+headset_mic e311
+headset_off e33a
+healing e3f3
+health_and_safety e1d5
+hearing e023
+hearing_disabled f104
+heart_broken eac2
+heat_pump ec18
+height ea16
+help e887
+help_center f1c0
+help_outline e8fd
+hevc f021
+hexagon eb39
+hide_image f022
+hide_source f023
+high_quality e024
+highlight e25f
+highlight_alt ef52
+highlight_off e888
+highlight_remove e888
+hiking e50a
+history e889
+history_edu ea3e
+history_toggle_off f17d
+hive eaa6
+hls eb8a
+hls_off eb8c
+holiday_village e58a
+home e88a
+home_filled e9b2
+home_max f024
+home_mini f025
+home_repair_service f100
+home_work ea09
+horizontal_distribute e014
+horizontal_rule f108
+horizontal_split e947
+hot_tub eb46
+hotel e53a
+hotel_class e743
+hourglass_bottom ea5c
+hourglass_disabled ef53
+hourglass_empty e88b
+hourglass_full e88c
+hourglass_top ea5b
+house ea44
+house_siding f202
+houseboat e584
+how_to_reg e174
+how_to_vote e175
+html eb7e
+http e902
+https e88d
+hub e9f4
+hvac f10e
+ice_skating e50b
+icecream ea69
+image e3f4
+image_aspect_ratio e3f5
+image_not_supported f116
+image_search e43f
+imagesearch_roller e9b4
+import_contacts e0e0
+import_export e0c3
+important_devices e912
+inbox e156
+incomplete_circle e79b
+indeterminate_check_box e909
+info e88e
+info_outline e88f
+input e890
+insert_chart e24b
+insert_chart_outlined e26a
+insert_comment e24c
+insert_drive_file e24d
+insert_emoticon e24e
+insert_invitation e24f
+insert_link e250
+insert_page_break eaca
+insert_photo e251
+insights f092
+install_desktop eb71
+install_mobile eb72
+integration_instructions ef54
+interests e7c8
+interpreter_mode e83b
+inventory e179
+inventory_2 e1a1
+invert_colors e891
+invert_colors_off e0c4
+invert_colors_on e891
+ios_share e6b8
+iron e583
+iso e3f6
+javascript eb7c
+join_full eaeb
+join_inner eaf4
+join_left eaf2
+join_right eaea
+kayaking e50c
+kebab_dining e842
+key e73c
+key_off eb84
+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_command eae0
+keyboard_command_key eae7
+keyboard_control e5d3
+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_hide e31a
+keyboard_option eadf
+keyboard_option_key eae8
+keyboard_return e31b
+keyboard_tab e31c
+keyboard_voice e31d
+king_bed ea45
+kitchen eb47
+kitesurfing e50d
+label e892
+label_important e937
+label_important_outline e948
+label_off e9b6
+label_outline e893
+lan eb2f
+landscape e3f7
+landslide ebd7
+language e894
+laptop e31e
+laptop_chromebook e31f
+laptop_mac e320
+laptop_windows e321
+last_page e5dd
+launch e895
+layers e53b
+layers_clear e53c
+leaderboard f20c
+leak_add e3f8
+leak_remove e3f9
+leave_bags_at_home f21b
+legend_toggle f11b
+lens e3fa
+lens_blur f029
+library_add e02e
+library_add_check e9b7
+library_books e02f
+library_music e030
+light f02a
+light_mode e518
+lightbulb e0f0
+lightbulb_circle ebfe
+lightbulb_outline e90f
+line_axis ea9a
+line_style e919
+line_weight e91a
+linear_scale e260
+link e157
+link_off e16f
+linked_camera e438
+liquor ea60
+list e896
+list_alt e0ee
+live_help e0c6
+live_tv e639
+living f02b
+local_activity e53f
+local_airport e53d
+local_atm e53e
+local_attraction e53f
+local_bar e540
+local_cafe e541
+local_car_wash e542
+local_convenience_store e543
+local_dining e556
+local_drink e544
+local_fire_department ef55
+local_florist e545
+local_gas_station e546
+local_grocery_store e547
+local_hospital e548
+local_hotel e549
+local_laundry_service e54a
+local_library e54b
+local_mall e54c
+local_movies e54d
+local_offer e54e
+local_parking e54f
+local_pharmacy e550
+local_phone e551
+local_pizza e552
+local_play e553
+local_police ef56
+local_post_office e554
+local_print_shop e555
+local_printshop e555
+local_restaurant e556
+local_see e557
+local_shipping e558
+local_taxi e559
+location_city e7f1
+location_disabled e1b6
+location_history e55a
+location_off e0c7
+location_on e0c8
+location_pin f1db
+location_searching e1b7
+lock e897
+lock_clock ef57
+lock_open e898
+lock_outline e899
+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 e028
+loupe e402
+low_priority e16d
+loyalty e89a
+lte_mobiledata f02c
+lte_plus_mobiledata f02d
+luggage f235
+lunch_dining ea61
+lyrics ec0b
+macro_off f8d2
+mail e158
+mail_lock ec0a
+mail_outline e0e1
+male e58e
+man e4eb
+man_2 f8e1
+man_3 f8e2
+man_4 f8e3
+manage_accounts f02e
+manage_history ebe7
+manage_search f02f
+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
+masks f218
+maximize e930
+media_bluetooth_off f031
+media_bluetooth_on f032
+mediation efa7
+medical_information ebed
+medical_services f109
+medication f033
+medication_liquid ea87
+meeting_room eb4f
+memory e322
+menu e5d2
+menu_book ea19
+menu_open e9bd
+merge eb98
+merge_type e252
+message e0c9
+messenger e0ca
+messenger_outline e0cb
+mic e029
+mic_external_off ef59
+mic_external_on ef5a
+mic_none e02a
+mic_off e02b
+microwave f204
+military_tech ea3f
+minimize e931
+minor_crash ebf1
+miscellaneous_services f10c
+missed_video_call e073
+mms e618
+mobile_friendly e200
+mobile_off e201
+mobile_screen_share e0e7
+mobiledata_off f034
+mode f097
+mode_comment e253
+mode_edit e254
+mode_edit_outline f035
+mode_fan_off ec17
+mode_night f036
+mode_of_travel e7ce
+mode_standby f037
+model_training f0cf
+monetization_on e263
+money e57d
+money_off e25c
+money_off_csred f038
+monitor ef5b
+monitor_heart eaa2
+monitor_weight f039
+monochrome_photos e403
+mood e7f2
+mood_bad e7f3
+moped eb28
+more e619
+more_horiz e5d3
+more_time ea5d
+more_vert e5d4
+mosque eab2
+motion_photos_auto f03a
+motion_photos_off e9c0
+motion_photos_on e9c1
+motion_photos_pause f227
+motion_photos_paused e9c2
+motorcycle e91b
+mouse e323
+move_down eb61
+move_to_inbox e168
+move_up eb64
+movie e02c
+movie_creation e404
+movie_edit f840
+movie_filter e43a
+moving e501
+mp e9c3
+multiline_chart e6df
+multiple_stop f1b9
+multitrack_audio e1b8
+museum ea36
+music_note e405
+music_off e440
+music_video e063
+my_library_add e02e
+my_library_books e02f
+my_library_music e030
+my_location e55c
+nat ef5c
+nature e406
+nature_people e407
+navigate_before e408
+navigate_next e409
+navigation e55d
+near_me e569
+near_me_disabled f1ef
+nearby_error f03b
+nearby_off f03c
+nest_cam_wired_stand ec16
+network_cell e1b9
+network_check e640
+network_locked e61a
+network_ping ebca
+network_wifi e1ba
+network_wifi_1_bar ebe4
+network_wifi_2_bar ebd6
+network_wifi_3_bar ebe1
+new_label e609
+new_releases e031
+newspaper eb81
+next_plan ef5d
+next_week e16a
+nfc e1bb
+night_shelter f1f1
+nightlife ea62
+nightlight f03d
+nightlight_round ef5e
+nights_stay ea46
+no_accounts f03e
+no_adult_content f8fe
+no_backpack f237
+no_cell f1a4
+no_crash ebf0
+no_drinks f1a5
+no_encryption e641
+no_encryption_gmailerrorred f03f
+no_flash f1a6
+no_food f1a7
+no_luggage f23b
+no_meals f1d6
+no_meals_ouline f229
+no_meeting_room eb4e
+no_photography f1a8
+no_sim e0cc
+no_stroller f1af
+no_transfer f1d5
+noise_aware ebec
+noise_control_off ebf3
+nordic_walking e50e
+north f1e0
+north_east f1e1
+north_west f1e2
+not_accessible f0fe
+not_interested e033
+not_listed_location e575
+not_started f0d1
+note e06f
+note_add e89c
+note_alt f040
+notes e26c
+notification_add e399
+notification_important e004
+notifications e7f4
+notifications_active e7f7
+notifications_none e7f5
+notifications_off e7f6
+notifications_on e7f7
+notifications_paused e7f8
+now_wallpaper e1bc
+now_widgets e1bd
+numbers eac7
+offline_bolt e932
+offline_pin e90a
+offline_share e9c5
+oil_barrel ec15
+on_device_training ebfd
+ondemand_video e63a
+online_prediction f0eb
+opacity e91c
+open_in_browser e89d
+open_in_full f1ce
+open_in_new e89e
+open_in_new_off e4f6
+open_with e89f
+other_houses e58c
+outbond f228
+outbound e1ca
+outbox ef5f
+outdoor_grill ea47
+outgoing_mail f0d2
+outlet f1d4
+outlined_flag e16e
+output ebbe
+padding e9c8
+pages e7f9
+pageview e8a0
+paid f041
+palette e40a
+pallet f86a
+pan_tool e925
+pan_tool_alt ebb9
+panorama e40b
+panorama_fish_eye e40c
+panorama_fisheye e40c
+panorama_horizontal e40d
+panorama_horizontal_select ef60
+panorama_photosphere e9c9
+panorama_photosphere_select e9ca
+panorama_vertical e40e
+panorama_vertical_select ef61
+panorama_wide_angle e40f
+panorama_wide_angle_select ef62
+paragliding e50f
+park ea63
+party_mode e7fa
+password f042
+pattern f043
+pause e034
+pause_circle e1a2
+pause_circle_filled e035
+pause_circle_outline e036
+pause_presentation e0ea
+payment e8a1
+payments ef63
+paypal ea8d
+pedal_bike eb29
+pending ef64
+pending_actions f1bb
+pentagon eb50
+people e7fb
+people_alt ea21
+people_outline e7fc
+percent eb58
+perm_camera_mic e8a2
+perm_contact_cal e8a3
+perm_contact_calendar e8a3
+perm_data_setting e8a4
+perm_device_info e8a5
+perm_device_information e8a5
+perm_identity e8a6
+perm_media e8a7
+perm_phone_msg e8a8
+perm_scan_wifi e8a9
+person e7fd
+person_2 f8e4
+person_3 f8e5
+person_4 f8e6
+person_add e7fe
+person_add_alt ea4d
+person_add_alt_1 ef65
+person_add_disabled e9cb
+person_off e510
+person_outline e7ff
+person_pin e55a
+person_pin_circle e56a
+person_remove ef66
+person_remove_alt_1 ef67
+person_search f106
+personal_injury e6da
+personal_video e63b
+pest_control f0fa
+pest_control_rodent f0fd
+pets e91d
+phishing ead7
+phone e0cd
+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_setup e0de
+photo e410
+photo_album e411
+photo_camera e412
+photo_camera_back ef68
+photo_camera_front ef69
+photo_filter e43b
+photo_library e413
+photo_size_select_actual e432
+photo_size_select_large e433
+photo_size_select_small e434
+php eb8f
+piano e521
+piano_off e520
+picture_as_pdf e415
+picture_in_picture e8aa
+picture_in_picture_alt e911
+pie_chart e6c4
+pie_chart_outline f044
+pie_chart_outlined e6c5
+pin f045
+pin_drop e55e
+pin_end e767
+pin_invoke e763
+pinch eb38
+pivot_table_chart e9ce
+pix eaa3
+place e55f
+plagiarism ea5a
+play_arrow e037
+play_circle e1c4
+play_circle_fill e038
+play_circle_filled e038
+play_circle_outline e039
+play_disabled ef6a
+play_for_work e906
+play_lesson f047
+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
+point_of_sale f17e
+policy ea17
+poll e801
+polyline ebbb
+polymer e8ab
+pool eb48
+portable_wifi_off e0ce
+portrait e416
+post_add ea20
+power e63c
+power_input e336
+power_off e646
+power_settings_new e8ac
+precision_manufacturing f049
+pregnant_woman e91e
+present_to_all e0df
+preview f1c5
+price_change f04a
+price_check f04b
+print e8ad
+print_disabled e9cf
+priority_high e645
+privacy_tip f0dc
+private_connectivity e744
+production_quantity_limits e1d1
+propane ec14
+propane_tank ec13
+psychology ea4a
+psychology_alt f8ea
+public e80b
+public_off f1ca
+publish e255
+published_with_changes f232
+punch_clock eaa8
+push_pin f10d
+qr_code ef6b
+qr_code_2 e00a
+qr_code_scanner f206
+query_builder e8ae
+query_stats e4fc
+question_answer e8af
+question_mark eb8b
+queue e03c
+queue_music e03d
+queue_play_next e066
+quick_contacts_dialer e0cf
+quick_contacts_mail e0d0
+quickreply ef6c
+quiz f04c
+quora ea98
+r_mobiledata f04d
+radar f04e
+radio e03e
+radio_button_checked e837
+radio_button_off e836
+radio_button_on e837
+radio_button_unchecked e836
+railway_alert e9d1
+ramen_dining ea64
+ramp_left eb9c
+ramp_right eb96
+rate_review e560
+raw_off f04f
+raw_on f050
+read_more ef6d
+real_estate_agent e73a
+rebase_edit f846
+receipt e8b0
+receipt_long ef6e
+recent_actors e03f
+recommend e9d2
+record_voice_over e91f
+rectangle eb54
+recycling e760
+reddit eaa0
+redeem e8b1
+redo e15a
+reduce_capacity f21c
+refresh e5d5
+remember_me f051
+remove e15b
+remove_circle e15c
+remove_circle_outline e15d
+remove_done e9d3
+remove_from_queue e067
+remove_moderator e9d4
+remove_red_eye e417
+remove_road ebfc
+remove_shopping_cart e928
+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 e160
+report_gmailerrorred f052
+report_off e170
+report_problem e8b2
+request_page f22c
+request_quote f1b6
+reset_tv e9d9
+restart_alt f053
+restaurant e56c
+restaurant_menu e561
+restore e8b3
+restore_from_trash e938
+restore_page e929
+reviews f054
+rice_bowl f1f5
+ring_volume e0d1
+rocket eba5
+rocket_launch eb9b
+roller_shades ec12
+roller_shades_closed ec11
+roller_skating ebcd
+roofing f201
+room e8b4
+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
+rowing e921
+rss_feed e0e5
+rsvp f055
+rtt e9ad
+rule f1c2
+rule_folder f1c9
+run_circle ef6f
+running_with_errors e51d
+rv_hookup e642
+safety_check ebef
+safety_divider e1cc
+sailing e502
+sanitizer f21d
+satellite e562
+satellite_alt eb3a
+save e161
+save_alt e171
+save_as eb60
+saved_search ea11
+savings e2eb
+scale eb5f
+scanner e329
+scatter_plot e268
+schedule e8b5
+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_rotation e1c1
+screen_rotation_alt ebee
+screen_search_desktop ef70
+screen_share e0e2
+screenshot f056
+screenshot_monitor ec08
+scuba_diving ebce
+sd e9dd
+sd_card e623
+sd_card_alert f057
+sd_storage e1c2
+search e8b6
+search_off ea76
+security e32a
+security_update f058
+security_update_good f059
+security_update_warning f05a
+segment e94b
+select_all e162
+self_improvement ea78
+sell f05b
+send e163
+send_and_archive ea0c
+send_time_extension eadb
+send_to_mobile f05c
+sensor_door f1b5
+sensor_occupied ec10
+sensor_window f1b4
+sensors e51e
+sensors_off e51f
+sentiment_dissatisfied e811
+sentiment_neutral e812
+sentiment_satisfied e813
+sentiment_satisfied_alt e0ed
+sentiment_very_dissatisfied e814
+sentiment_very_satisfied e815
+set_meal f1ea
+settings e8b8
+settings_accessibility f05d
+settings_applications e8b9
+settings_backup_restore e8ba
+settings_bluetooth e8bb
+settings_brightness e8bd
+settings_cell e8bc
+settings_display e8bd
+settings_ethernet e8be
+settings_input_antenna e8bf
+settings_input_component e8c0
+settings_input_composite e8c1
+settings_input_hdmi e8c2
+settings_input_svideo e8c3
+settings_overscan e8c4
+settings_phone e8c5
+settings_power e8c6
+settings_remote e8c7
+settings_suggest f05e
+settings_system_daydream e1c3
+settings_voice e8c8
+severe_cold ebd3
+shape_line f8d3
+share e80d
+share_arrival_time e524
+share_location f05f
+shelves f86e
+shield e9e0
+shield_moon eaa9
+shop e8c9
+shop_2 e19e
+shop_two e8ca
+shopify ea9d
+shopping_bag f1cc
+shopping_basket e8cb
+shopping_cart e8cc
+shopping_cart_checkout eb88
+short_text e261
+shortcut f060
+show_chart e6e1
+shower f061
+shuffle e043
+shuffle_on e9e1
+shutter_speed e43d
+sick f220
+sign_language ebe5
+signal_cellular_0_bar f0a8
+signal_cellular_4_bar e1c8
+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_wifi_0_bar f0b0
+signal_wifi_4_bar e1d8
+signal_wifi_4_bar_lock e1d9
+signal_wifi_bad f063
+signal_wifi_connected_no_internet_4 f064
+signal_wifi_off e1da
+signal_wifi_statusbar_4_bar f065
+signal_wifi_statusbar_connected_no_internet_4 f066
+signal_wifi_statusbar_null f067
+signpost eb91
+sim_card e32b
+sim_card_alert e624
+sim_card_download f068
+single_bed ea48
+sip f069
+skateboarding e511
+skip_next e044
+skip_previous e045
+sledding e512
+slideshow e41b
+slow_motion_video e068
+smart_button f1c1
+smart_display f06a
+smart_screen f06b
+smart_toy f06c
+smartphone e32c
+smoke_free eb4a
+smoking_rooms eb4b
+sms e625
+sms_failed e626
+snapchat ea6e
+snippet_folder f1c7
+snooze e046
+snowboarding e513
+snowing e80f
+snowmobile e503
+snowshoeing e514
+soap f1b2
+social_distance e1cb
+solar_power ec0f
+sort e164
+sort_by_alpha e053
+sos ebf7
+soup_kitchen e7d3
+source f1c4
+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
+speed e9e4
+spellcheck e8ce
+splitscreen f06d
+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
+square eb36
+square_foot ea49
+ssid_chart eb66
+stacked_bar_chart e9e6
+stacked_line_chart f22b
+stadium eb90
+stairs f1a9
+star e838
+star_border e83a
+star_border_purple500 f099
+star_half e839
+star_outline f06f
+star_purple500 f09a
+star_rate f0ec
+stars e8d0
+start e089
+stay_current_landscape e0d3
+stay_current_portrait e0d4
+stay_primary_landscape e0d5
+stay_primary_portrait e0d6
+sticky_note_2 f1fc
+stop e047
+stop_circle ef71
+stop_screen_share e0e3
+storage e1db
+store e8d1
+store_mall_directory e563
+storefront ea12
+storm f070
+straight eb95
+straighten e41c
+stream e9e9
+streetview e56e
+strikethrough_s e257
+stroller f1ae
+style e41d
+subdirectory_arrow_left e5d9
+subdirectory_arrow_right e5da
+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
+supervisor_account e8d3
+support ef73
+support_agent f0e2
+surfing e515
+surround_sound e049
+swap_calls e0d7
+swap_horiz e8d4
+swap_horizontal_circle e933
+swap_vert e8d5
+swap_vert_circle e8d6
+swap_vertical_circle e8d6
+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_access_shortcut e7e1
+switch_access_shortcut_add e7e2
+switch_account e9ed
+switch_camera e41e
+switch_left f1d1
+switch_right f1d2
+switch_video e41f
+synagogue eab0
+sync e627
+sync_alt ea18
+sync_disabled e628
+sync_lock eaee
+sync_problem e629
+system_security_update f072
+system_security_update_good f073
+system_security_update_warning f074
+system_update e62a
+system_update_alt e8d7
+system_update_tv e8d7
+tab e8d8
+tab_unselected e8d9
+table_bar ead2
+table_chart e265
+table_restaurant eac6
+table_rows f101
+table_view f1be
+tablet e32f
+tablet_android e330
+tablet_mac e331
+tag e9ef
+tag_faces e420
+takeout_dining ea74
+tap_and_play e62b
+tapas f1e9
+task f075
+task_alt e2e6
+taxi_alert ef74
+telegram ea6b
+temple_buddhist eab3
+temple_hindu eaaf
+terminal eb8e
+terrain e564
+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_snippet f1c6
+textsms e0d8
+texture e421
+theater_comedy ea66
+theaters e8da
+thermostat f076
+thermostat_auto f077
+thumb_down e8db
+thumb_down_alt e816
+thumb_down_off_alt e9f2
+thumb_up e8dc
+thumb_up_alt e817
+thumb_up_off_alt e9f3
+thumbs_up_down e8dd
+thunderstorm ebdb
+tiktok ea7e
+time_to_leave e62c
+timelapse e422
+timeline e922
+timer e425
+timer_10 e423
+timer_10_select f07a
+timer_3 e424
+timer_3_select f07b
+timer_off e426
+tips_and_updates e79a
+tire_repair ebc8
+title e264
+toc e8de
+today e8df
+toggle_off e9f5
+toggle_on e9f6
+token ea25
+toll e8e0
+tonality e427
+topic f1c8
+tornado e199
+touch_app e913
+tour ef75
+toys e332
+track_changes e8e1
+traffic e565
+train e570
+tram e571
+transcribe f8ec
+transfer_within_a_station e572
+transform e428
+transgender e58d
+transit_enterexit e579
+translate e8e2
+travel_explore e2db
+trending_down e8e3
+trending_flat e8e4
+trending_neutral e8e4
+trending_up e8e5
+trip_origin e57b
+trolley f86b
+troubleshoot e1d2
+try f07c
+tsunami ebd8
+tty f1aa
+tune e429
+tungsten f07d
+turn_left eba6
+turn_right ebab
+turn_sharp_left eba7
+turn_sharp_right ebaa
+turn_slight_left eba4
+turn_slight_right eb9a
+turned_in e8e6
+turned_in_not e8e7
+tv e333
+tv_off e647
+two_wheeler e9f9
+type_specimen f8f0
+u_turn_left eba1
+u_turn_right eba2
+umbrella f1ad
+unarchive e169
+undo e166
+unfold_less e5d6
+unfold_less_double f8cf
+unfold_more e5d7
+unfold_more_double f8d0
+unpublished f236
+unsubscribe e0eb
+upcoming f07e
+update e923
+update_disabled e075
+upgrade f0fb
+upload f09b
+upload_file e9fc
+usb e1e0
+usb_off e4fa
+vaccines e138
+vape_free ebc6
+vaping_rooms ebcf
+verified ef76
+verified_user e8e8
+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_chat f8a0
+video_collection e04a
+video_file eb87
+video_label e071
+video_library e04a
+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_comfortable e42a
+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 e9fe
+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_off e8f5
+voice_chat e62e
+voice_over_off e94a
+voicemail e0d9
+volcano ebda
+volume_down e04d
+volume_down_alt e79c
+volume_mute e04e
+volume_off e04f
+volume_up e050
+volunteer_activism ea70
+vpn_key e0da
+vpn_key_off eb7a
+vpn_lock e62f
+vrpano f082
+wallet f8ff
+wallet_giftcard e8f6
+wallet_membership e8f7
+wallet_travel e8f8
+wallpaper e1bc
+warehouse ebb8
+warning e002
+warning_amber f083
+wash f1b1
+watch e334
+watch_later e924
+watch_off eae3
+water f084
+water_damage f203
+water_drop e798
+waterfall_chart ea00
+waves e176
+waving_hand e766
+wb_auto e42c
+wb_cloudy e42d
+wb_incandescent e42e
+wb_iridescent e436
+wb_shade ea01
+wb_sunny e430
+wb_twighlight ea02
+wb_twilight e1c6
+wc e63d
+web e051
+web_asset e069
+web_asset_off e4f7
+web_stories e595
+webhook eb92
+wechat ea81
+weekend e16b
+west f1e6
+whatshot e80e
+wheelchair_pickup f1ab
+where_to_vote e177
+widgets e1bd
+width_full f8f5
+width_normal f8f6
+width_wide f8f7
+wifi e63e
+wifi_1_bar e4ca
+wifi_2_bar e4d9
+wifi_calling ef77
+wifi_calling_3 f085
+wifi_channel eb6a
+wifi_find eb31
+wifi_lock e1e1
+wifi_off e648
+wifi_password eb6b
+wifi_protected_setup f0fc
+wifi_tethering e1e2
+wifi_tethering_error ead9
+wifi_tethering_error_rounded f086
+wifi_tethering_off f087
+wind_power ec0c
+window f088
+wine_bar f1e8
+woman e13e
+woman_2 f8e7
+woo_commerce ea6d
+wordpress ea9f
+work e8f9
+work_history ec09
+work_off e942
+work_outline e943
+workspace_premium e7af
+workspaces e1a0
+workspaces_filled ea0d
+workspaces_outline ea0f
+wrap_text e25b
+wrong_location ef78
+wysiwyg f1c3
+yard f089
+youtube_searched_for e8fa
+zoom_in e8ff
+zoom_in_map eb2d
+zoom_out e900
+zoom_out_map e56b
diff --git a/src/styles/font/MaterialIcons-Regular.ttf b/src/styles/font/MaterialIcons-Regular.ttf
new file mode 100644
index 0000000..9d09b0f
Binary files /dev/null and b/src/styles/font/MaterialIcons-Regular.ttf differ
diff --git a/src/styles/font/MaterialIconsOutlined-Regular.codepoints b/src/styles/font/MaterialIconsOutlined-Regular.codepoints
new file mode 100644
index 0000000..df7be3b
--- /dev/null
+++ b/src/styles/font/MaterialIconsOutlined-Regular.codepoints
@@ -0,0 +1,2195 @@
+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
+20mp e95e
+21mp e95f
+22mp e960
+23mp e961
+24mp e962
+2k e963
+2k_plus e964
+2mp e965
+30fps efce
+30fps_select efcf
+360 e577
+3d_rotation e84d
+3g_mobiledata efd0
+3k e966
+3k_plus e967
+3mp e968
+3p efd1
+4g_mobiledata efd2
+4g_plus_mobiledata efd3
+4k e072
+4k_plus e969
+4mp e96a
+5g ef38
+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 e190
+access_alarms e191
+access_time e192
+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 e853
+account_tree e97a
+ad_units ef39
+adb e60e
+add e145
+add_a_photo e439
+add_alarm e193
+add_alert e003
+add_box e146
+add_business e729
+add_card eb86
+add_chart e97b
+add_circle e147
+add_circle_outline e148
+add_comment e266
+add_home f8eb
+add_home_work f8ed
+add_ic_call e97c
+add_link e178
+add_location e567
+add_location_alt ef3a
+add_moderator e97d
+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_panel_settings ef3d
+adobe ea96
+ads_click e762
+agriculture ea79
+air efd8
+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 e195
+airplanemode_inactive e194
+airplanemode_off e194
+airplanemode_on e195
+airplay e055
+airport_shuttle eb3c
+alarm e855
+alarm_add e856
+alarm_off e857
+alarm_on e858
+album e019
+align_horizontal_center e00f
+align_horizontal_left e00d
+align_horizontal_right e010
+align_vertical_bottom e015
+align_vertical_center e011
+align_vertical_top e00c
+all_inbox e97f
+all_inclusive eb3d
+all_out e90b
+alt_route f184
+alternate_email e0e6
+amp_stories ea13
+analytics ef3e
+anchor f1cd
+android e859
+animation e71c
+announcement e85a
+aod efda
+apartment ea40
+api f1b7
+app_blocking ef3f
+app_registration ef40
+app_settings_alt ef41
+app_shortcut eae4
+apple ea80
+approval e982
+apps e5c3
+apps_outage e7cc
+architecture ea3b
+archive e149
+area_chart e770
+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_drop_down e5c5
+arrow_drop_down_circle e5c6
+arrow_drop_up e5c7
+arrow_forward e5c8
+arrow_forward_ios e5e1
+arrow_left e5de
+arrow_outward f8ce
+arrow_right e5df
+arrow_right_alt e941
+arrow_upward e5d8
+art_track e060
+article ef42
+aspect_ratio e85b
+assessment e85c
+assignment e85d
+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_photo e3a0
+assured_workload eb6f
+atm e573
+attach_email ea5e
+attach_file e226
+attach_money e227
+attachment e2bc
+attractions ea52
+attribution efdb
+audio_file eb82
+audiotrack e3a1
+auto_awesome e65f
+auto_awesome_mosaic e660
+auto_awesome_motion e661
+auto_delete ea4c
+auto_fix_high e663
+auto_fix_normal e664
+auto_fix_off e665
+auto_graph e4fb
+auto_mode ec20
+auto_stories e666
+autofps_select efdc
+autorenew e863
+av_timer e01b
+baby_changing_station f19b
+back_hand e764
+backpack f19c
+backspace e14a
+backup e864
+backup_table ef43
+badge ea67
+bakery_dining ea53
+balance eaf6
+balcony e58f
+ballot e172
+bar_chart e26b
+batch_prediction f0f5
+bathroom efdd
+bathtub ea41
+battery_0_bar ebdc
+battery_1_bar ebd9
+battery_2_bar ebe0
+battery_3_bar ebdd
+battery_4_bar ebe2
+battery_5_bar ebd4
+battery_6_bar ebd2
+battery_alert e19c
+battery_charging_full e1a3
+battery_full e1a4
+battery_saver efde
+battery_std e1a5
+battery_unknown e1a6
+beach_access eb3e
+bed efdf
+bedroom_baby efe0
+bedroom_child efe1
+bedroom_parent efe2
+bedtime ef44
+bedtime_off eb76
+beenhere e52d
+bento f1f4
+bike_scooter ef45
+biotech ea3a
+blender efe3
+blind f8d6
+blinds e286
+blinds_closed ec1f
+block e14b
+bloodtype efe4
+bluetooth e1a7
+bluetooth_audio e60f
+bluetooth_connected e1a8
+bluetooth_disabled e1a9
+bluetooth_drive efe5
+bluetooth_searching e1aa
+blur_circular e3a2
+blur_linear e3a3
+blur_off e3a4
+blur_on e3a5
+bolt ea0b
+book e865
+book_online f217
+bookmark e866
+bookmark_add e598
+bookmark_added e599
+bookmark_border e867
+bookmark_outline e867
+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
+boy eb67
+branding_watermark e06b
+breakfast_dining ea54
+brightness_1 e3a6
+brightness_2 e3a7
+brightness_3 e3a8
+brightness_4 e3a9
+brightness_5 e3aa
+brightness_6 e3ab
+brightness_7 e3ac
+brightness_auto e1ab
+brightness_high e1ac
+brightness_low e1ad
+brightness_medium e1ae
+broadcast_on_home f8f8
+broadcast_on_personal f8f9
+broken_image e3ad
+browse_gallery ebd1
+browser_not_supported ef47
+browser_updated e7cf
+brunch_dining ea73
+brush e3ae
+bubble_chart e6dd
+bug_report e868
+build e869
+build_circle ef48
+bungalow e591
+burst_mode e43c
+bus_alert e98f
+business e0af
+business_center eb3f
+cabin e589
+cable efe6
+cached e86a
+cake e7e9
+calculate ea5f
+calendar_month ebcc
+calendar_today e935
+calendar_view_day e936
+calendar_view_month efe7
+calendar_view_week efe8
+call e0b0
+call_end e0b1
+call_made e0b2
+call_merge e0b3
+call_missed e0b4
+call_missed_outgoing e0e4
+call_received e0b5
+call_split e0b6
+call_to_action e06c
+camera e3af
+camera_alt e3b0
+camera_enhance e8fc
+camera_front e3b1
+camera_indoor efe9
+camera_outdoor efea
+camera_rear e3b2
+camera_roll e3b3
+cameraswitch efeb
+campaign ef49
+cancel e5c9
+cancel_presentation e0e9
+cancel_schedule_send ea39
+candlestick_chart ead4
+car_crash ebf2
+car_rental ea55
+car_repair ea56
+card_giftcard e8f6
+card_membership e8f7
+card_travel e8f8
+carpenter f1f8
+cases e992
+casino eb40
+cast e307
+cast_connected e308
+cast_for_education efec
+castle eab1
+catching_pokemon e508
+category e574
+celebration ea65
+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
+charging_station f19d
+chat e0b7
+chat_bubble e0ca
+chat_bubble_outline e0cb
+check e5ca
+check_box e834
+check_box_outline_blank e835
+check_circle e86c
+check_circle_outline e92d
+checklist e6b1
+checklist_rtl e6b3
+checkroom f19e
+chevron_left e5cb
+chevron_right e5cc
+child_care eb41
+child_friendly eb42
+chrome_reader_mode e86d
+church eaae
+circle ef4a
+circle_notifications e994
+class e86e
+clean_hands f21f
+cleaning_services f0ff
+clear e14c
+clear_all e0b8
+close e5cd
+close_fullscreen f1cf
+closed_caption e01c
+closed_caption_disabled f1dc
+closed_caption_off e996
+cloud e2bd
+cloud_circle e2be
+cloud_done e2bf
+cloud_download e2c0
+cloud_off e2c1
+cloud_queue e2c2
+cloud_sync eb5a
+cloud_upload e2c3
+co2 e7b0
+co_present eaf0
+code e86f
+code_off e4f3
+coffee efef
+coffee_maker eff0
+collections e3b6
+collections_bookmark e431
+color_lens e3b7
+colorize e3b8
+comment e0b9
+comment_bank ea4e
+comments_disabled e7a2
+commit eaf5
+commute e940
+compare e3b9
+compare_arrows e915
+compass_calibration e57c
+compost e761
+compress e94d
+computer e30a
+confirmation_num e638
+confirmation_number e638
+connect_without_contact f223
+connected_tv e998
+connecting_airports e7c9
+construction ea3c
+contact_emergency f8d1
+contact_mail e0d0
+contact_page f22e
+contact_phone e0cf
+contact_support e94c
+contactless ea71
+contacts e0ba
+content_copy f08a
+content_cut f08b
+content_paste f098
+content_paste_go ea8e
+content_paste_off e4f8
+content_paste_search ea9b
+contrast eb37
+control_camera e074
+control_point e3ba
+control_point_duplicate e3bb
+cookie eaac
+copy f08a
+copy_all e2ec
+copyright e90c
+coronavirus f221
+corporate_fare f1d0
+cottage e587
+countertops f1f7
+create e150
+create_new_folder e2cc
+credit_card e870
+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 e3c1
+crop_free e3c2
+crop_landscape e3c3
+crop_original e3c4
+crop_portrait e3c5
+crop_rotate e437
+crop_square e3c6
+cruelty_free e799
+css eb93
+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
+cut f08b
+cyclone ebd5
+dangerous e99a
+dark_mode e51c
+dashboard e871
+dashboard_customize e99b
+data_array ead1
+data_exploration e76f
+data_object ead3
+data_saver_off eff2
+data_saver_on eff3
+data_thresholding eb9f
+data_usage e1af
+dataset f8ee
+dataset_linked f8ef
+date_range e916
+deblur eb77
+deck ea42
+dehaze e3c7
+delete e872
+delete_forever e92b
+delete_outline e92e
+delete_sweep e16c
+delivery_dining ea72
+density_large eba9
+density_medium eb9e
+density_small eba8
+departure_board e576
+description e873
+deselect ebb6
+design_services f10a
+desk f8f4
+desktop_access_disabled e99d
+desktop_mac e30b
+desktop_windows e30c
+details e3c8
+developer_board e30d
+developer_board_off e4ff
+developer_mode e1b0
+device_hub e335
+device_thermostat e1ff
+device_unknown e339
+devices e1b1
+devices_fold ebde
+devices_other e337
+dialer_sip e0bb
+dialpad e0bc
+diamond ead5
+difference eb7d
+dining eff4
+dinner_dining ea57
+directions e52e
+directions_bike e52f
+directions_boat e532
+directions_boat_filled eff5
+directions_bus e530
+directions_bus_filled eff6
+directions_car e531
+directions_car_filled eff7
+directions_ferry e532
+directions_off f10f
+directions_railway e534
+directions_railway_filled eff8
+directions_run e566
+directions_subway e533
+directions_subway_filled eff9
+directions_train e534
+directions_transit e535
+directions_transit_filled effa
+directions_walk e536
+dirty_lens ef4b
+disabled_by_default f230
+disabled_visible e76e
+disc_full e610
+discord ea6c
+discount ebc9
+display_settings eb97
+diversity_1 f8d7
+diversity_2 f8d8
+diversity_3 f8d9
+dnd_forwardslash e611
+dns e875
+do_disturb f08c
+do_disturb_alt f08d
+do_disturb_off f08e
+do_disturb_on f08f
+do_not_disturb e612
+do_not_disturb_alt e611
+do_not_disturb_off e643
+do_not_disturb_on e644
+do_not_disturb_on_total_silence effb
+do_not_step f19f
+do_not_touch f1b0
+dock e30e
+document_scanner e5fa
+domain e7ee
+domain_add eb62
+domain_disabled e0ef
+domain_verification ef4c
+done e876
+done_all e877
+done_outline e92f
+donut_large e917
+donut_small e918
+door_back effc
+door_front effd
+door_sliding effe
+doorbell efff
+double_arrow ea50
+downhill_skiing e509
+download f090
+download_done f091
+download_for_offline f000
+downloading f001
+drafts e151
+drag_handle e25d
+drag_indicator e945
+draw e746
+drive_eta e613
+drive_file_move e675
+drive_file_move_rtl e76d
+drive_file_rename_outline e9a2
+drive_folder_upload e9a3
+dry f1b3
+dry_cleaning ea58
+duo e9a5
+dvr e1b2
+dynamic_feed ea14
+dynamic_form f1bf
+e_mobiledata f002
+earbuds f003
+earbuds_battery f004
+east f1df
+eco ea35
+edgesensor_high f005
+edgesensor_low f006
+edit e3c9
+edit_attributes e578
+edit_calendar e742
+edit_location e568
+edit_location_alt e1c5
+edit_note e745
+edit_notifications e525
+edit_off e950
+edit_road ef4d
+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
+elevator f1a0
+email e0be
+emergency e1eb
+emergency_recording ebf4
+emergency_share ebf6
+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
+energy_savings_leaf ec1a
+engineering ea3d
+enhance_photo_translate e8fc
+enhanced_encryption e63f
+equalizer e01d
+error e000
+error_outline e001
+escalator f1a1
+escalator_warning f1ac
+euro ea15
+euro_symbol e926
+ev_station e56d
+event e878
+event_available e614
+event_busy e615
+event_note e616
+event_repeat eb7b
+event_seat e903
+exit_to_app e879
+expand e94f
+expand_circle_down e7cd
+expand_less e5ce
+expand_more e5cf
+explicit e01e
+explore e87a
+explore_off e9a8
+exposure e3ca
+exposure_minus_1 e3cb
+exposure_minus_2 e3cc
+exposure_neg_1 e3cb
+exposure_neg_2 e3cc
+exposure_plus_1 e3cd
+exposure_plus_2 e3ce
+exposure_zero e3cf
+extension e87b
+extension_off e4f5
+face e87c
+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
+facebook f234
+fact_check f0c5
+factory ebbc
+family_restroom f1a2
+fast_forward e01f
+fast_rewind e020
+fastfood e57a
+favorite e87d
+favorite_border e87e
+favorite_outline e87e
+fax ead8
+featured_play_list e06d
+featured_video e06e
+feed f009
+feedback e87f
+female e590
+fence f1f6
+festival ea68
+fiber_dvr e05d
+fiber_manual_record e061
+fiber_new e05e
+fiber_pin e06a
+fiber_smart_record e062
+file_copy e173
+file_download e2c4
+file_download_done e9aa
+file_download_off e4fe
+file_open eaf3
+file_present ea0e
+file_upload e2c6
+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_off eb57
+filter_none e3e0
+filter_tilt_shift e3e2
+filter_vintage e3e3
+find_in_page e880
+find_replace e881
+fingerprint e90d
+fire_extinguisher f1d8
+fire_hydrant_alt f8f1
+fire_truck f8f2
+fireplace ea43
+first_page e5dc
+fit_screen ea10
+fitbit e82b
+fitness_center eb43
+flag e153
+flag_circle eaf8
+flaky ef50
+flare e3e4
+flash_auto e3e5
+flash_off e3e6
+flash_on e3e7
+flashlight_off f00a
+flashlight_on f00b
+flatware f00c
+flight e539
+flight_class e7cb
+flight_land e904
+flight_takeoff e905
+flip e3e8
+flip_camera_android ea37
+flip_camera_ios ea38
+flip_to_back e882
+flip_to_front e883
+flood ebe6
+flourescent f00d
+fluorescent f00d
+flutter_dash e00b
+fmd_bad f00e
+fmd_good f00f
+folder e2c7
+folder_copy ebbd
+folder_delete eb34
+folder_off eb83
+folder_open e2c8
+folder_shared e2c9
+folder_special e617
+folder_zip eb2c
+follow_the_signs f222
+font_download e167
+font_download_off e4f9
+food_bank f1f2
+forest ea99
+fork_left eba0
+fork_right ebac
+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_indent_decrease e23d
+format_indent_increase e23e
+format_italic e23f
+format_line_spacing e240
+format_list_bulleted e241
+format_list_numbered e242
+format_list_numbered_rtl e267
+format_overline eb65
+format_paint e243
+format_quote e244
+format_shapes e25e
+format_size e245
+format_strikethrough e246
+format_textdirection_l_to_r e247
+format_textdirection_r_to_l e248
+format_underline e765
+format_underlined e765
+fort eaad
+forum e0bf
+forward e154
+forward_10 e056
+forward_30 e057
+forward_5 e058
+forward_to_inbox f187
+foundation f200
+free_breakfast eb44
+free_cancellation e748
+front_hand e769
+fullscreen e5d0
+fullscreen_exit e5d1
+functions e24a
+g_mobiledata f010
+g_translate e927
+gamepad e30f
+games e021
+garage f011
+gas_meter ec19
+gavel e90e
+generating_tokens e749
+gesture e155
+get_app e884
+gif e908
+gif_box e7a3
+girl eb68
+gite e58b
+golf_course eb45
+gpp_bad f012
+gpp_good f013
+gpp_maybe f014
+gps_fixed e1b3
+gps_not_fixed e1b4
+gps_off e1b5
+grade e885
+gradient e3e9
+grading ea4f
+grain e3ea
+graphic_eq e1b8
+grass f205
+grid_3x3 f015
+grid_4x4 f016
+grid_goldenratio f017
+grid_off e3eb
+grid_on e3ec
+grid_view e9b0
+group e7ef
+group_add e7f0
+group_off e747
+group_remove e7ad
+group_work e886
+groups f233
+groups_2 f8df
+groups_3 f8e0
+h_mobiledata f018
+h_plus_mobiledata f019
+hail e9b1
+handshake ebcb
+handyman f10b
+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 e310
+headset_mic e311
+headset_off e33a
+healing e3f3
+health_and_safety e1d5
+hearing e023
+hearing_disabled f104
+heart_broken eac2
+heat_pump ec18
+height ea16
+help e887
+help_center f1c0
+help_outline e8fd
+hevc f021
+hexagon eb39
+hide_image f022
+hide_source f023
+high_quality e024
+highlight e25f
+highlight_alt ef52
+highlight_off e888
+highlight_remove e888
+hiking e50a
+history e889
+history_edu ea3e
+history_toggle_off f17d
+hive eaa6
+hls eb8a
+hls_off eb8c
+holiday_village e58a
+home e88a
+home_max f024
+home_mini f025
+home_repair_service f100
+home_work ea09
+horizontal_distribute e014
+horizontal_rule f108
+horizontal_split e947
+hot_tub eb46
+hotel e53a
+hotel_class e743
+hourglass_bottom ea5c
+hourglass_disabled ef53
+hourglass_empty e88b
+hourglass_full e88c
+hourglass_top ea5b
+house ea44
+house_siding f202
+houseboat e584
+how_to_reg e174
+how_to_vote e175
+html eb7e
+http e902
+https e88d
+hub e9f4
+hvac f10e
+ice_skating e50b
+icecream ea69
+image e3f4
+image_aspect_ratio e3f5
+image_not_supported f116
+image_search e43f
+imagesearch_roller e9b4
+import_contacts e0e0
+import_export e0c3
+important_devices e912
+inbox e156
+incomplete_circle e79b
+indeterminate_check_box e909
+info e88e
+input e890
+insert_chart e24b
+insert_chart_outlined e26a
+insert_comment e24c
+insert_drive_file e24d
+insert_emoticon e24e
+insert_invitation e24f
+insert_link e250
+insert_page_break eaca
+insert_photo e251
+insights f092
+install_desktop eb71
+install_mobile eb72
+integration_instructions ef54
+interests e7c8
+interpreter_mode e83b
+inventory e179
+inventory_2 e1a1
+invert_colors e891
+invert_colors_off e0c4
+invert_colors_on e891
+ios_share e6b8
+iron e583
+iso e3f6
+javascript eb7c
+join_full eaeb
+join_inner eaf4
+join_left eaf2
+join_right eaea
+kayaking e50c
+kebab_dining e842
+key e73c
+key_off eb84
+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_command_key eae7
+keyboard_control eae1
+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_hide e31a
+keyboard_option_key eae8
+keyboard_return e31b
+keyboard_tab e31c
+keyboard_voice e31d
+king_bed ea45
+kitchen eb47
+kitesurfing e50d
+label e892
+label_important e937
+label_off e9b6
+lan eb2f
+landscape e3f7
+landslide ebd7
+language e894
+laptop e31e
+laptop_chromebook e31f
+laptop_mac e320
+laptop_windows e321
+last_page e5dd
+launch e895
+layers e53b
+layers_clear e53c
+leaderboard f20c
+leak_add e3f8
+leak_remove e3f9
+leave_bags_at_home f23b
+legend_toggle f11b
+lens e3fa
+lens_blur f029
+library_add e02e
+library_add_check e9b7
+library_books e02f
+library_music e030
+light f02a
+light_mode e518
+lightbulb e0f0
+lightbulb_circle ebfe
+line_axis ea9a
+line_style e919
+line_weight e91a
+linear_scale e260
+link e157
+link_off e16f
+linked_camera e438
+liquor ea60
+list e896
+list_alt e0ee
+live_help e0c6
+live_tv e639
+living f02b
+local_activity e53f
+local_airport e53d
+local_atm e53e
+local_attraction e53f
+local_bar e540
+local_cafe e541
+local_car_wash e542
+local_convenience_store e543
+local_dining e556
+local_drink e544
+local_fire_department ef55
+local_florist e545
+local_gas_station e546
+local_grocery_store e547
+local_hospital e548
+local_hotel e549
+local_laundry_service e54a
+local_library e54b
+local_mall e54c
+local_movies e54d
+local_offer e54e
+local_parking e54f
+local_pharmacy e550
+local_phone e551
+local_pizza e552
+local_play e553
+local_police ef56
+local_post_office e554
+local_print_shop e555
+local_printshop e555
+local_restaurant e556
+local_see e557
+local_shipping e558
+local_taxi e559
+location_city e7f1
+location_disabled e1b6
+location_history e55a
+location_off e0c7
+location_on e0c8
+location_searching e1b7
+lock e897
+lock_clock ef57
+lock_open e898
+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 e028
+loupe e402
+low_priority e16d
+loyalty e89a
+lte_mobiledata f02c
+lte_plus_mobiledata f02d
+luggage f235
+lunch_dining ea61
+lyrics ec0b
+macro_off f8d2
+mail e158
+mail_lock ec0a
+mail_outline e0e1
+male e58e
+man e4eb
+man_2 f8e1
+man_3 f8e2
+man_4 f8e3
+manage_accounts f02e
+manage_history ebe7
+manage_search f02f
+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
+masks f218
+maximize e930
+media_bluetooth_off f031
+media_bluetooth_on f032
+mediation efa7
+medical_information ebed
+medical_services f109
+medication f033
+medication_liquid ea87
+meeting_room eb4f
+memory e322
+menu e5d2
+menu_book ea19
+menu_open e9bd
+merge eb98
+merge_type e252
+message e0c9
+messenger e0ca
+messenger_outline e0cb
+mic e029
+mic_external_off ef59
+mic_external_on ef5a
+mic_none e02a
+mic_off e02b
+microwave f204
+military_tech ea3f
+minimize e931
+minor_crash ebf1
+miscellaneous_services f10c
+missed_video_call e073
+mms e618
+mobile_friendly e200
+mobile_off e201
+mobile_screen_share e0e7
+mobiledata_off f034
+mode f097
+mode_comment e253
+mode_edit e254
+mode_edit_outline f035
+mode_fan_off ec17
+mode_night f036
+mode_of_travel e7ce
+mode_standby f037
+model_training f0cf
+monetization_on e263
+money e57d
+money_off e25c
+money_off_csred f038
+monitor ef5b
+monitor_heart eaa2
+monitor_weight f039
+monochrome_photos e403
+mood e7f2
+mood_bad e7f3
+moped eb28
+more e619
+more_horiz eae1
+more_time ea5d
+more_vert e5d4
+mosque eab2
+motion_photos_auto f03a
+motion_photos_off e9c0
+motion_photos_on e9c1
+motion_photos_pause f227
+motion_photos_paused e9c2
+motorcycle e91b
+mouse e323
+move_down eb61
+move_to_inbox e168
+move_up eb64
+movie e02c
+movie_creation e404
+movie_filter e43a
+moving e501
+mp e9c3
+multiline_chart e6df
+multiple_stop f1b9
+multitrack_audio e1b8
+museum ea36
+music_note e405
+music_off e440
+music_video e063
+my_library_add e02e
+my_library_books e02f
+my_library_music e030
+my_location e55c
+nat ef5c
+nature e406
+nature_people e407
+navigate_before e408
+navigate_next e409
+navigation e55d
+near_me e569
+near_me_disabled f1ef
+nearby_error f03b
+nearby_off f03c
+nest_cam_wired_stand ec16
+network_cell e1b9
+network_check e640
+network_locked e61a
+network_ping ebca
+network_wifi e1ba
+network_wifi_1_bar ebe4
+network_wifi_2_bar ebd6
+network_wifi_3_bar ebe1
+new_label e609
+new_releases e031
+newspaper eb81
+next_plan ef5d
+next_week e16a
+nfc e1bb
+night_shelter f1f1
+nightlife ea62
+nightlight f03d
+nightlight_round ef5e
+nights_stay ea46
+no_accounts f03e
+no_adult_content f8fe
+no_backpack f237
+no_cell f1a4
+no_crash ebf0
+no_drinks f1a5
+no_encryption e641
+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 e0cc
+no_stroller f1af
+no_transfer f1d5
+noise_aware ebec
+noise_control_off ebf3
+nordic_walking e50e
+north f1e0
+north_east f1e1
+north_west f1e2
+not_accessible f0fe
+not_interested e033
+not_listed_location e575
+not_started f0d1
+note e06f
+note_add e89c
+note_alt f040
+notes e26c
+notification_add e399
+notification_important e004
+notifications e7f4
+notifications_active e7f7
+notifications_none e7f5
+notifications_off e7f6
+notifications_on e7f7
+notifications_paused e7f8
+now_wallpaper e75f
+now_widgets e75e
+numbers eac7
+offline_bolt e932
+offline_pin e90a
+offline_share e9c5
+oil_barrel ec15
+on_device_training ebfd
+ondemand_video e63a
+online_prediction f0eb
+opacity e91c
+open_in_browser e89d
+open_in_full f1ce
+open_in_new e89e
+open_in_new_off e4f6
+open_with e89f
+other_houses e58c
+outbond f228
+outbound e1ca
+outbox ef5f
+outdoor_grill ea47
+outlet f1d4
+outlined_flag e16e
+output ebbe
+padding e9c8
+pages e7f9
+pageview e8a0
+paid f041
+palette e40a
+pan_tool e925
+pan_tool_alt ebb9
+panorama e40b
+panorama_fish_eye e40c
+panorama_fisheye e40c
+panorama_horizontal e40d
+panorama_horizontal_select ef60
+panorama_photosphere e9c9
+panorama_photosphere_select e9ca
+panorama_vertical e40e
+panorama_vertical_select ef61
+panorama_wide_angle e40f
+panorama_wide_angle_select ef62
+paragliding e50f
+park ea63
+party_mode e7fa
+password f042
+paste f098
+pattern f043
+pause e034
+pause_circle e1a2
+pause_circle_filled e035
+pause_circle_outline e036
+pause_presentation e0ea
+payment e8a1
+payments ef63
+paypal ea8d
+pedal_bike eb29
+pending ef64
+pending_actions f1bb
+pentagon eb50
+people e7fb
+people_alt ea21
+people_outline e7fc
+percent eb58
+perm_camera_mic e8a2
+perm_contact_cal e8a3
+perm_contact_calendar e8a3
+perm_data_setting e8a4
+perm_device_info e8a5
+perm_device_information e8a5
+perm_identity e8a6
+perm_media e8a7
+perm_phone_msg e8a8
+perm_scan_wifi e8a9
+person e7fd
+person_2 f8e4
+person_3 f8e5
+person_4 f8e6
+person_add e7fe
+person_add_alt ea4d
+person_add_alt_1 ef65
+person_add_disabled e9cb
+person_off e510
+person_outline e7ff
+person_pin e55a
+person_pin_circle e56a
+person_remove ef66
+person_remove_alt_1 ef67
+person_search f106
+personal_injury e6da
+personal_video e63b
+pest_control f0fa
+pest_control_rodent f0fd
+pets e91d
+phishing ead7
+phone e0cd
+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_setup e0de
+photo e410
+photo_album e411
+photo_camera e412
+photo_camera_back ef68
+photo_camera_front ef69
+photo_filter e43b
+photo_library e413
+photo_size_select_actual e432
+photo_size_select_large e433
+photo_size_select_small e434
+php eb8f
+piano e521
+piano_off e520
+picture_as_pdf e415
+picture_in_picture e8aa
+picture_in_picture_alt e911
+pie_chart e6c4
+pie_chart_outline f044
+pin f045
+pin_drop e55e
+pin_end e767
+pin_invoke e763
+pinch eb38
+pivot_table_chart e9ce
+pix eaa3
+place e55f
+plagiarism ea5a
+play_arrow e037
+play_circle e1c4
+play_circle_fill e038
+play_circle_filled e038
+play_circle_outline e039
+play_disabled ef6a
+play_for_work e906
+play_lesson f047
+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
+point_of_sale f17e
+policy ea17
+poll e801
+polyline ebbb
+polymer e8ab
+pool eb48
+portable_wifi_off e0ce
+portrait e416
+post_add ea20
+power e63c
+power_input e336
+power_off e646
+power_settings_new e8ac
+precision_manufacturing f049
+pregnant_woman e91e
+present_to_all e0df
+preview f1c5
+price_change f04a
+price_check f04b
+print e8ad
+print_disabled e9cf
+priority_high e645
+privacy_tip f0dc
+private_connectivity e744
+production_quantity_limits e1d1
+propane ec14
+propane_tank ec13
+psychology ea4a
+psychology_alt f8ea
+public e80b
+public_off f1ca
+publish e255
+published_with_changes f232
+punch_clock eaa8
+push_pin f10d
+qr_code ef6b
+qr_code_2 e00a
+qr_code_scanner f206
+query_builder e8ae
+query_stats e4fc
+question_answer e8af
+question_mark eb8b
+queue e03c
+queue_music e03d
+queue_play_next e066
+quick_contacts_dialer e0cf
+quick_contacts_mail e0d0
+quickreply ef6c
+quiz f04c
+quora ea98
+r_mobiledata f04d
+radar f04e
+radio e03e
+radio_button_checked e837
+radio_button_off e836
+radio_button_on e837
+radio_button_unchecked e836
+railway_alert e9d1
+ramen_dining ea64
+ramp_left eb9c
+ramp_right eb96
+rate_review e560
+raw_off f04f
+raw_on f050
+read_more ef6d
+real_estate_agent e73a
+receipt e8b0
+receipt_long ef6e
+recent_actors e03f
+recommend e9d2
+record_voice_over e91f
+rectangle eb54
+recycling e760
+reddit eaa0
+redeem e8b1
+redo e15a
+reduce_capacity f21c
+refresh e5d5
+remember_me f051
+remove e15b
+remove_circle e15c
+remove_circle_outline e15d
+remove_done e9d3
+remove_from_queue e067
+remove_moderator e9d4
+remove_red_eye e417
+remove_road ebfc
+remove_shopping_cart e928
+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 e160
+report_gmailerrorred f052
+report_off e170
+report_problem e8b2
+request_page f22c
+request_quote f1b6
+reset_tv e9d9
+restart_alt f053
+restaurant e56c
+restaurant_menu e561
+restore e8b3
+restore_from_trash e938
+restore_page e929
+reviews f054
+rice_bowl f1f5
+ring_volume e0d1
+rocket eba5
+rocket_launch eb9b
+roller_shades ec12
+roller_shades_closed ec11
+roller_skating ebcd
+roofing f201
+room e8b4
+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
+rowing e921
+rss_feed e0e5
+rsvp f055
+rtt e9ad
+rule f1c2
+rule_folder f1c9
+run_circle ef6f
+running_with_errors e51d
+rv_hookup e642
+safety_check ebef
+safety_divider e1cc
+sailing e502
+sanitizer f21d
+satellite e562
+satellite_alt eb3a
+save e161
+save_alt e171
+save_as eb60
+saved_search ea11
+savings e2eb
+scale eb5f
+scanner e329
+scatter_plot e268
+schedule e8b5
+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_rotation e1c1
+screen_rotation_alt ebee
+screen_search_desktop ef70
+screen_share e0e2
+screenshot f056
+screenshot_monitor ec08
+scuba_diving ebce
+sd e9dd
+sd_card e623
+sd_card_alert f057
+sd_storage e1c2
+search e8b6
+search_off ea76
+security e32a
+security_update f058
+security_update_good f059
+security_update_warning f05a
+segment e94b
+select_all e162
+self_improvement ea78
+sell f05b
+send e163
+send_and_archive ea0c
+send_time_extension eadb
+send_to_mobile f05c
+sensor_door f1b5
+sensor_occupied ec10
+sensor_window f1b4
+sensors e51e
+sensors_off e51f
+sentiment_dissatisfied e811
+sentiment_neutral e812
+sentiment_satisfied e813
+sentiment_satisfied_alt e0ed
+sentiment_very_dissatisfied e814
+sentiment_very_satisfied e815
+set_meal f1ea
+settings e8b8
+settings_accessibility f05d
+settings_applications e8b9
+settings_backup_restore e8ba
+settings_bluetooth e8bb
+settings_brightness e8bd
+settings_cell e8bc
+settings_display e8bd
+settings_ethernet e8be
+settings_input_antenna e8bf
+settings_input_component e8c0
+settings_input_composite e8c1
+settings_input_hdmi e8c2
+settings_input_svideo e8c3
+settings_overscan e8c4
+settings_phone e8c5
+settings_power e8c6
+settings_remote e8c7
+settings_suggest f05e
+settings_system_daydream e1c3
+settings_voice e8c8
+severe_cold ebd3
+shape_line f8d3
+share e80d
+share_arrival_time e524
+share_location f05f
+shield e9e0
+shield_moon eaa9
+shop e8c9
+shop_2 e19e
+shop_two e8ca
+shopify ea9d
+shopping_bag f1cc
+shopping_basket e8cb
+shopping_cart e8cc
+shopping_cart_checkout eb88
+short_text e261
+shortcut f060
+show_chart e6e1
+shower f061
+shuffle e043
+shuffle_on e9e1
+shutter_speed e43d
+sick f220
+sign_language ebe5
+signal_cellular_0_bar f0a8
+signal_cellular_4_bar e1c8
+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_wifi_0_bar f0b0
+signal_wifi_4_bar e1d8
+signal_wifi_4_bar_lock e1d9
+signal_wifi_bad f063
+signal_wifi_connected_no_internet_4 f064
+signal_wifi_off e1da
+signal_wifi_statusbar_4_bar f065
+signal_wifi_statusbar_connected_no_internet_4 f066
+signal_wifi_statusbar_null f067
+signpost eb91
+sim_card e32b
+sim_card_alert e624
+sim_card_download f068
+single_bed ea48
+sip f069
+skateboarding e511
+skip_next e044
+skip_previous e045
+sledding e512
+slideshow e41b
+slow_motion_video e068
+smart_button f1c1
+smart_display f06a
+smart_screen f06b
+smart_toy f06c
+smartphone e32c
+smoke_free eb4a
+smoking_rooms eb4b
+sms e625
+sms_failed e626
+snapchat ea6e
+snippet_folder f1c7
+snooze e046
+snowboarding e513
+snowmobile e503
+snowshoeing e514
+soap f1b2
+social_distance e1cb
+solar_power ec0f
+sort e164
+sort_by_alpha e053
+sos ebf7
+soup_kitchen e7d3
+source f1c4
+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
+speed e9e4
+spellcheck e8ce
+splitscreen f06d
+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
+square eb36
+square_foot ea49
+ssid_chart eb66
+stacked_bar_chart e9e6
+stacked_line_chart f22b
+stadium eb90
+stairs f1a9
+star e838
+star_border e83a
+star_border_purple500 f099
+star_half e839
+star_outline f06f
+star_purple500 f09a
+star_rate f0ec
+stars e8d0
+start e089
+stay_current_landscape e0d3
+stay_current_portrait e0d4
+stay_primary_landscape e0d5
+stay_primary_portrait e0d6
+sticky_note_2 f1fc
+stop e047
+stop_circle ef71
+stop_screen_share e0e3
+storage e1db
+store e8d1
+store_mall_directory e563
+storefront ea12
+storm f070
+straight eb95
+straighten e41c
+stream e9e9
+streetview e56e
+strikethrough_s e257
+stroller f1ae
+style e41d
+subdirectory_arrow_left e5d9
+subdirectory_arrow_right e5da
+subject e8d2
+subscript f111
+subscriptions e064
+subtitles e048
+subtitles_off ef72
+subway e56f
+summarize f071
+superscript f112
+supervised_user_circle e939
+supervisor_account e8d3
+support ef73
+support_agent f0e2
+surfing e515
+surround_sound e049
+swap_calls e0d7
+swap_horiz e8d4
+swap_horizontal_circle e933
+swap_vert e8d5
+swap_vert_circle e8d6
+swap_vertical_circle e8d6
+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_access_shortcut e7e1
+switch_access_shortcut_add e7e2
+switch_account e9ed
+switch_camera e41e
+switch_left f1d1
+switch_right f1d2
+switch_video e41f
+synagogue eab0
+sync e627
+sync_alt ea18
+sync_disabled e628
+sync_lock eaee
+sync_problem e629
+system_security_update f072
+system_security_update_good f073
+system_security_update_warning f074
+system_update e62a
+system_update_alt e8d7
+system_update_tv e8d7
+tab e8d8
+tab_unselected e8d9
+table_bar ead2
+table_chart e265
+table_restaurant eac6
+table_rows f101
+table_view f1be
+tablet e32f
+tablet_android e330
+tablet_mac e331
+tag e9ef
+tag_faces e420
+takeout_dining ea74
+tap_and_play e62b
+tapas f1e9
+task f075
+task_alt e2e6
+taxi_alert ef74
+telegram ea6b
+temple_buddhist eab3
+temple_hindu eaaf
+terminal eb8e
+terrain e564
+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_snippet f1c6
+textsms e0d8
+texture e421
+theater_comedy ea66
+theaters e8da
+thermostat f076
+thermostat_auto f077
+thumb_down e8db
+thumb_down_alt e816
+thumb_down_off_alt e9f2
+thumb_up e8dc
+thumb_up_alt e817
+thumb_up_off_alt e9f3
+thumbs_up_down e8dd
+thunderstorm ebdb
+tiktok ea7e
+time_to_leave e62c
+timelapse e422
+timeline e922
+timer e425
+timer_10 e423
+timer_10_select f07a
+timer_3 e424
+timer_3_select f07b
+timer_off e426
+tips_and_updates e79a
+tire_repair ebc8
+title e264
+toc e8de
+today e8df
+toggle_off e9f5
+toggle_on e9f6
+token ea25
+toll e8e0
+tonality e427
+topic f1c8
+tornado e199
+touch_app e913
+tour ef75
+toys e332
+track_changes e8e1
+traffic e565
+train e570
+tram e571
+transcribe f8ec
+transfer_within_a_station e572
+transform e428
+transgender e58d
+transit_enterexit e579
+translate e8e2
+travel_explore e2db
+trending_down e8e3
+trending_flat e8e4
+trending_neutral e8e4
+trending_up e8e5
+trip_origin e57b
+troubleshoot e1d2
+try f07c
+tsunami ebd8
+tty f1aa
+tune e429
+tungsten f07d
+turn_left eba6
+turn_right ebab
+turn_sharp_left eba7
+turn_sharp_right ebaa
+turn_slight_left eba4
+turn_slight_right eb9a
+turned_in e8e6
+turned_in_not e8e7
+tv e333
+tv_off e647
+two_wheeler e9f9
+type_specimen f8f0
+u_turn_left eba1
+u_turn_right eba2
+umbrella f1ad
+unarchive e169
+undo e166
+unfold_less e5d6
+unfold_less_double f8cf
+unfold_more e5d7
+unfold_more_double f8d0
+unpublished f236
+unsubscribe e0eb
+upcoming f07e
+update e923
+update_disabled e075
+upgrade f0fb
+upload f09b
+upload_file e9fc
+usb e1e0
+usb_off e4fa
+vaccines e138
+vape_free ebc6
+vaping_rooms ebcf
+verified ef76
+verified_user e8e8
+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_chat f8a0
+video_collection e04a
+video_file eb87
+video_label e071
+video_library e04a
+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_comfortable e42a
+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 e9fe
+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_off e8f5
+voice_chat e62e
+voice_over_off e94a
+voicemail e0d9
+volcano ebda
+volume_down e04d
+volume_mute e04e
+volume_off e04f
+volume_up e050
+volunteer_activism ea70
+vpn_key e0da
+vpn_key_off eb7a
+vpn_lock e62f
+vrpano f082
+wallet f8ff
+wallet_giftcard e8f6
+wallet_membership e8f7
+wallet_travel e8f8
+wallpaper e75f
+warehouse ebb8
+warning e002
+warning_amber f083
+wash f1b1
+watch e334
+watch_later e924
+watch_off eae3
+water f084
+water_damage f203
+water_drop e798
+waterfall_chart ea00
+waves e176
+waving_hand e766
+wb_auto e42c
+wb_cloudy e42d
+wb_incandescent e42e
+wb_iridescent e436
+wb_shade ea01
+wb_sunny e430
+wb_twilight e1c6
+wc e63d
+web e051
+web_asset e069
+web_asset_off e4f7
+web_stories e595
+webhook eb92
+wechat ea81
+weekend e16b
+west f1e6
+whatshot e80e
+wheelchair_pickup f1ab
+where_to_vote e177
+widgets e75e
+width_full f8f5
+width_normal f8f6
+width_wide f8f7
+wifi e63e
+wifi_1_bar e4ca
+wifi_2_bar e4d9
+wifi_calling ef77
+wifi_calling_3 f085
+wifi_channel eb6a
+wifi_find eb31
+wifi_lock e1e1
+wifi_off e648
+wifi_password eb6b
+wifi_protected_setup f0fc
+wifi_tethering e1e2
+wifi_tethering_error f086
+wifi_tethering_error_rounded f086
+wifi_tethering_off f087
+wind_power ec0c
+window f088
+wine_bar f1e8
+woman e13e
+woman_2 f8e7
+woo_commerce ea6d
+wordpress ea9f
+work e8f9
+work_history ec09
+work_off e942
+work_outline e943
+workspace_premium e7af
+workspaces e1a0
+wrap_text e25b
+wrong_location ef78
+wysiwyg f1c3
+yard f089
+youtube_searched_for e8fa
+zoom_in e8ff
+zoom_in_map eb2d
+zoom_out e900
+zoom_out_map e56b
diff --git a/src/styles/font/MaterialIconsOutlined-Regular.otf b/src/styles/font/MaterialIconsOutlined-Regular.otf
new file mode 100644
index 0000000..9dad12b
Binary files /dev/null and b/src/styles/font/MaterialIconsOutlined-Regular.otf differ
diff --git a/src/styles/font/MaterialIconsRound-Regular.codepoints b/src/styles/font/MaterialIconsRound-Regular.codepoints
new file mode 100644
index 0000000..b66c99d
--- /dev/null
+++ b/src/styles/font/MaterialIconsRound-Regular.codepoints
@@ -0,0 +1,2200 @@
+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
+20mp e95e
+21mp e95f
+22mp e960
+23mp e961
+24mp e962
+2k e963
+2k_plus e964
+2mp e965
+30fps efce
+30fps_select efcf
+360 e577
+3d_rotation e84d
+3g_mobiledata efd0
+3k e966
+3k_plus e967
+3mp e968
+3p efd1
+4g_mobiledata efd2
+4g_plus_mobiledata efd3
+4k e072
+4k_plus e969
+4mp e96a
+5g ef38
+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 e190
+access_alarms e191
+access_time e192
+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 e853
+account_tree e97a
+ad_units ef39
+adb e60e
+add e145
+add_a_photo e439
+add_alarm e193
+add_alert e003
+add_box e146
+add_business e729
+add_card eb86
+add_chart e97b
+add_circle e147
+add_circle_outline e148
+add_comment e266
+add_home f8eb
+add_home_work f8ed
+add_ic_call e97c
+add_link e178
+add_location e567
+add_location_alt ef3a
+add_moderator e97d
+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_panel_settings ef3d
+adobe ea96
+ads_click e762
+agriculture ea79
+air efd8
+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 e195
+airplanemode_inactive e194
+airplanemode_off e194
+airplanemode_on e195
+airplay e055
+airport_shuttle eb3c
+alarm e855
+alarm_add e856
+alarm_off e857
+alarm_on e858
+album e019
+align_horizontal_center e00f
+align_horizontal_left e00d
+align_horizontal_right e010
+align_vertical_bottom e015
+align_vertical_center e011
+align_vertical_top e00c
+all_inbox e97f
+all_inclusive eb3d
+all_out e90b
+alt_route f184
+alternate_email e0e6
+amp_stories ea13
+analytics ef3e
+anchor f1cd
+android e859
+animation e71c
+announcement e85a
+aod efda
+apartment ea40
+api f1b7
+app_blocking ef3f
+app_registration ef40
+app_settings_alt ef41
+app_shortcut eae4
+apple ea80
+approval e982
+apps e5c3
+apps_outage e7cc
+architecture ea3b
+archive e149
+area_chart e770
+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_drop_down e5c5
+arrow_drop_down_circle e5c6
+arrow_drop_up e5c7
+arrow_forward e5c8
+arrow_forward_ios e5e1
+arrow_left e5de
+arrow_outward f8ce
+arrow_right e5df
+arrow_right_alt e941
+arrow_upward e5d8
+art_track e060
+article ef42
+aspect_ratio e85b
+assessment e85c
+assignment e85d
+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_photo e3a0
+assured_workload eb6f
+atm e573
+attach_email ea5e
+attach_file e226
+attach_money e227
+attachment e2bc
+attractions ea52
+attribution efdb
+audio_file eb82
+audiotrack e3a1
+auto_awesome e65f
+auto_awesome_mosaic e660
+auto_awesome_motion e661
+auto_delete ea4c
+auto_fix_high e663
+auto_fix_normal e664
+auto_fix_off e665
+auto_graph e4fb
+auto_mode ec20
+auto_stories e666
+autofps_select efdc
+autorenew e863
+av_timer e01b
+baby_changing_station f19b
+back_hand e764
+backpack f19c
+backspace e14a
+backup e864
+backup_table ef43
+badge ea67
+bakery_dining ea53
+balance eaf6
+balcony e58f
+ballot e172
+bar_chart e26b
+batch_prediction f0f5
+bathroom efdd
+bathtub ea41
+battery_0_bar ebdc
+battery_1_bar ebd9
+battery_2_bar ebe0
+battery_3_bar ebdd
+battery_4_bar ebe2
+battery_5_bar ebd4
+battery_6_bar ebd2
+battery_alert e19c
+battery_charging_full e1a3
+battery_full e1a4
+battery_saver efde
+battery_std e1a5
+battery_unknown e1a6
+beach_access eb3e
+bed efdf
+bedroom_baby efe0
+bedroom_child efe1
+bedroom_parent efe2
+bedtime ef44
+bedtime_off eb76
+beenhere e52d
+bento f1f4
+bike_scooter ef45
+biotech ea3a
+blender efe3
+blind f8d6
+blinds e286
+blinds_closed ec1f
+block e14b
+bloodtype efe4
+bluetooth e1a7
+bluetooth_audio e60f
+bluetooth_connected e1a8
+bluetooth_disabled e1a9
+bluetooth_drive efe5
+bluetooth_searching e1aa
+blur_circular e3a2
+blur_linear e3a3
+blur_off e3a4
+blur_on e3a5
+bolt ea0b
+book e865
+book_online f217
+bookmark e866
+bookmark_add e598
+bookmark_added e599
+bookmark_border e867
+bookmark_outline e867
+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
+boy eb67
+branding_watermark e06b
+breakfast_dining ea54
+brightness_1 e3a6
+brightness_2 e3a7
+brightness_3 e3a8
+brightness_4 e3a9
+brightness_5 e3aa
+brightness_6 e3ab
+brightness_7 e3ac
+brightness_auto e1ab
+brightness_high e1ac
+brightness_low e1ad
+brightness_medium e1ae
+broadcast_on_home f8f8
+broadcast_on_personal f8f9
+broken_image e3ad
+browse_gallery ebd1
+browser_not_supported ef47
+browser_updated e7cf
+brunch_dining ea73
+brush e3ae
+bubble_chart e6dd
+bug_report e868
+build e869
+build_circle ef48
+bungalow e591
+burst_mode e43c
+bus_alert e98f
+business e0af
+business_center eb3f
+cabin e589
+cable efe6
+cached e86a
+cake e7e9
+calculate ea5f
+calendar_month ebcc
+calendar_today e935
+calendar_view_day e936
+calendar_view_month efe7
+calendar_view_week efe8
+call e0b0
+call_end e0b1
+call_made e0b2
+call_merge e0b3
+call_missed e0b4
+call_missed_outgoing e0e4
+call_received e0b5
+call_split e0b6
+call_to_action e06c
+camera e3af
+camera_alt e3b0
+camera_enhance e8fc
+camera_front e3b1
+camera_indoor efe9
+camera_outdoor efea
+camera_rear e3b2
+camera_roll e3b3
+cameraswitch efeb
+campaign ef49
+cancel e5c9
+cancel_presentation e0e9
+cancel_schedule_send ea39
+candlestick_chart ead4
+car_crash ebf2
+car_rental ea55
+car_repair ea56
+card_giftcard e8f6
+card_membership e8f7
+card_travel e8f8
+carpenter f1f8
+cases e992
+casino eb40
+cast e307
+cast_connected e308
+cast_for_education efec
+castle eab1
+catching_pokemon e508
+category e574
+celebration ea65
+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
+charging_station f19d
+chat e0b7
+chat_bubble e0ca
+chat_bubble_outline e0cb
+check e5ca
+check_box e834
+check_box_outline_blank e835
+check_circle e86c
+check_circle_outline e92d
+checklist e6b1
+checklist_rtl e6b3
+checkroom f19e
+chevron_left e5cb
+chevron_right e5cc
+child_care eb41
+child_friendly eb42
+chrome_reader_mode e86d
+church eaae
+circle ef4a
+circle_notifications e994
+class e86e
+clean_hands f21f
+cleaning_services f0ff
+clear e14c
+clear_all e0b8
+close e5cd
+close_fullscreen f1cf
+closed_caption e01c
+closed_caption_disabled f1dc
+closed_caption_off e996
+cloud e2bd
+cloud_circle e2be
+cloud_done e2bf
+cloud_download e2c0
+cloud_off e2c1
+cloud_queue e2c2
+cloud_sync eb5a
+cloud_upload e2c3
+co2 e7b0
+co_present eaf0
+code e86f
+code_off e4f3
+coffee efef
+coffee_maker eff0
+collections e3b6
+collections_bookmark e431
+color_lens e3b7
+colorize e3b8
+comment e0b9
+comment_bank ea4e
+comments_disabled e7a2
+commit eaf5
+commute e940
+compare e3b9
+compare_arrows e915
+compass_calibration e57c
+compost e761
+compress e94d
+computer e30a
+confirmation_num e638
+confirmation_number e638
+connect_without_contact f223
+connected_tv e998
+connecting_airports e7c9
+construction ea3c
+contact_emergency f8d1
+contact_mail e0d0
+contact_page f22e
+contact_phone e0cf
+contact_support e94c
+contactless ea71
+contacts e0ba
+content_copy f08a
+content_cut f08b
+content_paste f098
+content_paste_go ea8e
+content_paste_off e4f8
+content_paste_search ea9b
+contrast eb37
+control_camera e074
+control_point e3ba
+control_point_duplicate e3bb
+cookie eaac
+copy f08a
+copy_all e2ec
+copyright e90c
+coronavirus f221
+corporate_fare f1d0
+cottage e587
+countertops f1f7
+create e150
+create_new_folder e2cc
+credit_card e870
+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 e3c1
+crop_free e3c2
+crop_landscape e3c3
+crop_original e3c4
+crop_portrait e3c5
+crop_rotate e437
+crop_square e3c6
+cruelty_free e799
+css eb93
+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
+cut f08b
+cyclone ebd5
+dangerous e99a
+dark_mode e51c
+dashboard e871
+dashboard_customize e99b
+data_array ead1
+data_exploration e76f
+data_object ead3
+data_saver_off eff2
+data_saver_on eff3
+data_thresholding eb9f
+data_usage e1af
+dataset f8ee
+dataset_linked f8ef
+date_range e916
+deblur eb77
+deck ea42
+dehaze e3c7
+delete e872
+delete_forever e92b
+delete_outline e92e
+delete_sweep e16c
+delivery_dining ea72
+density_large eba9
+density_medium eb9e
+density_small eba8
+departure_board e576
+description e873
+deselect ebb6
+design_services f10a
+desk f8f4
+desktop_access_disabled e99d
+desktop_mac e30b
+desktop_windows e30c
+details e3c8
+developer_board e30d
+developer_board_off e4ff
+developer_mode e1b0
+device_hub e335
+device_thermostat e1ff
+device_unknown e339
+devices e1b1
+devices_fold ebde
+devices_other e337
+dialer_sip e0bb
+dialpad e0bc
+diamond ead5
+difference eb7d
+dining eff4
+dinner_dining ea57
+directions e52e
+directions_bike e52f
+directions_boat e532
+directions_boat_filled eff5
+directions_bus e530
+directions_bus_filled eff6
+directions_car e531
+directions_car_filled eff7
+directions_ferry e532
+directions_off f10f
+directions_railway e534
+directions_railway_filled eff8
+directions_run e566
+directions_subway e533
+directions_subway_filled eff9
+directions_train e534
+directions_transit e535
+directions_transit_filled effa
+directions_walk e536
+dirty_lens ef4b
+disabled_by_default f230
+disabled_visible e76e
+disc_full e610
+discord ea6c
+discount ebc9
+display_settings eb97
+diversity_1 f8d7
+diversity_2 f8d8
+diversity_3 f8d9
+dnd_forwardslash e611
+dns e875
+do_disturb f08c
+do_disturb_alt f08d
+do_disturb_off f08e
+do_disturb_on f08f
+do_not_disturb e612
+do_not_disturb_alt e611
+do_not_disturb_off e643
+do_not_disturb_on e644
+do_not_disturb_on_total_silence effb
+do_not_step f19f
+do_not_touch f1b0
+dock e30e
+document_scanner e5fa
+domain e7ee
+domain_add eb62
+domain_disabled e0ef
+domain_verification ef4c
+done e876
+done_all e877
+done_outline e92f
+donut_large e917
+donut_small e918
+door_back effc
+door_front effd
+door_sliding effe
+doorbell efff
+double_arrow ea50
+downhill_skiing e509
+download f090
+download_done f091
+download_for_offline f000
+downloading f001
+drafts e151
+drag_handle e25d
+drag_indicator e945
+draw e746
+drive_eta e613
+drive_file_move e675
+drive_file_move_rtl e76d
+drive_file_rename_outline e9a2
+drive_folder_upload e9a3
+dry f1b3
+dry_cleaning ea58
+duo e9a5
+dvr e1b2
+dynamic_feed ea14
+dynamic_form f1bf
+e_mobiledata f002
+earbuds f003
+earbuds_battery f004
+east f1df
+eco ea35
+edgesensor_high f005
+edgesensor_low f006
+edit e3c9
+edit_attributes e578
+edit_calendar e742
+edit_location e568
+edit_location_alt e1c5
+edit_note e745
+edit_notifications e525
+edit_off e950
+edit_road ef4d
+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
+elevator f1a0
+email e0be
+emergency e1eb
+emergency_recording ebf4
+emergency_share ebf6
+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
+energy_savings_leaf ec1a
+engineering ea3d
+enhance_photo_translate e8fc
+enhanced_encryption e63f
+equalizer e01d
+error e000
+error_outline e001
+escalator f1a1
+escalator_warning f1ac
+euro ea15
+euro_symbol e926
+ev_station e56d
+event e878
+event_available e614
+event_busy e615
+event_note e616
+event_repeat eb7b
+event_seat e903
+exit_to_app e879
+expand e94f
+expand_circle_down e7cd
+expand_less e5ce
+expand_more e5cf
+explicit e01e
+explore e87a
+explore_off e9a8
+exposure e3ca
+exposure_minus_1 e3cb
+exposure_minus_2 e3cc
+exposure_neg_1 e3cb
+exposure_neg_2 e3cc
+exposure_plus_1 e3cd
+exposure_plus_2 e3ce
+exposure_zero e3cf
+extension e87b
+extension_off e4f5
+face e87c
+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
+facebook f234
+fact_check f0c5
+factory ebbc
+family_restroom f1a2
+fast_forward e01f
+fast_rewind e020
+fastfood e57a
+favorite e87d
+favorite_border e87e
+favorite_outline e87e
+fax ead8
+featured_play_list e06d
+featured_video e06e
+feed f009
+feedback e87f
+female e590
+fence f1f6
+festival ea68
+fiber_dvr e05d
+fiber_manual_record e061
+fiber_new e05e
+fiber_pin e06a
+fiber_smart_record e062
+file_copy e173
+file_download e2c4
+file_download_done e9aa
+file_download_off e4fe
+file_open eaf3
+file_present ea0e
+file_upload e2c6
+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_off eb57
+filter_none e3e0
+filter_tilt_shift e3e2
+filter_vintage e3e3
+find_in_page e880
+find_replace e881
+fingerprint e90d
+fire_extinguisher f1d8
+fire_hydrant_alt f8f1
+fire_truck f8f2
+fireplace ea43
+first_page e5dc
+fit_screen ea10
+fitbit e82b
+fitness_center eb43
+flag e153
+flag_circle eaf8
+flaky ef50
+flare e3e4
+flash_auto e3e5
+flash_off e3e6
+flash_on e3e7
+flashlight_off f00a
+flashlight_on f00b
+flatware f00c
+flight e539
+flight_class e7cb
+flight_land e904
+flight_takeoff e905
+flip e3e8
+flip_camera_android ea37
+flip_camera_ios ea38
+flip_to_back e882
+flip_to_front e883
+flood ebe6
+flourescent f00d
+fluorescent f00d
+flutter_dash e00b
+fmd_bad f00e
+fmd_good f00f
+folder e2c7
+folder_copy ebbd
+folder_delete eb34
+folder_off eb83
+folder_open e2c8
+folder_shared e2c9
+folder_special e617
+folder_zip eb2c
+follow_the_signs f222
+font_download e167
+font_download_off e4f9
+food_bank f1f2
+forest ea99
+fork_left eba0
+fork_right ebac
+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_indent_decrease e23d
+format_indent_increase e23e
+format_italic e23f
+format_line_spacing e240
+format_list_bulleted e241
+format_list_numbered e242
+format_list_numbered_rtl e267
+format_overline eb65
+format_paint e243
+format_quote e244
+format_shapes e25e
+format_size e245
+format_strikethrough e246
+format_textdirection_l_to_r e247
+format_textdirection_r_to_l e248
+format_underline e765
+format_underlined e765
+fort eaad
+forum e0bf
+forward e154
+forward_10 e056
+forward_30 e057
+forward_5 e058
+forward_to_inbox f187
+foundation f200
+free_breakfast eb44
+free_cancellation e748
+front_hand e769
+fullscreen e5d0
+fullscreen_exit e5d1
+functions e24a
+g_mobiledata f010
+g_translate e927
+gamepad e30f
+games e021
+garage f011
+gas_meter ec19
+gavel e90e
+generating_tokens e749
+gesture e155
+get_app e884
+gif e908
+gif_box e7a3
+girl eb68
+gite e58b
+golf_course eb45
+gpp_bad f012
+gpp_good f013
+gpp_maybe f014
+gps_fixed e1b3
+gps_not_fixed e1b4
+gps_off e1b5
+grade e885
+gradient e3e9
+grading ea4f
+grain e3ea
+graphic_eq e1b8
+grass f205
+grid_3x3 f015
+grid_4x4 f016
+grid_goldenratio f017
+grid_off e3eb
+grid_on e3ec
+grid_view e9b0
+group e7ef
+group_add e7f0
+group_off e747
+group_remove e7ad
+group_work e886
+groups f233
+groups_2 f8df
+groups_3 f8e0
+h_mobiledata f018
+h_plus_mobiledata f019
+hail e9b1
+handshake ebcb
+handyman f10b
+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 e310
+headset_mic e311
+headset_off e33a
+healing e3f3
+health_and_safety e1d5
+hearing e023
+hearing_disabled f104
+heart_broken eac2
+heat_pump ec18
+height ea16
+help e887
+help_center f1c0
+help_outline e8fd
+hevc f021
+hexagon eb39
+hide_image f022
+hide_source f023
+high_quality e024
+highlight e25f
+highlight_alt ef52
+highlight_off e888
+highlight_remove e888
+hiking e50a
+history e889
+history_edu ea3e
+history_toggle_off f17d
+hive eaa6
+hls eb8a
+hls_off eb8c
+holiday_village e58a
+home e88a
+home_max f024
+home_mini f025
+home_repair_service f100
+home_work ea09
+horizontal_distribute e014
+horizontal_rule f108
+horizontal_split e947
+hot_tub eb46
+hotel e53a
+hotel_class e743
+hourglass_bottom ea5c
+hourglass_disabled ef53
+hourglass_empty e88b
+hourglass_full e88c
+hourglass_top ea5b
+house ea44
+house_siding f202
+houseboat e584
+how_to_reg e174
+how_to_vote e175
+html eb7e
+http e902
+https e88d
+hub e9f4
+hvac f10e
+ice_skating e50b
+icecream ea69
+image e3f4
+image_aspect_ratio e3f5
+image_not_supported f116
+image_search e43f
+imagesearch_roller e9b4
+import_contacts e0e0
+import_export e0c3
+important_devices e912
+inbox e156
+incomplete_circle e79b
+indeterminate_check_box e909
+info e88e
+info_outline e88f
+input e890
+insert_chart e24b
+insert_chart_outlined e26a
+insert_comment e24c
+insert_drive_file e24d
+insert_emoticon e24e
+insert_invitation e24f
+insert_link e250
+insert_page_break eaca
+insert_photo e251
+insights f092
+install_desktop eb71
+install_mobile eb72
+integration_instructions ef54
+interests e7c8
+interpreter_mode e83b
+inventory e179
+inventory_2 e1a1
+invert_colors e891
+invert_colors_off e0c4
+invert_colors_on e891
+ios_share e6b8
+iron e583
+iso e3f6
+javascript eb7c
+join_full eaeb
+join_inner eaf4
+join_left eaf2
+join_right eaea
+kayaking e50c
+kebab_dining e842
+key e73c
+key_off eb84
+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_command_key eae7
+keyboard_control eae1
+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_hide e31a
+keyboard_option_key eae8
+keyboard_return e31b
+keyboard_tab e31c
+keyboard_voice e31d
+king_bed ea45
+kitchen eb47
+kitesurfing e50d
+label e892
+label_important e937
+label_important_outline e948
+label_off e9b6
+label_outline e893
+lan eb2f
+landscape e3f7
+landslide ebd7
+language e894
+laptop e31e
+laptop_chromebook e31f
+laptop_mac e320
+laptop_windows e321
+last_page e5dd
+launch e895
+layers e53b
+layers_clear e53c
+leaderboard f20c
+leak_add e3f8
+leak_remove e3f9
+leave_bags_at_home f23b
+legend_toggle f11b
+lens e3fa
+lens_blur f029
+library_add e02e
+library_add_check e9b7
+library_books e02f
+library_music e030
+light f02a
+light_mode e518
+lightbulb e0f0
+lightbulb_circle ebfe
+lightbulb_outline e90f
+line_axis ea9a
+line_style e919
+line_weight e91a
+linear_scale e260
+link e157
+link_off e16f
+linked_camera e438
+liquor ea60
+list e896
+list_alt e0ee
+live_help e0c6
+live_tv e639
+living f02b
+local_activity e53f
+local_airport e53d
+local_atm e53e
+local_attraction e53f
+local_bar e540
+local_cafe e541
+local_car_wash e542
+local_convenience_store e543
+local_dining e556
+local_drink e544
+local_fire_department ef55
+local_florist e545
+local_gas_station e546
+local_grocery_store e547
+local_hospital e548
+local_hotel e549
+local_laundry_service e54a
+local_library e54b
+local_mall e54c
+local_movies e54d
+local_offer e54e
+local_parking e54f
+local_pharmacy e550
+local_phone e551
+local_pizza e552
+local_play e553
+local_police ef56
+local_post_office e554
+local_print_shop e555
+local_printshop e555
+local_restaurant e556
+local_see e557
+local_shipping e558
+local_taxi e559
+location_city e7f1
+location_disabled e1b6
+location_history e55a
+location_off e0c7
+location_on e0c8
+location_searching e1b7
+lock e897
+lock_clock ef57
+lock_open e898
+lock_outline e899
+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 e028
+loupe e402
+low_priority e16d
+loyalty e89a
+lte_mobiledata f02c
+lte_plus_mobiledata f02d
+luggage f235
+lunch_dining ea61
+lyrics ec0b
+macro_off f8d2
+mail e158
+mail_lock ec0a
+mail_outline e0e1
+male e58e
+man e4eb
+man_2 f8e1
+man_3 f8e2
+man_4 f8e3
+manage_accounts f02e
+manage_history ebe7
+manage_search f02f
+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
+masks f218
+maximize e930
+media_bluetooth_off f031
+media_bluetooth_on f032
+mediation efa7
+medical_information ebed
+medical_services f109
+medication f033
+medication_liquid ea87
+meeting_room eb4f
+memory e322
+menu e5d2
+menu_book ea19
+menu_open e9bd
+merge eb98
+merge_type e252
+message e0c9
+messenger e0ca
+messenger_outline e0cb
+mic e029
+mic_external_off ef59
+mic_external_on ef5a
+mic_none e02a
+mic_off e02b
+microwave f204
+military_tech ea3f
+minimize e931
+minor_crash ebf1
+miscellaneous_services f10c
+missed_video_call e073
+mms e618
+mobile_friendly e200
+mobile_off e201
+mobile_screen_share e0e7
+mobiledata_off f034
+mode f097
+mode_comment e253
+mode_edit e254
+mode_edit_outline f035
+mode_fan_off ec17
+mode_night f036
+mode_of_travel e7ce
+mode_standby f037
+model_training f0cf
+monetization_on e263
+money e57d
+money_off e25c
+money_off_csred f038
+monitor ef5b
+monitor_heart eaa2
+monitor_weight f039
+monochrome_photos e403
+mood e7f2
+mood_bad e7f3
+moped eb28
+more e619
+more_horiz eae1
+more_time ea5d
+more_vert e5d4
+mosque eab2
+motion_photos_auto f03a
+motion_photos_off e9c0
+motion_photos_on e9c1
+motion_photos_pause f227
+motion_photos_paused e9c2
+motorcycle e91b
+mouse e323
+move_down eb61
+move_to_inbox e168
+move_up eb64
+movie e02c
+movie_creation e404
+movie_filter e43a
+moving e501
+mp e9c3
+multiline_chart e6df
+multiple_stop f1b9
+multitrack_audio e1b8
+museum ea36
+music_note e405
+music_off e440
+music_video e063
+my_library_add e02e
+my_library_books e02f
+my_library_music e030
+my_location e55c
+nat ef5c
+nature e406
+nature_people e407
+navigate_before e408
+navigate_next e409
+navigation e55d
+near_me e569
+near_me_disabled f1ef
+nearby_error f03b
+nearby_off f03c
+nest_cam_wired_stand ec16
+network_cell e1b9
+network_check e640
+network_locked e61a
+network_ping ebca
+network_wifi e1ba
+network_wifi_1_bar ebe4
+network_wifi_2_bar ebd6
+network_wifi_3_bar ebe1
+new_label e609
+new_releases e031
+newspaper eb81
+next_plan ef5d
+next_week e16a
+nfc e1bb
+night_shelter f1f1
+nightlife ea62
+nightlight f03d
+nightlight_round ef5e
+nights_stay ea46
+no_accounts f03e
+no_adult_content f8fe
+no_backpack f237
+no_cell f1a4
+no_crash ebf0
+no_drinks f1a5
+no_encryption e641
+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 e0cc
+no_stroller f1af
+no_transfer f1d5
+noise_aware ebec
+noise_control_off ebf3
+nordic_walking e50e
+north f1e0
+north_east f1e1
+north_west f1e2
+not_accessible f0fe
+not_interested e033
+not_listed_location e575
+not_started f0d1
+note e06f
+note_add e89c
+note_alt f040
+notes e26c
+notification_add e399
+notification_important e004
+notifications e7f4
+notifications_active e7f7
+notifications_none e7f5
+notifications_off e7f6
+notifications_on e7f7
+notifications_paused e7f8
+now_wallpaper e75f
+now_widgets e75e
+numbers eac7
+offline_bolt e932
+offline_pin e90a
+offline_share e9c5
+oil_barrel ec15
+on_device_training ebfd
+ondemand_video e63a
+online_prediction f0eb
+opacity e91c
+open_in_browser e89d
+open_in_full f1ce
+open_in_new e89e
+open_in_new_off e4f6
+open_with e89f
+other_houses e58c
+outbond f228
+outbound e1ca
+outbox ef5f
+outdoor_grill ea47
+outlet f1d4
+outlined_flag e16e
+output ebbe
+padding e9c8
+pages e7f9
+pageview e8a0
+paid f041
+palette e40a
+pan_tool e925
+pan_tool_alt ebb9
+panorama e40b
+panorama_fish_eye e40c
+panorama_fisheye e40c
+panorama_horizontal e40d
+panorama_horizontal_select ef60
+panorama_photosphere e9c9
+panorama_photosphere_select e9ca
+panorama_vertical e40e
+panorama_vertical_select ef61
+panorama_wide_angle e40f
+panorama_wide_angle_select ef62
+paragliding e50f
+park ea63
+party_mode e7fa
+password f042
+paste f098
+pattern f043
+pause e034
+pause_circle e1a2
+pause_circle_filled e035
+pause_circle_outline e036
+pause_presentation e0ea
+payment e8a1
+payments ef63
+paypal ea8d
+pedal_bike eb29
+pending ef64
+pending_actions f1bb
+pentagon eb50
+people e7fb
+people_alt ea21
+people_outline e7fc
+percent eb58
+perm_camera_mic e8a2
+perm_contact_cal e8a3
+perm_contact_calendar e8a3
+perm_data_setting e8a4
+perm_device_info e8a5
+perm_device_information e8a5
+perm_identity e8a6
+perm_media e8a7
+perm_phone_msg e8a8
+perm_scan_wifi e8a9
+person e7fd
+person_2 f8e4
+person_3 f8e5
+person_4 f8e6
+person_add e7fe
+person_add_alt ea4d
+person_add_alt_1 ef65
+person_add_disabled e9cb
+person_off e510
+person_outline e7ff
+person_pin e55a
+person_pin_circle e56a
+person_remove ef66
+person_remove_alt_1 ef67
+person_search f106
+personal_injury e6da
+personal_video e63b
+pest_control f0fa
+pest_control_rodent f0fd
+pets e91d
+phishing ead7
+phone e0cd
+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_setup e0de
+photo e410
+photo_album e411
+photo_camera e412
+photo_camera_back ef68
+photo_camera_front ef69
+photo_filter e43b
+photo_library e413
+photo_size_select_actual e432
+photo_size_select_large e433
+photo_size_select_small e434
+php eb8f
+piano e521
+piano_off e520
+picture_as_pdf e415
+picture_in_picture e8aa
+picture_in_picture_alt e911
+pie_chart e6c4
+pie_chart_outline f044
+pin f045
+pin_drop e55e
+pin_end e767
+pin_invoke e763
+pinch eb38
+pivot_table_chart e9ce
+pix eaa3
+place e55f
+plagiarism ea5a
+play_arrow e037
+play_circle e1c4
+play_circle_fill e038
+play_circle_filled e038
+play_circle_outline e039
+play_disabled ef6a
+play_for_work e906
+play_lesson f047
+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
+point_of_sale f17e
+policy ea17
+poll e801
+polyline ebbb
+polymer e8ab
+pool eb48
+portable_wifi_off e0ce
+portrait e416
+post_add ea20
+power e63c
+power_input e336
+power_off e646
+power_settings_new e8ac
+precision_manufacturing f049
+pregnant_woman e91e
+present_to_all e0df
+preview f1c5
+price_change f04a
+price_check f04b
+print e8ad
+print_disabled e9cf
+priority_high e645
+privacy_tip f0dc
+private_connectivity e744
+production_quantity_limits e1d1
+propane ec14
+propane_tank ec13
+psychology ea4a
+psychology_alt f8ea
+public e80b
+public_off f1ca
+publish e255
+published_with_changes f232
+punch_clock eaa8
+push_pin f10d
+qr_code ef6b
+qr_code_2 e00a
+qr_code_scanner f206
+query_builder e8ae
+query_stats e4fc
+question_answer e8af
+question_mark eb8b
+queue e03c
+queue_music e03d
+queue_play_next e066
+quick_contacts_dialer e0cf
+quick_contacts_mail e0d0
+quickreply ef6c
+quiz f04c
+quora ea98
+r_mobiledata f04d
+radar f04e
+radio e03e
+radio_button_checked e837
+radio_button_off e836
+radio_button_on e837
+radio_button_unchecked e836
+railway_alert e9d1
+ramen_dining ea64
+ramp_left eb9c
+ramp_right eb96
+rate_review e560
+raw_off f04f
+raw_on f050
+read_more ef6d
+real_estate_agent e73a
+receipt e8b0
+receipt_long ef6e
+recent_actors e03f
+recommend e9d2
+record_voice_over e91f
+rectangle eb54
+recycling e760
+reddit eaa0
+redeem e8b1
+redo e15a
+reduce_capacity f21c
+refresh e5d5
+remember_me f051
+remove e15b
+remove_circle e15c
+remove_circle_outline e15d
+remove_done e9d3
+remove_from_queue e067
+remove_moderator e9d4
+remove_red_eye e417
+remove_road ebfc
+remove_shopping_cart e928
+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 e160
+report_gmailerrorred f052
+report_off e170
+report_problem e8b2
+request_page f22c
+request_quote f1b6
+reset_tv e9d9
+restart_alt f053
+restaurant e56c
+restaurant_menu e561
+restore e8b3
+restore_from_trash e938
+restore_page e929
+reviews f054
+rice_bowl f1f5
+ring_volume e0d1
+rocket eba5
+rocket_launch eb9b
+roller_shades ec12
+roller_shades_closed ec11
+roller_skating ebcd
+roofing f201
+room e8b4
+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
+rowing e921
+rss_feed e0e5
+rsvp f055
+rtt e9ad
+rule f1c2
+rule_folder f1c9
+run_circle ef6f
+running_with_errors e51d
+rv_hookup e642
+safety_check ebef
+safety_divider e1cc
+sailing e502
+sanitizer f21d
+satellite e562
+satellite_alt eb3a
+save e161
+save_alt e171
+save_as eb60
+saved_search ea11
+savings e2eb
+scale eb5f
+scanner e329
+scatter_plot e268
+schedule e8b5
+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_rotation e1c1
+screen_rotation_alt ebee
+screen_search_desktop ef70
+screen_share e0e2
+screenshot f056
+screenshot_monitor ec08
+scuba_diving ebce
+sd e9dd
+sd_card e623
+sd_card_alert f057
+sd_storage e1c2
+search e8b6
+search_off ea76
+security e32a
+security_update f058
+security_update_good f059
+security_update_warning f05a
+segment e94b
+select_all e162
+self_improvement ea78
+sell f05b
+send e163
+send_and_archive ea0c
+send_time_extension eadb
+send_to_mobile f05c
+sensor_door f1b5
+sensor_occupied ec10
+sensor_window f1b4
+sensors e51e
+sensors_off e51f
+sentiment_dissatisfied e811
+sentiment_neutral e812
+sentiment_satisfied e813
+sentiment_satisfied_alt e0ed
+sentiment_very_dissatisfied e814
+sentiment_very_satisfied e815
+set_meal f1ea
+settings e8b8
+settings_accessibility f05d
+settings_applications e8b9
+settings_backup_restore e8ba
+settings_bluetooth e8bb
+settings_brightness e8bd
+settings_cell e8bc
+settings_display e8bd
+settings_ethernet e8be
+settings_input_antenna e8bf
+settings_input_component e8c0
+settings_input_composite e8c1
+settings_input_hdmi e8c2
+settings_input_svideo e8c3
+settings_overscan e8c4
+settings_phone e8c5
+settings_power e8c6
+settings_remote e8c7
+settings_suggest f05e
+settings_system_daydream e1c3
+settings_voice e8c8
+severe_cold ebd3
+shape_line f8d3
+share e80d
+share_arrival_time e524
+share_location f05f
+shield e9e0
+shield_moon eaa9
+shop e8c9
+shop_2 e19e
+shop_two e8ca
+shopify ea9d
+shopping_bag f1cc
+shopping_basket e8cb
+shopping_cart e8cc
+shopping_cart_checkout eb88
+short_text e261
+shortcut f060
+show_chart e6e1
+shower f061
+shuffle e043
+shuffle_on e9e1
+shutter_speed e43d
+sick f220
+sign_language ebe5
+signal_cellular_0_bar f0a8
+signal_cellular_4_bar e1c8
+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_wifi_0_bar f0b0
+signal_wifi_4_bar e1d8
+signal_wifi_4_bar_lock e1d9
+signal_wifi_bad f063
+signal_wifi_connected_no_internet_4 f064
+signal_wifi_off e1da
+signal_wifi_statusbar_4_bar f065
+signal_wifi_statusbar_connected_no_internet_4 f066
+signal_wifi_statusbar_null f067
+signpost eb91
+sim_card e32b
+sim_card_alert e624
+sim_card_download f068
+single_bed ea48
+sip f069
+skateboarding e511
+skip_next e044
+skip_previous e045
+sledding e512
+slideshow e41b
+slow_motion_video e068
+smart_button f1c1
+smart_display f06a
+smart_screen f06b
+smart_toy f06c
+smartphone e32c
+smoke_free eb4a
+smoking_rooms eb4b
+sms e625
+sms_failed e626
+snapchat ea6e
+snippet_folder f1c7
+snooze e046
+snowboarding e513
+snowmobile e503
+snowshoeing e514
+soap f1b2
+social_distance e1cb
+solar_power ec0f
+sort e164
+sort_by_alpha e053
+sos ebf7
+soup_kitchen e7d3
+source f1c4
+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
+speed e9e4
+spellcheck e8ce
+splitscreen f06d
+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
+square eb36
+square_foot ea49
+ssid_chart eb66
+stacked_bar_chart e9e6
+stacked_line_chart f22b
+stadium eb90
+stairs f1a9
+star e838
+star_border e83a
+star_border_purple500 f099
+star_half e839
+star_outline f06f
+star_purple500 f09a
+star_rate f0ec
+stars e8d0
+start e089
+stay_current_landscape e0d3
+stay_current_portrait e0d4
+stay_primary_landscape e0d5
+stay_primary_portrait e0d6
+sticky_note_2 f1fc
+stop e047
+stop_circle ef71
+stop_screen_share e0e3
+storage e1db
+store e8d1
+store_mall_directory e563
+storefront ea12
+storm f070
+straight eb95
+straighten e41c
+stream e9e9
+streetview e56e
+strikethrough_s e257
+stroller f1ae
+style e41d
+subdirectory_arrow_left e5d9
+subdirectory_arrow_right e5da
+subject e8d2
+subscript f111
+subscriptions e064
+subtitles e048
+subtitles_off ef72
+subway e56f
+summarize f071
+superscript f112
+supervised_user_circle e939
+supervisor_account e8d3
+support ef73
+support_agent f0e2
+surfing e515
+surround_sound e049
+swap_calls e0d7
+swap_horiz e8d4
+swap_horizontal_circle e933
+swap_vert e8d5
+swap_vert_circle e8d6
+swap_vertical_circle e8d6
+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_access_shortcut e7e1
+switch_access_shortcut_add e7e2
+switch_account e9ed
+switch_camera e41e
+switch_left f1d1
+switch_right f1d2
+switch_video e41f
+synagogue eab0
+sync e627
+sync_alt ea18
+sync_disabled e628
+sync_lock eaee
+sync_problem e629
+system_security_update f072
+system_security_update_good f073
+system_security_update_warning f074
+system_update e62a
+system_update_alt e8d7
+system_update_tv e8d7
+tab e8d8
+tab_unselected e8d9
+table_bar ead2
+table_chart e265
+table_restaurant eac6
+table_rows f101
+table_view f1be
+tablet e32f
+tablet_android e330
+tablet_mac e331
+tag e9ef
+tag_faces e420
+takeout_dining ea74
+tap_and_play e62b
+tapas f1e9
+task f075
+task_alt e2e6
+taxi_alert ef74
+telegram ea6b
+temple_buddhist eab3
+temple_hindu eaaf
+terminal eb8e
+terrain e564
+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_snippet f1c6
+textsms e0d8
+texture e421
+theater_comedy ea66
+theaters e8da
+thermostat f076
+thermostat_auto f077
+thumb_down e8db
+thumb_down_alt e816
+thumb_down_off_alt e9f2
+thumb_up e8dc
+thumb_up_alt e817
+thumb_up_off_alt e9f3
+thumbs_up_down e8dd
+thunderstorm ebdb
+tiktok ea7e
+time_to_leave e62c
+timelapse e422
+timeline e922
+timer e425
+timer_10 e423
+timer_10_select f07a
+timer_3 e424
+timer_3_select f07b
+timer_off e426
+tips_and_updates e79a
+tire_repair ebc8
+title e264
+toc e8de
+today e8df
+toggle_off e9f5
+toggle_on e9f6
+token ea25
+toll e8e0
+tonality e427
+topic f1c8
+tornado e199
+touch_app e913
+tour ef75
+toys e332
+track_changes e8e1
+traffic e565
+train e570
+tram e571
+transcribe f8ec
+transfer_within_a_station e572
+transform e428
+transgender e58d
+transit_enterexit e579
+translate e8e2
+travel_explore e2db
+trending_down e8e3
+trending_flat e8e4
+trending_neutral e8e4
+trending_up e8e5
+trip_origin e57b
+troubleshoot e1d2
+try f07c
+tsunami ebd8
+tty f1aa
+tune e429
+tungsten f07d
+turn_left eba6
+turn_right ebab
+turn_sharp_left eba7
+turn_sharp_right ebaa
+turn_slight_left eba4
+turn_slight_right eb9a
+turned_in e8e6
+turned_in_not e8e7
+tv e333
+tv_off e647
+two_wheeler e9f9
+type_specimen f8f0
+u_turn_left eba1
+u_turn_right eba2
+umbrella f1ad
+unarchive e169
+undo e166
+unfold_less e5d6
+unfold_less_double f8cf
+unfold_more e5d7
+unfold_more_double f8d0
+unpublished f236
+unsubscribe e0eb
+upcoming f07e
+update e923
+update_disabled e075
+upgrade f0fb
+upload f09b
+upload_file e9fc
+usb e1e0
+usb_off e4fa
+vaccines e138
+vape_free ebc6
+vaping_rooms ebcf
+verified ef76
+verified_user e8e8
+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_chat f8a0
+video_collection e04a
+video_file eb87
+video_label e071
+video_library e04a
+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_comfortable e42a
+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 e9fe
+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_off e8f5
+voice_chat e62e
+voice_over_off e94a
+voicemail e0d9
+volcano ebda
+volume_down e04d
+volume_mute e04e
+volume_off e04f
+volume_up e050
+volunteer_activism ea70
+vpn_key e0da
+vpn_key_off eb7a
+vpn_lock e62f
+vrpano f082
+wallet f8ff
+wallet_giftcard e8f6
+wallet_membership e8f7
+wallet_travel e8f8
+wallpaper e75f
+warehouse ebb8
+warning e002
+warning_amber f083
+wash f1b1
+watch e334
+watch_later e924
+watch_off eae3
+water f084
+water_damage f203
+water_drop e798
+waterfall_chart ea00
+waves e176
+waving_hand e766
+wb_auto e42c
+wb_cloudy e42d
+wb_incandescent e42e
+wb_iridescent e436
+wb_shade ea01
+wb_sunny e430
+wb_twilight e1c6
+wc e63d
+web e051
+web_asset e069
+web_asset_off e4f7
+web_stories e595
+webhook eb92
+wechat ea81
+weekend e16b
+west f1e6
+whatshot e80e
+wheelchair_pickup f1ab
+where_to_vote e177
+widgets e75e
+width_full f8f5
+width_normal f8f6
+width_wide f8f7
+wifi e63e
+wifi_1_bar e4ca
+wifi_2_bar e4d9
+wifi_calling ef77
+wifi_calling_3 f085
+wifi_channel eb6a
+wifi_find eb31
+wifi_lock e1e1
+wifi_off e648
+wifi_password eb6b
+wifi_protected_setup f0fc
+wifi_tethering e1e2
+wifi_tethering_error f086
+wifi_tethering_error_rounded f086
+wifi_tethering_off f087
+wind_power ec0c
+window f088
+wine_bar f1e8
+woman e13e
+woman_2 f8e7
+woo_commerce ea6d
+wordpress ea9f
+work e8f9
+work_history ec09
+work_off e942
+work_outline e943
+workspace_premium e7af
+workspaces e1a0
+wrap_text e25b
+wrong_location ef78
+wysiwyg f1c3
+yard f089
+youtube_searched_for e8fa
+zoom_in e8ff
+zoom_in_map eb2d
+zoom_out e900
+zoom_out_map e56b
diff --git a/src/styles/font/MaterialIconsRound-Regular.otf b/src/styles/font/MaterialIconsRound-Regular.otf
new file mode 100644
index 0000000..dacf094
Binary files /dev/null and b/src/styles/font/MaterialIconsRound-Regular.otf differ
diff --git a/src/styles/font/MaterialIconsSharp-Regular.codepoints b/src/styles/font/MaterialIconsSharp-Regular.codepoints
new file mode 100644
index 0000000..b66c99d
--- /dev/null
+++ b/src/styles/font/MaterialIconsSharp-Regular.codepoints
@@ -0,0 +1,2200 @@
+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
+20mp e95e
+21mp e95f
+22mp e960
+23mp e961
+24mp e962
+2k e963
+2k_plus e964
+2mp e965
+30fps efce
+30fps_select efcf
+360 e577
+3d_rotation e84d
+3g_mobiledata efd0
+3k e966
+3k_plus e967
+3mp e968
+3p efd1
+4g_mobiledata efd2
+4g_plus_mobiledata efd3
+4k e072
+4k_plus e969
+4mp e96a
+5g ef38
+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 e190
+access_alarms e191
+access_time e192
+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 e853
+account_tree e97a
+ad_units ef39
+adb e60e
+add e145
+add_a_photo e439
+add_alarm e193
+add_alert e003
+add_box e146
+add_business e729
+add_card eb86
+add_chart e97b
+add_circle e147
+add_circle_outline e148
+add_comment e266
+add_home f8eb
+add_home_work f8ed
+add_ic_call e97c
+add_link e178
+add_location e567
+add_location_alt ef3a
+add_moderator e97d
+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_panel_settings ef3d
+adobe ea96
+ads_click e762
+agriculture ea79
+air efd8
+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 e195
+airplanemode_inactive e194
+airplanemode_off e194
+airplanemode_on e195
+airplay e055
+airport_shuttle eb3c
+alarm e855
+alarm_add e856
+alarm_off e857
+alarm_on e858
+album e019
+align_horizontal_center e00f
+align_horizontal_left e00d
+align_horizontal_right e010
+align_vertical_bottom e015
+align_vertical_center e011
+align_vertical_top e00c
+all_inbox e97f
+all_inclusive eb3d
+all_out e90b
+alt_route f184
+alternate_email e0e6
+amp_stories ea13
+analytics ef3e
+anchor f1cd
+android e859
+animation e71c
+announcement e85a
+aod efda
+apartment ea40
+api f1b7
+app_blocking ef3f
+app_registration ef40
+app_settings_alt ef41
+app_shortcut eae4
+apple ea80
+approval e982
+apps e5c3
+apps_outage e7cc
+architecture ea3b
+archive e149
+area_chart e770
+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_drop_down e5c5
+arrow_drop_down_circle e5c6
+arrow_drop_up e5c7
+arrow_forward e5c8
+arrow_forward_ios e5e1
+arrow_left e5de
+arrow_outward f8ce
+arrow_right e5df
+arrow_right_alt e941
+arrow_upward e5d8
+art_track e060
+article ef42
+aspect_ratio e85b
+assessment e85c
+assignment e85d
+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_photo e3a0
+assured_workload eb6f
+atm e573
+attach_email ea5e
+attach_file e226
+attach_money e227
+attachment e2bc
+attractions ea52
+attribution efdb
+audio_file eb82
+audiotrack e3a1
+auto_awesome e65f
+auto_awesome_mosaic e660
+auto_awesome_motion e661
+auto_delete ea4c
+auto_fix_high e663
+auto_fix_normal e664
+auto_fix_off e665
+auto_graph e4fb
+auto_mode ec20
+auto_stories e666
+autofps_select efdc
+autorenew e863
+av_timer e01b
+baby_changing_station f19b
+back_hand e764
+backpack f19c
+backspace e14a
+backup e864
+backup_table ef43
+badge ea67
+bakery_dining ea53
+balance eaf6
+balcony e58f
+ballot e172
+bar_chart e26b
+batch_prediction f0f5
+bathroom efdd
+bathtub ea41
+battery_0_bar ebdc
+battery_1_bar ebd9
+battery_2_bar ebe0
+battery_3_bar ebdd
+battery_4_bar ebe2
+battery_5_bar ebd4
+battery_6_bar ebd2
+battery_alert e19c
+battery_charging_full e1a3
+battery_full e1a4
+battery_saver efde
+battery_std e1a5
+battery_unknown e1a6
+beach_access eb3e
+bed efdf
+bedroom_baby efe0
+bedroom_child efe1
+bedroom_parent efe2
+bedtime ef44
+bedtime_off eb76
+beenhere e52d
+bento f1f4
+bike_scooter ef45
+biotech ea3a
+blender efe3
+blind f8d6
+blinds e286
+blinds_closed ec1f
+block e14b
+bloodtype efe4
+bluetooth e1a7
+bluetooth_audio e60f
+bluetooth_connected e1a8
+bluetooth_disabled e1a9
+bluetooth_drive efe5
+bluetooth_searching e1aa
+blur_circular e3a2
+blur_linear e3a3
+blur_off e3a4
+blur_on e3a5
+bolt ea0b
+book e865
+book_online f217
+bookmark e866
+bookmark_add e598
+bookmark_added e599
+bookmark_border e867
+bookmark_outline e867
+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
+boy eb67
+branding_watermark e06b
+breakfast_dining ea54
+brightness_1 e3a6
+brightness_2 e3a7
+brightness_3 e3a8
+brightness_4 e3a9
+brightness_5 e3aa
+brightness_6 e3ab
+brightness_7 e3ac
+brightness_auto e1ab
+brightness_high e1ac
+brightness_low e1ad
+brightness_medium e1ae
+broadcast_on_home f8f8
+broadcast_on_personal f8f9
+broken_image e3ad
+browse_gallery ebd1
+browser_not_supported ef47
+browser_updated e7cf
+brunch_dining ea73
+brush e3ae
+bubble_chart e6dd
+bug_report e868
+build e869
+build_circle ef48
+bungalow e591
+burst_mode e43c
+bus_alert e98f
+business e0af
+business_center eb3f
+cabin e589
+cable efe6
+cached e86a
+cake e7e9
+calculate ea5f
+calendar_month ebcc
+calendar_today e935
+calendar_view_day e936
+calendar_view_month efe7
+calendar_view_week efe8
+call e0b0
+call_end e0b1
+call_made e0b2
+call_merge e0b3
+call_missed e0b4
+call_missed_outgoing e0e4
+call_received e0b5
+call_split e0b6
+call_to_action e06c
+camera e3af
+camera_alt e3b0
+camera_enhance e8fc
+camera_front e3b1
+camera_indoor efe9
+camera_outdoor efea
+camera_rear e3b2
+camera_roll e3b3
+cameraswitch efeb
+campaign ef49
+cancel e5c9
+cancel_presentation e0e9
+cancel_schedule_send ea39
+candlestick_chart ead4
+car_crash ebf2
+car_rental ea55
+car_repair ea56
+card_giftcard e8f6
+card_membership e8f7
+card_travel e8f8
+carpenter f1f8
+cases e992
+casino eb40
+cast e307
+cast_connected e308
+cast_for_education efec
+castle eab1
+catching_pokemon e508
+category e574
+celebration ea65
+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
+charging_station f19d
+chat e0b7
+chat_bubble e0ca
+chat_bubble_outline e0cb
+check e5ca
+check_box e834
+check_box_outline_blank e835
+check_circle e86c
+check_circle_outline e92d
+checklist e6b1
+checklist_rtl e6b3
+checkroom f19e
+chevron_left e5cb
+chevron_right e5cc
+child_care eb41
+child_friendly eb42
+chrome_reader_mode e86d
+church eaae
+circle ef4a
+circle_notifications e994
+class e86e
+clean_hands f21f
+cleaning_services f0ff
+clear e14c
+clear_all e0b8
+close e5cd
+close_fullscreen f1cf
+closed_caption e01c
+closed_caption_disabled f1dc
+closed_caption_off e996
+cloud e2bd
+cloud_circle e2be
+cloud_done e2bf
+cloud_download e2c0
+cloud_off e2c1
+cloud_queue e2c2
+cloud_sync eb5a
+cloud_upload e2c3
+co2 e7b0
+co_present eaf0
+code e86f
+code_off e4f3
+coffee efef
+coffee_maker eff0
+collections e3b6
+collections_bookmark e431
+color_lens e3b7
+colorize e3b8
+comment e0b9
+comment_bank ea4e
+comments_disabled e7a2
+commit eaf5
+commute e940
+compare e3b9
+compare_arrows e915
+compass_calibration e57c
+compost e761
+compress e94d
+computer e30a
+confirmation_num e638
+confirmation_number e638
+connect_without_contact f223
+connected_tv e998
+connecting_airports e7c9
+construction ea3c
+contact_emergency f8d1
+contact_mail e0d0
+contact_page f22e
+contact_phone e0cf
+contact_support e94c
+contactless ea71
+contacts e0ba
+content_copy f08a
+content_cut f08b
+content_paste f098
+content_paste_go ea8e
+content_paste_off e4f8
+content_paste_search ea9b
+contrast eb37
+control_camera e074
+control_point e3ba
+control_point_duplicate e3bb
+cookie eaac
+copy f08a
+copy_all e2ec
+copyright e90c
+coronavirus f221
+corporate_fare f1d0
+cottage e587
+countertops f1f7
+create e150
+create_new_folder e2cc
+credit_card e870
+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 e3c1
+crop_free e3c2
+crop_landscape e3c3
+crop_original e3c4
+crop_portrait e3c5
+crop_rotate e437
+crop_square e3c6
+cruelty_free e799
+css eb93
+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
+cut f08b
+cyclone ebd5
+dangerous e99a
+dark_mode e51c
+dashboard e871
+dashboard_customize e99b
+data_array ead1
+data_exploration e76f
+data_object ead3
+data_saver_off eff2
+data_saver_on eff3
+data_thresholding eb9f
+data_usage e1af
+dataset f8ee
+dataset_linked f8ef
+date_range e916
+deblur eb77
+deck ea42
+dehaze e3c7
+delete e872
+delete_forever e92b
+delete_outline e92e
+delete_sweep e16c
+delivery_dining ea72
+density_large eba9
+density_medium eb9e
+density_small eba8
+departure_board e576
+description e873
+deselect ebb6
+design_services f10a
+desk f8f4
+desktop_access_disabled e99d
+desktop_mac e30b
+desktop_windows e30c
+details e3c8
+developer_board e30d
+developer_board_off e4ff
+developer_mode e1b0
+device_hub e335
+device_thermostat e1ff
+device_unknown e339
+devices e1b1
+devices_fold ebde
+devices_other e337
+dialer_sip e0bb
+dialpad e0bc
+diamond ead5
+difference eb7d
+dining eff4
+dinner_dining ea57
+directions e52e
+directions_bike e52f
+directions_boat e532
+directions_boat_filled eff5
+directions_bus e530
+directions_bus_filled eff6
+directions_car e531
+directions_car_filled eff7
+directions_ferry e532
+directions_off f10f
+directions_railway e534
+directions_railway_filled eff8
+directions_run e566
+directions_subway e533
+directions_subway_filled eff9
+directions_train e534
+directions_transit e535
+directions_transit_filled effa
+directions_walk e536
+dirty_lens ef4b
+disabled_by_default f230
+disabled_visible e76e
+disc_full e610
+discord ea6c
+discount ebc9
+display_settings eb97
+diversity_1 f8d7
+diversity_2 f8d8
+diversity_3 f8d9
+dnd_forwardslash e611
+dns e875
+do_disturb f08c
+do_disturb_alt f08d
+do_disturb_off f08e
+do_disturb_on f08f
+do_not_disturb e612
+do_not_disturb_alt e611
+do_not_disturb_off e643
+do_not_disturb_on e644
+do_not_disturb_on_total_silence effb
+do_not_step f19f
+do_not_touch f1b0
+dock e30e
+document_scanner e5fa
+domain e7ee
+domain_add eb62
+domain_disabled e0ef
+domain_verification ef4c
+done e876
+done_all e877
+done_outline e92f
+donut_large e917
+donut_small e918
+door_back effc
+door_front effd
+door_sliding effe
+doorbell efff
+double_arrow ea50
+downhill_skiing e509
+download f090
+download_done f091
+download_for_offline f000
+downloading f001
+drafts e151
+drag_handle e25d
+drag_indicator e945
+draw e746
+drive_eta e613
+drive_file_move e675
+drive_file_move_rtl e76d
+drive_file_rename_outline e9a2
+drive_folder_upload e9a3
+dry f1b3
+dry_cleaning ea58
+duo e9a5
+dvr e1b2
+dynamic_feed ea14
+dynamic_form f1bf
+e_mobiledata f002
+earbuds f003
+earbuds_battery f004
+east f1df
+eco ea35
+edgesensor_high f005
+edgesensor_low f006
+edit e3c9
+edit_attributes e578
+edit_calendar e742
+edit_location e568
+edit_location_alt e1c5
+edit_note e745
+edit_notifications e525
+edit_off e950
+edit_road ef4d
+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
+elevator f1a0
+email e0be
+emergency e1eb
+emergency_recording ebf4
+emergency_share ebf6
+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
+energy_savings_leaf ec1a
+engineering ea3d
+enhance_photo_translate e8fc
+enhanced_encryption e63f
+equalizer e01d
+error e000
+error_outline e001
+escalator f1a1
+escalator_warning f1ac
+euro ea15
+euro_symbol e926
+ev_station e56d
+event e878
+event_available e614
+event_busy e615
+event_note e616
+event_repeat eb7b
+event_seat e903
+exit_to_app e879
+expand e94f
+expand_circle_down e7cd
+expand_less e5ce
+expand_more e5cf
+explicit e01e
+explore e87a
+explore_off e9a8
+exposure e3ca
+exposure_minus_1 e3cb
+exposure_minus_2 e3cc
+exposure_neg_1 e3cb
+exposure_neg_2 e3cc
+exposure_plus_1 e3cd
+exposure_plus_2 e3ce
+exposure_zero e3cf
+extension e87b
+extension_off e4f5
+face e87c
+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
+facebook f234
+fact_check f0c5
+factory ebbc
+family_restroom f1a2
+fast_forward e01f
+fast_rewind e020
+fastfood e57a
+favorite e87d
+favorite_border e87e
+favorite_outline e87e
+fax ead8
+featured_play_list e06d
+featured_video e06e
+feed f009
+feedback e87f
+female e590
+fence f1f6
+festival ea68
+fiber_dvr e05d
+fiber_manual_record e061
+fiber_new e05e
+fiber_pin e06a
+fiber_smart_record e062
+file_copy e173
+file_download e2c4
+file_download_done e9aa
+file_download_off e4fe
+file_open eaf3
+file_present ea0e
+file_upload e2c6
+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_off eb57
+filter_none e3e0
+filter_tilt_shift e3e2
+filter_vintage e3e3
+find_in_page e880
+find_replace e881
+fingerprint e90d
+fire_extinguisher f1d8
+fire_hydrant_alt f8f1
+fire_truck f8f2
+fireplace ea43
+first_page e5dc
+fit_screen ea10
+fitbit e82b
+fitness_center eb43
+flag e153
+flag_circle eaf8
+flaky ef50
+flare e3e4
+flash_auto e3e5
+flash_off e3e6
+flash_on e3e7
+flashlight_off f00a
+flashlight_on f00b
+flatware f00c
+flight e539
+flight_class e7cb
+flight_land e904
+flight_takeoff e905
+flip e3e8
+flip_camera_android ea37
+flip_camera_ios ea38
+flip_to_back e882
+flip_to_front e883
+flood ebe6
+flourescent f00d
+fluorescent f00d
+flutter_dash e00b
+fmd_bad f00e
+fmd_good f00f
+folder e2c7
+folder_copy ebbd
+folder_delete eb34
+folder_off eb83
+folder_open e2c8
+folder_shared e2c9
+folder_special e617
+folder_zip eb2c
+follow_the_signs f222
+font_download e167
+font_download_off e4f9
+food_bank f1f2
+forest ea99
+fork_left eba0
+fork_right ebac
+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_indent_decrease e23d
+format_indent_increase e23e
+format_italic e23f
+format_line_spacing e240
+format_list_bulleted e241
+format_list_numbered e242
+format_list_numbered_rtl e267
+format_overline eb65
+format_paint e243
+format_quote e244
+format_shapes e25e
+format_size e245
+format_strikethrough e246
+format_textdirection_l_to_r e247
+format_textdirection_r_to_l e248
+format_underline e765
+format_underlined e765
+fort eaad
+forum e0bf
+forward e154
+forward_10 e056
+forward_30 e057
+forward_5 e058
+forward_to_inbox f187
+foundation f200
+free_breakfast eb44
+free_cancellation e748
+front_hand e769
+fullscreen e5d0
+fullscreen_exit e5d1
+functions e24a
+g_mobiledata f010
+g_translate e927
+gamepad e30f
+games e021
+garage f011
+gas_meter ec19
+gavel e90e
+generating_tokens e749
+gesture e155
+get_app e884
+gif e908
+gif_box e7a3
+girl eb68
+gite e58b
+golf_course eb45
+gpp_bad f012
+gpp_good f013
+gpp_maybe f014
+gps_fixed e1b3
+gps_not_fixed e1b4
+gps_off e1b5
+grade e885
+gradient e3e9
+grading ea4f
+grain e3ea
+graphic_eq e1b8
+grass f205
+grid_3x3 f015
+grid_4x4 f016
+grid_goldenratio f017
+grid_off e3eb
+grid_on e3ec
+grid_view e9b0
+group e7ef
+group_add e7f0
+group_off e747
+group_remove e7ad
+group_work e886
+groups f233
+groups_2 f8df
+groups_3 f8e0
+h_mobiledata f018
+h_plus_mobiledata f019
+hail e9b1
+handshake ebcb
+handyman f10b
+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 e310
+headset_mic e311
+headset_off e33a
+healing e3f3
+health_and_safety e1d5
+hearing e023
+hearing_disabled f104
+heart_broken eac2
+heat_pump ec18
+height ea16
+help e887
+help_center f1c0
+help_outline e8fd
+hevc f021
+hexagon eb39
+hide_image f022
+hide_source f023
+high_quality e024
+highlight e25f
+highlight_alt ef52
+highlight_off e888
+highlight_remove e888
+hiking e50a
+history e889
+history_edu ea3e
+history_toggle_off f17d
+hive eaa6
+hls eb8a
+hls_off eb8c
+holiday_village e58a
+home e88a
+home_max f024
+home_mini f025
+home_repair_service f100
+home_work ea09
+horizontal_distribute e014
+horizontal_rule f108
+horizontal_split e947
+hot_tub eb46
+hotel e53a
+hotel_class e743
+hourglass_bottom ea5c
+hourglass_disabled ef53
+hourglass_empty e88b
+hourglass_full e88c
+hourglass_top ea5b
+house ea44
+house_siding f202
+houseboat e584
+how_to_reg e174
+how_to_vote e175
+html eb7e
+http e902
+https e88d
+hub e9f4
+hvac f10e
+ice_skating e50b
+icecream ea69
+image e3f4
+image_aspect_ratio e3f5
+image_not_supported f116
+image_search e43f
+imagesearch_roller e9b4
+import_contacts e0e0
+import_export e0c3
+important_devices e912
+inbox e156
+incomplete_circle e79b
+indeterminate_check_box e909
+info e88e
+info_outline e88f
+input e890
+insert_chart e24b
+insert_chart_outlined e26a
+insert_comment e24c
+insert_drive_file e24d
+insert_emoticon e24e
+insert_invitation e24f
+insert_link e250
+insert_page_break eaca
+insert_photo e251
+insights f092
+install_desktop eb71
+install_mobile eb72
+integration_instructions ef54
+interests e7c8
+interpreter_mode e83b
+inventory e179
+inventory_2 e1a1
+invert_colors e891
+invert_colors_off e0c4
+invert_colors_on e891
+ios_share e6b8
+iron e583
+iso e3f6
+javascript eb7c
+join_full eaeb
+join_inner eaf4
+join_left eaf2
+join_right eaea
+kayaking e50c
+kebab_dining e842
+key e73c
+key_off eb84
+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_command_key eae7
+keyboard_control eae1
+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_hide e31a
+keyboard_option_key eae8
+keyboard_return e31b
+keyboard_tab e31c
+keyboard_voice e31d
+king_bed ea45
+kitchen eb47
+kitesurfing e50d
+label e892
+label_important e937
+label_important_outline e948
+label_off e9b6
+label_outline e893
+lan eb2f
+landscape e3f7
+landslide ebd7
+language e894
+laptop e31e
+laptop_chromebook e31f
+laptop_mac e320
+laptop_windows e321
+last_page e5dd
+launch e895
+layers e53b
+layers_clear e53c
+leaderboard f20c
+leak_add e3f8
+leak_remove e3f9
+leave_bags_at_home f23b
+legend_toggle f11b
+lens e3fa
+lens_blur f029
+library_add e02e
+library_add_check e9b7
+library_books e02f
+library_music e030
+light f02a
+light_mode e518
+lightbulb e0f0
+lightbulb_circle ebfe
+lightbulb_outline e90f
+line_axis ea9a
+line_style e919
+line_weight e91a
+linear_scale e260
+link e157
+link_off e16f
+linked_camera e438
+liquor ea60
+list e896
+list_alt e0ee
+live_help e0c6
+live_tv e639
+living f02b
+local_activity e53f
+local_airport e53d
+local_atm e53e
+local_attraction e53f
+local_bar e540
+local_cafe e541
+local_car_wash e542
+local_convenience_store e543
+local_dining e556
+local_drink e544
+local_fire_department ef55
+local_florist e545
+local_gas_station e546
+local_grocery_store e547
+local_hospital e548
+local_hotel e549
+local_laundry_service e54a
+local_library e54b
+local_mall e54c
+local_movies e54d
+local_offer e54e
+local_parking e54f
+local_pharmacy e550
+local_phone e551
+local_pizza e552
+local_play e553
+local_police ef56
+local_post_office e554
+local_print_shop e555
+local_printshop e555
+local_restaurant e556
+local_see e557
+local_shipping e558
+local_taxi e559
+location_city e7f1
+location_disabled e1b6
+location_history e55a
+location_off e0c7
+location_on e0c8
+location_searching e1b7
+lock e897
+lock_clock ef57
+lock_open e898
+lock_outline e899
+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 e028
+loupe e402
+low_priority e16d
+loyalty e89a
+lte_mobiledata f02c
+lte_plus_mobiledata f02d
+luggage f235
+lunch_dining ea61
+lyrics ec0b
+macro_off f8d2
+mail e158
+mail_lock ec0a
+mail_outline e0e1
+male e58e
+man e4eb
+man_2 f8e1
+man_3 f8e2
+man_4 f8e3
+manage_accounts f02e
+manage_history ebe7
+manage_search f02f
+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
+masks f218
+maximize e930
+media_bluetooth_off f031
+media_bluetooth_on f032
+mediation efa7
+medical_information ebed
+medical_services f109
+medication f033
+medication_liquid ea87
+meeting_room eb4f
+memory e322
+menu e5d2
+menu_book ea19
+menu_open e9bd
+merge eb98
+merge_type e252
+message e0c9
+messenger e0ca
+messenger_outline e0cb
+mic e029
+mic_external_off ef59
+mic_external_on ef5a
+mic_none e02a
+mic_off e02b
+microwave f204
+military_tech ea3f
+minimize e931
+minor_crash ebf1
+miscellaneous_services f10c
+missed_video_call e073
+mms e618
+mobile_friendly e200
+mobile_off e201
+mobile_screen_share e0e7
+mobiledata_off f034
+mode f097
+mode_comment e253
+mode_edit e254
+mode_edit_outline f035
+mode_fan_off ec17
+mode_night f036
+mode_of_travel e7ce
+mode_standby f037
+model_training f0cf
+monetization_on e263
+money e57d
+money_off e25c
+money_off_csred f038
+monitor ef5b
+monitor_heart eaa2
+monitor_weight f039
+monochrome_photos e403
+mood e7f2
+mood_bad e7f3
+moped eb28
+more e619
+more_horiz eae1
+more_time ea5d
+more_vert e5d4
+mosque eab2
+motion_photos_auto f03a
+motion_photos_off e9c0
+motion_photos_on e9c1
+motion_photos_pause f227
+motion_photos_paused e9c2
+motorcycle e91b
+mouse e323
+move_down eb61
+move_to_inbox e168
+move_up eb64
+movie e02c
+movie_creation e404
+movie_filter e43a
+moving e501
+mp e9c3
+multiline_chart e6df
+multiple_stop f1b9
+multitrack_audio e1b8
+museum ea36
+music_note e405
+music_off e440
+music_video e063
+my_library_add e02e
+my_library_books e02f
+my_library_music e030
+my_location e55c
+nat ef5c
+nature e406
+nature_people e407
+navigate_before e408
+navigate_next e409
+navigation e55d
+near_me e569
+near_me_disabled f1ef
+nearby_error f03b
+nearby_off f03c
+nest_cam_wired_stand ec16
+network_cell e1b9
+network_check e640
+network_locked e61a
+network_ping ebca
+network_wifi e1ba
+network_wifi_1_bar ebe4
+network_wifi_2_bar ebd6
+network_wifi_3_bar ebe1
+new_label e609
+new_releases e031
+newspaper eb81
+next_plan ef5d
+next_week e16a
+nfc e1bb
+night_shelter f1f1
+nightlife ea62
+nightlight f03d
+nightlight_round ef5e
+nights_stay ea46
+no_accounts f03e
+no_adult_content f8fe
+no_backpack f237
+no_cell f1a4
+no_crash ebf0
+no_drinks f1a5
+no_encryption e641
+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 e0cc
+no_stroller f1af
+no_transfer f1d5
+noise_aware ebec
+noise_control_off ebf3
+nordic_walking e50e
+north f1e0
+north_east f1e1
+north_west f1e2
+not_accessible f0fe
+not_interested e033
+not_listed_location e575
+not_started f0d1
+note e06f
+note_add e89c
+note_alt f040
+notes e26c
+notification_add e399
+notification_important e004
+notifications e7f4
+notifications_active e7f7
+notifications_none e7f5
+notifications_off e7f6
+notifications_on e7f7
+notifications_paused e7f8
+now_wallpaper e75f
+now_widgets e75e
+numbers eac7
+offline_bolt e932
+offline_pin e90a
+offline_share e9c5
+oil_barrel ec15
+on_device_training ebfd
+ondemand_video e63a
+online_prediction f0eb
+opacity e91c
+open_in_browser e89d
+open_in_full f1ce
+open_in_new e89e
+open_in_new_off e4f6
+open_with e89f
+other_houses e58c
+outbond f228
+outbound e1ca
+outbox ef5f
+outdoor_grill ea47
+outlet f1d4
+outlined_flag e16e
+output ebbe
+padding e9c8
+pages e7f9
+pageview e8a0
+paid f041
+palette e40a
+pan_tool e925
+pan_tool_alt ebb9
+panorama e40b
+panorama_fish_eye e40c
+panorama_fisheye e40c
+panorama_horizontal e40d
+panorama_horizontal_select ef60
+panorama_photosphere e9c9
+panorama_photosphere_select e9ca
+panorama_vertical e40e
+panorama_vertical_select ef61
+panorama_wide_angle e40f
+panorama_wide_angle_select ef62
+paragliding e50f
+park ea63
+party_mode e7fa
+password f042
+paste f098
+pattern f043
+pause e034
+pause_circle e1a2
+pause_circle_filled e035
+pause_circle_outline e036
+pause_presentation e0ea
+payment e8a1
+payments ef63
+paypal ea8d
+pedal_bike eb29
+pending ef64
+pending_actions f1bb
+pentagon eb50
+people e7fb
+people_alt ea21
+people_outline e7fc
+percent eb58
+perm_camera_mic e8a2
+perm_contact_cal e8a3
+perm_contact_calendar e8a3
+perm_data_setting e8a4
+perm_device_info e8a5
+perm_device_information e8a5
+perm_identity e8a6
+perm_media e8a7
+perm_phone_msg e8a8
+perm_scan_wifi e8a9
+person e7fd
+person_2 f8e4
+person_3 f8e5
+person_4 f8e6
+person_add e7fe
+person_add_alt ea4d
+person_add_alt_1 ef65
+person_add_disabled e9cb
+person_off e510
+person_outline e7ff
+person_pin e55a
+person_pin_circle e56a
+person_remove ef66
+person_remove_alt_1 ef67
+person_search f106
+personal_injury e6da
+personal_video e63b
+pest_control f0fa
+pest_control_rodent f0fd
+pets e91d
+phishing ead7
+phone e0cd
+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_setup e0de
+photo e410
+photo_album e411
+photo_camera e412
+photo_camera_back ef68
+photo_camera_front ef69
+photo_filter e43b
+photo_library e413
+photo_size_select_actual e432
+photo_size_select_large e433
+photo_size_select_small e434
+php eb8f
+piano e521
+piano_off e520
+picture_as_pdf e415
+picture_in_picture e8aa
+picture_in_picture_alt e911
+pie_chart e6c4
+pie_chart_outline f044
+pin f045
+pin_drop e55e
+pin_end e767
+pin_invoke e763
+pinch eb38
+pivot_table_chart e9ce
+pix eaa3
+place e55f
+plagiarism ea5a
+play_arrow e037
+play_circle e1c4
+play_circle_fill e038
+play_circle_filled e038
+play_circle_outline e039
+play_disabled ef6a
+play_for_work e906
+play_lesson f047
+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
+point_of_sale f17e
+policy ea17
+poll e801
+polyline ebbb
+polymer e8ab
+pool eb48
+portable_wifi_off e0ce
+portrait e416
+post_add ea20
+power e63c
+power_input e336
+power_off e646
+power_settings_new e8ac
+precision_manufacturing f049
+pregnant_woman e91e
+present_to_all e0df
+preview f1c5
+price_change f04a
+price_check f04b
+print e8ad
+print_disabled e9cf
+priority_high e645
+privacy_tip f0dc
+private_connectivity e744
+production_quantity_limits e1d1
+propane ec14
+propane_tank ec13
+psychology ea4a
+psychology_alt f8ea
+public e80b
+public_off f1ca
+publish e255
+published_with_changes f232
+punch_clock eaa8
+push_pin f10d
+qr_code ef6b
+qr_code_2 e00a
+qr_code_scanner f206
+query_builder e8ae
+query_stats e4fc
+question_answer e8af
+question_mark eb8b
+queue e03c
+queue_music e03d
+queue_play_next e066
+quick_contacts_dialer e0cf
+quick_contacts_mail e0d0
+quickreply ef6c
+quiz f04c
+quora ea98
+r_mobiledata f04d
+radar f04e
+radio e03e
+radio_button_checked e837
+radio_button_off e836
+radio_button_on e837
+radio_button_unchecked e836
+railway_alert e9d1
+ramen_dining ea64
+ramp_left eb9c
+ramp_right eb96
+rate_review e560
+raw_off f04f
+raw_on f050
+read_more ef6d
+real_estate_agent e73a
+receipt e8b0
+receipt_long ef6e
+recent_actors e03f
+recommend e9d2
+record_voice_over e91f
+rectangle eb54
+recycling e760
+reddit eaa0
+redeem e8b1
+redo e15a
+reduce_capacity f21c
+refresh e5d5
+remember_me f051
+remove e15b
+remove_circle e15c
+remove_circle_outline e15d
+remove_done e9d3
+remove_from_queue e067
+remove_moderator e9d4
+remove_red_eye e417
+remove_road ebfc
+remove_shopping_cart e928
+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 e160
+report_gmailerrorred f052
+report_off e170
+report_problem e8b2
+request_page f22c
+request_quote f1b6
+reset_tv e9d9
+restart_alt f053
+restaurant e56c
+restaurant_menu e561
+restore e8b3
+restore_from_trash e938
+restore_page e929
+reviews f054
+rice_bowl f1f5
+ring_volume e0d1
+rocket eba5
+rocket_launch eb9b
+roller_shades ec12
+roller_shades_closed ec11
+roller_skating ebcd
+roofing f201
+room e8b4
+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
+rowing e921
+rss_feed e0e5
+rsvp f055
+rtt e9ad
+rule f1c2
+rule_folder f1c9
+run_circle ef6f
+running_with_errors e51d
+rv_hookup e642
+safety_check ebef
+safety_divider e1cc
+sailing e502
+sanitizer f21d
+satellite e562
+satellite_alt eb3a
+save e161
+save_alt e171
+save_as eb60
+saved_search ea11
+savings e2eb
+scale eb5f
+scanner e329
+scatter_plot e268
+schedule e8b5
+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_rotation e1c1
+screen_rotation_alt ebee
+screen_search_desktop ef70
+screen_share e0e2
+screenshot f056
+screenshot_monitor ec08
+scuba_diving ebce
+sd e9dd
+sd_card e623
+sd_card_alert f057
+sd_storage e1c2
+search e8b6
+search_off ea76
+security e32a
+security_update f058
+security_update_good f059
+security_update_warning f05a
+segment e94b
+select_all e162
+self_improvement ea78
+sell f05b
+send e163
+send_and_archive ea0c
+send_time_extension eadb
+send_to_mobile f05c
+sensor_door f1b5
+sensor_occupied ec10
+sensor_window f1b4
+sensors e51e
+sensors_off e51f
+sentiment_dissatisfied e811
+sentiment_neutral e812
+sentiment_satisfied e813
+sentiment_satisfied_alt e0ed
+sentiment_very_dissatisfied e814
+sentiment_very_satisfied e815
+set_meal f1ea
+settings e8b8
+settings_accessibility f05d
+settings_applications e8b9
+settings_backup_restore e8ba
+settings_bluetooth e8bb
+settings_brightness e8bd
+settings_cell e8bc
+settings_display e8bd
+settings_ethernet e8be
+settings_input_antenna e8bf
+settings_input_component e8c0
+settings_input_composite e8c1
+settings_input_hdmi e8c2
+settings_input_svideo e8c3
+settings_overscan e8c4
+settings_phone e8c5
+settings_power e8c6
+settings_remote e8c7
+settings_suggest f05e
+settings_system_daydream e1c3
+settings_voice e8c8
+severe_cold ebd3
+shape_line f8d3
+share e80d
+share_arrival_time e524
+share_location f05f
+shield e9e0
+shield_moon eaa9
+shop e8c9
+shop_2 e19e
+shop_two e8ca
+shopify ea9d
+shopping_bag f1cc
+shopping_basket e8cb
+shopping_cart e8cc
+shopping_cart_checkout eb88
+short_text e261
+shortcut f060
+show_chart e6e1
+shower f061
+shuffle e043
+shuffle_on e9e1
+shutter_speed e43d
+sick f220
+sign_language ebe5
+signal_cellular_0_bar f0a8
+signal_cellular_4_bar e1c8
+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_wifi_0_bar f0b0
+signal_wifi_4_bar e1d8
+signal_wifi_4_bar_lock e1d9
+signal_wifi_bad f063
+signal_wifi_connected_no_internet_4 f064
+signal_wifi_off e1da
+signal_wifi_statusbar_4_bar f065
+signal_wifi_statusbar_connected_no_internet_4 f066
+signal_wifi_statusbar_null f067
+signpost eb91
+sim_card e32b
+sim_card_alert e624
+sim_card_download f068
+single_bed ea48
+sip f069
+skateboarding e511
+skip_next e044
+skip_previous e045
+sledding e512
+slideshow e41b
+slow_motion_video e068
+smart_button f1c1
+smart_display f06a
+smart_screen f06b
+smart_toy f06c
+smartphone e32c
+smoke_free eb4a
+smoking_rooms eb4b
+sms e625
+sms_failed e626
+snapchat ea6e
+snippet_folder f1c7
+snooze e046
+snowboarding e513
+snowmobile e503
+snowshoeing e514
+soap f1b2
+social_distance e1cb
+solar_power ec0f
+sort e164
+sort_by_alpha e053
+sos ebf7
+soup_kitchen e7d3
+source f1c4
+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
+speed e9e4
+spellcheck e8ce
+splitscreen f06d
+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
+square eb36
+square_foot ea49
+ssid_chart eb66
+stacked_bar_chart e9e6
+stacked_line_chart f22b
+stadium eb90
+stairs f1a9
+star e838
+star_border e83a
+star_border_purple500 f099
+star_half e839
+star_outline f06f
+star_purple500 f09a
+star_rate f0ec
+stars e8d0
+start e089
+stay_current_landscape e0d3
+stay_current_portrait e0d4
+stay_primary_landscape e0d5
+stay_primary_portrait e0d6
+sticky_note_2 f1fc
+stop e047
+stop_circle ef71
+stop_screen_share e0e3
+storage e1db
+store e8d1
+store_mall_directory e563
+storefront ea12
+storm f070
+straight eb95
+straighten e41c
+stream e9e9
+streetview e56e
+strikethrough_s e257
+stroller f1ae
+style e41d
+subdirectory_arrow_left e5d9
+subdirectory_arrow_right e5da
+subject e8d2
+subscript f111
+subscriptions e064
+subtitles e048
+subtitles_off ef72
+subway e56f
+summarize f071
+superscript f112
+supervised_user_circle e939
+supervisor_account e8d3
+support ef73
+support_agent f0e2
+surfing e515
+surround_sound e049
+swap_calls e0d7
+swap_horiz e8d4
+swap_horizontal_circle e933
+swap_vert e8d5
+swap_vert_circle e8d6
+swap_vertical_circle e8d6
+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_access_shortcut e7e1
+switch_access_shortcut_add e7e2
+switch_account e9ed
+switch_camera e41e
+switch_left f1d1
+switch_right f1d2
+switch_video e41f
+synagogue eab0
+sync e627
+sync_alt ea18
+sync_disabled e628
+sync_lock eaee
+sync_problem e629
+system_security_update f072
+system_security_update_good f073
+system_security_update_warning f074
+system_update e62a
+system_update_alt e8d7
+system_update_tv e8d7
+tab e8d8
+tab_unselected e8d9
+table_bar ead2
+table_chart e265
+table_restaurant eac6
+table_rows f101
+table_view f1be
+tablet e32f
+tablet_android e330
+tablet_mac e331
+tag e9ef
+tag_faces e420
+takeout_dining ea74
+tap_and_play e62b
+tapas f1e9
+task f075
+task_alt e2e6
+taxi_alert ef74
+telegram ea6b
+temple_buddhist eab3
+temple_hindu eaaf
+terminal eb8e
+terrain e564
+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_snippet f1c6
+textsms e0d8
+texture e421
+theater_comedy ea66
+theaters e8da
+thermostat f076
+thermostat_auto f077
+thumb_down e8db
+thumb_down_alt e816
+thumb_down_off_alt e9f2
+thumb_up e8dc
+thumb_up_alt e817
+thumb_up_off_alt e9f3
+thumbs_up_down e8dd
+thunderstorm ebdb
+tiktok ea7e
+time_to_leave e62c
+timelapse e422
+timeline e922
+timer e425
+timer_10 e423
+timer_10_select f07a
+timer_3 e424
+timer_3_select f07b
+timer_off e426
+tips_and_updates e79a
+tire_repair ebc8
+title e264
+toc e8de
+today e8df
+toggle_off e9f5
+toggle_on e9f6
+token ea25
+toll e8e0
+tonality e427
+topic f1c8
+tornado e199
+touch_app e913
+tour ef75
+toys e332
+track_changes e8e1
+traffic e565
+train e570
+tram e571
+transcribe f8ec
+transfer_within_a_station e572
+transform e428
+transgender e58d
+transit_enterexit e579
+translate e8e2
+travel_explore e2db
+trending_down e8e3
+trending_flat e8e4
+trending_neutral e8e4
+trending_up e8e5
+trip_origin e57b
+troubleshoot e1d2
+try f07c
+tsunami ebd8
+tty f1aa
+tune e429
+tungsten f07d
+turn_left eba6
+turn_right ebab
+turn_sharp_left eba7
+turn_sharp_right ebaa
+turn_slight_left eba4
+turn_slight_right eb9a
+turned_in e8e6
+turned_in_not e8e7
+tv e333
+tv_off e647
+two_wheeler e9f9
+type_specimen f8f0
+u_turn_left eba1
+u_turn_right eba2
+umbrella f1ad
+unarchive e169
+undo e166
+unfold_less e5d6
+unfold_less_double f8cf
+unfold_more e5d7
+unfold_more_double f8d0
+unpublished f236
+unsubscribe e0eb
+upcoming f07e
+update e923
+update_disabled e075
+upgrade f0fb
+upload f09b
+upload_file e9fc
+usb e1e0
+usb_off e4fa
+vaccines e138
+vape_free ebc6
+vaping_rooms ebcf
+verified ef76
+verified_user e8e8
+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_chat f8a0
+video_collection e04a
+video_file eb87
+video_label e071
+video_library e04a
+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_comfortable e42a
+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 e9fe
+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_off e8f5
+voice_chat e62e
+voice_over_off e94a
+voicemail e0d9
+volcano ebda
+volume_down e04d
+volume_mute e04e
+volume_off e04f
+volume_up e050
+volunteer_activism ea70
+vpn_key e0da
+vpn_key_off eb7a
+vpn_lock e62f
+vrpano f082
+wallet f8ff
+wallet_giftcard e8f6
+wallet_membership e8f7
+wallet_travel e8f8
+wallpaper e75f
+warehouse ebb8
+warning e002
+warning_amber f083
+wash f1b1
+watch e334
+watch_later e924
+watch_off eae3
+water f084
+water_damage f203
+water_drop e798
+waterfall_chart ea00
+waves e176
+waving_hand e766
+wb_auto e42c
+wb_cloudy e42d
+wb_incandescent e42e
+wb_iridescent e436
+wb_shade ea01
+wb_sunny e430
+wb_twilight e1c6
+wc e63d
+web e051
+web_asset e069
+web_asset_off e4f7
+web_stories e595
+webhook eb92
+wechat ea81
+weekend e16b
+west f1e6
+whatshot e80e
+wheelchair_pickup f1ab
+where_to_vote e177
+widgets e75e
+width_full f8f5
+width_normal f8f6
+width_wide f8f7
+wifi e63e
+wifi_1_bar e4ca
+wifi_2_bar e4d9
+wifi_calling ef77
+wifi_calling_3 f085
+wifi_channel eb6a
+wifi_find eb31
+wifi_lock e1e1
+wifi_off e648
+wifi_password eb6b
+wifi_protected_setup f0fc
+wifi_tethering e1e2
+wifi_tethering_error f086
+wifi_tethering_error_rounded f086
+wifi_tethering_off f087
+wind_power ec0c
+window f088
+wine_bar f1e8
+woman e13e
+woman_2 f8e7
+woo_commerce ea6d
+wordpress ea9f
+work e8f9
+work_history ec09
+work_off e942
+work_outline e943
+workspace_premium e7af
+workspaces e1a0
+wrap_text e25b
+wrong_location ef78
+wysiwyg f1c3
+yard f089
+youtube_searched_for e8fa
+zoom_in e8ff
+zoom_in_map eb2d
+zoom_out e900
+zoom_out_map e56b
diff --git a/src/styles/font/MaterialIconsSharp-Regular.otf b/src/styles/font/MaterialIconsSharp-Regular.otf
new file mode 100644
index 0000000..b4fb2bc
Binary files /dev/null and b/src/styles/font/MaterialIconsSharp-Regular.otf differ
diff --git a/src/styles/font/MaterialIconsTwoTone-Regular.codepoints b/src/styles/font/MaterialIconsTwoTone-Regular.codepoints
new file mode 100644
index 0000000..9a40f74
--- /dev/null
+++ b/src/styles/font/MaterialIconsTwoTone-Regular.codepoints
@@ -0,0 +1,2238 @@
+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
+20mp e95e
+21mp e95f
+22mp e960
+23mp e961
+24mp e962
+2k e963
+2k_plus e964
+2mp e965
+30fps efce
+30fps_select efcf
+360 e577
+3d_rotation e84d
+3g_mobiledata efd0
+3k e966
+3k_plus e967
+3mp e968
+3p efd1
+4g_mobiledata efd2
+4g_plus_mobiledata efd3
+4k e072
+4k_plus e969
+4mp e96a
+5g ef38
+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 e190
+access_alarms e191
+access_time e192
+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 e853
+account_tree e97a
+ad_units ef39
+adb e60e
+add e145
+add_a_photo e439
+add_alarm e193
+add_alert e003
+add_box e146
+add_business e729
+add_card eb86
+add_chart e97b
+add_circle e147
+add_circle_outline e148
+add_comment e266
+add_home f8eb
+add_home_work f8ed
+add_ic_call e97c
+add_link e178
+add_location e567
+add_location_alt ef3a
+add_moderator e97d
+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_panel_settings ef3d
+adobe ea96
+ads_click e762
+agriculture ea79
+air efd8
+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 e195
+airplanemode_inactive e194
+airplanemode_off e194
+airplanemode_on e195
+airplay e055
+airport_shuttle eb3c
+alarm e855
+alarm_add e856
+alarm_off e857
+alarm_on e858
+album e019
+align_horizontal_center e00f
+align_horizontal_left e00d
+align_horizontal_right e010
+align_vertical_bottom e015
+align_vertical_center e011
+align_vertical_top e00c
+all_inbox e97f
+all_inclusive eb3d
+all_out e90b
+alt_route f184
+alternate_email e0e6
+amp_stories ea13
+analytics ef3e
+anchor f1cd
+android e859
+animation e71c
+announcement e85a
+aod efda
+apartment ea40
+api f1b7
+app_blocking ef3f
+app_registration ef40
+app_settings_alt ef41
+app_shortcut eae4
+apple ea80
+approval e982
+apps e5c3
+apps_outage e7cc
+architecture ea3b
+archive e149
+area_chart e770
+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_drop_down e5c5
+arrow_drop_down_circle e5c6
+arrow_drop_up e5c7
+arrow_forward e5c8
+arrow_forward_ios e5e1
+arrow_left e5de
+arrow_outward f8ce
+arrow_right e5df
+arrow_right_alt e941
+arrow_upward e5d8
+art_track e060
+article ef42
+aspect_ratio e85b
+assessment e85c
+assignment e85d
+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_photo e3a0
+assured_workload eb6f
+atm e573
+attach_email ea5e
+attach_file e226
+attach_money e227
+attachment e2bc
+attractions ea52
+attribution efdb
+audio_file eb82
+audiotrack e3a1
+auto_awesome e65f
+auto_awesome_mosaic e660
+auto_awesome_motion e661
+auto_delete ea4c
+auto_fix_high e663
+auto_fix_normal e664
+auto_fix_off e665
+auto_graph e4fb
+auto_mode ec20
+auto_stories e666
+autofps_select efdc
+autorenew e863
+av_timer e01b
+baby_changing_station f19b
+back_hand e764
+backpack f19c
+backspace e14a
+backup e864
+backup_table ef43
+badge ea67
+bakery_dining ea53
+balance eaf6
+balcony e58f
+ballot e172
+bar_chart e26b
+batch_prediction f0f5
+bathroom efdd
+bathtub ea41
+battery_0_bar ebdc
+battery_1_bar ebd9
+battery_20 f09c
+battery_2_bar ebe0
+battery_30 f09d
+battery_3_bar ebdd
+battery_4_bar ebe2
+battery_50 f09e
+battery_5_bar ebd4
+battery_60 f09f
+battery_6_bar ebd2
+battery_80 f0a0
+battery_90 f0a1
+battery_alert e19c
+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_full e1a4
+battery_saver efde
+battery_std e1a5
+battery_unknown e1a6
+beach_access eb3e
+bed efdf
+bedroom_baby efe0
+bedroom_child efe1
+bedroom_parent efe2
+bedtime ef44
+bedtime_off eb76
+beenhere e52d
+bento f1f4
+bike_scooter ef45
+biotech ea3a
+blender efe3
+blind f8d6
+blinds e286
+blinds_closed ec1f
+block e14b
+bloodtype efe4
+bluetooth e1a7
+bluetooth_audio e60f
+bluetooth_connected e1a8
+bluetooth_disabled e1a9
+bluetooth_drive efe5
+bluetooth_searching e1aa
+blur_circular e3a2
+blur_linear e3a3
+blur_off e3a4
+blur_on e3a5
+bolt ea0b
+book e865
+book_online f217
+bookmark e866
+bookmark_add e598
+bookmark_added e599
+bookmark_border e867
+bookmark_outline e867
+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
+boy eb67
+branding_watermark e06b
+breakfast_dining ea54
+brightness_1 e3a6
+brightness_2 e3a7
+brightness_3 e3a8
+brightness_4 e3a9
+brightness_5 e3aa
+brightness_6 e3ab
+brightness_7 e3ac
+brightness_auto e1ab
+brightness_high e1ac
+brightness_low e1ad
+brightness_medium e1ae
+broadcast_on_home f8f8
+broadcast_on_personal f8f9
+broken_image e3ad
+browse_gallery ebd1
+browser_not_supported ef47
+browser_updated e7cf
+brunch_dining ea73
+brush e3ae
+bubble_chart e6dd
+bug_report e868
+build e869
+build_circle ef48
+bungalow e591
+burst_mode e43c
+bus_alert e98f
+business e0af
+business_center eb3f
+cabin e589
+cable efe6
+cached e86a
+cake e7e9
+calculate ea5f
+calendar_month ebcc
+calendar_today e935
+calendar_view_day e936
+calendar_view_month efe7
+calendar_view_week efe8
+call e0b0
+call_end e0b1
+call_made e0b2
+call_merge e0b3
+call_missed e0b4
+call_missed_outgoing e0e4
+call_received e0b5
+call_split e0b6
+call_to_action e06c
+camera e3af
+camera_alt e3b0
+camera_enhance e8fc
+camera_front e3b1
+camera_indoor efe9
+camera_outdoor efea
+camera_rear e3b2
+camera_roll e3b3
+cameraswitch efeb
+campaign ef49
+cancel e5c9
+cancel_presentation e0e9
+cancel_schedule_send ea39
+candlestick_chart ead4
+car_crash ebf2
+car_rental ea55
+car_repair ea56
+card_giftcard e8f6
+card_membership e8f7
+card_travel e8f8
+carpenter f1f8
+cases e992
+casino eb40
+cast e307
+cast_connected e308
+cast_for_education efec
+castle eab1
+catching_pokemon e508
+category e574
+celebration ea65
+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
+charging_station f19d
+chat e0b7
+chat_bubble e0ca
+chat_bubble_outline e0cb
+check e5ca
+check_box e834
+check_box_outline_blank e835
+check_circle e86c
+check_circle_outline e92d
+checklist e6b1
+checklist_rtl e6b3
+checkroom f19e
+chevron_left e5cb
+chevron_right e5cc
+child_care eb41
+child_friendly eb42
+chrome_reader_mode e86d
+church eaae
+circle ef4a
+circle_notifications e994
+class e86e
+clean_hands f21f
+cleaning_services f0ff
+clear e14c
+clear_all e0b8
+close e5cd
+close_fullscreen f1cf
+closed_caption e01c
+closed_caption_disabled f1dc
+closed_caption_off e996
+cloud e2bd
+cloud_circle e2be
+cloud_done e2bf
+cloud_download e2c0
+cloud_off e2c1
+cloud_queue e2c2
+cloud_sync eb5a
+cloud_upload e2c3
+co2 e7b0
+co_present eaf0
+code e86f
+code_off e4f3
+coffee efef
+coffee_maker eff0
+collections e3b6
+collections_bookmark e431
+color_lens e3b7
+colorize e3b8
+comment e0b9
+comment_bank ea4e
+comments_disabled e7a2
+commit eaf5
+commute e940
+compare e3b9
+compare_arrows e915
+compass_calibration e57c
+compost e761
+compress e94d
+computer e30a
+confirmation_num e638
+confirmation_number e638
+connect_without_contact f223
+connected_tv e998
+connecting_airports e7c9
+construction ea3c
+contact_emergency f8d1
+contact_mail e0d0
+contact_page f22e
+contact_phone e0cf
+contact_support e94c
+contactless ea71
+contacts e0ba
+content_copy f08a
+content_cut f08b
+content_paste f098
+content_paste_go ea8e
+content_paste_off e4f8
+content_paste_search ea9b
+contrast eb37
+control_camera e074
+control_point e3ba
+control_point_duplicate e3bb
+cookie eaac
+copy f08a
+copy_all e2ec
+copyright e90c
+coronavirus f221
+corporate_fare f1d0
+cottage e587
+countertops f1f7
+create e150
+create_new_folder e2cc
+credit_card e870
+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 e3c1
+crop_free e3c2
+crop_landscape e3c3
+crop_original e3c4
+crop_portrait e3c5
+crop_rotate e437
+crop_square e3c6
+cruelty_free e799
+css eb93
+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
+cut f08b
+cyclone ebd5
+dangerous e99a
+dark_mode e51c
+dashboard e871
+dashboard_customize e99b
+data_array ead1
+data_exploration e76f
+data_object ead3
+data_saver_off eff2
+data_saver_on eff3
+data_thresholding eb9f
+data_usage e1af
+dataset f8ee
+dataset_linked f8ef
+date_range e916
+deblur eb77
+deck ea42
+dehaze e3c7
+delete e872
+delete_forever e92b
+delete_outline e92e
+delete_sweep e16c
+delivery_dining ea72
+density_large eba9
+density_medium eb9e
+density_small eba8
+departure_board e576
+description e873
+deselect ebb6
+design_services f10a
+desk f8f4
+desktop_access_disabled e99d
+desktop_mac e30b
+desktop_windows e30c
+details e3c8
+developer_board e30d
+developer_board_off e4ff
+developer_mode e1b0
+device_hub e335
+device_thermostat e1ff
+device_unknown e339
+devices e1b1
+devices_fold ebde
+devices_other e337
+dialer_sip e0bb
+dialpad e0bc
+diamond ead5
+difference eb7d
+dining eff4
+dinner_dining ea57
+directions e52e
+directions_bike e52f
+directions_boat e532
+directions_boat_filled eff5
+directions_bus e530
+directions_bus_filled eff6
+directions_car e531
+directions_car_filled eff7
+directions_ferry e532
+directions_off f10f
+directions_railway e534
+directions_railway_filled eff8
+directions_run e566
+directions_subway e533
+directions_subway_filled eff9
+directions_train e534
+directions_transit e535
+directions_transit_filled effa
+directions_walk e536
+dirty_lens ef4b
+disabled_by_default f230
+disabled_visible e76e
+disc_full e610
+discord ea6c
+discount ebc9
+display_settings eb97
+diversity_1 f8d7
+diversity_2 f8d8
+diversity_3 f8d9
+dnd_forwardslash e611
+dns e875
+do_disturb f08c
+do_disturb_alt f08d
+do_disturb_off f08e
+do_disturb_on f08f
+do_not_disturb e612
+do_not_disturb_alt e611
+do_not_disturb_off e643
+do_not_disturb_on e644
+do_not_disturb_on_total_silence effb
+do_not_step f19f
+do_not_touch f1b0
+dock e30e
+document_scanner e5fa
+domain e7ee
+domain_add eb62
+domain_disabled e0ef
+domain_verification ef4c
+done e876
+done_all e877
+done_outline e92f
+donut_large e917
+donut_small e918
+door_back effc
+door_front effd
+door_sliding effe
+doorbell efff
+double_arrow ea50
+downhill_skiing e509
+download f090
+download_done f091
+download_for_offline f000
+downloading f001
+drafts e151
+drag_handle e25d
+drag_indicator e945
+draw e746
+drive_eta e613
+drive_file_move e675
+drive_file_move_rtl e76d
+drive_file_rename_outline e9a2
+drive_folder_upload e9a3
+dry f1b3
+dry_cleaning ea58
+duo e9a5
+dvr e1b2
+dynamic_feed ea14
+dynamic_form f1bf
+e_mobiledata f002
+earbuds f003
+earbuds_battery f004
+east f1df
+eco ea35
+edgesensor_high f005
+edgesensor_low f006
+edit e3c9
+edit_attributes e578
+edit_calendar e742
+edit_location e568
+edit_location_alt e1c5
+edit_note e745
+edit_notifications e525
+edit_off e950
+edit_road ef4d
+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
+elevator f1a0
+email e0be
+emergency e1eb
+emergency_recording ebf4
+emergency_share ebf6
+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
+energy_savings_leaf ec1a
+engineering ea3d
+enhance_photo_translate e8fc
+enhanced_encryption e63f
+equalizer e01d
+error e000
+error_outline e001
+escalator f1a1
+escalator_warning f1ac
+euro ea15
+euro_symbol e926
+ev_station e56d
+event e878
+event_available e614
+event_busy e615
+event_note e616
+event_repeat eb7b
+event_seat e903
+exit_to_app e879
+expand e94f
+expand_circle_down e7cd
+expand_less e5ce
+expand_more e5cf
+explicit e01e
+explore e87a
+explore_off e9a8
+exposure e3ca
+exposure_minus_1 e3cb
+exposure_minus_2 e3cc
+exposure_neg_1 e3cb
+exposure_neg_2 e3cc
+exposure_plus_1 e3cd
+exposure_plus_2 e3ce
+exposure_zero e3cf
+extension e87b
+extension_off e4f5
+face e87c
+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
+facebook f234
+fact_check f0c5
+factory ebbc
+family_restroom f1a2
+fast_forward e01f
+fast_rewind e020
+fastfood e57a
+favorite e87d
+favorite_border e87e
+favorite_outline e87e
+fax ead8
+featured_play_list e06d
+featured_video e06e
+feed f009
+feedback e87f
+female e590
+fence f1f6
+festival ea68
+fiber_dvr e05d
+fiber_manual_record e061
+fiber_new e05e
+fiber_pin e06a
+fiber_smart_record e062
+file_copy e173
+file_download e2c4
+file_download_done e9aa
+file_download_off e4fe
+file_open eaf3
+file_present ea0e
+file_upload e2c6
+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_off eb57
+filter_none e3e0
+filter_tilt_shift e3e2
+filter_vintage e3e3
+find_in_page e880
+find_replace e881
+fingerprint e90d
+fire_extinguisher f1d8
+fire_hydrant_alt f8f1
+fire_truck f8f2
+fireplace ea43
+first_page e5dc
+fit_screen ea10
+fitbit e82b
+fitness_center eb43
+flag e153
+flag_circle eaf8
+flaky ef50
+flare e3e4
+flash_auto e3e5
+flash_off e3e6
+flash_on e3e7
+flashlight_off f00a
+flashlight_on f00b
+flatware f00c
+flight e539
+flight_class e7cb
+flight_land e904
+flight_takeoff e905
+flip e3e8
+flip_camera_android ea37
+flip_camera_ios ea38
+flip_to_back e882
+flip_to_front e883
+flood ebe6
+flourescent f00d
+fluorescent f00d
+flutter_dash e00b
+fmd_bad f00e
+fmd_good f00f
+folder e2c7
+folder_copy ebbd
+folder_delete eb34
+folder_off eb83
+folder_open e2c8
+folder_shared e2c9
+folder_special e617
+folder_zip eb2c
+follow_the_signs f222
+font_download e167
+font_download_off e4f9
+food_bank f1f2
+forest ea99
+fork_left eba0
+fork_right ebac
+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_indent_decrease e23d
+format_indent_increase e23e
+format_italic e23f
+format_line_spacing e240
+format_list_bulleted e241
+format_list_numbered e242
+format_list_numbered_rtl e267
+format_overline eb65
+format_paint e243
+format_quote e244
+format_shapes e25e
+format_size e245
+format_strikethrough e246
+format_textdirection_l_to_r e247
+format_textdirection_r_to_l e248
+format_underline e765
+format_underlined e765
+fort eaad
+forum e0bf
+forward e154
+forward_10 e056
+forward_30 e057
+forward_5 e058
+forward_to_inbox f187
+foundation f200
+free_breakfast eb44
+free_cancellation e748
+front_hand e769
+fullscreen e5d0
+fullscreen_exit e5d1
+functions e24a
+g_mobiledata f010
+g_translate e927
+gamepad e30f
+games e021
+garage f011
+gas_meter ec19
+gavel e90e
+generating_tokens e749
+gesture e155
+get_app e884
+gif e908
+gif_box e7a3
+girl eb68
+gite e58b
+golf_course eb45
+gpp_bad f012
+gpp_good f013
+gpp_maybe f014
+gps_fixed e1b3
+gps_not_fixed e1b4
+gps_off e1b5
+grade e885
+gradient e3e9
+grading ea4f
+grain e3ea
+graphic_eq e1b8
+grass f205
+grid_3x3 f015
+grid_4x4 f016
+grid_goldenratio f017
+grid_off e3eb
+grid_on e3ec
+grid_view e9b0
+group e7ef
+group_add e7f0
+group_off e747
+group_remove e7ad
+group_work e886
+groups f233
+groups_2 f8df
+groups_3 f8e0
+h_mobiledata f018
+h_plus_mobiledata f019
+hail e9b1
+handshake ebcb
+handyman f10b
+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 e310
+headset_mic e311
+headset_off e33a
+healing e3f3
+health_and_safety e1d5
+hearing e023
+hearing_disabled f104
+heart_broken eac2
+heat_pump ec18
+height ea16
+help e887
+help_center f1c0
+help_outline e8fd
+hevc f021
+hexagon eb39
+hide_image f022
+hide_source f023
+high_quality e024
+highlight e25f
+highlight_alt ef52
+highlight_off e888
+highlight_remove e888
+hiking e50a
+history e889
+history_edu ea3e
+history_toggle_off f17d
+hive eaa6
+hls eb8a
+hls_off eb8c
+holiday_village e58a
+home e88a
+home_max f024
+home_mini f025
+home_repair_service f100
+home_work ea09
+horizontal_distribute e014
+horizontal_rule f108
+horizontal_split e947
+hot_tub eb46
+hotel e53a
+hotel_class e743
+hourglass_bottom ea5c
+hourglass_disabled ef53
+hourglass_empty e88b
+hourglass_full e88c
+hourglass_top ea5b
+house ea44
+house_siding f202
+houseboat e584
+how_to_reg e174
+how_to_vote e175
+html eb7e
+http e902
+https e88d
+hub e9f4
+hvac f10e
+ice_skating e50b
+icecream ea69
+image e3f4
+image_aspect_ratio e3f5
+image_not_supported f116
+image_search e43f
+imagesearch_roller e9b4
+import_contacts e0e0
+import_export e0c3
+important_devices e912
+inbox e156
+incomplete_circle e79b
+indeterminate_check_box e909
+info e88e
+info_outline e88f
+input e890
+insert_chart e24b
+insert_chart_outlined e26a
+insert_comment e24c
+insert_drive_file e24d
+insert_emoticon e24e
+insert_invitation e24f
+insert_link e250
+insert_page_break eaca
+insert_photo e251
+insights f092
+install_desktop eb71
+install_mobile eb72
+integration_instructions ef54
+interests e7c8
+interpreter_mode e83b
+inventory e179
+inventory_2 e1a1
+invert_colors e891
+invert_colors_off e0c4
+invert_colors_on e891
+ios_share e6b8
+iron e583
+iso e3f6
+javascript eb7c
+join_full eaeb
+join_inner eaf4
+join_left eaf2
+join_right eaea
+kayaking e50c
+kebab_dining e842
+key e73c
+key_off eb84
+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_command_key eae7
+keyboard_control eae1
+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_hide e31a
+keyboard_option_key eae8
+keyboard_return e31b
+keyboard_tab e31c
+keyboard_voice e31d
+king_bed ea45
+kitchen eb47
+kitesurfing e50d
+label e892
+label_important e937
+label_important_outline e948
+label_off e9b6
+label_outline e893
+lan eb2f
+landscape e3f7
+landslide ebd7
+language e894
+laptop e31e
+laptop_chromebook e31f
+laptop_mac e320
+laptop_windows e321
+last_page e5dd
+launch e895
+layers e53b
+layers_clear e53c
+leaderboard f20c
+leak_add e3f8
+leak_remove e3f9
+leave_bags_at_home f23b
+legend_toggle f11b
+lens e3fa
+lens_blur f029
+library_add e02e
+library_add_check e9b7
+library_books e02f
+library_music e030
+light f02a
+light_mode e518
+lightbulb e0f0
+lightbulb_circle ebfe
+lightbulb_outline e90f
+line_axis ea9a
+line_style e919
+line_weight e91a
+linear_scale e260
+link e157
+link_off e16f
+linked_camera e438
+liquor ea60
+list e896
+list_alt e0ee
+live_help e0c6
+live_tv e639
+living f02b
+local_activity e53f
+local_airport e53d
+local_atm e53e
+local_attraction e53f
+local_bar e540
+local_cafe e541
+local_car_wash e542
+local_convenience_store e543
+local_dining e556
+local_drink e544
+local_fire_department ef55
+local_florist e545
+local_gas_station e546
+local_grocery_store e547
+local_hospital e548
+local_hotel e549
+local_laundry_service e54a
+local_library e54b
+local_mall e54c
+local_movies e54d
+local_offer e54e
+local_parking e54f
+local_pharmacy e550
+local_phone e551
+local_pizza e552
+local_play e553
+local_police ef56
+local_post_office e554
+local_print_shop e555
+local_printshop e555
+local_restaurant e556
+local_see e557
+local_shipping e558
+local_taxi e559
+location_city e7f1
+location_disabled e1b6
+location_history e55a
+location_off e0c7
+location_on e0c8
+location_searching e1b7
+lock e897
+lock_clock ef57
+lock_open e898
+lock_outline e899
+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 e028
+loupe e402
+low_priority e16d
+loyalty e89a
+lte_mobiledata f02c
+lte_plus_mobiledata f02d
+luggage f235
+lunch_dining ea61
+lyrics ec0b
+macro_off f8d2
+mail e158
+mail_lock ec0a
+mail_outline e0e1
+male e58e
+man e4eb
+man_2 f8e1
+man_3 f8e2
+man_4 f8e3
+manage_accounts f02e
+manage_history ebe7
+manage_search f02f
+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
+masks f218
+maximize e930
+media_bluetooth_off f031
+media_bluetooth_on f032
+mediation efa7
+medical_information ebed
+medical_services f109
+medication f033
+medication_liquid ea87
+meeting_room eb4f
+memory e322
+menu e5d2
+menu_book ea19
+menu_open e9bd
+merge eb98
+merge_type e252
+message e0c9
+messenger e0ca
+messenger_outline e0cb
+mic e029
+mic_external_off ef59
+mic_external_on ef5a
+mic_none e02a
+mic_off e02b
+microwave f204
+military_tech ea3f
+minimize e931
+minor_crash ebf1
+miscellaneous_services f10c
+missed_video_call e073
+mms e618
+mobile_friendly e200
+mobile_off e201
+mobile_screen_share e0e7
+mobiledata_off f034
+mode f097
+mode_comment e253
+mode_edit e254
+mode_edit_outline f035
+mode_fan_off ec17
+mode_night f036
+mode_of_travel e7ce
+mode_standby f037
+model_training f0cf
+monetization_on e263
+money e57d
+money_off e25c
+money_off_csred f038
+monitor ef5b
+monitor_heart eaa2
+monitor_weight f039
+monochrome_photos e403
+mood e7f2
+mood_bad e7f3
+moped eb28
+more e619
+more_horiz eae1
+more_time ea5d
+more_vert e5d4
+mosque eab2
+motion_photos_auto f03a
+motion_photos_off e9c0
+motion_photos_on e9c1
+motion_photos_pause f227
+motion_photos_paused e9c2
+motorcycle e91b
+mouse e323
+move_down eb61
+move_to_inbox e168
+move_up eb64
+movie e02c
+movie_creation e404
+movie_filter e43a
+moving e501
+mp e9c3
+multiline_chart e6df
+multiple_stop f1b9
+multitrack_audio e1b8
+museum ea36
+music_note e405
+music_off e440
+music_video e063
+my_library_add e02e
+my_library_books e02f
+my_library_music e030
+my_location e55c
+nat ef5c
+nature e406
+nature_people e407
+navigate_before e408
+navigate_next e409
+navigation e55d
+near_me e569
+near_me_disabled f1ef
+nearby_error f03b
+nearby_off f03c
+nest_cam_wired_stand ec16
+network_cell e1b9
+network_check e640
+network_locked e61a
+network_ping ebca
+network_wifi e1ba
+network_wifi_1_bar ebe4
+network_wifi_2_bar ebd6
+network_wifi_3_bar ebe1
+new_label e609
+new_releases e031
+newspaper eb81
+next_plan ef5d
+next_week e16a
+nfc e1bb
+night_shelter f1f1
+nightlife ea62
+nightlight f03d
+nightlight_round ef5e
+nights_stay ea46
+no_accounts f03e
+no_adult_content f8fe
+no_backpack f237
+no_cell f1a4
+no_crash ebf0
+no_drinks f1a5
+no_encryption e641
+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 e0cc
+no_stroller f1af
+no_transfer f1d5
+noise_aware ebec
+noise_control_off ebf3
+nordic_walking e50e
+north f1e0
+north_east f1e1
+north_west f1e2
+not_accessible f0fe
+not_interested e033
+not_listed_location e575
+not_started f0d1
+note e06f
+note_add e89c
+note_alt f040
+notes e26c
+notification_add e399
+notification_important e004
+notifications e7f4
+notifications_active e7f7
+notifications_none e7f5
+notifications_off e7f6
+notifications_on e7f7
+notifications_paused e7f8
+now_wallpaper e75f
+now_widgets e75e
+numbers eac7
+offline_bolt e932
+offline_pin e90a
+offline_share e9c5
+oil_barrel ec15
+on_device_training ebfd
+ondemand_video e63a
+online_prediction f0eb
+opacity e91c
+open_in_browser e89d
+open_in_full f1ce
+open_in_new e89e
+open_in_new_off e4f6
+open_with e89f
+other_houses e58c
+outbond f228
+outbound e1ca
+outbox ef5f
+outdoor_grill ea47
+outlet f1d4
+outlined_flag e16e
+output ebbe
+padding e9c8
+pages e7f9
+pageview e8a0
+paid f041
+palette e40a
+pan_tool e925
+pan_tool_alt ebb9
+panorama e40b
+panorama_fish_eye e40c
+panorama_fisheye e40c
+panorama_horizontal e40d
+panorama_horizontal_select ef60
+panorama_photosphere e9c9
+panorama_photosphere_select e9ca
+panorama_vertical e40e
+panorama_vertical_select ef61
+panorama_wide_angle e40f
+panorama_wide_angle_select ef62
+paragliding e50f
+park ea63
+party_mode e7fa
+password f042
+paste f098
+pattern f043
+pause e034
+pause_circle e1a2
+pause_circle_filled e035
+pause_circle_outline e036
+pause_presentation e0ea
+payment e8a1
+payments ef63
+paypal ea8d
+pedal_bike eb29
+pending ef64
+pending_actions f1bb
+pentagon eb50
+people e7fb
+people_alt ea21
+people_outline e7fc
+percent eb58
+perm_camera_mic e8a2
+perm_contact_cal e8a3
+perm_contact_calendar e8a3
+perm_data_setting e8a4
+perm_device_info e8a5
+perm_device_information e8a5
+perm_identity e8a6
+perm_media e8a7
+perm_phone_msg e8a8
+perm_scan_wifi e8a9
+person e7fd
+person_2 f8e4
+person_3 f8e5
+person_4 f8e6
+person_add e7fe
+person_add_alt ea4d
+person_add_alt_1 ef65
+person_add_disabled e9cb
+person_off e510
+person_outline e7ff
+person_pin e55a
+person_pin_circle e56a
+person_remove ef66
+person_remove_alt_1 ef67
+person_search f106
+personal_injury e6da
+personal_video e63b
+pest_control f0fa
+pest_control_rodent f0fd
+pets e91d
+phishing ead7
+phone e0cd
+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_setup e0de
+photo e410
+photo_album e411
+photo_camera e412
+photo_camera_back ef68
+photo_camera_front ef69
+photo_filter e43b
+photo_library e413
+photo_size_select_actual e432
+photo_size_select_large e433
+photo_size_select_small e434
+php eb8f
+piano e521
+piano_off e520
+picture_as_pdf e415
+picture_in_picture e8aa
+picture_in_picture_alt e911
+pie_chart e6c4
+pie_chart_outline f044
+pin f045
+pin_drop e55e
+pin_end e767
+pin_invoke e763
+pinch eb38
+pivot_table_chart e9ce
+pix eaa3
+place e55f
+plagiarism ea5a
+play_arrow e037
+play_circle e1c4
+play_circle_fill e038
+play_circle_filled e038
+play_circle_outline e039
+play_disabled ef6a
+play_for_work e906
+play_lesson f047
+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
+point_of_sale f17e
+policy ea17
+poll e801
+polyline ebbb
+polymer e8ab
+pool eb48
+portable_wifi_off e0ce
+portrait e416
+post_add ea20
+power e63c
+power_input e336
+power_off e646
+power_settings_new e8ac
+precision_manufacturing f049
+pregnant_woman e91e
+present_to_all e0df
+preview f1c5
+price_change f04a
+price_check f04b
+print e8ad
+print_disabled e9cf
+priority_high e645
+privacy_tip f0dc
+private_connectivity e744
+production_quantity_limits e1d1
+propane ec14
+propane_tank ec13
+psychology ea4a
+psychology_alt f8ea
+public e80b
+public_off f1ca
+publish e255
+published_with_changes f232
+punch_clock eaa8
+push_pin f10d
+qr_code ef6b
+qr_code_2 e00a
+qr_code_scanner f206
+query_builder e8ae
+query_stats e4fc
+question_answer e8af
+question_mark eb8b
+queue e03c
+queue_music e03d
+queue_play_next e066
+quick_contacts_dialer e0cf
+quick_contacts_mail e0d0
+quickreply ef6c
+quiz f04c
+quora ea98
+r_mobiledata f04d
+radar f04e
+radio e03e
+radio_button_checked e837
+radio_button_off e836
+radio_button_on e837
+radio_button_unchecked e836
+railway_alert e9d1
+ramen_dining ea64
+ramp_left eb9c
+ramp_right eb96
+rate_review e560
+raw_off f04f
+raw_on f050
+read_more ef6d
+real_estate_agent e73a
+receipt e8b0
+receipt_long ef6e
+recent_actors e03f
+recommend e9d2
+record_voice_over e91f
+rectangle eb54
+recycling e760
+reddit eaa0
+redeem e8b1
+redo e15a
+reduce_capacity f21c
+refresh e5d5
+remember_me f051
+remove e15b
+remove_circle e15c
+remove_circle_outline e15d
+remove_done e9d3
+remove_from_queue e067
+remove_moderator e9d4
+remove_red_eye e417
+remove_road ebfc
+remove_shopping_cart e928
+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 e160
+report_gmailerrorred f052
+report_off e170
+report_problem e8b2
+request_page f22c
+request_quote f1b6
+reset_tv e9d9
+restart_alt f053
+restaurant e56c
+restaurant_menu e561
+restore e8b3
+restore_from_trash e938
+restore_page e929
+reviews f054
+rice_bowl f1f5
+ring_volume e0d1
+rocket eba5
+rocket_launch eb9b
+roller_shades ec12
+roller_shades_closed ec11
+roller_skating ebcd
+roofing f201
+room e8b4
+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
+rowing e921
+rss_feed e0e5
+rsvp f055
+rtt e9ad
+rule f1c2
+rule_folder f1c9
+run_circle ef6f
+running_with_errors e51d
+rv_hookup e642
+safety_check ebef
+safety_divider e1cc
+sailing e502
+sanitizer f21d
+satellite e562
+satellite_alt eb3a
+save e161
+save_alt e171
+save_as eb60
+saved_search ea11
+savings e2eb
+scale eb5f
+scanner e329
+scatter_plot e268
+schedule e8b5
+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_rotation e1c1
+screen_rotation_alt ebee
+screen_search_desktop ef70
+screen_share e0e2
+screenshot f056
+screenshot_monitor ec08
+scuba_diving ebce
+sd e9dd
+sd_card e623
+sd_card_alert f057
+sd_storage e1c2
+search e8b6
+search_off ea76
+security e32a
+security_update f058
+security_update_good f059
+security_update_warning f05a
+segment e94b
+select_all e162
+self_improvement ea78
+sell f05b
+send e163
+send_and_archive ea0c
+send_time_extension eadb
+send_to_mobile f05c
+sensor_door f1b5
+sensor_occupied ec10
+sensor_window f1b4
+sensors e51e
+sensors_off e51f
+sentiment_dissatisfied e811
+sentiment_neutral e812
+sentiment_satisfied e813
+sentiment_satisfied_alt e0ed
+sentiment_very_dissatisfied e814
+sentiment_very_satisfied e815
+set_meal f1ea
+settings e8b8
+settings_accessibility f05d
+settings_applications e8b9
+settings_backup_restore e8ba
+settings_bluetooth e8bb
+settings_brightness e8bd
+settings_cell e8bc
+settings_display e8bd
+settings_ethernet e8be
+settings_input_antenna e8bf
+settings_input_component e8c0
+settings_input_composite e8c1
+settings_input_hdmi e8c2
+settings_input_svideo e8c3
+settings_overscan e8c4
+settings_phone e8c5
+settings_power e8c6
+settings_remote e8c7
+settings_suggest f05e
+settings_system_daydream e1c3
+settings_voice e8c8
+severe_cold ebd3
+shape_line f8d3
+share e80d
+share_arrival_time e524
+share_location f05f
+shield e9e0
+shield_moon eaa9
+shop e8c9
+shop_2 e19e
+shop_two e8ca
+shopify ea9d
+shopping_bag f1cc
+shopping_basket e8cb
+shopping_cart e8cc
+shopping_cart_checkout eb88
+short_text e261
+shortcut f060
+show_chart e6e1
+shower f061
+shuffle e043
+shuffle_on e9e1
+shutter_speed e43d
+sick f220
+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_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_1_bar f0ad
+signal_cellular_connected_no_internet_2_bar f0ae
+signal_cellular_connected_no_internet_3_bar f0af
+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_wifi_0_bar f0b0
+signal_wifi_1_bar f0b1
+signal_wifi_1_bar_lock f0b2
+signal_wifi_2_bar f0b3
+signal_wifi_2_bar_lock f0b4
+signal_wifi_3_bar f0b5
+signal_wifi_3_bar_lock f0b6
+signal_wifi_4_bar e1d8
+signal_wifi_4_bar_lock e1d9
+signal_wifi_bad f063
+signal_wifi_connected_no_internet_0 f0f2
+signal_wifi_connected_no_internet_1 f0ee
+signal_wifi_connected_no_internet_2 f0f1
+signal_wifi_connected_no_internet_3 f0ed
+signal_wifi_connected_no_internet_4 f064
+signal_wifi_off e1da
+signal_wifi_statusbar_1_bar f0e6
+signal_wifi_statusbar_2_bar f0f0
+signal_wifi_statusbar_3_bar f0ea
+signal_wifi_statusbar_4_bar f065
+signal_wifi_statusbar_connected_no_internet f0f8
+signal_wifi_statusbar_connected_no_internet_1 f0e9
+signal_wifi_statusbar_connected_no_internet_2 f0f7
+signal_wifi_statusbar_connected_no_internet_3 f0e8
+signal_wifi_statusbar_connected_no_internet_4 f066
+signal_wifi_statusbar_not_connected f0ef
+signal_wifi_statusbar_null f067
+signpost eb91
+sim_card e32b
+sim_card_alert e624
+sim_card_download f068
+single_bed ea48
+sip f069
+skateboarding e511
+skip_next e044
+skip_previous e045
+sledding e512
+slideshow e41b
+slow_motion_video e068
+smart_button f1c1
+smart_display f06a
+smart_screen f06b
+smart_toy f06c
+smartphone e32c
+smoke_free eb4a
+smoking_rooms eb4b
+sms e625
+sms_failed e626
+snapchat ea6e
+snippet_folder f1c7
+snooze e046
+snowboarding e513
+snowmobile e503
+snowshoeing e514
+soap f1b2
+social_distance e1cb
+solar_power ec0f
+sort e164
+sort_by_alpha e053
+sos ebf7
+soup_kitchen e7d3
+source f1c4
+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
+speed e9e4
+spellcheck e8ce
+splitscreen f06d
+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
+square eb36
+square_foot ea49
+ssid_chart eb66
+stacked_bar_chart e9e6
+stacked_line_chart f22b
+stadium eb90
+stairs f1a9
+star e838
+star_border e83a
+star_border_purple500 f099
+star_half e839
+star_outline f06f
+star_purple500 f09a
+star_rate f0ec
+stars e8d0
+start e089
+stay_current_landscape e0d3
+stay_current_portrait e0d4
+stay_primary_landscape e0d5
+stay_primary_portrait e0d6
+sticky_note_2 f1fc
+stop e047
+stop_circle ef71
+stop_screen_share e0e3
+storage e1db
+store e8d1
+store_mall_directory e563
+storefront ea12
+storm f070
+straight eb95
+straighten e41c
+stream e9e9
+streetview e56e
+strikethrough_s e257
+stroller f1ae
+style e41d
+subdirectory_arrow_left e5d9
+subdirectory_arrow_right e5da
+subject e8d2
+subscript f111
+subscriptions e064
+subtitles e048
+subtitles_off ef72
+subway e56f
+summarize f071
+superscript f112
+supervised_user_circle e939
+supervisor_account e8d3
+support ef73
+support_agent f0e2
+surfing e515
+surround_sound e049
+swap_calls e0d7
+swap_horiz e8d4
+swap_horizontal_circle e933
+swap_vert e8d5
+swap_vert_circle e8d6
+swap_vertical_circle e8d6
+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_access_shortcut e7e1
+switch_access_shortcut_add e7e2
+switch_account e9ed
+switch_camera e41e
+switch_left f1d1
+switch_right f1d2
+switch_video e41f
+synagogue eab0
+sync e627
+sync_alt ea18
+sync_disabled e628
+sync_lock eaee
+sync_problem e629
+system_security_update f072
+system_security_update_good f073
+system_security_update_warning f074
+system_update e62a
+system_update_alt e8d7
+system_update_tv e8d7
+tab e8d8
+tab_unselected e8d9
+table_bar ead2
+table_chart e265
+table_restaurant eac6
+table_rows f101
+table_view f1be
+tablet e32f
+tablet_android e330
+tablet_mac e331
+tag e9ef
+tag_faces e420
+takeout_dining ea74
+tap_and_play e62b
+tapas f1e9
+task f075
+task_alt e2e6
+taxi_alert ef74
+telegram ea6b
+temple_buddhist eab3
+temple_hindu eaaf
+terminal eb8e
+terrain e564
+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_snippet f1c6
+textsms e0d8
+texture e421
+theater_comedy ea66
+theaters e8da
+thermostat f076
+thermostat_auto f077
+thumb_down e8db
+thumb_down_alt e816
+thumb_down_off_alt e9f2
+thumb_up e8dc
+thumb_up_alt e817
+thumb_up_off_alt e9f3
+thumbs_up_down e8dd
+thunderstorm ebdb
+tiktok ea7e
+time_to_leave e62c
+timelapse e422
+timeline e922
+timer e425
+timer_10 e423
+timer_10_select f07a
+timer_3 e424
+timer_3_select f07b
+timer_off e426
+tips_and_updates e79a
+tire_repair ebc8
+title e264
+toc e8de
+today e8df
+toggle_off e9f5
+toggle_on e9f6
+token ea25
+toll e8e0
+tonality e427
+topic f1c8
+tornado e199
+touch_app e913
+tour ef75
+toys e332
+track_changes e8e1
+traffic e565
+train e570
+tram e571
+transcribe f8ec
+transfer_within_a_station e572
+transform e428
+transgender e58d
+transit_enterexit e579
+translate e8e2
+travel_explore e2db
+trending_down e8e3
+trending_flat e8e4
+trending_neutral e8e4
+trending_up e8e5
+trip_origin e57b
+troubleshoot e1d2
+try f07c
+tsunami ebd8
+tty f1aa
+tune e429
+tungsten f07d
+turn_left eba6
+turn_right ebab
+turn_sharp_left eba7
+turn_sharp_right ebaa
+turn_slight_left eba4
+turn_slight_right eb9a
+turned_in e8e6
+turned_in_not e8e7
+tv e333
+tv_off e647
+two_wheeler e9f9
+type_specimen f8f0
+u_turn_left eba1
+u_turn_right eba2
+umbrella f1ad
+unarchive e169
+undo e166
+unfold_less e5d6
+unfold_less_double f8cf
+unfold_more e5d7
+unfold_more_double f8d0
+unpublished f236
+unsubscribe e0eb
+upcoming f07e
+update e923
+update_disabled e075
+upgrade f0fb
+upload f09b
+upload_file e9fc
+usb e1e0
+usb_off e4fa
+vaccines e138
+vape_free ebc6
+vaping_rooms ebcf
+verified ef76
+verified_user e8e8
+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_chat f8a0
+video_collection e04a
+video_file eb87
+video_label e071
+video_library e04a
+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_comfortable e42a
+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 e9fe
+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_off e8f5
+voice_chat e62e
+voice_over_off e94a
+voicemail e0d9
+volcano ebda
+volume_down e04d
+volume_mute e04e
+volume_off e04f
+volume_up e050
+volunteer_activism ea70
+vpn_key e0da
+vpn_key_off eb7a
+vpn_lock e62f
+vrpano f082
+wallet f8ff
+wallet_giftcard e8f6
+wallet_membership e8f7
+wallet_travel e8f8
+wallpaper e75f
+warehouse ebb8
+warning e002
+warning_amber f083
+wash f1b1
+watch e334
+watch_later e924
+watch_off eae3
+water f084
+water_damage f203
+water_drop e798
+waterfall_chart ea00
+waves e176
+waving_hand e766
+wb_auto e42c
+wb_cloudy e42d
+wb_incandescent e42e
+wb_iridescent e436
+wb_shade ea01
+wb_sunny e430
+wb_twilight e1c6
+wc e63d
+web e051
+web_asset e069
+web_asset_off e4f7
+web_stories e595
+webhook eb92
+wechat ea81
+weekend e16b
+west f1e6
+whatshot e80e
+wheelchair_pickup f1ab
+where_to_vote e177
+widgets e75e
+width_full f8f5
+width_normal f8f6
+width_wide f8f7
+wifi e63e
+wifi_1_bar e4ca
+wifi_2_bar e4d9
+wifi_calling ef77
+wifi_calling_1 f0e7
+wifi_calling_2 f0f6
+wifi_calling_3 f085
+wifi_channel eb6a
+wifi_find eb31
+wifi_lock e1e1
+wifi_off e648
+wifi_password eb6b
+wifi_protected_setup f0fc
+wifi_tethering e1e2
+wifi_tethering_error f086
+wifi_tethering_error_rounded f086
+wifi_tethering_off f087
+wind_power ec0c
+window f088
+wine_bar f1e8
+woman e13e
+woman_2 f8e7
+woo_commerce ea6d
+wordpress ea9f
+work e8f9
+work_history ec09
+work_off e942
+work_outline e943
+workspace_premium e7af
+workspaces e1a0
+wrap_text e25b
+wrong_location ef78
+wysiwyg f1c3
+yard f089
+youtube_searched_for e8fa
+zoom_in e8ff
+zoom_in_map eb2d
+zoom_out e900
+zoom_out_map e56b
diff --git a/src/styles/font/MaterialIconsTwoTone-Regular.otf b/src/styles/font/MaterialIconsTwoTone-Regular.otf
new file mode 100644
index 0000000..e4760e9
Binary files /dev/null and b/src/styles/font/MaterialIconsTwoTone-Regular.otf differ
diff --git a/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf b/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf
new file mode 100644
index 0000000..f430a79
Binary files /dev/null and b/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf differ
diff --git a/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2 b/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2
new file mode 100644
index 0000000..35818b5
Binary files /dev/null and b/src/styles/font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2 differ
diff --git a/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf b/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf
new file mode 100644
index 0000000..c1529de
Binary files /dev/null and b/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf differ
diff --git a/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 b/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2
new file mode 100644
index 0000000..e92882f
Binary files /dev/null and b/src/styles/font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2 differ
diff --git a/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf b/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf
new file mode 100644
index 0000000..8eb8efe
Binary files /dev/null and b/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf differ
diff --git a/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2 b/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2
new file mode 100644
index 0000000..bbd424a
Binary files /dev/null and b/src/styles/font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2 differ
diff --git a/src/styles/font/README.md b/src/styles/font/README.md
new file mode 100644
index 0000000..9885ae1
--- /dev/null
+++ b/src/styles/font/README.md
@@ -0,0 +1,28 @@
+This is the directory for Material Icons fonts—note that the font versions of these icons have not been updated since early 2022; the newer Material Symbols fonts are more current, and can be found at [../variablefont](https://github.com/google/material-design-icons/tree/master/variablefont).
+
+Material Icons are the non-variable classic icon fonts, while the Material Symbols variable fonts offer weight, optical size, grade and fill variations (with grade and Fill being intended also for animated effects).
+
+The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts:
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/src/styles/font/Roboto-Black.ttf b/src/styles/font/Roboto-Black.ttf
new file mode 100644
index 0000000..0112e7d
Binary files /dev/null and b/src/styles/font/Roboto-Black.ttf differ
diff --git a/src/styles/font/Roboto-BlackItalic.ttf b/src/styles/font/Roboto-BlackItalic.ttf
new file mode 100644
index 0000000..b2c6aca
Binary files /dev/null and b/src/styles/font/Roboto-BlackItalic.ttf differ
diff --git a/src/styles/font/Roboto-Bold.ttf b/src/styles/font/Roboto-Bold.ttf
new file mode 100644
index 0000000..43da14d
Binary files /dev/null and b/src/styles/font/Roboto-Bold.ttf differ
diff --git a/src/styles/font/Roboto-BoldItalic.ttf b/src/styles/font/Roboto-BoldItalic.ttf
new file mode 100644
index 0000000..bcfdab4
Binary files /dev/null and b/src/styles/font/Roboto-BoldItalic.ttf differ
diff --git a/src/styles/font/Roboto-Italic.ttf b/src/styles/font/Roboto-Italic.ttf
new file mode 100644
index 0000000..1b5eaa3
Binary files /dev/null and b/src/styles/font/Roboto-Italic.ttf differ
diff --git a/src/styles/font/Roboto-Light.ttf b/src/styles/font/Roboto-Light.ttf
new file mode 100644
index 0000000..e7307e7
Binary files /dev/null and b/src/styles/font/Roboto-Light.ttf differ
diff --git a/src/styles/font/Roboto-LightItalic.ttf b/src/styles/font/Roboto-LightItalic.ttf
new file mode 100644
index 0000000..2d277af
Binary files /dev/null and b/src/styles/font/Roboto-LightItalic.ttf differ
diff --git a/src/styles/font/Roboto-Medium.ttf b/src/styles/font/Roboto-Medium.ttf
new file mode 100644
index 0000000..ac0f908
Binary files /dev/null and b/src/styles/font/Roboto-Medium.ttf differ
diff --git a/src/styles/font/Roboto-MediumItalic.ttf b/src/styles/font/Roboto-MediumItalic.ttf
new file mode 100644
index 0000000..fc36a47
Binary files /dev/null and b/src/styles/font/Roboto-MediumItalic.ttf differ
diff --git a/src/styles/font/Roboto-Regular.ttf b/src/styles/font/Roboto-Regular.ttf
new file mode 100644
index 0000000..ddf4bfa
Binary files /dev/null and b/src/styles/font/Roboto-Regular.ttf differ
diff --git a/src/styles/font/Roboto-Thin.ttf b/src/styles/font/Roboto-Thin.ttf
new file mode 100644
index 0000000..2e0dee6
Binary files /dev/null and b/src/styles/font/Roboto-Thin.ttf differ
diff --git a/src/styles/font/Roboto-ThinItalic.ttf b/src/styles/font/Roboto-ThinItalic.ttf
new file mode 100644
index 0000000..084f9c0
Binary files /dev/null and b/src/styles/font/Roboto-ThinItalic.ttf differ
diff --git a/src/styles/fonts.css b/src/styles/fonts.css
new file mode 100644
index 0000000..8f24d09
--- /dev/null
+++ b/src/styles/fonts.css
@@ -0,0 +1,73 @@
+@font-face {
+ font-family: Material-Icons-Regular;
+ src: url("./font/MaterialIcons-Regular.ttf");
+}
+@font-face {
+ font-family: Material-Icons-Outlined-Regular;
+ src: url("./font/MaterialIconsOutlined-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Round-Regular;
+ src: url("./font/MaterialIconsRound-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Sharp-Regular;
+ src: url("./font/MaterialIconsSharp-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Two-Tone-Regular;
+ src: url("./font/MaterialIconsTwoTone-Regular.otf");
+}
+@font-face {
+ font-family: Material-Symbols-Outlined-Regular;
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Material-Symbols-Round-Regular;
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Material-Symbols-Sharp-Regular;
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Thin;
+ font-weight: 100;
+ src: url("./font/Roboto-Thin.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Light;
+ font-weight: 300;
+ src: url("./font/Roboto-Light.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Regular;
+ font-weight: 400;
+ src: url("./font/Roboto-Regular.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Medium;
+ font-weight: 500;
+ src: url("./font/Roboto-Medium.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Bold;
+ font-weight: 700;
+ src: url("./font/Roboto-Bold.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Black;
+ font-weight: 900;
+ src: url("./font/Roboto-Black.ttf");
+}
+
+/*# sourceMappingURL=fonts.css.map */
diff --git a/src/styles/fonts.css.map b/src/styles/fonts.css.map
new file mode 100644
index 0000000..4ea477c
--- /dev/null
+++ b/src/styles/fonts.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["fonts.sass"],"names":[],"mappings":"AAAA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA","file":"fonts.css"}
\ No newline at end of file
diff --git a/src/styles/fonts.sass b/src/styles/fonts.sass
new file mode 100644
index 0000000..f929205
--- /dev/null
+++ b/src/styles/fonts.sass
@@ -0,0 +1,70 @@
+@font-face
+ font-family: Material-Icons-Regular
+ src: url("./font/MaterialIcons-Regular.ttf")
+
+@font-face
+ font-family: Material-Icons-Outlined-Regular
+ src: url("./font/MaterialIconsOutlined-Regular.otf")
+
+@font-face
+ font-family: Material-Icons-Round-Regular
+ src: url("./font/MaterialIconsRound-Regular.otf")
+
+@font-face
+ font-family: Material-Icons-Sharp-Regular
+ src: url("./font/MaterialIconsSharp-Regular.otf")
+
+@font-face
+ font-family: Material-Icons-Two-Tone-Regular
+ src: url("./font/MaterialIconsTwoTone-Regular.otf")
+
+@font-face
+ font-family: Material-Symbols-Outlined-Regular
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf")
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2") format("woff2")
+
+@font-face
+ font-family: Material-Symbols-Round-Regular
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf")
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2") format("woff2")
+
+@font-face
+ font-family: Material-Symbols-Sharp-Regular
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf")
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2") format("woff2")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Thin
+ font-weight: 100
+ src: url("./font/Roboto-Thin.ttf")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Light
+ font-weight: 300
+ src: url("./font/Roboto-Light.ttf")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Regular
+ font-weight: 400
+ src: url("./font/Roboto-Regular.ttf")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Medium
+ font-weight: 500
+ src: url("./font/Roboto-Medium.ttf")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Bold
+ font-weight: 700
+ src: url("./font/Roboto-Bold.ttf")
+
+@font-face
+ font-family: Roboto
+ font-face-name: Black
+ font-weight: 900
+ src: url("./font/Roboto-Black.ttf")
diff --git a/src/styles/generics.css b/src/styles/generics.css
new file mode 100644
index 0000000..97647df
--- /dev/null
+++ b/src/styles/generics.css
@@ -0,0 +1,1669 @@
+@import "./themes/theme.dark.css" (prefers-color-scheme: dark);
+@import "./themes/theme.light.css" (prefers-color-scheme: light);
+button.m3.m3-fab {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+}
+button.m3.m3-fab > span.m3-icon {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+}
+button.m3.m3-fab.m3 {
+ contain: content;
+ box-sizing: border-box;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ border: none;
+ gap: 12px;
+}
+button.m3.m3-fab::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, 0);
+}
+button.m3.m3-fab.surface {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-surface-container-high);
+}
+button.m3.m3-fab.surface > span.m3-icon, button.m3.m3-fab.surface {
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-fab.surface > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-fab.primary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-primary-container);
+}
+button.m3.m3-fab.primary > span.m3-icon, button.m3.m3-fab.primary {
+ color: var(--md-sys-color-on-primary-container);
+}
+button.m3.m3-fab.primary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-primary-container) 12%, transparent);
+}
+button.m3.m3-fab.secondary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-secondary-container);
+}
+button.m3.m3-fab.secondary > span.m3-icon, button.m3.m3-fab.secondary {
+ color: var(--md-sys-color-on-secondary-container);
+}
+button.m3.m3-fab.secondary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-fab.tertiary {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+ background-color: var(--md-sys-color-tertiary-container);
+}
+button.m3.m3-fab.tertiary > span.m3-icon, button.m3.m3-fab.tertiary {
+ color: var(--md-sys-color-on-tertiary-container);
+}
+button.m3.m3-fab.tertiary > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 12%, transparent);
+}
+button.m3.m3-fab.m3-small-fab {
+ width: 40px;
+ height: 40px;
+ border-radius: 12px;
+ padding: 11px;
+ font-size: 24px;
+}
+button.m3.m3-fab.m3-default-fab {
+ width: 56px;
+ height: 56px;
+ border-radius: 16px;
+ padding: 19px;
+ font-size: 24px;
+}
+button.m3.m3-fab.m3-large-fab {
+ width: 96px;
+ height: 96px;
+ border-radius: 28px;
+ padding: 34.5px;
+ font-size: 36px;
+}
+button.m3.m3-fab.m3-extended-fab {
+ width: auto;
+ height: 56px;
+ border-radius: 16px;
+ padding: 19px;
+ font-size: 24px;
+}
+button.m3.m3-fab:is(.surface, .primary, .secondary, .tertiary):hover {
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.3), 0 6px 10px 4px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab:is(.surface, .primary, .secondary, .tertiary):active {
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3), 0 4px 8px 3px rgba(0, 0, 0, 0.15) !important;
+}
+button.m3.m3-fab:hover.surface::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button.m3.m3-fab:hover.primary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 8%, transparent);
+}
+button.m3.m3-fab:hover.secondary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button.m3.m3-fab:hover.tertiary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 8%, transparent);
+}
+button.m3.m3-fab:focus-visible.surface::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.primary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary-container) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.secondary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-fab:focus-visible.tertiary::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-tertiary-container) 12%, transparent);
+}
+
+label.m3.m3-radio-label {
+ display: flex;
+ position: relative;
+ align-items: center;
+ justify-content: center;
+ aspect-ratio: 1;
+}
+label.m3.m3-radio-label > span.m3.m3-radio-state-layer {
+ position: absolute;
+ width: 40px;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+
+input[type=radio].m3.m3-radio {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 10;
+ width: 20px;
+ margin: 0;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ border: 2px solid var(--md-sys-color-on-surface-variant);
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+input[type=radio].m3.m3-radio::after {
+ content: "";
+ width: 10px;
+ aspect-ratio: 1;
+ border-radius: 50%;
+}
+input[type=radio].m3.m3-radio:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:checked {
+ border: 2px solid var(--md-sys-color-primary);
+}
+input[type=radio].m3.m3-radio:checked::after {
+ background-color: var(--md-sys-color-primary);
+}
+input[type=radio].m3.m3-radio:checked:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:checked:disabled::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):checked:hover + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-radio-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):hover + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):active + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):active + span.m3.m3-radio-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent);
+}
+
+@font-face {
+ font-family: Material-Icons-Regular;
+ src: url("./font/MaterialIcons-Regular.ttf");
+}
+@font-face {
+ font-family: Material-Icons-Outlined-Regular;
+ src: url("./font/MaterialIconsOutlined-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Round-Regular;
+ src: url("./font/MaterialIconsRound-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Sharp-Regular;
+ src: url("./font/MaterialIconsSharp-Regular.otf");
+}
+@font-face {
+ font-family: Material-Icons-Two-Tone-Regular;
+ src: url("./font/MaterialIconsTwoTone-Regular.otf");
+}
+@font-face {
+ font-family: Material-Symbols-Outlined-Regular;
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsOutlined[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Material-Symbols-Round-Regular;
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Material-Symbols-Sharp-Regular;
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].ttf");
+ src: url("./font/MaterialSymbolsSharp[FILL,GRAD,opsz,wght].woff2") format("woff2");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Thin;
+ font-weight: 100;
+ src: url("./font/Roboto-Thin.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Light;
+ font-weight: 300;
+ src: url("./font/Roboto-Light.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Regular;
+ font-weight: 400;
+ src: url("./font/Roboto-Regular.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Medium;
+ font-weight: 500;
+ src: url("./font/Roboto-Medium.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Bold;
+ font-weight: 700;
+ src: url("./font/Roboto-Bold.ttf");
+}
+@font-face {
+ font-family: Roboto;
+ font-face-name: Black;
+ font-weight: 900;
+ src: url("./font/Roboto-Black.ttf");
+}
+button:not(.m3-fab, .m3-icon-button) {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+}
+button:not(.m3-fab, .m3-icon-button) > span.m3-icon {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 500;
+ font-size: 18px;
+ line-height: 18px;
+}
+button:not(.m3-fab, .m3-icon-button).m3 {
+ contain: content;
+ box-sizing: border-box;
+ border-radius: 100px;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ text-align: center;
+ padding: 10px 24px;
+ border: none;
+ gap: 8px;
+}
+button:not(.m3-fab, .m3-icon-button).filled {
+ background-color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).filled, button:not(.m3-fab, .m3-icon-button).filled > span.m3-icon {
+ color: var(--md-sys-color-on-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined {
+ border: 1px solid var(--md-sys-color-outline) !important;
+ background-color: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).outlined, button:not(.m3-fab, .m3-icon-button).outlined > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text {
+ padding: 10px 12px !important;
+ background-color: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).text, button:not(.m3-fab, .m3-icon-button).text > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).elevated {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+ background-color: var(--md-sys-color-surface-container-low);
+}
+button:not(.m3-fab, .m3-icon-button).elevated, button:not(.m3-fab, .m3-icon-button).elevated > span.m3-icon {
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).tonal {
+ background-color: var(--md-sys-color-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button).tonal, button:not(.m3-fab, .m3-icon-button).tonal > span.m3-icon {
+ color: var(--md-sys-color-on-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button)::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, 0);
+}
+button:not(.m3-fab, .m3-icon-button).filled > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):is(.outlined, .text, .elevated) > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button).tonal > .m3.m3-ripple-domain > .m3.ripple {
+ background: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):active:is(.filled, .tonal) {
+ box-shadow: none !important;
+}
+button:not(.m3-fab, .m3-icon-button):active.elevated {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3) !important;
+}
+button:not(.m3-fab, .m3-icon-button):active.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.outlined {
+ border-color: var(--md-sys-color-primary) !important;
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.filled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible:is(.outlined, .text, .elevated)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):focus-visible.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover:is(.filled, .tonal) {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+button:not(.m3-fab, .m3-icon-button):hover.elevated {
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.3);
+}
+button:not(.m3-fab, .m3-icon-button):hover.filled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover:is(.outlined, .text, .elevated)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):hover.tonal::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled {
+ pointer-events: none;
+}
+button:not(.m3-fab, .m3-icon-button):disabled:is(.filled, .elevated, .tonal, .outlined, .text) {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled:is(.filled, .elevated, .tonal) {
+ background: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+button:not(.m3-fab, .m3-icon-button):disabled.elevated {
+ box-shadow: none;
+}
+button:not(.m3-fab, .m3-icon-button):disabled.outlined {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important;
+}
+
+.m3.m3-ripple-domain {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 20;
+ pointer-events: none;
+}
+
+.m3.ripple {
+ position: absolute;
+ overflow: hidden;
+ pointer-events: none;
+ transform-origin: center;
+ opacity: 0;
+ z-index: 20;
+ aspect-ratio: 1;
+ border-radius: 50%;
+ animation-name: rippleAppearanceAnimation;
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ animation-duration: 0.55s;
+ transition: opacity, background, background-color, 0.55s cubic-bezier(0.4, 0, 0.2, 1);
+}
+.m3.ripple.visible {
+ opacity: 1 !important;
+}
+
+@keyframes rippleAppearanceAnimation {
+ 0% {
+ transform: scale3d(0, 0, 0);
+ }
+ 100% {
+ transform: scale3d(1, 1, 1);
+ }
+}
+input[type=checkbox].m3.m3-switch {
+ transition: background-color 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ display: flex;
+ position: relative;
+ align-items: center;
+ width: 52px;
+ height: 32px;
+ appearance: none;
+ padding: 2px 2px 2px 6px;
+ border-radius: 16px;
+ border: 2px solid var(--md-sys-color-outline);
+ background-color: var(--md-sys-color-surface-container-high);
+}
+input[type=checkbox].m3.m3-switch:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-surface-container-high) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:checked {
+ border: 2px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-primary);
+}
+input[type=checkbox].m3.m3-switch::after {
+ transition: color, background-color, opacity, 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ z-index: 9;
+ position: absolute;
+ display: flex;
+ content: "";
+ height: 40px;
+ width: 40px;
+ left: -6px;
+ border-radius: 50%;
+}
+input[type=checkbox].m3.m3-switch:checked::after {
+ transform: translateX(50%);
+}
+input[type=checkbox].m3.m3-switch:checked::after, input[type=checkbox].m3.m3-switch::after, input[type=checkbox].m3.m3-switch:checked::before, input[type=checkbox].m3.m3-switch::before {
+ transform-origin: center;
+}
+input[type=checkbox].m3.m3-switch:is([data-icon=true], [data-icon=true]:checked)::before {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-weight: 500;
+ font-size: 12px;
+ line-height: 12px;
+}
+input[type=checkbox].m3.m3-switch[data-icon=true]:checked::before {
+ content: "done" !important;
+ color: var(--md-sys-color-on-primary-container);
+}
+@media (prefers-color-scheme: light) {
+ input[type=checkbox].m3.m3-switch[data-icon=true]::before {
+ color: var(--md-sys-color-on-primary);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled::before {
+ color: var(--md-sys-color-surface-container-highest);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled:checked::before {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ }
+}
+@media (prefers-color-scheme: dark) {
+ input[type=checkbox].m3.m3-switch[data-icon=true]::before {
+ color: var(--md-sys-color-surface-container-high);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled::before {
+ color: var(--md-sys-color-surface-container-highest);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled:checked::before {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ }
+}
+input[type=checkbox].m3.m3-switch[data-icon=true]:where([data-selected=false])::before, input[type=checkbox].m3.m3-switch[data-icon=true]:where([data-selected=false]):disabled::before {
+ transform: scale(150%);
+ content: "close";
+}
+input[type=checkbox].m3.m3-switch::before {
+ z-index: 10;
+ transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ content: "";
+ display: flex;
+ height: 16px;
+ width: 16px;
+ border-radius: 50%;
+ background-color: var(--md-sys-color-outline);
+}
+input[type=checkbox].m3.m3-switch:checked::before {
+ opacity: 1;
+ transform: translateX(125%) scale(150%);
+ background-color: var(--md-sys-color-on-primary);
+}
+input[type=checkbox].m3.m3-switch:hover:checked::after {
+ transform: translateX(50%);
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=checkbox].m3.m3-switch:hover::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active:checked::after {
+ transform: translateX(50%);
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active:checked::before {
+ transform: translateX(125%) scale(175%);
+ background-color: var(--md-sys-color-primary-container);
+}
+input[type=checkbox].m3.m3-switch:active::before {
+ transform: scale(175%);
+ background-color: var(--md-sys-color-on-surface-variant);
+}
+input[type=checkbox].m3.m3-switch:disabled:checked {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important;
+}
+input[type=checkbox].m3.m3-switch:disabled:checked::after, input[type=checkbox].m3.m3-switch:disabled::after {
+ opacity: 0;
+}
+input[type=checkbox].m3.m3-switch:disabled::before {
+ opacity: 0.38;
+ transform: initial;
+ background-color: var(--md-sys-color-outline) !important;
+}
+input[type=checkbox].m3.m3-switch:disabled:checked::before {
+ opacity: 1;
+ transform: translateX(125%) scale(150%);
+ background-color: var(--md-sys-color-surface) !important;
+}
+
+@keyframes toggle-shifting {
+ 50% {
+ width: 30px;
+ }
+ 100% {
+ width: 16px;
+ }
+}
+label.m3.m3-checkbox-label {
+ display: flex;
+ position: relative;
+ align-items: center;
+ justify-content: center;
+ aspect-ratio: 1;
+}
+label.m3.m3-checkbox-label > span.m3.m3-checkbox-state-layer {
+ position: absolute;
+ width: 40px;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+
+span.m3.m3-checkbox-ripple-layer {
+ z-index: 20;
+ contain: content;
+ border-radius: 50%;
+ position: absolute;
+ width: 40px;
+ height: 40px;
+}
+
+input[type=checkbox].m3.m3-checkbox {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: content-box;
+ z-index: 10;
+ width: 14px;
+ height: 14px;
+ margin: 0;
+ border-radius: 2px;
+ border: 2px solid var(--md-sys-color-on-surface-variant);
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+input[type=checkbox].m3.m3-checkbox:is(:user-invalid:is(:checked, :indeterminate), .m3.m3-error:is(:checked, :indeterminate)) {
+ border: 2px solid var(--md-sys-color-error);
+ background-color: var(--md-sys-color-error);
+}
+input[type=checkbox].m3.m3-checkbox:is(.m3.m3-error, :user-invalid) {
+ border: 2px solid var(--md-sys-color-error);
+}
+input[type=checkbox].m3.m3-checkbox:is(:checked:is(:hover, input[type=checkbox].m3.m3-checkbox):not(.m3.m3-error, :disabled), :indeterminate:is(:hover, input[type=checkbox].m3.m3-checkbox):not(.m3.m3-error, :disabled)) {
+ border: 2px solid var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-primary);
+}
+input[type=checkbox].m3.m3-checkbox:disabled:is(:hover, input[type=checkbox].m3.m3-checkbox:disabled) {
+ opacity: 38%;
+ border: 2px solid var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox:disabled:checked:is(:hover, input[type=checkbox].m3.m3-checkbox:disabled) {
+ opacity: 38%;
+ background-color: var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox::after {
+ line-height: 18px;
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 700;
+ font-size: 18px;
+ color: var(--md-sys-color-on-primary);
+}
+input[type=checkbox].m3.m3-checkbox:checked::after {
+ content: "done";
+}
+input[type=checkbox].m3.m3-checkbox:indeterminate::after {
+ content: "check_indeterminate_small";
+}
+input[type=checkbox].m3.m3-checkbox:hover {
+ border: 2px solid var(--md-sys-color-on-surface);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:hover, :indeterminate:hover), .m3.m3-error:hover) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:user-invalid:is(:active, :indeterminate:active), .m3.m3-error:active) + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-error) 20%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:hover, :indeterminate:hover) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):hover + span.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):active + span.m3.m3-checkbox-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=checkbox].m3.m3-checkbox:not(:disabled):active + span.m3.m3-checkbox-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent);
+}
+
+div.m3.m3-text-field {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ box-sizing: border-box;
+ margin: 0;
+}
+div.m3.m3-text-field span.m3-icon.icon-before {
+ align-self: start;
+}
+div.m3.m3-text-field + span.m3-text-field-supporting-text {
+ display: flex;
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ color: var(--md-sys-color-on-surface-variant);
+ margin: 0 16px;
+}
+div.m3.m3-text-field > label {
+ padding-inline: 4px;
+ pointer-events: none;
+ transform: translate(12px, 0);
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ color: var(--md-sys-color-on-surface-variant);
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ position: absolute;
+}
+div.m3.m3-text-field > input {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ color: var(--md-sys-color-on-surface);
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ background-color: transparent;
+ border: none;
+}
+div.m3.m3-text-field > span.m3-icon {
+ position: absolute;
+ align-self: end;
+ margin: 12px;
+ width: 24px;
+ line-height: 24px;
+ font-size: 24px;
+ display: inherit;
+ align-items: center;
+ justify-content: inherit;
+ cursor: pointer;
+ color: var(--md-sys-color-on-surface-variant);
+ font-family: Material-Symbols-Outlined-Regular, serif;
+}
+div.m3.m3-text-field > span.m3-text-field-state-layer {
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+ position: absolute;
+}
+div.m3.m3-text-field:is(.filled, .outlined) > input:focus-visible {
+ outline: none;
+ caret-color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled {
+ contain: content;
+ border-radius: 4px 4px 0 0;
+}
+div.m3.m3-text-field.filled > label.used {
+ transform: translate(12px, -12px);
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled:has(input:required:user-invalid) > *, div.m3.m3-text-field.filled:has(input:required:user-invalid) + span.m3-text-field-supporting-text {
+ color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled > input:focus-visible {
+ outline-offset: 2px;
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled:has(input:disabled), div.m3.m3-text-field.filled:has(input:disabled) + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.filled > input {
+ box-sizing: border-box;
+ border-radius: 4px 4px 0 0;
+ background-color: var(--md-sys-color-surface-container-highest);
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-on-surface-variant);
+}
+div.m3.m3-text-field.filled > input.with-after-icon {
+ padding: 24px 48px 8px 16px;
+}
+div.m3.m3-text-field.filled > input.with-before-icon {
+ padding: 24px 16px 8px 48px;
+}
+div.m3.m3-text-field.filled > input.with-before-icon + label {
+ margin-left: 32px;
+}
+div.m3.m3-text-field.filled > input:not(.with-after-icon, .with-before-icon) {
+ padding: 24px 16px 8px;
+}
+div.m3.m3-text-field.filled > input.with-after-icon.with-before-icon {
+ padding: 24px 48px 8px 48px;
+}
+div.m3.m3-text-field.filled:hover > input:not(:disabled) ~ span.m3-text-field-state-layer {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+div.m3.m3-text-field.outlined {
+ border-radius: 4px;
+}
+div.m3.m3-text-field.outlined > label.used {
+ background-color: var(--md-sys-color-surface);
+ transform: translate(12px, -27px) !important;
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+}
+div.m3.m3-text-field.outlined > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+ outline-offset: -2px;
+ outline: 2px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(input:required:user-invalid) > *, div.m3.m3-text-field.outlined:has(input:required:user-invalid) + span.m3-text-field-supporting-text {
+ color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined > input:focus-visible {
+ outline-offset: -2px;
+ outline: 2px solid var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined:has(input:disabled), div.m3.m3-text-field.outlined:has(input:disabled) + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.outlined > input {
+ box-sizing: border-box;
+ border-radius: 4px;
+ outline-offset: -1px;
+ outline: 1px solid var(--md-sys-color-outline);
+}
+div.m3.m3-text-field.outlined > input.with-after-icon {
+ padding: 16px 48px 16px 16px;
+}
+div.m3.m3-text-field.outlined > input.with-before-icon {
+ padding: 16px 16px 16px 48px;
+}
+div.m3.m3-text-field.outlined > input.with-before-icon + label {
+ transform: translate(48px, 0);
+}
+div.m3.m3-text-field.outlined > input:not(.with-after-icon, .with-before-icon) {
+ padding: 16px;
+}
+div.m3.m3-text-field.outlined > input.with-after-icon.with-before-icon {
+ padding: 16px 48px;
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible) {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible):has(input:not(div.m3.m3-text-field.outlined:hover:not(:focus-visible):user-invalid, :disabled, :focus-visible)) > label {
+ color: var(--md-sys-color-on-surface);
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible) > input:not(:user-invalid, :disabled, :focus-visible) {
+ outline-color: var(--md-sys-color-on-surface) !important;
+}
+
+button.m3.m3-icon-button {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ contain: content;
+ border-radius: 50%;
+ position: relative;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ width: 40px;
+ height: 40px;
+ border: none;
+ padding: 0;
+}
+button.m3.m3-icon-button::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ width: 100%;
+ height: 100%;
+ position: absolute;
+}
+button.m3.m3-icon-button > span.m3-icon {
+ z-index: 25;
+ font-size: 2em;
+ font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 48;
+}
+button.m3.m3-icon-button:is(.default, .filled, .tonal, .outlined) {
+ font-family: Material-Symbols-Round-Regular, serif;
+}
+button.m3.m3-icon-button:is(.default, .filled, .tonal, .outlined).selected.toggled {
+ font-size: 13.49px;
+ font-family: Material-Icons-Regular, serif;
+ font-weight: 500;
+}
+button.m3.m3-icon-button.default {
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.default:disabled, button.m3.m3-icon-button.default.selected:disabled, button.m3.m3-icon-button.default.selected.toggled:disabled {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.default.selected.toggled {
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled {
+ color: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled.toggled {
+ color: var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.filled.selected.toggled {
+ color: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.tonal.toggled {
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.tonal.selected.toggled, button.m3.m3-icon-button.tonal {
+ color: var(--md-sys-color-on-secondary-container);
+ background-color: var(--md-sys-color-secondary-container);
+}
+button.m3.m3-icon-button:is(.tonal, .filled, .toggled.selected):disabled {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+button.m3.m3-icon-button.outlined {
+ border: 1px solid var(--md-sys-color-outline);
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.outlined:disabled {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 12%, transparent);
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.outlined.toggled.selected:disabled {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 0%, transparent);
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+@media (prefers-color-scheme: light) {
+ button.m3.m3-icon-button.outlined.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface-light);
+ color: var(--md-sys-color-inverse-on-surface);
+ }
+}
+@media (prefers-color-scheme: dark) {
+ button.m3.m3-icon-button.outlined.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface);
+ color: var(--md-sys-color-inverse-on-surface);
+ }
+}
+button.m3.m3-icon-button.filled:not(:disabled) > .m3.m3-ripple-domain > .m3.ripple, button.m3.m3-icon-button.filled:not(:disabled).selected.toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button.m3.m3-icon-button.filled:not(:disabled).toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled) > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled):not(.outlined).toggled.selected > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled):not(.default).toggled.selected > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-inverse-on-surface) 12%, transparent);
+}
+button.m3.m3-icon-button.tonal:not(:disabled) > .m3.m3-ripple-domain > .m3.ripple, button.m3.m3-icon-button.tonal:not(:disabled).selected.toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-icon-button.tonal:not(:disabled).toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled):is(.default, .outlined)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).filled::before, button.m3.m3-icon-button:hover:not(:disabled).filled.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).filled.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).tonal::before, button.m3.m3-icon-button:hover:not(:disabled).tonal.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).tonal.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled):is(.default, .outlined)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).filled::before, button.m3.m3-icon-button:focus-visible:not(:disabled).filled.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).filled.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).tonal::before, button.m3.m3-icon-button:focus-visible:not(:disabled).tonal.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).tonal.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+
+:root {
+ /* display - large */
+ --md-sys-typescale-display-large-font-family-name: Roboto;
+ --md-sys-typescale-display-large-font-family-style: Regular;
+ --md-sys-typescale-display-large-font-weight: 400;
+ --md-sys-typescale-display-large-font-size: 57px;
+ --md-sys-typescale-display-large-line-height: 64px;
+ --md-sys-typescale-display-large-letter-spacing: -0.25px;
+ /* display - medium */
+ --md-sys-typescale-display-medium-font-family-name: Roboto;
+ --md-sys-typescale-display-medium-font-family-style: Regular;
+ --md-sys-typescale-display-medium-font-weight: 400;
+ --md-sys-typescale-display-medium-font-size: 45px;
+ --md-sys-typescale-display-medium-line-height: 52px;
+ --md-sys-typescale-display-medium-letter-spacing: 0px;
+ /* display - small */
+ --md-sys-typescale-display-small-font-family-name: Roboto;
+ --md-sys-typescale-display-small-font-family-style: Regular;
+ --md-sys-typescale-display-small-font-weight: 400;
+ --md-sys-typescale-display-small-font-size: 36px;
+ --md-sys-typescale-display-small-line-height: 44px;
+ --md-sys-typescale-display-small-letter-spacing: 0px;
+ /* headline - large */
+ --md-sys-typescale-headline-large-font-family-name: Roboto;
+ --md-sys-typescale-headline-large-font-family-style: Regular;
+ --md-sys-typescale-headline-large-font-weight: 400;
+ --md-sys-typescale-headline-large-font-size: 32px;
+ --md-sys-typescale-headline-large-line-height: 40px;
+ --md-sys-typescale-headline-large-letter-spacing: 0px;
+ /* headline - medium */
+ --md-sys-typescale-headline-medium-font-family-name: Roboto;
+ --md-sys-typescale-headline-medium-font-family-style: Regular;
+ --md-sys-typescale-headline-medium-font-weight: 400;
+ --md-sys-typescale-headline-medium-font-size: 28px;
+ --md-sys-typescale-headline-medium-line-height: 36px;
+ --md-sys-typescale-headline-medium-letter-spacing: 0px;
+ /* headline - small */
+ --md-sys-typescale-headline-small-font-family-name: Roboto;
+ --md-sys-typescale-headline-small-font-family-style: Regular;
+ --md-sys-typescale-headline-small-font-weight: 400;
+ --md-sys-typescale-headline-small-font-size: 24px;
+ --md-sys-typescale-headline-small-line-height: 32px;
+ --md-sys-typescale-headline-small-letter-spacing: 0px;
+ /* body - large */
+ --md-sys-typescale-body-large-font-family-name: Roboto;
+ --md-sys-typescale-body-large-font-family-style: Regular;
+ --md-sys-typescale-body-large-font-weight: 400;
+ --md-sys-typescale-body-large-font-size: 16px;
+ --md-sys-typescale-body-large-line-height: 24px;
+ --md-sys-typescale-body-large-letter-spacing: 0.50px;
+ /* body - medium */
+ --md-sys-typescale-body-medium-font-family-name: Roboto;
+ --md-sys-typescale-body-medium-font-family-style: Regular;
+ --md-sys-typescale-body-medium-font-weight: 400;
+ --md-sys-typescale-body-medium-font-size: 14px;
+ --md-sys-typescale-body-medium-line-height: 20px;
+ --md-sys-typescale-body-medium-letter-spacing: 0.25px;
+ /* body - small */
+ --md-sys-typescale-body-small-font-family-name: Roboto;
+ --md-sys-typescale-body-small-font-family-style: Regular;
+ --md-sys-typescale-body-small-font-weight: 400;
+ --md-sys-typescale-body-small-font-size: 12px;
+ --md-sys-typescale-body-small-line-height: 16px;
+ --md-sys-typescale-body-small-letter-spacing: 0.40px;
+ /* label - large */
+ --md-sys-typescale-label-large-font-family-name: Roboto;
+ --md-sys-typescale-label-large-font-family-style: Medium;
+ --md-sys-typescale-label-large-font-weight: 500;
+ --md-sys-typescale-label-large-font-size: 14px;
+ --md-sys-typescale-label-large-line-height: 20px;
+ --md-sys-typescale-label-large-letter-spacing: 0.10px;
+ /* label - medium */
+ --md-sys-typescale-label-medium-font-family-name: Roboto;
+ --md-sys-typescale-label-medium-font-family-style: Medium;
+ --md-sys-typescale-label-medium-font-weight: 500;
+ --md-sys-typescale-label-medium-font-size: 12px;
+ --md-sys-typescale-label-medium-line-height: 16px;
+ --md-sys-typescale-label-medium-letter-spacing: 0.50px;
+ /* label - small */
+ --md-sys-typescale-label-small-font-family-name: Roboto;
+ --md-sys-typescale-label-small-font-family-style: Medium;
+ --md-sys-typescale-label-small-font-weight: 500;
+ --md-sys-typescale-label-small-font-size: 11px;
+ --md-sys-typescale-label-small-line-height: 16px;
+ --md-sys-typescale-label-small-letter-spacing: 0.50px;
+ /* title - large */
+ --md-sys-typescale-title-large-font-family-name: Roboto;
+ --md-sys-typescale-title-large-font-family-style: Regular;
+ --md-sys-typescale-title-large-font-weight: 400;
+ --md-sys-typescale-title-large-font-size: 22px;
+ --md-sys-typescale-title-large-line-height: 28px;
+ --md-sys-typescale-title-large-letter-spacing: 0px;
+ /* title - medium */
+ --md-sys-typescale-title-medium-font-family-name: Roboto;
+ --md-sys-typescale-title-medium-font-family-style: Medium;
+ --md-sys-typescale-title-medium-font-weight: 500;
+ --md-sys-typescale-title-medium-font-size: 16px;
+ --md-sys-typescale-title-medium-line-height: 24px;
+ --md-sys-typescale-title-medium-letter-spacing: 0.15px;
+ /* title - small */
+ --md-sys-typescale-title-small-font-family-name: Roboto;
+ --md-sys-typescale-title-small-font-family-style: Medium;
+ --md-sys-typescale-title-small-font-weight: 500;
+ --md-sys-typescale-title-small-font-size: 14px;
+ --md-sys-typescale-title-small-line-height: 20px;
+ --md-sys-typescale-title-small-letter-spacing: 0.10px;
+}
+
+.primary {
+ background-color: var(--md-sys-color-primary);
+}
+
+.primary-text {
+ color: var(--md-sys-color-primary);
+}
+
+.on-primary {
+ background-color: var(--md-sys-color-on-primary);
+}
+
+.on-primary-text {
+ color: var(--md-sys-color-on-primary);
+}
+
+.primary-container {
+ background-color: var(--md-sys-color-primary-container);
+}
+
+.primary-container-text {
+ color: var(--md-sys-color-primary-container);
+}
+
+.on-primary-container {
+ background-color: var(--md-sys-color-on-primary-container);
+}
+
+.on-primary-container-text {
+ color: var(--md-sys-color-on-primary-container);
+}
+
+.primary-fixed {
+ background-color: var(--md-sys-color-primary-fixed);
+}
+
+.primary-fixed-text {
+ color: var(--md-sys-color-primary-fixed);
+}
+
+.on-primary-fixed {
+ background-color: var(--md-sys-color-on-primary-fixed);
+}
+
+.on-primary-fixed-text {
+ color: var(--md-sys-color-on-primary-fixed);
+}
+
+.primary-fixed-dim {
+ background-color: var(--md-sys-color-primary-fixed-dim);
+}
+
+.primary-fixed-dim-text {
+ color: var(--md-sys-color-primary-fixed-dim);
+}
+
+.on-primary-fixed-variant {
+ background-color: var(--md-sys-color-on-primary-fixed-variant);
+}
+
+.on-primary-fixed-variant-text {
+ color: var(--md-sys-color-on-primary-fixed-variant);
+}
+
+.secondary {
+ background-color: var(--md-sys-color-secondary);
+}
+
+.secondary-text {
+ color: var(--md-sys-color-secondary);
+}
+
+.on-secondary {
+ background-color: var(--md-sys-color-on-secondary);
+}
+
+.on-secondary-text {
+ color: var(--md-sys-color-on-secondary);
+}
+
+.secondary-container {
+ background-color: var(--md-sys-color-secondary-container);
+}
+
+.secondary-container-text {
+ color: var(--md-sys-color-secondary-container);
+}
+
+.on-secondary-container {
+ background-color: var(--md-sys-color-on-secondary-container);
+}
+
+.on-secondary-container-text {
+ color: var(--md-sys-color-on-secondary-container);
+}
+
+.secondary-fixed {
+ background-color: var(--md-sys-color-secondary-fixed);
+}
+
+.secondary-fixed-text {
+ color: var(--md-sys-color-secondary-fixed);
+}
+
+.on-secondary-fixed {
+ background-color: var(--md-sys-color-on-secondary-fixed);
+}
+
+.on-secondary-fixed-text {
+ color: var(--md-sys-color-on-secondary-fixed);
+}
+
+.secondary-fixed-dim {
+ background-color: var(--md-sys-color-secondary-fixed-dim);
+}
+
+.secondary-fixed-dim-text {
+ color: var(--md-sys-color-secondary-fixed-dim);
+}
+
+.on-secondary-fixed-variant {
+ background-color: var(--md-sys-color-on-secondary-fixed-variant);
+}
+
+.on-secondary-fixed-variant-text {
+ color: var(--md-sys-color-on-secondary-fixed-variant);
+}
+
+.tertiary {
+ background-color: var(--md-sys-color-tertiary);
+}
+
+.tertiary-text {
+ color: var(--md-sys-color-tertiary);
+}
+
+.on-tertiary {
+ background-color: var(--md-sys-color-on-tertiary);
+}
+
+.on-tertiary-text {
+ color: var(--md-sys-color-on-tertiary);
+}
+
+.tertiary-container {
+ background-color: var(--md-sys-color-tertiary-container);
+}
+
+.tertiary-container-text {
+ color: var(--md-sys-color-tertiary-container);
+}
+
+.on-tertiary-container {
+ background-color: var(--md-sys-color-on-tertiary-container);
+}
+
+.on-tertiary-container-text {
+ color: var(--md-sys-color-on-tertiary-container);
+}
+
+.tertiary-fixed {
+ background-color: var(--md-sys-color-tertiary-fixed);
+}
+
+.tertiary-fixed-text {
+ color: var(--md-sys-color-tertiary-fixed);
+}
+
+.on-tertiary-fixed {
+ background-color: var(--md-sys-color-on-tertiary-fixed);
+}
+
+.on-tertiary-fixed-text {
+ color: var(--md-sys-color-on-tertiary-fixed);
+}
+
+.tertiary-fixed-dim {
+ background-color: var(--md-sys-color-tertiary-fixed-dim);
+}
+
+.tertiary-fixed-dim-text {
+ color: var(--md-sys-color-tertiary-fixed-dim);
+}
+
+.on-tertiary-fixed-variant {
+ background-color: var(--md-sys-color-on-tertiary-fixed-variant);
+}
+
+.on-tertiary-fixed-variant-text {
+ color: var(--md-sys-color-on-tertiary-fixed-variant);
+}
+
+.error {
+ background-color: var(--md-sys-color-error);
+}
+
+.error-text {
+ color: var(--md-sys-color-error);
+}
+
+.error-container {
+ background-color: var(--md-sys-color-error-container);
+}
+
+.error-container-text {
+ color: var(--md-sys-color-error-container);
+}
+
+.on-error {
+ background-color: var(--md-sys-color-on-error);
+}
+
+.on-error-text {
+ color: var(--md-sys-color-on-error);
+}
+
+.on-error-container {
+ background-color: var(--md-sys-color-on-error-container);
+}
+
+.on-error-container-text {
+ color: var(--md-sys-color-on-error-container);
+}
+
+.background {
+ background-color: var(--md-sys-color-background);
+}
+
+.background-text {
+ color: var(--md-sys-color-background);
+}
+
+.on-background {
+ background-color: var(--md-sys-color-on-background);
+}
+
+.on-background-text {
+ color: var(--md-sys-color-on-background);
+}
+
+.outline {
+ background-color: var(--md-sys-color-outline);
+}
+
+.outline-text {
+ color: var(--md-sys-color-outline);
+}
+
+.inverse-on-surface {
+ background-color: var(--md-sys-color-inverse-on-surface);
+}
+
+.inverse-on-surface-text {
+ color: var(--md-sys-color-inverse-on-surface);
+}
+
+.inverse-surface {
+ background-color: var(--md-sys-color-inverse-surface);
+}
+
+.inverse-surface-text {
+ color: var(--md-sys-color-inverse-surface);
+}
+
+.inverse-primary {
+ background-color: var(--md-sys-color-inverse-primary);
+}
+
+.inverse-primary-text {
+ color: var(--md-sys-color-inverse-primary);
+}
+
+.shadow {
+ background-color: var(--md-sys-color-shadow);
+}
+
+.shadow-text {
+ color: var(--md-sys-color-shadow);
+}
+
+.surface-tint {
+ background-color: var(--md-sys-color-surface-tint);
+}
+
+.surface-tint-text {
+ color: var(--md-sys-color-surface-tint);
+}
+
+.outline-variant {
+ background-color: var(--md-sys-color-outline-variant);
+}
+
+.outline-variant-text {
+ color: var(--md-sys-color-outline-variant);
+}
+
+.scrim {
+ background-color: var(--md-sys-color-scrim);
+}
+
+.scrim-text {
+ color: var(--md-sys-color-scrim);
+}
+
+.surface {
+ background-color: var(--md-sys-color-surface);
+}
+
+.surface-text {
+ color: var(--md-sys-color-surface);
+}
+
+.on-surface {
+ background-color: var(--md-sys-color-on-surface);
+}
+
+.on-surface-text {
+ color: var(--md-sys-color-on-surface);
+}
+
+.surface-variant {
+ background-color: var(--md-sys-color-surface-variant);
+}
+
+.surface-variant-text {
+ color: var(--md-sys-color-surface-variant);
+}
+
+.on-surface-variant {
+ background-color: var(--md-sys-color-on-surface-variant);
+}
+
+.on-surface-variant-text {
+ color: var(--md-sys-color-on-surface-variant);
+}
+
+.surface-container-highest {
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+
+.surface-container-highest-text {
+ color: var(--md-sys-color-surface-container-highest);
+}
+
+.surface-container-high {
+ background-color: var(--md-sys-color-surface-container-high);
+}
+
+.surface-container-high-text {
+ color: var(--md-sys-color-surface-container-high);
+}
+
+.surface-container {
+ background-color: var(--md-sys-color-surface-container);
+}
+
+.surface-container-text {
+ color: var(--md-sys-color-surface-container);
+}
+
+.surface-container-low {
+ background-color: var(--md-sys-color-surface-container-low);
+}
+
+.surface-container-low-text {
+ color: var(--md-sys-color-surface-container-low);
+}
+
+.surface-container-lowest {
+ background-color: var(--md-sys-color-surface-container-lowest);
+}
+
+.surface-container-lowest-text {
+ color: var(--md-sys-color-surface-container-lowest);
+}
+
+.surface-dim {
+ background-color: var(--md-sys-color-surface-dim);
+}
+
+.surface-dim-text {
+ color: var(--md-sys-color-surface-dim);
+}
+
+.surface-bright {
+ background-color: var(--md-sys-color-surface-bright);
+}
+
+.surface-bright-text {
+ color: var(--md-sys-color-surface-bright);
+}
+
+.display-large {
+ font-family: var(--md-sys-typescale-display-large-font-family-name);
+ font-style: var(--md-sys-typescale-display-large-font-family-style);
+ font-weight: var(--md-sys-typescale-display-large-font-weight);
+ font-size: var(--md-sys-typescale-display-large-font-size);
+ letter-spacing: var(--md-sys-typescale-display-large-tracking);
+ line-height: var(--md-sys-typescale-display-large-height);
+ text-transform: var(--md-sys-typescale-display-large-text-transform);
+ text-decoration: var(--md-sys-typescale-display-large-text-decoration);
+}
+
+.display-medium {
+ font-family: var(--md-sys-typescale-display-medium-font-family-name);
+ font-style: var(--md-sys-typescale-display-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-display-medium-font-weight);
+ font-size: var(--md-sys-typescale-display-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-display-medium-tracking);
+ line-height: var(--md-sys-typescale-display-medium-height);
+ text-transform: var(--md-sys-typescale-display-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-display-medium-text-decoration);
+}
+
+.display-small {
+ font-family: var(--md-sys-typescale-display-small-font-family-name);
+ font-style: var(--md-sys-typescale-display-small-font-family-style);
+ font-weight: var(--md-sys-typescale-display-small-font-weight);
+ font-size: var(--md-sys-typescale-display-small-font-size);
+ letter-spacing: var(--md-sys-typescale-display-small-tracking);
+ line-height: var(--md-sys-typescale-display-small-height);
+ text-transform: var(--md-sys-typescale-display-small-text-transform);
+ text-decoration: var(--md-sys-typescale-display-small-text-decoration);
+}
+
+.headline-large {
+ font-family: var(--md-sys-typescale-headline-large-font-family-name);
+ font-style: var(--md-sys-typescale-headline-large-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-large-font-weight);
+ font-size: var(--md-sys-typescale-headline-large-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-large-tracking);
+ line-height: var(--md-sys-typescale-headline-large-height);
+ text-transform: var(--md-sys-typescale-headline-large-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-large-text-decoration);
+}
+
+.headline-medium {
+ font-family: var(--md-sys-typescale-headline-medium-font-family-name);
+ font-style: var(--md-sys-typescale-headline-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-medium-font-weight);
+ font-size: var(--md-sys-typescale-headline-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-medium-tracking);
+ line-height: var(--md-sys-typescale-headline-medium-height);
+ text-transform: var(--md-sys-typescale-headline-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-medium-text-decoration);
+}
+
+.headline-small {
+ font-family: var(--md-sys-typescale-headline-small-font-family-name);
+ font-style: var(--md-sys-typescale-headline-small-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-small-font-weight);
+ font-size: var(--md-sys-typescale-headline-small-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-small-tracking);
+ line-height: var(--md-sys-typescale-headline-small-height);
+ text-transform: var(--md-sys-typescale-headline-small-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-small-text-decoration);
+}
+
+.body-large {
+ font-family: var(--md-sys-typescale-body-large-font-family-name);
+ font-style: var(--md-sys-typescale-body-large-font-family-style);
+ font-weight: var(--md-sys-typescale-body-large-font-weight);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ letter-spacing: var(--md-sys-typescale-body-large-tracking);
+ line-height: var(--md-sys-typescale-body-large-height);
+ text-transform: var(--md-sys-typescale-body-large-text-transform);
+ text-decoration: var(--md-sys-typescale-body-large-text-decoration);
+}
+
+.body-medium {
+ font-family: var(--md-sys-typescale-body-medium-font-family-name);
+ font-style: var(--md-sys-typescale-body-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-body-medium-font-weight);
+ font-size: var(--md-sys-typescale-body-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
+ line-height: var(--md-sys-typescale-body-medium-height);
+ text-transform: var(--md-sys-typescale-body-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
+}
+
+.body-small {
+ font-family: var(--md-sys-typescale-body-small-font-family-name);
+ font-style: var(--md-sys-typescale-body-small-font-family-style);
+ font-weight: var(--md-sys-typescale-body-small-font-weight);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ letter-spacing: var(--md-sys-typescale-body-small-tracking);
+ line-height: var(--md-sys-typescale-body-small-height);
+ text-transform: var(--md-sys-typescale-body-small-text-transform);
+ text-decoration: var(--md-sys-typescale-body-small-text-decoration);
+}
+
+.label-large {
+ font-family: var(--md-sys-typescale-label-large-font-family-name);
+ font-style: var(--md-sys-typescale-label-large-font-family-style);
+ font-weight: var(--md-sys-typescale-label-large-font-weight);
+ font-size: var(--md-sys-typescale-label-large-font-size);
+ letter-spacing: var(--md-sys-typescale-label-large-tracking);
+ line-height: var(--md-sys-typescale-label-large-height);
+ text-transform: var(--md-sys-typescale-label-large-text-transform);
+ text-decoration: var(--md-sys-typescale-label-large-text-decoration);
+}
+
+.label-medium {
+ font-family: var(--md-sys-typescale-label-medium-font-family-name);
+ font-style: var(--md-sys-typescale-label-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-label-medium-font-weight);
+ font-size: var(--md-sys-typescale-label-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-label-medium-tracking);
+ line-height: var(--md-sys-typescale-label-medium-height);
+ text-transform: var(--md-sys-typescale-label-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-label-medium-text-decoration);
+}
+
+.label-small {
+ font-family: var(--md-sys-typescale-label-small-font-family-name);
+ font-style: var(--md-sys-typescale-label-small-font-family-style);
+ font-weight: var(--md-sys-typescale-label-small-font-weight);
+ font-size: var(--md-sys-typescale-label-small-font-size);
+ letter-spacing: var(--md-sys-typescale-label-small-tracking);
+ line-height: var(--md-sys-typescale-label-small-height);
+ text-transform: var(--md-sys-typescale-label-small-text-transform);
+ text-decoration: var(--md-sys-typescale-label-small-text-decoration);
+}
+
+.title-large {
+ font-family: var(--md-sys-typescale-title-large-font-family-name);
+ font-style: var(--md-sys-typescale-title-large-font-family-style);
+ font-weight: var(--md-sys-typescale-title-large-font-weight);
+ font-size: var(--md-sys-typescale-title-large-font-size);
+ letter-spacing: var(--md-sys-typescale-title-large-tracking);
+ line-height: var(--md-sys-typescale-title-large-height);
+ text-transform: var(--md-sys-typescale-title-large-text-transform);
+ text-decoration: var(--md-sys-typescale-title-large-text-decoration);
+}
+
+.title-medium {
+ font-family: var(--md-sys-typescale-title-medium-font-family-name);
+ font-style: var(--md-sys-typescale-title-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-title-medium-font-weight);
+ font-size: var(--md-sys-typescale-title-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-title-medium-tracking);
+ line-height: var(--md-sys-typescale-title-medium-height);
+ text-transform: var(--md-sys-typescale-title-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-title-medium-text-decoration);
+}
+
+.title-small {
+ font-family: var(--md-sys-typescale-title-small-font-family-name);
+ font-style: var(--md-sys-typescale-title-small-font-family-style);
+ font-weight: var(--md-sys-typescale-title-small-font-weight);
+ font-size: var(--md-sys-typescale-title-small-font-size);
+ letter-spacing: var(--md-sys-typescale-title-small-tracking);
+ line-height: var(--md-sys-typescale-title-small-height);
+ text-transform: var(--md-sys-typescale-title-small-text-transform);
+ text-decoration: var(--md-sys-typescale-title-small-text-decoration);
+}
+
+html {
+ font-family: Roboto, serif;
+ color: var(--md-sys-color-on-surface);
+}
+
+.m3 {
+ user-select: none;
+}
+
+.m3.m3-wrapper {
+ background-color: var(--md-sys-color-surface);
+ border-radius: 25px;
+ padding: 25px;
+ width: max-content;
+ height: min-content;
+}
+
+/*# sourceMappingURL=generics.css.map */
diff --git a/src/styles/generics.css.map b/src/styles/generics.css.map
new file mode 100644
index 0000000..40e7060
--- /dev/null
+++ b/src/styles/generics.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["generics.sass","fabs.sass","mixins/m3-mixins.sass","radio.sass","fonts.sass","button.sass","ripple.sass","swtich.sass","checkbox.sass","text-field.sass","icon-button.sass","themes/tokens.css","themes/colors.module.css","themes/typography.module.css"],"names":[],"mappings":"AAYQ;AACA;ACXR;EACI;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EC8CA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADlDA;EC4BI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADDJ;ECyBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADEJ;ECsBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADKJ;ECmBI;EA5BJ;;AACA;EACI;;AACJ;EACI;;ADQJ;ECnBA,ODoBkC;ECnBlC,QDmBwC;EClBxC,eDkB4B;ECjB5B,SDiB8C;EAC1C;;AAEJ;ECvBA,ODwBkC;ECvBlC,QDuBwC;ECtBxC,eDsB4B;ECrB5B,SDqB8C;EAC1C;;AAEJ;EC3BA,OD4BkC;EC3BlC,QD2BwC;EC1BxC,eD0B4B;ECzB5B,SDyB8C;EAC1C;;AAEJ;EC/BA,ODgCkC;EC/BlC,QD+BwC;EC9BxC,eD8B4B;EC7B5B,SD6B8C;EAC1C;;AAEJ;ECMI;;ADHJ;ECLI;;ADSA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AE9EZ;EDDI;EACA;EACA;EACA;EACA;;ACDA;EDIA;EACA;EACA;EACA;EACA;;;ACLJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAIA;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI;;;AC1DhB;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;ACnEJ;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;;AAER;EACI;EACA;;AACA;EACI;;AAER;EACI;EACA;;AACA;EACI;;AAER;EHHI;EGKA;;AACA;EACI;;AAER;EACI;;AACA;EACI;;AAER;EHaA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AGjBA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;EHpCA;;AGuCA;EHjCA;;AGoCA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EHnDA;;AGsDA;EHhDA;;AGmDA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;ACrHZ;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;IACE;;EACF;IACE;;;AC5BJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;IACI;;EACJ;IACI;;EACJ;IACI;;;AAER;EACI;IACI;;EACJ;IACI;;EACJ;IACI;;;AAER;EAEI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;;AAEZ;EACI;IACI;;EACJ;IACI;;;AClIR;ENDI;EACA;EACA;EACA;EACA;;AMDA;ENIA;EACA;EACA;EACA;EACA;;;AMLJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAII;EACI;;AAER;EACI;;AACA;EACI;;AAER;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI;;;AC1FhB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EAgBI;EACA;EACA;EACA;;AAlBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQJ;EACI;EACA;;AAEZ;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EAgBI;EACA;EACA;EACA;;AAlBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAOR;EACI;;AAEA;EACI;;AAEJ;EACI;;;ACzKhB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;;AAGA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;IACI;IACA;IACA;;;AAER;EACI;IACI;IACA;IACA;;;AAGR;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;;ACvJZ;AACE;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACzGF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACpSF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AbrIF;EACE;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;EACA","file":"generics.css"}
\ No newline at end of file
diff --git a/src/styles/generics.sass b/src/styles/generics.sass
new file mode 100644
index 0000000..63b02e1
--- /dev/null
+++ b/src/styles/generics.sass
@@ -0,0 +1,29 @@
+@import "fabs"
+@import "radio"
+@import "fonts"
+@import "button"
+@import "ripple"
+@import "swtich"
+@import "checkbox"
+@import "text-field"
+@import "icon-button"
+@import "./themes/tokens"
+@import "./themes/colors.module"
+@import "./themes/typography.module"
+@import "./themes/theme.dark.css" (prefers-color-scheme: dark)
+@import "./themes/theme.light.css" (prefers-color-scheme: light)
+
+html
+ font-family: Roboto, serif
+ color: var(--md-sys-color-on-surface)
+
+.m3
+ user-select: none
+
+.m3.m3-wrapper
+ background-color: var(--md-sys-color-surface)
+ border-radius: 25px
+ padding: 25px
+ width: max-content
+ height: min-content
+
diff --git a/src/styles/icon-button.css b/src/styles/icon-button.css
new file mode 100644
index 0000000..890295c
--- /dev/null
+++ b/src/styles/icon-button.css
@@ -0,0 +1,151 @@
+button.m3.m3-icon-button {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ contain: content;
+ border-radius: 50%;
+ position: relative;
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ width: 40px;
+ height: 40px;
+ border: none;
+ padding: 0;
+}
+button.m3.m3-icon-button::before {
+ transition: background-color, box-shadow, 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ content: "";
+ width: 100%;
+ height: 100%;
+ position: absolute;
+}
+button.m3.m3-icon-button > span.m3-icon {
+ z-index: 25;
+ font-size: 2em;
+ font-variation-settings: "FILL" 0, "wght" 500, "GRAD" 0, "opsz" 48;
+}
+button.m3.m3-icon-button:is(.default, .filled, .tonal, .outlined) {
+ font-family: Material-Symbols-Round-Regular, serif;
+}
+button.m3.m3-icon-button:is(.default, .filled, .tonal, .outlined).selected.toggled {
+ font-size: 13.49px;
+ font-family: Material-Icons-Regular, serif;
+ font-weight: 500;
+}
+button.m3.m3-icon-button.default {
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.default:disabled, button.m3.m3-icon-button.default.selected:disabled, button.m3.m3-icon-button.default.selected.toggled:disabled {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.default.selected.toggled {
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled {
+ color: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled.toggled {
+ color: var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.filled.selected.toggled {
+ color: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.tonal.toggled {
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.tonal.selected.toggled, button.m3.m3-icon-button.tonal {
+ color: var(--md-sys-color-on-secondary-container);
+ background-color: var(--md-sys-color-secondary-container);
+}
+button.m3.m3-icon-button:is(.tonal, .filled, .toggled.selected):disabled {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+button.m3.m3-icon-button.outlined {
+ border: 1px solid var(--md-sys-color-outline);
+ color: var(--md-sys-color-on-surface-variant);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.outlined:disabled {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 12%, transparent);
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ background-color: rgba(0, 0, 0, 0);
+}
+button.m3.m3-icon-button.outlined.toggled.selected:disabled {
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 0%, transparent);
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+@media (prefers-color-scheme: light) {
+ button.m3.m3-icon-button.outlined.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface-light);
+ color: var(--md-sys-color-inverse-on-surface);
+ }
+}
+@media (prefers-color-scheme: dark) {
+ button.m3.m3-icon-button.outlined.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface);
+ color: var(--md-sys-color-inverse-on-surface);
+ }
+}
+button.m3.m3-icon-button.filled:not(:disabled) > .m3.m3-ripple-domain > .m3.ripple, button.m3.m3-icon-button.filled:not(:disabled).selected.toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button.m3.m3-icon-button.filled:not(:disabled).toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled) > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled):not(.outlined).toggled.selected > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:is(.outlined, .default):not(:disabled):not(.default).toggled.selected > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-inverse-on-surface) 12%, transparent);
+}
+button.m3.m3-icon-button.tonal:not(:disabled) > .m3.m3-ripple-domain > .m3.ripple, button.m3.m3-icon-button.tonal:not(:disabled).selected.toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-icon-button.tonal:not(:disabled).toggled > .m3.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled):is(.default, .outlined)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).filled::before, button.m3.m3-icon-button:hover:not(:disabled).filled.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).filled.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).tonal::before, button.m3.m3-icon-button:hover:not(:disabled).tonal.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent);
+}
+button.m3.m3-icon-button:hover:not(:disabled).tonal.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled):is(.default, .outlined)::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).filled::before, button.m3.m3-icon-button:focus-visible:not(:disabled).filled.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).filled.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).tonal::before, button.m3.m3-icon-button:focus-visible:not(:disabled).tonal.toggled.selected::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent);
+}
+button.m3.m3-icon-button:focus-visible:not(:disabled).tonal.toggled::before {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent);
+}
+
+/*# sourceMappingURL=icon-button.css.map */
diff --git a/src/styles/icon-button.css.map b/src/styles/icon-button.css.map
new file mode 100644
index 0000000..18a6817
--- /dev/null
+++ b/src/styles/icon-button.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["icon-button.sass"],"names":[],"mappings":"AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;;AAGA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;IACI;IACA;IACA;;;AAER;EACI;IACI;IACA;IACA;;;AAGR;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AACJ;EACI;;AAEJ;EACI;;AACJ;EACI","file":"icon-button.css"}
\ No newline at end of file
diff --git a/src/styles/icon-button.sass b/src/styles/icon-button.sass
new file mode 100644
index 0000000..9919bcd
--- /dev/null
+++ b/src/styles/icon-button.sass
@@ -0,0 +1,152 @@
+@import "mixins/m3-mixins"
+
+button.m3.m3-icon-button
+ transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) !important
+ contain: content
+ border-radius: 50%
+ position: relative
+ display: inline-flex
+ flex-direction: row
+ justify-content: center
+ align-items: center
+ width: 40px
+ height: 40px
+ border: none
+ padding: 0
+
+ &::before
+ transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) !important
+ content: ""
+ width: 100%
+ height: 100%
+ position: absolute
+
+ & > span.m3-icon
+ z-index: 25
+ font-size: 2em
+ font-variation-settings: 'FILL' 0, 'wght' 500, 'GRAD' 0, 'opsz' 48
+
+ &:is(.default, .filled, .tonal, .outlined)
+ &
+ font-family: Material-Symbols-Round-Regular, serif
+
+ &.selected.toggled
+ font-size: 13.49px
+ font-family: Material-Icons-Regular, serif
+ font-weight: 500
+
+ &.default
+ &
+ color: var(--md-sys-color-on-surface-variant)
+ background-color: #00000000
+
+ &:disabled, &.selected:disabled, &.selected.toggled:disabled
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent)
+ background-color: #00000000
+
+ &.selected.toggled
+ color: var(--md-sys-color-primary)
+
+ &.filled
+ &
+ color: var(--md-sys-color-on-primary)
+ background-color: var(--md-sys-color-primary)
+
+ &.toggled
+ color: var(--md-sys-color-primary)
+ background-color: var(--md-sys-color-surface-container-highest)
+
+ &.selected.toggled
+ color: var(--md-sys-color-on-primary)
+ background-color: var(--md-sys-color-primary)
+
+ &.tonal
+ &.toggled
+ color: var(--md-sys-color-on-surface-variant)
+ background-color: var(--md-sys-color-surface-container-highest)
+
+ &.selected.toggled, &
+ color: var(--md-sys-color-on-secondary-container)
+ background-color: var(--md-sys-color-secondary-container)
+
+ &:is(.tonal, .filled, .toggled.selected):disabled
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+
+ &.outlined
+ &
+ border: 1px solid var(--md-sys-color-outline)
+ color: var(--md-sys-color-on-surface-variant)
+ background-color: #00000000
+
+ &:disabled
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 12%, transparent)
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent)
+ background-color: #00000000
+
+ &.toggled.selected:disabled
+ border: 1px solid color-mix(in srgb, var(--md-sys-color-outline) 0%, transparent)
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+
+ @media (prefers-color-scheme: light)
+ &.selected.toggled
+ border: 1px solid #00000000
+ background-color: var(--md-sys-color-inverse-surface-light)
+ color: var(--md-sys-color-inverse-on-surface)
+
+ @media (prefers-color-scheme: dark)
+ &.selected.toggled
+ border: 1px solid #00000000
+ background-color: var(--md-sys-color-inverse-surface)
+ color: var(--md-sys-color-inverse-on-surface)
+
+ &.filled:not(:disabled)
+ & > .m3.m3-ripple-domain > .m3.ripple, &.selected.toggled > .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent)
+ &.toggled > .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &:is(.outlined, .default):not(:disabled)
+ & > .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent)
+
+ &:not(.outlined).toggled.selected> .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &:not(.default).toggled.selected> .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-inverse-on-surface) 12%, transparent)
+
+ &.tonal:not(:disabled)
+ & > .m3.m3-ripple-domain > .m3.ripple, &.selected.toggled > .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+ &.toggled > .m3.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent)
+
+ &:hover:not(:disabled)
+ &:is(.default, .outlined)::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent)
+
+ &.filled::before, &.filled.toggled.selected::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 8%, transparent)
+ &.filled.toggled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &.tonal::before, &.tonal.toggled.selected::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 8%, transparent)
+ &.tonal.toggled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 8%, transparent)
+
+ &:focus-visible:not(:disabled)
+ &:is(.default, .outlined)::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent)
+
+ &.filled::before, &.filled.toggled.selected::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-primary) 12%, transparent)
+ &.filled.toggled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &.tonal::before, &.tonal.toggled.selected::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-secondary-container) 12%, transparent)
+ &.tonal.toggled::before
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 12%, transparent)
diff --git a/src/styles/mixins/m3-mixins.css b/src/styles/mixins/m3-mixins.css
new file mode 100644
index 0000000..4d6e350
--- /dev/null
+++ b/src/styles/mixins/m3-mixins.css
@@ -0,0 +1,3 @@
+
+
+/*# sourceMappingURL=m3-mixins.css.map */
diff --git a/src/styles/mixins/m3-mixins.css.map b/src/styles/mixins/m3-mixins.css.map
new file mode 100644
index 0000000..85fd488
--- /dev/null
+++ b/src/styles/mixins/m3-mixins.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":[],"names":[],"mappings":"","file":"m3-mixins.css"}
\ No newline at end of file
diff --git a/src/styles/mixins/m3-mixins.sass b/src/styles/mixins/m3-mixins.sass
new file mode 100644
index 0000000..e6ef126
--- /dev/null
+++ b/src/styles/mixins/m3-mixins.sass
@@ -0,0 +1,73 @@
+@mixin m3-label-mixin
+ display: flex
+ position: relative
+ align-items: center
+ justify-content: center
+ aspect-ratio: 1
+
+@mixin m3-state-layer-mixin
+ position: absolute
+ width: 40px
+ aspect-ratio: inherit
+ border-radius: 50%
+ transition: background-color .2s cubic-bezier(0.2, 0, 0, 1)
+
+@mixin m3-fab-default($b-radius, $width, $height : $width, $padding : 0)
+ width: $width
+ height: $height
+ border-radius: $b-radius
+ padding: $padding
+
+@mixin m3-fab-colors-palette($bg-color, $color)
+ @include elevation-3(false)
+ background-color: var($bg-color)
+ & > span.m3-icon, &
+ color: var($color)
+ & > .m3.m3-ripple-domain > .m3.ripple
+ background: color-mix(in srgb, var($color) 12%, transparent)
+
+@mixin elevation-0($important)
+ @if($important == true)
+ box-shadow: none !important
+ @else
+ box-shadow: none
+
+@mixin elevation-1($important)
+ @if($important == true)
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30) !important
+ @else
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30)
+
+@mixin elevation-2($important)
+ @if($important == true)
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30) !important
+ @else
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15), 0 1px 2px 0 rgba(0, 0, 0, 0.30)
+
+@mixin elevation-3($important)
+ @if($important == true)
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.30), 0 4px 8px 3px rgba(0, 0, 0, 0.15) !important
+ @else
+ box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.30), 0 4px 8px 3px rgba(0, 0, 0, 0.15)
+
+@mixin elevation-4($important)
+ @if($important == true)
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.30), 0 6px 10px 4px rgba(0, 0, 0, 0.15) !important
+ @else
+ box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.30), 0 6px 10px 4px rgba(0, 0, 0, 0.15)
+
+@mixin elevation-5($important)
+ @if($important == true)
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.30), 0 8px 12px 6px rgba(0, 0, 0, 0.15) !important
+ @else
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.30), 0 8px 12px 6px rgba(0, 0, 0, 0.15)
+
+@mixin state-layer
+ transition: background-color, box-shadow, .2s cubic-bezier(0.2, 0, 0, 1) !important
+ content: ""
+ top: 0
+ bottom: 0
+ left: 0
+ right: 0
+ position: absolute
+ background: #00000000
diff --git a/src/styles/radio.css b/src/styles/radio.css
new file mode 100644
index 0000000..a946256
--- /dev/null
+++ b/src/styles/radio.css
@@ -0,0 +1,69 @@
+label.m3.m3-radio-label {
+ display: flex;
+ position: relative;
+ align-items: center;
+ justify-content: center;
+ aspect-ratio: 1;
+}
+label.m3.m3-radio-label > span.m3.m3-radio-state-layer {
+ position: absolute;
+ width: 40px;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+
+input[type=radio].m3.m3-radio {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 10;
+ width: 20px;
+ margin: 0;
+ aspect-ratio: inherit;
+ border-radius: 50%;
+ border: 2px solid var(--md-sys-color-on-surface-variant);
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+input[type=radio].m3.m3-radio::after {
+ content: "";
+ width: 10px;
+ aspect-ratio: 1;
+ border-radius: 50%;
+}
+input[type=radio].m3.m3-radio:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:checked {
+ border: 2px solid var(--md-sys-color-primary);
+}
+input[type=radio].m3.m3-radio:checked::after {
+ background-color: var(--md-sys-color-primary);
+}
+input[type=radio].m3.m3-radio:checked:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:checked:disabled::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):checked:hover + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):is(:checked:active, :indeterminate:active) + span.m3.m3-radio-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):hover + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):active + span.m3.m3-radio-state-layer {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=radio].m3.m3-radio:not(:disabled):active + span.m3.m3-radio-state-layer + span.m3-ripple-domain > .m3.ripple {
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent);
+}
+
+/*# sourceMappingURL=radio.css.map */
diff --git a/src/styles/radio.css.map b/src/styles/radio.css.map
new file mode 100644
index 0000000..4dffd1e
--- /dev/null
+++ b/src/styles/radio.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["radio.sass","mixins/m3-mixins.sass"],"names":[],"mappings":"AAEA;ECDI;EACA;EACA;EACA;EACA;;ADDA;ECIA;EACA;EACA;EACA;EACA;;;ADLJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAIA;EACI;;AAEJ;EACI;;AACA;EACI;;AAGJ;EACI;;AAER;EACI;;AACA;EACI","file":"radio.css"}
\ No newline at end of file
diff --git a/src/styles/radio.sass b/src/styles/radio.sass
new file mode 100644
index 0000000..26cdfdc
--- /dev/null
+++ b/src/styles/radio.sass
@@ -0,0 +1,59 @@
+@import "mixins/m3-mixins"
+
+label.m3.m3-radio-label
+ @include m3-label-mixin
+ & > span.m3.m3-radio-state-layer
+ @include m3-state-layer-mixin
+
+input[type="radio"].m3.m3-radio
+ appearance: none
+ display: flex
+ align-items: center
+ justify-content: center
+ z-index: 10
+ width: 20px
+ margin: 0
+ aspect-ratio: inherit
+ border-radius: 50%
+ border: 2px solid var(--md-sys-color-on-surface-variant)
+ transition: background-color .2s cubic-bezier(0.2, 0, 0, 1)
+
+ &::after
+ content: ""
+ width: 10px
+ aspect-ratio: 1
+ border-radius: 50%
+
+ &:disabled
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ &:checked
+ border: 2px solid var(--md-sys-color-primary)
+
+ &:checked::after
+ background-color: var(--md-sys-color-primary)
+
+ &:checked:disabled
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ &:checked:disabled::after
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ &:not(:disabled)
+
+ &:checked:hover + span.m3.m3-radio-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &:is(:checked:active, :indeterminate:active) + span.m3.m3-radio-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+ & + span.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 20%, transparent)
+
+ &:hover
+ & + span.m3.m3-radio-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent)
+
+ &:active + span.m3.m3-radio-state-layer
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+ & + span.m3-ripple-domain > .m3.ripple
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 20%, transparent)
diff --git a/src/styles/ripple.css b/src/styles/ripple.css
new file mode 100644
index 0000000..cd35b9b
--- /dev/null
+++ b/src/styles/ripple.css
@@ -0,0 +1,36 @@
+.m3.m3-ripple-domain {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 20;
+ pointer-events: none;
+}
+
+.m3.ripple {
+ position: absolute;
+ overflow: hidden;
+ pointer-events: none;
+ transform-origin: center;
+ opacity: 0;
+ z-index: 20;
+ aspect-ratio: 1;
+ border-radius: 50%;
+ animation-name: rippleAppearanceAnimation;
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ animation-duration: 0.55s;
+ transition: opacity, background, background-color, 0.55s cubic-bezier(0.4, 0, 0.2, 1);
+}
+.m3.ripple.visible {
+ opacity: 1 !important;
+}
+
+@keyframes rippleAppearanceAnimation {
+ 0% {
+ transform: scale3d(0, 0, 0);
+ }
+ 100% {
+ transform: scale3d(1, 1, 1);
+ }
+}
+
+/*# sourceMappingURL=ripple.css.map */
diff --git a/src/styles/ripple.css.map b/src/styles/ripple.css.map
new file mode 100644
index 0000000..6ee188e
--- /dev/null
+++ b/src/styles/ripple.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["ripple.sass"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;;AAEJ;EACE;IACE;;EACF;IACE","file":"ripple.css"}
\ No newline at end of file
diff --git a/src/styles/ripple.sass b/src/styles/ripple.sass
new file mode 100644
index 0000000..2ac8725
--- /dev/null
+++ b/src/styles/ripple.sass
@@ -0,0 +1,29 @@
+.m3.m3-ripple-domain
+ position: absolute
+ width: 100%
+ height: 100%
+ z-index: 20
+ pointer-events: none
+
+.m3.ripple
+ position: absolute
+ overflow: hidden
+ pointer-events: none
+ transform-origin: center
+ opacity: 0
+ z-index: 20
+ aspect-ratio: 1
+ border-radius: 50%
+ animation-name: rippleAppearanceAnimation
+ animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1)
+ animation-duration: .55s
+ transition: opacity, background, background-color, .55s cubic-bezier(0.4, 0, 0.2, 1)
+
+ &.visible
+ opacity: 1 !important
+
+@keyframes rippleAppearanceAnimation
+ 0%
+ transform: scale3d(0, 0, 0)
+ 100%
+ transform: scale3d(1, 1, 1)
diff --git a/src/styles/swtich.css b/src/styles/swtich.css
new file mode 100644
index 0000000..4dc548d
--- /dev/null
+++ b/src/styles/swtich.css
@@ -0,0 +1,141 @@
+input[type=checkbox].m3.m3-switch {
+ transition: background-color 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ display: flex;
+ position: relative;
+ align-items: center;
+ width: 52px;
+ height: 32px;
+ appearance: none;
+ padding: 2px 2px 2px 6px;
+ border-radius: 16px;
+ border: 2px solid var(--md-sys-color-outline);
+ background-color: var(--md-sys-color-surface-container-high);
+}
+input[type=checkbox].m3.m3-switch:disabled {
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+ background-color: color-mix(in srgb, var(--md-sys-color-surface-container-high) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:checked {
+ border: 2px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-primary);
+}
+input[type=checkbox].m3.m3-switch::after {
+ transition: color, background-color, opacity, 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ z-index: 9;
+ position: absolute;
+ display: flex;
+ content: "";
+ height: 40px;
+ width: 40px;
+ left: -6px;
+ border-radius: 50%;
+}
+input[type=checkbox].m3.m3-switch:checked::after {
+ transform: translateX(50%);
+}
+input[type=checkbox].m3.m3-switch:checked::after, input[type=checkbox].m3.m3-switch::after, input[type=checkbox].m3.m3-switch:checked::before, input[type=checkbox].m3.m3-switch::before {
+ transform-origin: center;
+}
+input[type=checkbox].m3.m3-switch:is([data-icon=true], [data-icon=true]:checked)::before {
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ font-weight: 500;
+ font-size: 12px;
+ line-height: 12px;
+}
+input[type=checkbox].m3.m3-switch[data-icon=true]:checked::before {
+ content: "done" !important;
+ color: var(--md-sys-color-on-primary-container);
+}
+@media (prefers-color-scheme: light) {
+ input[type=checkbox].m3.m3-switch[data-icon=true]::before {
+ color: var(--md-sys-color-on-primary);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled::before {
+ color: var(--md-sys-color-surface-container-highest);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled:checked::before {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+ }
+}
+@media (prefers-color-scheme: dark) {
+ input[type=checkbox].m3.m3-switch[data-icon=true]::before {
+ color: var(--md-sys-color-surface-container-high);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled::before {
+ color: var(--md-sys-color-surface-container-highest);
+ }
+ input[type=checkbox].m3.m3-switch[data-icon=true]:disabled:checked::before {
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent);
+ }
+}
+input[type=checkbox].m3.m3-switch[data-icon=true]:where([data-selected=false])::before, input[type=checkbox].m3.m3-switch[data-icon=true]:where([data-selected=false]):disabled::before {
+ transform: scale(150%);
+ content: "close";
+}
+input[type=checkbox].m3.m3-switch::before {
+ z-index: 10;
+ transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ content: "";
+ display: flex;
+ height: 16px;
+ width: 16px;
+ border-radius: 50%;
+ background-color: var(--md-sys-color-outline);
+}
+input[type=checkbox].m3.m3-switch:checked::before {
+ opacity: 1;
+ transform: translateX(125%) scale(150%);
+ background-color: var(--md-sys-color-on-primary);
+}
+input[type=checkbox].m3.m3-switch:hover:checked::after {
+ transform: translateX(50%);
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent);
+}
+input[type=checkbox].m3.m3-switch:hover::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active:checked::after {
+ transform: translateX(50%);
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active::after {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+input[type=checkbox].m3.m3-switch:active:checked::before {
+ transform: translateX(125%) scale(175%);
+ background-color: var(--md-sys-color-primary-container);
+}
+input[type=checkbox].m3.m3-switch:active::before {
+ transform: scale(175%);
+ background-color: var(--md-sys-color-on-surface-variant);
+}
+input[type=checkbox].m3.m3-switch:disabled:checked {
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important;
+}
+input[type=checkbox].m3.m3-switch:disabled:checked::after, input[type=checkbox].m3.m3-switch:disabled::after {
+ opacity: 0;
+}
+input[type=checkbox].m3.m3-switch:disabled::before {
+ opacity: 0.38;
+ transform: initial;
+ background-color: var(--md-sys-color-outline) !important;
+}
+input[type=checkbox].m3.m3-switch:disabled:checked::before {
+ opacity: 1;
+ transform: translateX(125%) scale(150%);
+ background-color: var(--md-sys-color-surface) !important;
+}
+
+@keyframes toggle-shifting {
+ 50% {
+ width: 30px;
+ }
+ 100% {
+ width: 16px;
+ }
+}
+
+/*# sourceMappingURL=swtich.css.map */
diff --git a/src/styles/swtich.css.map b/src/styles/swtich.css.map
new file mode 100644
index 0000000..28147ae
--- /dev/null
+++ b/src/styles/swtich.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["swtich.sass"],"names":[],"mappings":"AAAA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;IACI;;EACJ;IACI;;EACJ;IACI;;;AAER;EACI;IACI;;EACJ;IACI;;EACJ;IACI;;;AAER;EAEI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;EACI;EACA;;AAEJ;EACI;;AAGJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;;AAEZ;EACI;IACI;;EACJ;IACI","file":"swtich.css"}
\ No newline at end of file
diff --git a/src/styles/swtich.sass b/src/styles/swtich.sass
new file mode 100644
index 0000000..b55f850
--- /dev/null
+++ b/src/styles/swtich.sass
@@ -0,0 +1,133 @@
+input[type="checkbox"].m3.m3-switch
+ transition: background-color .3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ display: flex
+ position: relative
+ align-items: center
+ width: 52px
+ height: 32px
+ appearance: none
+ padding: 2px 2px 2px 6px
+ border-radius: calc(32px / 2)
+ border: 2px solid var(--md-sys-color-outline)
+ background-color: var(--md-sys-color-surface-container-high)
+
+ &:disabled
+ border: 2px solid color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+ background-color: color-mix(in srgb, var(--md-sys-color-surface-container-high) 12%, transparent)
+
+ &:checked
+ border: 2px solid #00000000
+ background-color: var(--md-sys-color-primary)
+
+ &::after
+ transition: color, background-color, opacity, .2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ z-index: 9
+ position: absolute
+ display: flex
+ content: ""
+ height: 40px
+ width: 40px
+ left: -6px
+ border-radius: 50%
+
+ &:checked::after
+ transform: translateX(50%)
+
+ &:checked::after, &::after, &:checked::before, &::before
+ transform-origin: center
+
+ &:is([data-icon=true], [data-icon=true]:checked)::before
+ font-family: Material-Symbols-Outlined-Regular, sans-serif
+ align-items: center
+ justify-content: center
+ text-align: center
+ font-weight: 500
+ font-size: 12px
+ line-height: 12px
+
+ &[data-icon=true]:checked::before
+ content: "done" !important
+ color: var(--md-sys-color-on-primary-container)
+
+ @media (prefers-color-scheme: light)
+ &[data-icon=true]::before
+ color: var(--md-sys-color-on-primary)
+ &[data-icon=true]:disabled::before
+ color: var(--md-sys-color-surface-container-highest)
+ &[data-icon=true]:disabled:checked::before
+ color: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ @media (prefers-color-scheme: dark)
+ &[data-icon=true]::before
+ color: var(--md-sys-color-surface-container-high)
+ &[data-icon=true]:disabled::before
+ color: var(--md-sys-color-surface-container-highest)
+ &[data-icon=true]:disabled:checked::before
+ color: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent)
+
+ &[data-icon=true]:where([data-selected=false])::before,
+ &[data-icon=true]:where([data-selected=false]):disabled::before
+ transform: scale(150%)
+ content: "close"
+
+ &::before
+ z-index: 10
+ transition: all .3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ content: ""
+ display: flex
+ height: 16px
+ width: 16px
+ border-radius: 50%
+ background-color: var(--md-sys-color-outline)
+
+ &:checked::before
+ opacity: 1
+ transform: translateX(125%) scale(150%)
+ background-color: var(--md-sys-color-on-primary)
+
+ &:hover
+ &:checked::after
+ transform: translateX(50%)
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 8%, transparent)
+
+ &::after
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent)
+
+ &:active
+ &:checked::after
+ transform: translateX(50%)
+ background-color: color-mix(in srgb, var(--md-sys-color-primary) 12%, transparent)
+
+ &::after
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+
+ &:checked::before
+ transform: translateX(125%) scale(175%)
+ background-color: var(--md-sys-color-primary-container)
+
+ &::before
+ transform: scale(175%)
+ background-color: var(--md-sys-color-on-surface-variant)
+
+ &:disabled
+ &:checked
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent) !important
+
+ &:checked::after, &::after
+ opacity: 0
+
+ &::before
+ opacity: 0.38
+ transform: initial
+ background-color: var(--md-sys-color-outline) !important
+
+ &:checked::before
+ opacity: 1
+ transform: translateX(125%) scale(150%)
+ background-color: var(--md-sys-color-surface) !important
+
+@keyframes toggle-shifting
+ 50%
+ width: 30px
+ 100%
+ width: 16px
\ No newline at end of file
diff --git a/src/styles/text-field.css b/src/styles/text-field.css
new file mode 100644
index 0000000..954615a
--- /dev/null
+++ b/src/styles/text-field.css
@@ -0,0 +1,170 @@
+div.m3.m3-text-field {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ box-sizing: border-box;
+ margin: 0;
+}
+div.m3.m3-text-field span.m3-icon.icon-before {
+ align-self: start;
+}
+div.m3.m3-text-field + span.m3-text-field-supporting-text {
+ display: flex;
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ color: var(--md-sys-color-on-surface-variant);
+ margin: 0 16px;
+}
+div.m3.m3-text-field > label {
+ padding-inline: 4px;
+ pointer-events: none;
+ transform: translate(12px, 0);
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ color: var(--md-sys-color-on-surface-variant);
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ position: absolute;
+}
+div.m3.m3-text-field > input {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ color: var(--md-sys-color-on-surface);
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ background-color: transparent;
+ border: none;
+}
+div.m3.m3-text-field > span.m3-icon {
+ position: absolute;
+ align-self: end;
+ margin: 12px;
+ width: 24px;
+ line-height: 24px;
+ font-size: 24px;
+ display: inherit;
+ align-items: center;
+ justify-content: inherit;
+ cursor: pointer;
+ color: var(--md-sys-color-on-surface-variant);
+ font-family: Material-Symbols-Outlined-Regular, serif;
+}
+div.m3.m3-text-field > span.m3-text-field-state-layer {
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+ position: absolute;
+}
+div.m3.m3-text-field:is(.filled, .outlined) > input:focus-visible {
+ outline: none;
+ caret-color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled {
+ contain: content;
+ border-radius: 4px 4px 0 0;
+}
+div.m3.m3-text-field.filled > label.used {
+ transform: translate(12px, -12px);
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled:has(input:required:user-invalid) > *, div.m3.m3-text-field.filled:has(input:required:user-invalid) + span.m3-text-field-supporting-text {
+ color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled > input:focus-visible {
+ outline-offset: 2px;
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.filled:has(input:disabled), div.m3.m3-text-field.filled:has(input:disabled) + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.filled > input {
+ box-sizing: border-box;
+ border-radius: 4px 4px 0 0;
+ background-color: var(--md-sys-color-surface-container-highest);
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-on-surface-variant);
+}
+div.m3.m3-text-field.filled > input.with-after-icon {
+ padding: 24px 48px 8px 16px;
+}
+div.m3.m3-text-field.filled > input.with-before-icon {
+ padding: 24px 16px 8px 48px;
+}
+div.m3.m3-text-field.filled > input.with-before-icon + label {
+ margin-left: 32px;
+}
+div.m3.m3-text-field.filled > input:not(.with-after-icon, .with-before-icon) {
+ padding: 24px 16px 8px;
+}
+div.m3.m3-text-field.filled > input.with-after-icon.with-before-icon {
+ padding: 24px 48px 8px 48px;
+}
+div.m3.m3-text-field.filled:hover > input:not(:disabled) ~ span.m3-text-field-state-layer {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent);
+}
+div.m3.m3-text-field.outlined {
+ border-radius: 4px;
+}
+div.m3.m3-text-field.outlined > label.used {
+ background-color: var(--md-sys-color-surface);
+ transform: translate(12px, -27px) !important;
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+}
+div.m3.m3-text-field.outlined > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+ outline-offset: -2px;
+ outline: 2px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(input:required:user-invalid) > *, div.m3.m3-text-field.outlined:has(input:required:user-invalid) + span.m3-text-field-supporting-text {
+ color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined > input:focus-visible {
+ outline-offset: -2px;
+ outline: 2px solid var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined:has(input:disabled), div.m3.m3-text-field.outlined:has(input:disabled) + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.outlined > input {
+ box-sizing: border-box;
+ border-radius: 4px;
+ outline-offset: -1px;
+ outline: 1px solid var(--md-sys-color-outline);
+}
+div.m3.m3-text-field.outlined > input.with-after-icon {
+ padding: 16px 48px 16px 16px;
+}
+div.m3.m3-text-field.outlined > input.with-before-icon {
+ padding: 16px 16px 16px 48px;
+}
+div.m3.m3-text-field.outlined > input.with-before-icon + label {
+ transform: translate(48px, 0);
+}
+div.m3.m3-text-field.outlined > input:not(.with-after-icon, .with-before-icon) {
+ padding: 16px;
+}
+div.m3.m3-text-field.outlined > input.with-after-icon.with-before-icon {
+ padding: 16px 48px;
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible) {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible):has(input:not(div.m3.m3-text-field.outlined:hover:not(:focus-visible):user-invalid, :disabled, :focus-visible)) > label {
+ color: var(--md-sys-color-on-surface);
+}
+div.m3.m3-text-field.outlined:hover:not(:focus-visible) > input:not(:user-invalid, :disabled, :focus-visible) {
+ outline-color: var(--md-sys-color-on-surface) !important;
+}
+
+/*# sourceMappingURL=text-field.css.map */
diff --git a/src/styles/text-field.css.map b/src/styles/text-field.css.map
new file mode 100644
index 0000000..d6b9fbc
--- /dev/null
+++ b/src/styles/text-field.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["text-field.sass"],"names":[],"mappings":"AAAA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EAgBI;EACA;EACA;EACA;;AAlBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAQJ;EACI;EACA;;AAEZ;EACI;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EAgBI;EACA;EACA;EACA;;AAlBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAOR;EACI;;AAEA;EACI;;AAEJ;EACI","file":"text-field.css"}
\ No newline at end of file
diff --git a/src/styles/text-field.sass b/src/styles/text-field.sass
new file mode 100644
index 0000000..20ad012
--- /dev/null
+++ b/src/styles/text-field.sass
@@ -0,0 +1,173 @@
+div.m3.m3-text-field
+ position: relative
+ display: flex
+ justify-content: center
+ flex-direction: column
+ box-sizing: border-box
+ margin: 0
+
+ span.m3-icon.icon-before
+ align-self: start
+
+ & + span.m3-text-field-supporting-text
+ display: flex
+ line-height: var(--md-sys-typescale-body-large-line-height)
+ font-size: var(--md-sys-typescale-body-small-font-size)
+ color: var(--md-sys-color-on-surface-variant)
+ margin: 0 16px
+
+ & > label
+ padding-inline: 4px
+ pointer-events: none
+ transform: translate(12px, 0)
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ color: var(--md-sys-color-on-surface-variant)
+ line-height: var(--md-sys-typescale-body-large-line-height)
+ font-size: var(--md-sys-typescale-body-large-font-size)
+ position: absolute
+
+ & > input
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ color: var(--md-sys-color-on-surface)
+ line-height: var(--md-sys-typescale-body-large-line-height)
+ font-size: var(--md-sys-typescale-body-large-font-size)
+ background-color: transparent
+ border: none
+
+ & > span.m3-icon
+ position: absolute
+ align-self: end
+ margin: 12px
+ width: 24px
+ line-height: 24px
+ font-size: 24px
+ display: inherit
+ align-items: center
+ justify-content: inherit
+ cursor: pointer
+ color: var(--md-sys-color-on-surface-variant)
+ font-family: Material-Symbols-Outlined-Regular, serif
+
+ & > span.m3-text-field-state-layer
+ width: 100%
+ height: 100%
+ pointer-events: none
+ position: absolute
+
+ &:is(.filled, .outlined) > input:focus-visible
+ outline: none
+ caret-color: var(--md-sys-color-primary)
+
+ &.filled
+ contain: content
+ border-radius: 4px 4px 0 0
+
+ & > label.used
+ transform: translate(12px, -12px)
+ line-height: var(--md-sys-typescale-body-small-line-height)
+ font-size: var(--md-sys-typescale-body-small-font-size)
+
+ & > input:required:user-invalid
+ caret-color: var(--md-sys-color-error)
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid) > *,
+ &:has(input:required:user-invalid) + span.m3-text-field-supporting-text
+ color: var(--md-sys-color-error)
+
+ & > input:focus-visible
+ outline-offset: 2px
+ box-shadow: inset 0 -2px 0 var(--md-sys-color-primary)
+
+ & > input:focus-visible + label
+ color: var(--md-sys-color-primary)
+
+ &:has(input:disabled),
+ &:has(input:disabled) + span.m3-text-field-supporting-text
+ opacity: 38%
+
+ & > input
+ &.with-after-icon
+ padding: 24px 48px 8px 16px
+
+ &.with-before-icon
+ padding: 24px 16px 8px 48px
+
+ &.with-before-icon + label
+ margin-left: 32px
+
+ &:not(.with-after-icon, .with-before-icon)
+ padding: 24px 16px 8px
+
+ &.with-after-icon.with-before-icon
+ padding: 24px 48px 8px 48px
+
+ box-sizing: border-box
+ border-radius: 4px 4px 0 0
+ background-color: var(--md-sys-color-surface-container-highest)
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-on-surface-variant)
+
+ &:hover
+ & > input:not(:disabled) ~ span.m3-text-field-state-layer
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ background-color: color-mix(in srgb, var(--md-sys-color-on-surface) 8%, transparent)
+
+ &.outlined
+ border-radius: 4px
+
+ & > label.used
+ background-color: var(--md-sys-color-surface)
+ transform: translate(12px, -27px) !important
+ line-height: var(--md-sys-typescale-body-small-line-height)
+ font-size: var(--md-sys-typescale-body-small-font-size)
+
+ & > input:required:user-invalid
+ caret-color: var(--md-sys-color-error)
+ outline-offset: -2px
+ outline: 2px solid var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid) > *,
+ &:has(input:required:user-invalid) + span.m3-text-field-supporting-text
+ color: var(--md-sys-color-error)
+
+ & > input:focus-visible
+ outline-offset: -2px
+ outline: 2px solid var(--md-sys-color-primary)
+
+ & > input:focus-visible + label
+ color: var(--md-sys-color-primary)
+
+ &:has(input:disabled),
+ &:has(input:disabled) + span.m3-text-field-supporting-text
+ opacity: 38%
+
+ & > input
+ &.with-after-icon
+ padding: 16px 48px 16px 16px
+
+ &.with-before-icon
+ padding: 16px 16px 16px 48px
+
+ &.with-before-icon + label
+ transform: translate(48px, 0)
+
+ &:not(.with-after-icon, .with-before-icon)
+ padding: 16px
+
+ &.with-after-icon.with-before-icon
+ padding: 16px 48px
+
+ box-sizing: border-box
+ border-radius: 4px
+ outline-offset: -1px
+ outline: 1px solid var(--md-sys-color-outline)
+
+ &:hover:not(:focus-visible)
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+
+ &:has(input:not(&:user-invalid,:disabled,:focus-visible)) > label
+ color: var(--md-sys-color-on-surface)
+
+ & > input:not(:user-invalid,:disabled,:focus-visible)
+ outline-color: var(--md-sys-color-on-surface) !important
+
diff --git a/src/styles/themes/colors.module.css b/src/styles/themes/colors.module.css
new file mode 100644
index 0000000..76a4644
--- /dev/null
+++ b/src/styles/themes/colors.module.css
@@ -0,0 +1,294 @@
+.primary {
+ background-color: var(--md-sys-color-primary);
+}
+.primary-text {
+ color: var(--md-sys-color-primary);
+}
+.on-primary {
+ background-color: var(--md-sys-color-on-primary);
+}
+.on-primary-text {
+ color: var(--md-sys-color-on-primary);
+}
+.primary-container {
+ background-color: var(--md-sys-color-primary-container);
+}
+.primary-container-text {
+ color: var(--md-sys-color-primary-container);
+}
+.on-primary-container {
+ background-color: var(--md-sys-color-on-primary-container);
+}
+.on-primary-container-text {
+ color: var(--md-sys-color-on-primary-container);
+}
+.primary-fixed {
+ background-color: var(--md-sys-color-primary-fixed);
+}
+.primary-fixed-text {
+ color: var(--md-sys-color-primary-fixed);
+}
+.on-primary-fixed {
+ background-color: var(--md-sys-color-on-primary-fixed);
+}
+.on-primary-fixed-text {
+ color: var(--md-sys-color-on-primary-fixed);
+}
+.primary-fixed-dim {
+ background-color: var(--md-sys-color-primary-fixed-dim);
+}
+.primary-fixed-dim-text {
+ color: var(--md-sys-color-primary-fixed-dim);
+}
+.on-primary-fixed-variant {
+ background-color: var(--md-sys-color-on-primary-fixed-variant);
+}
+.on-primary-fixed-variant-text {
+ color: var(--md-sys-color-on-primary-fixed-variant);
+}
+.secondary {
+ background-color: var(--md-sys-color-secondary);
+}
+.secondary-text {
+ color: var(--md-sys-color-secondary);
+}
+.on-secondary {
+ background-color: var(--md-sys-color-on-secondary);
+}
+.on-secondary-text {
+ color: var(--md-sys-color-on-secondary);
+}
+.secondary-container {
+ background-color: var(--md-sys-color-secondary-container);
+}
+.secondary-container-text {
+ color: var(--md-sys-color-secondary-container);
+}
+.on-secondary-container {
+ background-color: var(--md-sys-color-on-secondary-container);
+}
+.on-secondary-container-text {
+ color: var(--md-sys-color-on-secondary-container);
+}
+.secondary-fixed {
+ background-color: var(--md-sys-color-secondary-fixed);
+}
+.secondary-fixed-text {
+ color: var(--md-sys-color-secondary-fixed);
+}
+.on-secondary-fixed {
+ background-color: var(--md-sys-color-on-secondary-fixed);
+}
+.on-secondary-fixed-text {
+ color: var(--md-sys-color-on-secondary-fixed);
+}
+.secondary-fixed-dim {
+ background-color: var(--md-sys-color-secondary-fixed-dim);
+}
+.secondary-fixed-dim-text {
+ color: var(--md-sys-color-secondary-fixed-dim);
+}
+.on-secondary-fixed-variant {
+ background-color: var(--md-sys-color-on-secondary-fixed-variant);
+}
+.on-secondary-fixed-variant-text {
+ color: var(--md-sys-color-on-secondary-fixed-variant);
+}
+.tertiary {
+ background-color: var(--md-sys-color-tertiary);
+}
+.tertiary-text {
+ color: var(--md-sys-color-tertiary);
+}
+.on-tertiary {
+ background-color: var(--md-sys-color-on-tertiary);
+}
+.on-tertiary-text {
+ color: var(--md-sys-color-on-tertiary);
+}
+.tertiary-container {
+ background-color: var(--md-sys-color-tertiary-container);
+}
+.tertiary-container-text {
+ color: var(--md-sys-color-tertiary-container);
+}
+.on-tertiary-container {
+ background-color: var(--md-sys-color-on-tertiary-container);
+}
+.on-tertiary-container-text {
+ color: var(--md-sys-color-on-tertiary-container);
+}
+.tertiary-fixed {
+ background-color: var(--md-sys-color-tertiary-fixed);
+}
+.tertiary-fixed-text {
+ color: var(--md-sys-color-tertiary-fixed);
+}
+.on-tertiary-fixed {
+ background-color: var(--md-sys-color-on-tertiary-fixed);
+}
+.on-tertiary-fixed-text {
+ color: var(--md-sys-color-on-tertiary-fixed);
+}
+.tertiary-fixed-dim {
+ background-color: var(--md-sys-color-tertiary-fixed-dim);
+}
+.tertiary-fixed-dim-text {
+ color: var(--md-sys-color-tertiary-fixed-dim);
+}
+.on-tertiary-fixed-variant {
+ background-color: var(--md-sys-color-on-tertiary-fixed-variant);
+}
+.on-tertiary-fixed-variant-text {
+ color: var(--md-sys-color-on-tertiary-fixed-variant);
+}
+.error {
+ background-color: var(--md-sys-color-error);
+}
+.error-text {
+ color: var(--md-sys-color-error);
+}
+.error-container {
+ background-color: var(--md-sys-color-error-container);
+}
+.error-container-text {
+ color: var(--md-sys-color-error-container);
+}
+.on-error {
+ background-color: var(--md-sys-color-on-error);
+}
+.on-error-text {
+ color: var(--md-sys-color-on-error);
+}
+.on-error-container {
+ background-color: var(--md-sys-color-on-error-container);
+}
+.on-error-container-text {
+ color: var(--md-sys-color-on-error-container);
+}
+.background {
+ background-color: var(--md-sys-color-background);
+}
+.background-text {
+ color: var(--md-sys-color-background);
+}
+.on-background {
+ background-color: var(--md-sys-color-on-background);
+}
+.on-background-text {
+ color: var(--md-sys-color-on-background);
+}
+.outline {
+ background-color: var(--md-sys-color-outline);
+}
+.outline-text {
+ color: var(--md-sys-color-outline);
+}
+.inverse-on-surface {
+ background-color: var(--md-sys-color-inverse-on-surface);
+}
+.inverse-on-surface-text {
+ color: var(--md-sys-color-inverse-on-surface);
+}
+.inverse-surface {
+ background-color: var(--md-sys-color-inverse-surface);
+}
+.inverse-surface-text {
+ color: var(--md-sys-color-inverse-surface);
+}
+.inverse-primary {
+ background-color: var(--md-sys-color-inverse-primary);
+}
+.inverse-primary-text {
+ color: var(--md-sys-color-inverse-primary);
+}
+.shadow {
+ background-color: var(--md-sys-color-shadow);
+}
+.shadow-text {
+ color: var(--md-sys-color-shadow);
+}
+.surface-tint {
+ background-color: var(--md-sys-color-surface-tint);
+}
+.surface-tint-text {
+ color: var(--md-sys-color-surface-tint);
+}
+.outline-variant {
+ background-color: var(--md-sys-color-outline-variant);
+}
+.outline-variant-text {
+ color: var(--md-sys-color-outline-variant);
+}
+.scrim {
+ background-color: var(--md-sys-color-scrim);
+}
+.scrim-text {
+ color: var(--md-sys-color-scrim);
+}
+.surface {
+ background-color: var(--md-sys-color-surface);
+}
+.surface-text {
+ color: var(--md-sys-color-surface);
+}
+.on-surface {
+ background-color: var(--md-sys-color-on-surface);
+}
+.on-surface-text {
+ color: var(--md-sys-color-on-surface);
+}
+.surface-variant {
+ background-color: var(--md-sys-color-surface-variant);
+}
+.surface-variant-text {
+ color: var(--md-sys-color-surface-variant);
+}
+.on-surface-variant {
+ background-color: var(--md-sys-color-on-surface-variant);
+}
+.on-surface-variant-text {
+ color: var(--md-sys-color-on-surface-variant);
+}
+.surface-container-highest {
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+.surface-container-highest-text {
+ color: var(--md-sys-color-surface-container-highest);
+}
+.surface-container-high {
+ background-color: var(--md-sys-color-surface-container-high);
+}
+.surface-container-high-text {
+ color: var(--md-sys-color-surface-container-high);
+}
+.surface-container {
+ background-color: var(--md-sys-color-surface-container);
+}
+.surface-container-text {
+ color: var(--md-sys-color-surface-container);
+}
+.surface-container-low {
+ background-color: var(--md-sys-color-surface-container-low);
+}
+.surface-container-low-text {
+ color: var(--md-sys-color-surface-container-low);
+}
+.surface-container-lowest {
+ background-color: var(--md-sys-color-surface-container-lowest);
+}
+.surface-container-lowest-text {
+ color: var(--md-sys-color-surface-container-lowest);
+}
+.surface-dim {
+ background-color: var(--md-sys-color-surface-dim);
+}
+.surface-dim-text {
+ color: var(--md-sys-color-surface-dim);
+}
+.surface-bright {
+ background-color: var(--md-sys-color-surface-bright);
+}
+.surface-bright-text {
+ color: var(--md-sys-color-surface-bright);
+}
diff --git a/src/styles/themes/theme.dark.css b/src/styles/themes/theme.dark.css
new file mode 100644
index 0000000..09ed7a5
--- /dev/null
+++ b/src/styles/themes/theme.dark.css
@@ -0,0 +1,51 @@
+:root {
+ --md-sys-color-primary: rgb(227 183 244);
+ --md-sys-color-surface-tint: rgb(227 183 244);
+ --md-sys-color-on-primary: rgb(67 34 84);
+ --md-sys-color-primary-container: rgb(92 57 108);
+ --md-sys-color-on-primary-container: rgb(246 217 255);
+ --md-sys-color-secondary: rgb(212 192 216);
+ --md-sys-color-on-secondary: rgb(57 44 62);
+ --md-sys-color-secondary-container: rgb(80 66 85);
+ --md-sys-color-on-secondary-container: rgb(240 220 244);
+ --md-sys-color-tertiary: rgb(245 183 182);
+ --md-sys-color-on-tertiary: rgb(76 37 37);
+ --md-sys-color-tertiary-container: rgb(102 59 59);
+ --md-sys-color-on-tertiary-container: rgb(255 218 217);
+ --md-sys-color-error: rgb(255 180 171);
+ --md-sys-color-on-error: rgb(105 0 5);
+ --md-sys-color-error-container: rgb(147 0 10);
+ --md-sys-color-on-error-container: rgb(255 218 214);
+ --md-sys-color-background: rgb(22 18 23);
+ --md-sys-color-on-background: rgb(233 224 231);
+ --md-sys-color-surface: rgb(22 18 23);
+ --md-sys-color-on-surface: rgb(233 224 231);
+ --md-sys-color-surface-variant: rgb(76 68 77);
+ --md-sys-color-on-surface-variant: rgb(206 195 206);
+ --md-sys-color-outline: rgb(151 142 151);
+ --md-sys-color-outline-variant: rgb(76 68 77);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(233 224 231);
+ --md-sys-color-inverse-on-surface: rgb(52 47 52);
+ --md-sys-color-inverse-primary: rgb(117 80 134);
+ --md-sys-color-primary-fixed: rgb(246 217 255);
+ --md-sys-color-on-primary-fixed: rgb(45 11 62);
+ --md-sys-color-primary-fixed-dim: rgb(227 183 244);
+ --md-sys-color-on-primary-fixed-variant: rgb(92 57 108);
+ --md-sys-color-secondary-fixed: rgb(240 220 244);
+ --md-sys-color-on-secondary-fixed: rgb(35 23 40);
+ --md-sys-color-secondary-fixed-dim: rgb(212 192 216);
+ --md-sys-color-on-secondary-fixed-variant: rgb(80 66 85);
+ --md-sys-color-tertiary-fixed: rgb(255 218 217);
+ --md-sys-color-on-tertiary-fixed: rgb(51 17 18);
+ --md-sys-color-tertiary-fixed-dim: rgb(245 183 182);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(102 59 59);
+ --md-sys-color-surface-dim: rgb(22 18 23);
+ --md-sys-color-surface-bright: rgb(61 55 61);
+ --md-sys-color-surface-container-lowest: rgb(17 13 18);
+ --md-sys-color-surface-container-low: rgb(30 26 31);
+ --md-sys-color-surface-container: rgb(35 30 35);
+ --md-sys-color-surface-container-high: rgb(45 40 46);
+ --md-sys-color-surface-container-highest: rgb(56 51 57);
+}
\ No newline at end of file
diff --git a/src/styles/themes/theme.light.css b/src/styles/themes/theme.light.css
new file mode 100644
index 0000000..0c63650
--- /dev/null
+++ b/src/styles/themes/theme.light.css
@@ -0,0 +1,51 @@
+:root {
+ --md-sys-color-primary: rgb(117 80 134);
+ --md-sys-color-surface-tint: rgb(117 80 134);
+ --md-sys-color-on-primary: rgb(255 255 255);
+ --md-sys-color-primary-container: rgb(246 217 255);
+ --md-sys-color-on-primary-container: rgb(45 11 62);
+ --md-sys-color-secondary: rgb(104 89 109);
+ --md-sys-color-on-secondary: rgb(255 255 255);
+ --md-sys-color-secondary-container: rgb(240 220 244);
+ --md-sys-color-on-secondary-container: rgb(35 23 40);
+ --md-sys-color-tertiary: rgb(129 82 81);
+ --md-sys-color-on-tertiary: rgb(255 255 255);
+ --md-sys-color-tertiary-container: rgb(255 218 217);
+ --md-sys-color-on-tertiary-container: rgb(51 17 18);
+ --md-sys-color-error: rgb(186 26 26);
+ --md-sys-color-on-error: rgb(255 255 255);
+ --md-sys-color-error-container: rgb(255 218 214);
+ --md-sys-color-on-error-container: rgb(65 0 2);
+ --md-sys-color-background: rgb(255 247 252);
+ --md-sys-color-on-background: rgb(30 26 31);
+ --md-sys-color-surface: rgb(255 247 252);
+ --md-sys-color-on-surface: rgb(30 26 31);
+ --md-sys-color-surface-variant: rgb(235 223 234);
+ --md-sys-color-on-surface-variant: rgb(76 68 77);
+ --md-sys-color-outline: rgb(125 116 126);
+ --md-sys-color-outline-variant: rgb(206 195 206);
+ --md-sys-color-shadow: rgb(0 0 0);
+ --md-sys-color-scrim: rgb(0 0 0);
+ --md-sys-color-inverse-surface: rgb(52 47 52);
+ --md-sys-color-inverse-on-surface: rgb(248 238 246);
+ --md-sys-color-inverse-primary: rgb(227 183 244);
+ --md-sys-color-primary-fixed: rgb(246 217 255);
+ --md-sys-color-on-primary-fixed: rgb(45 11 62);
+ --md-sys-color-primary-fixed-dim: rgb(227 183 244);
+ --md-sys-color-on-primary-fixed-variant: rgb(92 57 108);
+ --md-sys-color-secondary-fixed: rgb(240 220 244);
+ --md-sys-color-on-secondary-fixed: rgb(35 23 40);
+ --md-sys-color-secondary-fixed-dim: rgb(212 192 216);
+ --md-sys-color-on-secondary-fixed-variant: rgb(80 66 85);
+ --md-sys-color-tertiary-fixed: rgb(255 218 217);
+ --md-sys-color-on-tertiary-fixed: rgb(51 17 18);
+ --md-sys-color-tertiary-fixed-dim: rgb(245 183 182);
+ --md-sys-color-on-tertiary-fixed-variant: rgb(102 59 59);
+ --md-sys-color-surface-dim: rgb(225 215 223);
+ --md-sys-color-surface-bright: rgb(255 247 252);
+ --md-sys-color-surface-container-lowest: rgb(255 255 255);
+ --md-sys-color-surface-container-low: rgb(251 241 248);
+ --md-sys-color-surface-container: rgb(245 235 243);
+ --md-sys-color-surface-container-high: rgb(239 229 237);
+ --md-sys-color-surface-container-highest: rgb(233 224 231);
+}
diff --git a/src/styles/themes/tokens.css b/src/styles/themes/tokens.css
new file mode 100644
index 0000000..d7adb9f
--- /dev/null
+++ b/src/styles/themes/tokens.css
@@ -0,0 +1,107 @@
+:root {
+ /* display - large */
+ --md-sys-typescale-display-large-font-family-name: Roboto;
+ --md-sys-typescale-display-large-font-family-style: Regular;
+ --md-sys-typescale-display-large-font-weight: 400;
+ --md-sys-typescale-display-large-font-size: 57px;
+ --md-sys-typescale-display-large-line-height: 64px;
+ --md-sys-typescale-display-large-letter-spacing: -0.25px;
+ /* display - medium */
+ --md-sys-typescale-display-medium-font-family-name: Roboto;
+ --md-sys-typescale-display-medium-font-family-style: Regular;
+ --md-sys-typescale-display-medium-font-weight: 400;
+ --md-sys-typescale-display-medium-font-size: 45px;
+ --md-sys-typescale-display-medium-line-height: 52px;
+ --md-sys-typescale-display-medium-letter-spacing: 0px;
+ /* display - small */
+ --md-sys-typescale-display-small-font-family-name: Roboto;
+ --md-sys-typescale-display-small-font-family-style: Regular;
+ --md-sys-typescale-display-small-font-weight: 400;
+ --md-sys-typescale-display-small-font-size: 36px;
+ --md-sys-typescale-display-small-line-height: 44px;
+ --md-sys-typescale-display-small-letter-spacing: 0px;
+ /* headline - large */
+ --md-sys-typescale-headline-large-font-family-name: Roboto;
+ --md-sys-typescale-headline-large-font-family-style: Regular;
+ --md-sys-typescale-headline-large-font-weight: 400;
+ --md-sys-typescale-headline-large-font-size: 32px;
+ --md-sys-typescale-headline-large-line-height: 40px;
+ --md-sys-typescale-headline-large-letter-spacing: 0px;
+ /* headline - medium */
+ --md-sys-typescale-headline-medium-font-family-name: Roboto;
+ --md-sys-typescale-headline-medium-font-family-style: Regular;
+ --md-sys-typescale-headline-medium-font-weight: 400;
+ --md-sys-typescale-headline-medium-font-size: 28px;
+ --md-sys-typescale-headline-medium-line-height: 36px;
+ --md-sys-typescale-headline-medium-letter-spacing: 0px;
+ /* headline - small */
+ --md-sys-typescale-headline-small-font-family-name: Roboto;
+ --md-sys-typescale-headline-small-font-family-style: Regular;
+ --md-sys-typescale-headline-small-font-weight: 400;
+ --md-sys-typescale-headline-small-font-size: 24px;
+ --md-sys-typescale-headline-small-line-height: 32px;
+ --md-sys-typescale-headline-small-letter-spacing: 0px;
+ /* body - large */
+ --md-sys-typescale-body-large-font-family-name: Roboto;
+ --md-sys-typescale-body-large-font-family-style: Regular;
+ --md-sys-typescale-body-large-font-weight: 400;
+ --md-sys-typescale-body-large-font-size: 16px;
+ --md-sys-typescale-body-large-line-height: 24px;
+ --md-sys-typescale-body-large-letter-spacing: 0.50px;
+ /* body - medium */
+ --md-sys-typescale-body-medium-font-family-name: Roboto;
+ --md-sys-typescale-body-medium-font-family-style: Regular;
+ --md-sys-typescale-body-medium-font-weight: 400;
+ --md-sys-typescale-body-medium-font-size: 14px;
+ --md-sys-typescale-body-medium-line-height: 20px;
+ --md-sys-typescale-body-medium-letter-spacing: 0.25px;
+ /* body - small */
+ --md-sys-typescale-body-small-font-family-name: Roboto;
+ --md-sys-typescale-body-small-font-family-style: Regular;
+ --md-sys-typescale-body-small-font-weight: 400;
+ --md-sys-typescale-body-small-font-size: 12px;
+ --md-sys-typescale-body-small-line-height: 16px;
+ --md-sys-typescale-body-small-letter-spacing: 0.40px;
+ /* label - large */
+ --md-sys-typescale-label-large-font-family-name: Roboto;
+ --md-sys-typescale-label-large-font-family-style: Medium;
+ --md-sys-typescale-label-large-font-weight: 500;
+ --md-sys-typescale-label-large-font-size: 14px;
+ --md-sys-typescale-label-large-line-height: 20px;
+ --md-sys-typescale-label-large-letter-spacing: 0.10px;
+ /* label - medium */
+ --md-sys-typescale-label-medium-font-family-name: Roboto;
+ --md-sys-typescale-label-medium-font-family-style: Medium;
+ --md-sys-typescale-label-medium-font-weight: 500;
+ --md-sys-typescale-label-medium-font-size: 12px;
+ --md-sys-typescale-label-medium-line-height: 16px;
+ --md-sys-typescale-label-medium-letter-spacing: 0.50px;
+ /* label - small */
+ --md-sys-typescale-label-small-font-family-name: Roboto;
+ --md-sys-typescale-label-small-font-family-style: Medium;
+ --md-sys-typescale-label-small-font-weight: 500;
+ --md-sys-typescale-label-small-font-size: 11px;
+ --md-sys-typescale-label-small-line-height: 16px;
+ --md-sys-typescale-label-small-letter-spacing: 0.50px;
+ /* title - large */
+ --md-sys-typescale-title-large-font-family-name: Roboto;
+ --md-sys-typescale-title-large-font-family-style: Regular;
+ --md-sys-typescale-title-large-font-weight: 400;
+ --md-sys-typescale-title-large-font-size: 22px;
+ --md-sys-typescale-title-large-line-height: 28px;
+ --md-sys-typescale-title-large-letter-spacing: 0px;
+ /* title - medium */
+ --md-sys-typescale-title-medium-font-family-name: Roboto;
+ --md-sys-typescale-title-medium-font-family-style: Medium;
+ --md-sys-typescale-title-medium-font-weight: 500;
+ --md-sys-typescale-title-medium-font-size: 16px;
+ --md-sys-typescale-title-medium-line-height: 24px;
+ --md-sys-typescale-title-medium-letter-spacing: 0.15px;
+ /* title - small */
+ --md-sys-typescale-title-small-font-family-name: Roboto;
+ --md-sys-typescale-title-small-font-family-style: Medium;
+ --md-sys-typescale-title-small-font-weight: 500;
+ --md-sys-typescale-title-small-font-size: 14px;
+ --md-sys-typescale-title-small-line-height: 20px;
+ --md-sys-typescale-title-small-letter-spacing: 0.10px;
+}
diff --git a/src/styles/themes/typography.module.css b/src/styles/themes/typography.module.css
new file mode 100644
index 0000000..5e2c82f
--- /dev/null
+++ b/src/styles/themes/typography.module.css
@@ -0,0 +1,150 @@
+.display-large{
+ font-family: var(--md-sys-typescale-display-large-font-family-name);
+ font-style: var(--md-sys-typescale-display-large-font-family-style);
+ font-weight: var(--md-sys-typescale-display-large-font-weight);
+ font-size: var(--md-sys-typescale-display-large-font-size);
+ letter-spacing: var(--md-sys-typescale-display-large-tracking);
+ line-height: var(--md-sys-typescale-display-large-height);
+ text-transform: var(--md-sys-typescale-display-large-text-transform);
+ text-decoration: var(--md-sys-typescale-display-large-text-decoration);
+}
+.display-medium{
+ font-family: var(--md-sys-typescale-display-medium-font-family-name);
+ font-style: var(--md-sys-typescale-display-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-display-medium-font-weight);
+ font-size: var(--md-sys-typescale-display-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-display-medium-tracking);
+ line-height: var(--md-sys-typescale-display-medium-height);
+ text-transform: var(--md-sys-typescale-display-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-display-medium-text-decoration);
+}
+.display-small{
+ font-family: var(--md-sys-typescale-display-small-font-family-name);
+ font-style: var(--md-sys-typescale-display-small-font-family-style);
+ font-weight: var(--md-sys-typescale-display-small-font-weight);
+ font-size: var(--md-sys-typescale-display-small-font-size);
+ letter-spacing: var(--md-sys-typescale-display-small-tracking);
+ line-height: var(--md-sys-typescale-display-small-height);
+ text-transform: var(--md-sys-typescale-display-small-text-transform);
+ text-decoration: var(--md-sys-typescale-display-small-text-decoration);
+}
+.headline-large{
+ font-family: var(--md-sys-typescale-headline-large-font-family-name);
+ font-style: var(--md-sys-typescale-headline-large-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-large-font-weight);
+ font-size: var(--md-sys-typescale-headline-large-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-large-tracking);
+ line-height: var(--md-sys-typescale-headline-large-height);
+ text-transform: var(--md-sys-typescale-headline-large-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-large-text-decoration);
+}
+.headline-medium{
+ font-family: var(--md-sys-typescale-headline-medium-font-family-name);
+ font-style: var(--md-sys-typescale-headline-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-medium-font-weight);
+ font-size: var(--md-sys-typescale-headline-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-medium-tracking);
+ line-height: var(--md-sys-typescale-headline-medium-height);
+ text-transform: var(--md-sys-typescale-headline-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-medium-text-decoration);
+}
+.headline-small{
+ font-family: var(--md-sys-typescale-headline-small-font-family-name);
+ font-style: var(--md-sys-typescale-headline-small-font-family-style);
+ font-weight: var(--md-sys-typescale-headline-small-font-weight);
+ font-size: var(--md-sys-typescale-headline-small-font-size);
+ letter-spacing: var(--md-sys-typescale-headline-small-tracking);
+ line-height: var(--md-sys-typescale-headline-small-height);
+ text-transform: var(--md-sys-typescale-headline-small-text-transform);
+ text-decoration: var(--md-sys-typescale-headline-small-text-decoration);
+}
+.body-large{
+ font-family: var(--md-sys-typescale-body-large-font-family-name);
+ font-style: var(--md-sys-typescale-body-large-font-family-style);
+ font-weight: var(--md-sys-typescale-body-large-font-weight);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+ letter-spacing: var(--md-sys-typescale-body-large-tracking);
+ line-height: var(--md-sys-typescale-body-large-height);
+ text-transform: var(--md-sys-typescale-body-large-text-transform);
+ text-decoration: var(--md-sys-typescale-body-large-text-decoration);
+}
+.body-medium{
+ font-family: var(--md-sys-typescale-body-medium-font-family-name);
+ font-style: var(--md-sys-typescale-body-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-body-medium-font-weight);
+ font-size: var(--md-sys-typescale-body-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
+ line-height: var(--md-sys-typescale-body-medium-height);
+ text-transform: var(--md-sys-typescale-body-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
+}
+.body-small{
+ font-family: var(--md-sys-typescale-body-small-font-family-name);
+ font-style: var(--md-sys-typescale-body-small-font-family-style);
+ font-weight: var(--md-sys-typescale-body-small-font-weight);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ letter-spacing: var(--md-sys-typescale-body-small-tracking);
+ line-height: var(--md-sys-typescale-body-small-height);
+ text-transform: var(--md-sys-typescale-body-small-text-transform);
+ text-decoration: var(--md-sys-typescale-body-small-text-decoration);
+}
+.label-large{
+ font-family: var(--md-sys-typescale-label-large-font-family-name);
+ font-style: var(--md-sys-typescale-label-large-font-family-style);
+ font-weight: var(--md-sys-typescale-label-large-font-weight);
+ font-size: var(--md-sys-typescale-label-large-font-size);
+ letter-spacing: var(--md-sys-typescale-label-large-tracking);
+ line-height: var(--md-sys-typescale-label-large-height);
+ text-transform: var(--md-sys-typescale-label-large-text-transform);
+ text-decoration: var(--md-sys-typescale-label-large-text-decoration);
+}
+.label-medium{
+ font-family: var(--md-sys-typescale-label-medium-font-family-name);
+ font-style: var(--md-sys-typescale-label-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-label-medium-font-weight);
+ font-size: var(--md-sys-typescale-label-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-label-medium-tracking);
+ line-height: var(--md-sys-typescale-label-medium-height);
+ text-transform: var(--md-sys-typescale-label-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-label-medium-text-decoration);
+}
+.label-small{
+ font-family: var(--md-sys-typescale-label-small-font-family-name);
+ font-style: var(--md-sys-typescale-label-small-font-family-style);
+ font-weight: var(--md-sys-typescale-label-small-font-weight);
+ font-size: var(--md-sys-typescale-label-small-font-size);
+ letter-spacing: var(--md-sys-typescale-label-small-tracking);
+ line-height: var(--md-sys-typescale-label-small-height);
+ text-transform: var(--md-sys-typescale-label-small-text-transform);
+ text-decoration: var(--md-sys-typescale-label-small-text-decoration);
+}
+.title-large{
+ font-family: var(--md-sys-typescale-title-large-font-family-name);
+ font-style: var(--md-sys-typescale-title-large-font-family-style);
+ font-weight: var(--md-sys-typescale-title-large-font-weight);
+ font-size: var(--md-sys-typescale-title-large-font-size);
+ letter-spacing: var(--md-sys-typescale-title-large-tracking);
+ line-height: var(--md-sys-typescale-title-large-height);
+ text-transform: var(--md-sys-typescale-title-large-text-transform);
+ text-decoration: var(--md-sys-typescale-title-large-text-decoration);
+}
+.title-medium{
+ font-family: var(--md-sys-typescale-title-medium-font-family-name);
+ font-style: var(--md-sys-typescale-title-medium-font-family-style);
+ font-weight: var(--md-sys-typescale-title-medium-font-weight);
+ font-size: var(--md-sys-typescale-title-medium-font-size);
+ letter-spacing: var(--md-sys-typescale-title-medium-tracking);
+ line-height: var(--md-sys-typescale-title-medium-height);
+ text-transform: var(--md-sys-typescale-title-medium-text-transform);
+ text-decoration: var(--md-sys-typescale-title-medium-text-decoration);
+}
+.title-small{
+ font-family: var(--md-sys-typescale-title-small-font-family-name);
+ font-style: var(--md-sys-typescale-title-small-font-family-style);
+ font-weight: var(--md-sys-typescale-title-small-font-weight);
+ font-size: var(--md-sys-typescale-title-small-font-size);
+ letter-spacing: var(--md-sys-typescale-title-small-tracking);
+ line-height: var(--md-sys-typescale-title-small-height);
+ text-transform: var(--md-sys-typescale-title-small-text-transform);
+ text-decoration: var(--md-sys-typescale-title-small-text-decoration);
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..7f2aeae
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,36 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}