diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..781ced1
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,95 @@
+const prettierConfig = require('./.prettierrc.js');
+
+module.exports = {
+ env: {
+ browser: true,
+ commonjs: true,
+ es2021: true,
+ node: true,
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:react/recommended',
+ 'plugin:react-hooks/recommended',
+ 'plugin:prettier/recommended',
+ 'plugin:@typescript-eslint/eslint-recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'next/core-web-vitals',
+ ],
+ parserOptions: {
+ ecmaFeatures: {
+ jsx: true,
+ },
+ ecmaVersion: 12,
+ sourceType: 'module',
+ },
+ plugins: ['react'],
+ rules: {
+ // Possible errors
+ 'no-console': 'warn',
+ // Best practices
+ 'dot-notation': 'error',
+ 'no-else-return': 'error',
+ 'no-floating-decimal': 'error',
+ 'no-sequences': 'error',
+ // Stylistic
+ 'array-bracket-spacing': 'error',
+ 'computed-property-spacing': ['error', 'never'],
+ curly: 'error',
+ 'no-lonely-if': 'error',
+ 'no-unneeded-ternary': 'error',
+ 'one-var-declaration-per-line': 'error',
+ quotes: [
+ 'error',
+ 'single',
+ {
+ allowTemplateLiterals: false,
+ avoidEscape: true,
+ },
+ ],
+ // ES6
+ 'array-callback-return': 'off',
+ 'prefer-const': 'error',
+ // Imports
+ 'import/prefer-default-export': 'off',
+ 'sort-imports': [
+ 'error',
+ {
+ ignoreCase: true,
+ ignoreDeclarationSort: true,
+ },
+ ],
+ 'no-unused-expressions': 'off',
+ 'no-prototype-builtins': 'off',
+ // REACT
+ 'react/jsx-uses-react': 'off',
+ 'react/react-in-jsx-scope': 'off',
+ 'jsx-a11y/href-no-hash': [0],
+ 'react/display-name': 0,
+ 'react/no-deprecated': 'error',
+ 'react/no-unsafe': [
+ 'error',
+ {
+ checkAliases: true,
+ },
+ ],
+ 'react/jsx-sort-props': [
+ 'error',
+ {
+ ignoreCase: true,
+ },
+ ],
+ 'react-hooks/rules-of-hooks': 'error',
+ 'react-hooks/exhaustive-deps': 0,
+ // Prettier
+ // eslint looks for the prettier config at the top level of the package/app
+ // but the config lives in the `config/` directory. Passing the config here
+ // to get around this.
+ 'prettier/prettier': ['error', prettierConfig],
+ },
+ settings: {
+ react: {
+ version: 'detect',
+ },
+ },
+};
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/google-material-you-ui.iml b/.idea/google-material-you-ui.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/google-material-you-ui.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..03d9549
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml
new file mode 100644
index 0000000..541945b
--- /dev/null
+++ b/.idea/jsLinters/eslint.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..176ce84
--- /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/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..42d4cf3
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ arrowParens: 'avoid',
+ singleQuote: true,
+ trailingComma: 'all',
+ tabWidth: 4,
+ endOfLine: 'auto',
+};
\ No newline at end of file
diff --git a/README.md b/README.md
index b8ab8dc..34d0e90 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,49 @@
-# Next.js + Turbopack
+# React/Next.js Material You UI kit (pre-alpha)
-This example allows you to get started with `next dev --turbo` quicky.
+This repository is including and will be including components, enumerates in table:
-## Deploy your own
+- [x] Buttons
+ - [x] Default
+ - [x] Icon
+ - [x] FAB
+ - [x] Radio
+ - [ ] Segmented
+- [x] Checkbox
+- [x] Text fields
+- [x] Switches
+- [ ] Chips
+- [x] Icon
+- [x] Ripple Effect
+- [x] Dividers
+- [x] Badges
+- [ ] Select field
+- [ ] Bottom sheets
+- [ ] Cards
+- [ ] Menus
+- [ ] Navigation
+ - [ ] Bars
+ - [ ] Drawer
+ - [ ] Rail
+- [ ] Sliders
+- [ ] Snackbar
+- [ ] Tabs
+- [ ] Bottom sheets
+- [ ] Bottom app bars
+ ~~and including preview page for test.~~
+ Preview page on stage WIP.
-[](https://vercel.com/new/clone?repository-url=https://github.com/vercel/next.js/tree/canary/examples/with-turbopack&project-name=with-turbopack&repository-name=with-turbopack)
+# Status
-## How to use
+Nowadays, this UI kit have base kinds of components and you could make everything. For example - general forms (without select field and etc.)
-Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [npm](https://docs.npmjs.com/cli/init), [Yarn](https://yarnpkg.com/lang/en/docs/cli/create/), or [pnpm](https://pnpm.io) to bootstrap the example:
+# Roadmap
-```bash
-npx create-next-app --example with-turbopack with-turbopack-app
-```
+1. Full implementation components;
+2. Release NPM package;
+3. Custom theaming.
-```bash
-yarn create next-app --example with-turbopack with-turbopack-app
-```
+## Did you find the bug? Make sure to [leave an issue](https://github.com/doryan04/DSS/issues/new) in case of any problems.
-```bash
-pnpm create next-app --example with-turbopack with-turbopack-app
-```
+## If you want help to the project, please, advise your idea in Pull request and don't forget [send issue](https://github.com/doryan04/DSS/issues/new)
-Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=next-example) ([Documentation](https://nextjs.org/docs/deployment)).
+### Check out actual news on Telegram. [https://t.me/doryanProjects](https://t.me/doryanProjects)
diff --git a/app/components/badges.tsx b/app/components/badges.tsx
new file mode 100644
index 0000000..301b9ed
--- /dev/null
+++ b/app/components/badges.tsx
@@ -0,0 +1,136 @@
+import React from 'react';
+import { Badge } from '../../src/primitive-components/badge/badge';
+import { Divider } from '../../src/primitive-components/divider/divider';
+
+export default function Badges() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ 3487
+
+
+
+ 5
+
+
+
+ 32
+
+
+
+ 322342
+
+
+
+ {/*
*/}
+ {/**/}
+ {/*
*/}
+ {/*
*/}
+ {/* */}
+ {/*
*/}
+ {/*
*/}
+ {/* */}
+ {/* 5*/}
+ {/*
*/}
+ {/* */}
+ {/* */}
+ {/* 32*/}
+ {/*
*/}
+ {/* */}
+ {/*
*/}
+
+ );
+}
diff --git a/app/components/buttons.tsx b/app/components/buttons.tsx
new file mode 100644
index 0000000..3413007
--- /dev/null
+++ b/app/components/buttons.tsx
@@ -0,0 +1,71 @@
+'use client';
+
+import React, { useCallback, useState } from 'react';
+import { Button } from '../../src/primitive-components/material-you-components';
+
+export default function Buttons() {
+ const [state, setState] = useState(1);
+
+ const callback = useCallback(
+ () => setState(prevState => prevState + 1),
+ [state],
+ );
+
+ return (
+
+
Buttons
+
+
+
Default buttons
+
+
+
+
+
+
+
+
+
+
Buttons with icon
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/components/checkboxes.tsx b/app/components/checkboxes.tsx
new file mode 100644
index 0000000..16af3e2
--- /dev/null
+++ b/app/components/checkboxes.tsx
@@ -0,0 +1,90 @@
+'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..4b8cd9d
--- /dev/null
+++ b/app/components/fabs.tsx
@@ -0,0 +1,221 @@
+import React from 'react';
+import { FAB } from '../../src/primitive-components/material-you-components';
+
+export default function Fabs() {
+ return (
+
+
+
+
FABs with elevation
+
+
+
+
+
+
Extended
+
+
+ Label
+
+
+ Label
+
+
+ Label
+
+
+ Label
+
+
+
+
+
+
+
FABs without elevation
+
+
+
+
+
+
Extended
+
+
+ Label
+
+
+ Label
+
+
+ Label
+
+
+ Label
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/components/icon-buttons.tsx b/app/components/icon-buttons.tsx
new file mode 100644
index 0000000..90eb275
--- /dev/null
+++ b/app/components/icon-buttons.tsx
@@ -0,0 +1,190 @@
+'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;
diff --git a/app/components/radios.tsx b/app/components/radios.tsx
new file mode 100644
index 0000000..1439e15
--- /dev/null
+++ b/app/components/radios.tsx
@@ -0,0 +1,34 @@
+import React from 'react';
+import { Radio } from '../../src/primitive-components/material-you-components';
+
+export default function Radios() {
+ return (
+
+ );
+}
diff --git a/app/components/switches.tsx b/app/components/switches.tsx
new file mode 100644
index 0000000..bbdf4be
--- /dev/null
+++ b/app/components/switches.tsx
@@ -0,0 +1,83 @@
+'use client';
+
+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
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/components/text-fields.tsx b/app/components/text-fields.tsx
new file mode 100644
index 0000000..973aa51
--- /dev/null
+++ b/app/components/text-fields.tsx
@@ -0,0 +1,1504 @@
+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() {
+ return (
+
+
Inputs
+
+
+
Filled Inputs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Outlined Inputs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index 225b603..7f0cc93 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,11 +1,26 @@
+import '../src/styles/generics.css';
+import { Metadata, Viewport } from 'next';
+
+export const metadata: Metadata = {
+ title: 'Create Next App',
+ description: 'Generated by create next app',
+};
+
+export const viewport: Viewport = {
+ width: 'device-width',
+ initialScale: 1,
+ maximumScale: 1,
+ userScalable: false,
+};
+
export default function RootLayout({
- children,
+ children,
}: {
- children: React.ReactNode;
+ children: React.ReactNode;
}) {
- return (
-
- {children}
-
- );
+ return (
+
+ {children}
+
+ );
}
diff --git a/app/page.tsx b/app/page.tsx
index e85d509..a8173ea 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,3 +1,46 @@
+import { Fragment } from 'react';
+import Fabs from './components/fabs';
+import Badges from './components/badges';
+import IconButtons from './components/icon-buttons';
+import Buttons from './components/buttons';
+import Switches from './components/switches';
+import Checkboxes from './components/checkboxes';
+import Radios from './components/radios';
+import { TextFields } from './components/text-fields';
+
export default function Page() {
- return Hello, Next.js!
;
+ return (
+
+
+
Google Material You UI kit
+
+
+
+
+
+
+
+
+
+
+
+
+ );
}
diff --git a/package-lock.json b/package-lock.json
index 962b3db..3a2281b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,15 +5,218 @@
"packages": {
"": {
"dependencies": {
+ "eslint-plugin-prettier": "^5.1.3",
+ "install": "^0.13.0",
"next": "latest",
+ "prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
- "@types/node": "20.8.10",
+ "@next/eslint-plugin-next": "^14.1.0",
+ "@types/node": "20.8.2",
"@types/react": "18.2.33",
"@types/react-dom": "18.2.14",
- "typescript": "^5.2.2"
+ "@typescript-eslint/eslint-plugin": "^6.20.0",
+ "eslint": "^8.56.0",
+ "eslint-config-next": "^14.1.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-config-standard-with-typescript": "^43.0.1",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "i": "^0.3.7",
+ "npm": "^10.4.0",
+ "prettier": "3.2.4",
+ "typescript": "~5.2.0"
+ }
+ },
+ "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==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
+ "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "dev": true,
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@next/env": {
@@ -21,6 +224,37 @@
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.0.tgz",
"integrity": "sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw=="
},
+ "node_modules/@next/eslint-plugin-next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz",
+ "integrity": "sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==",
+ "dev": true,
+ "dependencies": {
+ "glob": "10.3.10"
+ }
+ },
+ "node_modules/@next/eslint-plugin-next/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/@next/swc-darwin-arm64": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz",
@@ -156,6 +390,65 @@
"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==",
+ "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==",
+ "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==",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
+ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
"node_modules/@swc/helpers": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
@@ -164,14 +457,23 @@
"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",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz",
- "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==",
- "dev": true,
- "dependencies": {
- "undici-types": "~5.26.4"
- }
+ "version": "20.8.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz",
+ "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==",
+ "dev": true
},
"node_modules/@types/prop-types": {
"version": "15.7.11",
@@ -205,6 +507,499 @@
"integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
"dev": true
},
+ "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/@typescript-eslint/eslint-plugin": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz",
+ "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.20.0",
+ "@typescript-eslint/type-utils": "6.20.0",
+ "@typescript-eslint/utils": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz",
+ "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.20.0",
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/typescript-estree": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz",
+ "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz",
+ "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.20.0",
+ "@typescript-eslint/utils": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz",
+ "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==",
+ "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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz",
+ "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/visitor-keys": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz",
+ "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==",
+ "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.20.0",
+ "@typescript-eslint/types": "6.20.0",
+ "@typescript-eslint/typescript-estree": "6.20.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.20.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz",
+ "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "6.20.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=="
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "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==",
+ "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==",
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "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=="
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "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/ast-types-flow": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz",
+ "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==",
+ "dev": true
+ },
+ "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/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/axe-core": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz",
+ "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
+ "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "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=="
+ },
+ "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/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",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -216,6 +1011,28 @@
"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==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/caniuse-lite": {
"version": "1.0.30001581",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz",
@@ -235,27 +1052,1967 @@
}
]
},
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "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/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
+ "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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "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=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "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==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"dev": true
},
+ "node_modules/damerau-levenshtein": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
+ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "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=="
+ },
+ "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/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "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/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==",
+ "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==",
+ "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-next": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.0.tgz",
+ "integrity": "sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==",
+ "dev": true,
+ "dependencies": {
+ "@next/eslint-plugin-next": "14.1.0",
+ "@rushstack/eslint-patch": "^1.3.3",
+ "@typescript-eslint/parser": "^5.4.2 || ^6.0.0",
+ "eslint-import-resolver-node": "^0.3.6",
+ "eslint-import-resolver-typescript": "^3.5.2",
+ "eslint-plugin-import": "^2.28.1",
+ "eslint-plugin-jsx-a11y": "^6.7.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705"
+ },
+ "peerDependencies": {
+ "eslint": "^7.23.0 || ^8.0.0",
+ "typescript": ">=3.3.1"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "devOptional": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.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.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.1.tgz",
+ "integrity": "sha512-WfZ986+qzIzX6dcr4yGUyVb/l9N3Z8wPXCc5z/70fljs3UbWhhV+WxrfgsqMToRzuuyX9MqZ974pq2UPhDTOcA==",
+ "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-import-resolver-typescript": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz",
+ "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "enhanced-resolve": "^5.12.0",
+ "eslint-module-utils": "^2.7.4",
+ "fast-glob": "^3.3.1",
+ "get-tsconfig": "^4.5.0",
+ "is-core-module": "^2.11.0",
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "eslint-plugin-import": "*"
+ }
+ },
+ "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-jsx-a11y": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz",
+ "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.23.2",
+ "aria-query": "^5.3.0",
+ "array-includes": "^3.1.7",
+ "array.prototype.flatmap": "^1.3.2",
+ "ast-types-flow": "^0.0.8",
+ "axe-core": "=4.7.0",
+ "axobject-query": "^3.2.1",
+ "damerau-levenshtein": "^1.0.8",
+ "emoji-regex": "^9.2.2",
+ "es-iterator-helpers": "^1.0.15",
+ "hasown": "^2.0.0",
+ "jsx-ast-utils": "^3.3.5",
+ "language-tags": "^1.0.9",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.7",
+ "object.fromentries": "^2.0.7"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/eslint-plugin-jsx-a11y/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-jsx-a11y/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-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-prettier": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz",
+ "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.6"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": "*",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "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-hooks": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz",
+ "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "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==",
+ "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==",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="
+ },
+ "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=="
+ },
+ "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=="
+ },
+ "node_modules/fastq": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
+ "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
+ },
+ "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-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/i": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
+ "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
+ "dev": true,
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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=="
+ },
+ "node_modules/install": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz",
+ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "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==",
+ "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-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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==",
+ "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==",
+ "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=="
+ },
+ "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/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "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==",
+ "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=="
+ },
+ "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=="
+ },
+ "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=="
+ },
+ "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==",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/language-subtag-registry": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz",
+ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==",
+ "dev": true
+ },
+ "node_modules/language-tags": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz",
+ "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==",
+ "dev": true,
+ "dependencies": {
+ "language-subtag-registry": "^0.3.20"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "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==",
+ "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==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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=="
+ },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -267,6 +3024,78 @@
"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/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/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "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=="
+ },
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
@@ -284,6 +3113,11 @@
"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=="
+ },
"node_modules/next": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/next/-/next-14.1.0.tgz",
@@ -329,11 +3163,2796 @@
}
}
},
+ "node_modules/npm": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-10.4.0.tgz",
+ "integrity": "sha512-RS7Mx0OVfXlOcQLRePuDIYdFCVBPCNapWHplDK+mh7GDdP/Tvor4ocuybRRPSvfcRb2vjRJt1fHCqw3cr8qACQ==",
+ "bundleDependencies": [
+ "@isaacs/string-locale-compare",
+ "@npmcli/arborist",
+ "@npmcli/config",
+ "@npmcli/fs",
+ "@npmcli/map-workspaces",
+ "@npmcli/package-json",
+ "@npmcli/promise-spawn",
+ "@npmcli/run-script",
+ "@sigstore/tuf",
+ "abbrev",
+ "archy",
+ "cacache",
+ "chalk",
+ "ci-info",
+ "cli-columns",
+ "cli-table3",
+ "columnify",
+ "fastest-levenshtein",
+ "fs-minipass",
+ "glob",
+ "graceful-fs",
+ "hosted-git-info",
+ "ini",
+ "init-package-json",
+ "is-cidr",
+ "json-parse-even-better-errors",
+ "libnpmaccess",
+ "libnpmdiff",
+ "libnpmexec",
+ "libnpmfund",
+ "libnpmhook",
+ "libnpmorg",
+ "libnpmpack",
+ "libnpmpublish",
+ "libnpmsearch",
+ "libnpmteam",
+ "libnpmversion",
+ "make-fetch-happen",
+ "minimatch",
+ "minipass",
+ "minipass-pipeline",
+ "ms",
+ "node-gyp",
+ "nopt",
+ "normalize-package-data",
+ "npm-audit-report",
+ "npm-install-checks",
+ "npm-package-arg",
+ "npm-pick-manifest",
+ "npm-profile",
+ "npm-registry-fetch",
+ "npm-user-validate",
+ "npmlog",
+ "p-map",
+ "pacote",
+ "parse-conflict-json",
+ "proc-log",
+ "qrcode-terminal",
+ "read",
+ "semver",
+ "spdx-expression-parse",
+ "ssri",
+ "supports-color",
+ "tar",
+ "text-table",
+ "tiny-relative-date",
+ "treeverse",
+ "validate-npm-package-name",
+ "which",
+ "write-file-atomic"
+ ],
+ "dev": true,
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/arborist": "^7.2.1",
+ "@npmcli/config": "^8.0.2",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/map-workspaces": "^3.0.4",
+ "@npmcli/package-json": "^5.0.0",
+ "@npmcli/promise-spawn": "^7.0.1",
+ "@npmcli/run-script": "^7.0.4",
+ "@sigstore/tuf": "^2.3.0",
+ "abbrev": "^2.0.0",
+ "archy": "~1.0.0",
+ "cacache": "^18.0.2",
+ "chalk": "^5.3.0",
+ "ci-info": "^4.0.0",
+ "cli-columns": "^4.0.0",
+ "cli-table3": "^0.6.3",
+ "columnify": "^1.6.0",
+ "fastest-levenshtein": "^1.0.16",
+ "fs-minipass": "^3.0.3",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "hosted-git-info": "^7.0.1",
+ "ini": "^4.1.1",
+ "init-package-json": "^6.0.0",
+ "is-cidr": "^5.0.3",
+ "json-parse-even-better-errors": "^3.0.1",
+ "libnpmaccess": "^8.0.1",
+ "libnpmdiff": "^6.0.3",
+ "libnpmexec": "^7.0.4",
+ "libnpmfund": "^5.0.1",
+ "libnpmhook": "^10.0.0",
+ "libnpmorg": "^6.0.1",
+ "libnpmpack": "^6.0.3",
+ "libnpmpublish": "^9.0.2",
+ "libnpmsearch": "^7.0.0",
+ "libnpmteam": "^6.0.0",
+ "libnpmversion": "^5.0.1",
+ "make-fetch-happen": "^13.0.0",
+ "minimatch": "^9.0.3",
+ "minipass": "^7.0.4",
+ "minipass-pipeline": "^1.2.4",
+ "ms": "^2.1.2",
+ "node-gyp": "^10.0.1",
+ "nopt": "^7.2.0",
+ "normalize-package-data": "^6.0.0",
+ "npm-audit-report": "^5.0.0",
+ "npm-install-checks": "^6.3.0",
+ "npm-package-arg": "^11.0.1",
+ "npm-pick-manifest": "^9.0.0",
+ "npm-profile": "^9.0.0",
+ "npm-registry-fetch": "^16.1.0",
+ "npm-user-validate": "^2.0.0",
+ "npmlog": "^7.0.1",
+ "p-map": "^4.0.0",
+ "pacote": "^17.0.6",
+ "parse-conflict-json": "^3.0.1",
+ "proc-log": "^3.0.0",
+ "qrcode-terminal": "^0.12.0",
+ "read": "^2.1.0",
+ "semver": "^7.5.4",
+ "spdx-expression-parse": "^3.0.1",
+ "ssri": "^10.0.5",
+ "supports-color": "^9.4.0",
+ "tar": "^6.2.0",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
+ "treeverse": "^3.0.0",
+ "validate-npm-package-name": "^5.0.0",
+ "which": "^4.0.0",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "npm": "bin/npm-cli.js",
+ "npx": "bin/npx-cli.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
+ "version": "1.1.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/@npmcli/agent": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.1",
+ "lru-cache": "^10.0.1",
+ "socks-proxy-agent": "^8.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/arborist": {
+ "version": "7.3.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
+ "@npmcli/map-workspaces": "^3.0.2",
+ "@npmcli/metavuln-calculator": "^7.0.0",
+ "@npmcli/name-from-folder": "^2.0.0",
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/package-json": "^5.0.0",
+ "@npmcli/query": "^3.0.1",
+ "@npmcli/run-script": "^7.0.2",
+ "bin-links": "^4.0.1",
+ "cacache": "^18.0.0",
+ "common-ancestor-path": "^1.0.1",
+ "hosted-git-info": "^7.0.1",
+ "json-parse-even-better-errors": "^3.0.0",
+ "json-stringify-nice": "^1.1.4",
+ "minimatch": "^9.0.0",
+ "nopt": "^7.0.0",
+ "npm-install-checks": "^6.2.0",
+ "npm-package-arg": "^11.0.1",
+ "npm-pick-manifest": "^9.0.0",
+ "npm-registry-fetch": "^16.0.0",
+ "npmlog": "^7.0.1",
+ "pacote": "^17.0.4",
+ "parse-conflict-json": "^3.0.0",
+ "proc-log": "^3.0.0",
+ "promise-all-reject-late": "^1.0.0",
+ "promise-call-limit": "^3.0.1",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.7",
+ "ssri": "^10.0.5",
+ "treeverse": "^3.0.0",
+ "walk-up-path": "^3.0.1"
+ },
+ "bin": {
+ "arborist": "bin/index.js"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/config": {
+ "version": "8.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/map-workspaces": "^3.0.2",
+ "ci-info": "^4.0.0",
+ "ini": "^4.1.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.5",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/disparity-colors": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ansi-styles": "^4.3.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/fs": {
+ "version": "3.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/git": {
+ "version": "5.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/promise-spawn": "^7.0.0",
+ "lru-cache": "^10.0.1",
+ "npm-pick-manifest": "^9.0.0",
+ "proc-log": "^3.0.0",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^4.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
+ "version": "2.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "lib/index.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
+ "version": "3.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/name-from-folder": "^2.0.0",
+ "glob": "^10.2.2",
+ "minimatch": "^9.0.0",
+ "read-package-json-fast": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cacache": "^18.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "pacote": "^17.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/package-json": {
+ "version": "5.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^5.0.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^7.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^6.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
+ "version": "7.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^4.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/query": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/run-script": {
+ "version": "7.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/package-json": "^5.0.0",
+ "@npmcli/promise-spawn": "^7.0.0",
+ "node-gyp": "^10.0.0",
+ "which": "^4.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/bundle": {
+ "version": "2.1.1",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/core": {
+ "version": "0.2.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.2.1",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/sign": {
+ "version": "2.2.1",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^2.1.1",
+ "@sigstore/core": "^0.2.0",
+ "@sigstore/protobuf-specs": "^0.2.1",
+ "make-fetch-happen": "^13.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/tuf": {
+ "version": "2.3.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.1",
+ "tuf-js": "^2.2.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/verify": {
+ "version": "0.1.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^2.1.1",
+ "@sigstore/core": "^0.2.0",
+ "@sigstore/protobuf-specs": "^0.2.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tufjs/canonical-json": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tufjs/models": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/canonical-json": "2.0.0",
+ "minimatch": "^9.0.3"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/abbrev": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/agent-base": {
+ "version": "7.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/aproba": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/archy": {
+ "version": "1.0.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/are-we-there-yet": {
+ "version": "4.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/bin-links": {
+ "version": "4.0.3",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cmd-shim": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "read-cmd-shim": "^4.0.0",
+ "write-file-atomic": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/builtins": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/cacache": {
+ "version": "18.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^10.0.1",
+ "minipass": "^7.0.3",
+ "minipass-collect": "^2.0.1",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/chalk": {
+ "version": "5.3.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/chownr": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/ci-info": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/cidr-regex": {
+ "version": "4.0.3",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "ip-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/clean-stack": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/cli-columns": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/npm/node_modules/cli-table3": {
+ "version": "0.6.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/clone": {
+ "version": "1.0.4",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/npm/node_modules/cmd-shim": {
+ "version": "6.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-convert": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-name": {
+ "version": "1.1.4",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/color-support": {
+ "version": "1.1.3",
+ "inBundle": true,
+ "license": "ISC",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/npm/node_modules/columnify": {
+ "version": "1.6.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "strip-ansi": "^6.0.1",
+ "wcwidth": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/common-ancestor-path": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cssesc": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/debug": {
+ "version": "4.3.4",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/npm/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/defaults": {
+ "version": "1.0.4",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/diff": {
+ "version": "5.1.0",
+ "inBundle": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/npm/node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/encoding": {
+ "version": "0.1.13",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/npm/node_modules/env-paths": {
+ "version": "2.2.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/err-code": {
+ "version": "2.0.3",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/npm/node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/npm/node_modules/foreground-child": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/fs-minipass": {
+ "version": "3.0.3",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/function-bind": {
+ "version": "1.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/npm/node_modules/gauge": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^4.0.1",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/glob": {
+ "version": "10.3.10",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/has-unicode": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/hasown": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/npm/node_modules/hosted-git-info": {
+ "version": "7.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "inBundle": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/npm/node_modules/http-proxy-agent": {
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/https-proxy-agent": {
+ "version": "7.0.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm/node_modules/ignore-walk": {
+ "version": "6.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/npm/node_modules/indent-string": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ini": {
+ "version": "4.1.1",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/init-package-json": {
+ "version": "6.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-package-arg": "^11.0.0",
+ "promzard": "^1.0.0",
+ "read": "^2.0.0",
+ "read-package-json": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/ip": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/ip-regex": {
+ "version": "5.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/is-cidr": {
+ "version": "5.0.3",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "cidr-regex": "4.0.3"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/is-core-module": {
+ "version": "2.13.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/npm/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/is-lambda": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/isexe": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/jackspeak": {
+ "version": "2.3.6",
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-stringify-nice": {
+ "version": "1.1.4",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/jsonparse": {
+ "version": "1.3.1",
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff": {
+ "version": "6.0.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff-apply": {
+ "version": "5.5.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/libnpmaccess": {
+ "version": "8.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-package-arg": "^11.0.1",
+ "npm-registry-fetch": "^16.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmdiff": {
+ "version": "6.0.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^7.2.1",
+ "@npmcli/disparity-colors": "^3.0.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
+ "binary-extensions": "^2.2.0",
+ "diff": "^5.1.0",
+ "minimatch": "^9.0.0",
+ "npm-package-arg": "^11.0.1",
+ "pacote": "^17.0.4",
+ "tar": "^6.2.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmexec": {
+ "version": "7.0.7",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^7.2.1",
+ "@npmcli/run-script": "^7.0.2",
+ "ci-info": "^4.0.0",
+ "npm-package-arg": "^11.0.1",
+ "npmlog": "^7.0.1",
+ "pacote": "^17.0.4",
+ "proc-log": "^3.0.0",
+ "read": "^2.0.0",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.7",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmfund": {
+ "version": "5.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^7.2.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmhook": {
+ "version": "10.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^16.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmorg": {
+ "version": "6.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^16.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpack": {
+ "version": "6.0.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^7.2.1",
+ "@npmcli/run-script": "^7.0.2",
+ "npm-package-arg": "^11.0.1",
+ "pacote": "^17.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpublish": {
+ "version": "9.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ci-info": "^4.0.0",
+ "normalize-package-data": "^6.0.0",
+ "npm-package-arg": "^11.0.1",
+ "npm-registry-fetch": "^16.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.7",
+ "sigstore": "^2.2.0",
+ "ssri": "^10.0.5"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmsearch": {
+ "version": "7.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^16.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmteam": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^16.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmversion": {
+ "version": "5.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^5.0.3",
+ "@npmcli/run-script": "^7.0.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/lru-cache": {
+ "version": "10.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/npm/node_modules/make-fetch-happen": {
+ "version": "13.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/agent": "^2.0.0",
+ "cacache": "^18.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "is-lambda": "^1.0.1",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/minimatch": {
+ "version": "9.0.3",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/minipass": {
+ "version": "7.0.4",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-collect": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-fetch": {
+ "version": "3.0.4",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^7.0.3",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-json-stream": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "jsonparse": "^1.3.1",
+ "minipass": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minizlib": {
+ "version": "2.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/ms": {
+ "version": "2.1.3",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/mute-stream": {
+ "version": "1.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/negotiator": {
+ "version": "0.6.3",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp": {
+ "version": "10.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^13.0.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^4.0.0"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/nopt": {
+ "version": "7.2.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^2.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/normalize-package-data": {
+ "version": "6.0.0",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-audit-report": {
+ "version": "5.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-bundled": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-install-checks": {
+ "version": "6.3.0",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-package-arg": {
+ "version": "11.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-packlist": {
+ "version": "8.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ignore-walk": "^6.0.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-pick-manifest": {
+ "version": "9.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-install-checks": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "npm-package-arg": "^11.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-profile": {
+ "version": "9.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^16.0.0",
+ "proc-log": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-registry-fetch": {
+ "version": "16.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "make-fetch-happen": "^13.0.0",
+ "minipass": "^7.0.2",
+ "minipass-fetch": "^3.0.0",
+ "minipass-json-stream": "^1.0.1",
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^11.0.0",
+ "proc-log": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-user-validate": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npmlog": {
+ "version": "7.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^4.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^5.0.0",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/p-map": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/pacote": {
+ "version": "17.0.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^5.0.0",
+ "@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/promise-spawn": "^7.0.0",
+ "@npmcli/run-script": "^7.0.0",
+ "cacache": "^18.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^7.0.2",
+ "npm-package-arg": "^11.0.0",
+ "npm-packlist": "^8.0.0",
+ "npm-pick-manifest": "^9.0.0",
+ "npm-registry-fetch": "^16.0.0",
+ "proc-log": "^3.0.0",
+ "promise-retry": "^2.0.1",
+ "read-package-json": "^7.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "sigstore": "^2.2.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "pacote": "lib/bin.js"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/parse-conflict-json": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "just-diff": "^6.0.0",
+ "just-diff-apply": "^5.2.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/path-key": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry": {
+ "version": "1.10.1",
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/proc-log": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/promise-all-reject-late": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-call-limit": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/promise-retry": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/promzard": {
+ "version": "1.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "read": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "inBundle": true,
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/npm/node_modules/read": {
+ "version": "2.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-cmd-shim": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-package-json": {
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^10.2.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-package-json-fast": {
+ "version": "3.0.2",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/retry": {
+ "version": "0.12.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/npm/node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/npm/node_modules/semver": {
+ "version": "7.5.4",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/set-blocking": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/sigstore": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^2.1.1",
+ "@sigstore/core": "^0.2.0",
+ "@sigstore/protobuf-specs": "^0.2.1",
+ "@sigstore/sign": "^2.2.1",
+ "@sigstore/tuf": "^2.3.0",
+ "@sigstore/verify": "^0.1.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks": {
+ "version": "2.7.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks-proxy-agent": {
+ "version": "8.0.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "^4.3.4",
+ "socks": "^2.7.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "inBundle": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/npm/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-license-ids": {
+ "version": "3.0.16",
+ "inBundle": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/npm/node_modules/ssri": {
+ "version": "10.0.5",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/string-width": {
+ "version": "4.2.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/supports-color": {
+ "version": "9.4.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/tar": {
+ "version": "6.2.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/text-table": {
+ "version": "0.2.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/tiny-relative-date": {
+ "version": "1.3.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/treeverse": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/tuf-js": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "2.0.0",
+ "debug": "^4.3.4",
+ "make-fetch-happen": "^13.0.0"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-filename": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-slug": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/validate-npm-package-name": {
+ "version": "5.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "builtins": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/walk-up-path": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/wcwidth": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/npm/node_modules/which": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/which/node_modules/isexe": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/npm/node_modules/wide-align": {
+ "version": "1.1.5",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "5.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/yallist": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "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",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
+ "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.31",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
@@ -361,6 +5980,76 @@
"node": "^10 || ^12 || >=14"
}
},
+ "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==",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz",
+ "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.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/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "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==",
+ "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",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -384,6 +6073,168 @@
"react": "^18.2.0"
}
},
+ "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/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.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
+ "dev": true
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
@@ -392,6 +6243,105 @@
"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/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==",
+ "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==",
+ "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/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "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",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
@@ -408,6 +6358,180 @@
"node": ">=10.0.0"
}
},
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "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==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/styled-jsx": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
@@ -430,15 +6554,190 @@
}
}
},
+ "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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "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/synckit": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
+ "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
+ "dependencies": {
+ "@pkgr/core": "^0.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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=="
+ },
+ "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",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
+ "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==",
+ "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==",
+ "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==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+ "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -448,11 +6747,234 @@
"node": ">=14.17"
}
},
- "node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "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/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "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/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/package.json b/package.json
index fff15fe..82679d8 100644
--- a/package.json
+++ b/package.json
@@ -3,17 +3,39 @@
"scripts": {
"dev": "next dev --turbo",
"build": "next build",
- "start": "next start"
+ "start": "next start",
+ "lint": "lint",
+ "compile": "tsc",
+ "prepare": "npm run compile",
+ "pretest": "npm run compile",
+ "posttest": "npm run lint"
},
"dependencies": {
+ "eslint-plugin-prettier": "^5.1.3",
+ "install": "^0.13.0",
"next": "latest",
+ "prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
- "@types/node": "20.8.10",
+ "@next/eslint-plugin-next": "^14.1.0",
+ "@types/node": "20.8.2",
"@types/react": "18.2.33",
"@types/react-dom": "18.2.14",
- "typescript": "^5.2.2"
+ "@typescript-eslint/eslint-plugin": "^6.20.0",
+ "eslint": "^8.56.0",
+ "eslint-config-next": "^14.1.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-config-standard-with-typescript": "^43.0.1",
+ "eslint-plugin-import": "^2.29.1",
+ "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-react": "^7.33.2",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "i": "^0.3.7",
+ "npm": "^10.4.0",
+ "prettier": "3.2.4",
+ "typescript": "~5.2.0"
}
}
diff --git a/src/primitive-components/badge/badge.tsx b/src/primitive-components/badge/badge.tsx
new file mode 100644
index 0000000..38653be
--- /dev/null
+++ b/src/primitive-components/badge/badge.tsx
@@ -0,0 +1,37 @@
+import { BadgeProps } from './badges.types';
+import { bool, number, string } from 'prop-types';
+import React, { forwardRef } from 'react';
+
+const Badge = forwardRef(function Badge(
+ { disableValue = false, ...props },
+ ref,
+) {
+ const digitLength = props.children
+ ? 16 + (props.children.length - 1) * 6
+ : 6,
+ disableValueClassName =
+ disableValue || (!props.children ?? true) ? 'disable-value' : '';
+
+ return (
+
+ );
+});
+
+Badge.propTypes = {
+ children: number,
+ className: string,
+ disableValue: bool,
+};
+
+export { Badge };
diff --git a/src/primitive-components/badge/badges.types.ts b/src/primitive-components/badge/badges.types.ts
new file mode 100644
index 0000000..817560f
--- /dev/null
+++ b/src/primitive-components/badge/badges.types.ts
@@ -0,0 +1,5 @@
+import { PropsWithChildren } from 'react';
+
+export interface BadgeProps extends PropsWithChildren {
+ disableValue?: boolean;
+}
diff --git a/src/primitive-components/button-layout/button-layout.tsx b/src/primitive-components/button-layout/button-layout.tsx
new file mode 100644
index 0000000..4fe0601
--- /dev/null
+++ b/src/primitive-components/button-layout/button-layout.tsx
@@ -0,0 +1,48 @@
+'use client';
+
+import { RippleArea } from '../ripple/ripple-area';
+import { IRippleProps } from '../ripple/ripple.types';
+import useRippleEffect from '../ripple/hooks/useRippleEffect';
+import React, {
+ forwardRef,
+ PropsWithChildren,
+ useId,
+ useRef,
+ useState,
+} from 'react';
+
+const ButtonLayout = forwardRef<
+ HTMLButtonElement,
+ PropsWithChildren & IRippleProps
+>(function ButtonBase({ centralRipple = false, ...props }, ref) {
+ const [isActive, setIsActive] = useState(false),
+ ripplesRef = useRef(null),
+ buttonId = useId(),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ const { variant, disabled, className } = props;
+
+ const classes = className
+ ? `m3 ${className} ${variant}${isActive ? ' is-active' : ''}`
+ : `m3 ${variant}${isActive ? ' is-active' : ''}`;
+
+ return (
+
+ );
+});
+
+export { ButtonLayout };
diff --git a/src/primitive-components/button-layout/button.types.ts b/src/primitive-components/button-layout/button.types.ts
new file mode 100644
index 0000000..5a38760
--- /dev/null
+++ b/src/primitive-components/button-layout/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';
+}
diff --git a/src/primitive-components/button/button.tsx b/src/primitive-components/button/button.tsx
new file mode 100644
index 0000000..79d3ab0
--- /dev/null
+++ b/src/primitive-components/button/button.tsx
@@ -0,0 +1,33 @@
+'use client';
+
+import { forwardRef } from 'react';
+import { Icon } from '../material-you-components';
+import { IRippleProps } from '../ripple/ripple.types';
+import { ButtonLayout } from '../button-layout/button-layout';
+import { ButtonMainProps } from '../button-layout/button.types';
+
+/**
+ * Button component
+ ** description
+ */
+
+export const Button = forwardRef<
+ HTMLButtonElement,
+ ButtonMainProps & IRippleProps
+>(
+ (
+ { centralRipple = false, variant, disabled = false, icon, ...props },
+ ref,
+ ) => (
+
+ {icon ? {icon} : <>>}
+ {props.children}
+
+ ),
+);
diff --git a/src/primitive-components/checkbox-layout/check-box-layout.tsx b/src/primitive-components/checkbox-layout/check-box-layout.tsx
new file mode 100644
index 0000000..9dec1ae
--- /dev/null
+++ b/src/primitive-components/checkbox-layout/check-box-layout.tsx
@@ -0,0 +1,38 @@
+'use client';
+
+import React, {
+ forwardRef,
+ useEffect,
+ useImperativeHandle,
+ useRef,
+} from 'react';
+import { CheckboxLayoutProps } from './checkbox-layout.types';
+
+export const CheckBoxLayout = forwardRef(function CheckBoxBase(
+ { indeterminate, typeInput, type, ...props }: CheckboxLayoutProps,
+ ref,
+): JSX.Element {
+ const checkboxRef = useRef(null);
+
+ useEffect(() => {
+ checkboxRef.current.indeterminate = indeterminate === true;
+ }, []);
+
+ useImperativeHandle(ref, () => checkboxRef.current);
+
+ const classesType = typeInput || type;
+
+ const classes =
+ props.className !== undefined
+ ? `m3 m3-${type} ${props.className}`
+ : `m3 m3-${classesType}`;
+
+ return (
+
+ );
+});
diff --git a/src/primitive-components/checkbox-layout/checkbox-layout.types.ts b/src/primitive-components/checkbox-layout/checkbox-layout.types.ts
new file mode 100644
index 0000000..f001170
--- /dev/null
+++ b/src/primitive-components/checkbox-layout/checkbox-layout.types.ts
@@ -0,0 +1,7 @@
+import { PropsWithChildren } from 'react';
+
+export interface CheckboxLayoutProps extends PropsWithChildren {
+ indeterminate?: boolean;
+ typeInput?: string;
+ type?: string;
+}
diff --git a/src/primitive-components/checkbox/checkbox.tsx b/src/primitive-components/checkbox/checkbox.tsx
new file mode 100644
index 0000000..e172e69
--- /dev/null
+++ b/src/primitive-components/checkbox/checkbox.tsx
@@ -0,0 +1,59 @@
+'use client';
+
+import { RippleArea } from '../ripple/ripple-area';
+import { IRippleProps } from '../ripple/ripple.types';
+import useRippleEffect from '../ripple/hooks/useRippleEffect';
+import { CheckBoxLayout } from '../checkbox-layout/check-box-layout';
+import {
+ forwardRef,
+ PropsWithChildren,
+ useEffect,
+ useImperativeHandle,
+ useRef,
+ useState,
+} from 'react';
+
+/**
+ * Checkbox component
+ ** description
+ */
+
+export const Checkbox = forwardRef<
+ HTMLInputElement,
+ PropsWithChildren & IRippleProps
+>(({ centralRipple, ...props }, ref) => {
+ const [isActive, setIsActive] = useState(false),
+ [checked, setChecked] = useState(props.checked ?? false),
+ ripplesRef = useRef(null),
+ checkboxRef = useRef(null),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ const classes =
+ `m3 m3-checkbox-label ${isActive === true ? 'visible' : ''}`.trimEnd();
+ const indeterminate = (props.indeterminate === true).toString();
+
+ useImperativeHandle(ref, () => checkboxRef.current);
+
+ useEffect(() => {
+ setChecked(!checked);
+ }, [checkboxRef.current?.checked]);
+
+ return (
+
+ );
+});
diff --git a/src/primitive-components/divider/divider.tsx b/src/primitive-components/divider/divider.tsx
new file mode 100644
index 0000000..8213a4c
--- /dev/null
+++ b/src/primitive-components/divider/divider.tsx
@@ -0,0 +1,18 @@
+import React, { forwardRef, PropsWithChildren } from 'react';
+
+interface DividerProps extends PropsWithChildren {
+ orientation?: 'vertical' | 'horizontal';
+ variant?: 'full-width' | 'inset' | 'middle-inset';
+}
+
+const Divider = forwardRef(
+ ({ orientation, variant, ...props }, ref) => (
+
+ ),
+);
+
+export { Divider };
diff --git a/src/primitive-components/fab/fab.tsx b/src/primitive-components/fab/fab.tsx
new file mode 100644
index 0000000..8873b2d
--- /dev/null
+++ b/src/primitive-components/fab/fab.tsx
@@ -0,0 +1,52 @@
+'use client';
+
+import { forwardRef } from 'react';
+import { Icon } from '../material-you-components';
+import { IRippleProps } from '../ripple/ripple.types';
+import { FABMainProps } from '../button-layout/button.types';
+import { ButtonLayout } from '../button-layout/button-layout';
+
+/**
+ * FABs component
+ ** description
+ */
+
+const sizes = {
+ small: 24,
+ default: 24,
+ large: 36,
+ extended: 24,
+};
+
+export const FAB = forwardRef(
+ (
+ {
+ variant,
+ disabled,
+ icon,
+ centralRipple = false,
+ size = 'default',
+ elevated,
+ ...props
+ },
+ ref,
+ ) => (
+
+
+ {icon}
+
+ {size === 'extended' ? (
+ {props.children}
+ ) : (
+ <>>
+ )}
+
+ ),
+);
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..1e2be5e
--- /dev/null
+++ b/src/primitive-components/icon-button/icon-button.tsx
@@ -0,0 +1,86 @@
+'use client';
+
+import { Icon } from '../material-you-components';
+import { toggleIconType } from './icon-button.types';
+import { IRippleProps } from '../ripple/ripple.types';
+import { ButtonLayout } from '../button-layout/button-layout';
+import { IconButtonMainProps } from '../button-layout/button.types';
+import {
+ forwardRef,
+ useCallback,
+ useImperativeHandle,
+ useRef,
+ useState,
+} from 'react';
+
+/**
+ * Icon button-layout component
+ ** description
+ */
+
+export const IconButton = forwardRef<
+ HTMLButtonElement,
+ IconButtonMainProps & IRippleProps
+>(
+ (
+ {
+ icon,
+ variant,
+ disabled,
+ selected = false,
+ toggled = false,
+ centralRipple,
+ ...props
+ },
+ ref,
+ ) => {
+ const [toggleIcon, setToggleIcon] = useState({
+ state: selected == true ? 'selected' : 'unselected',
+ icon: toggled ? toggled.unselected ?? 'add_circle' : 'add_circle',
+ });
+
+ const toggle = (classes: string, icon: string) => {
+ setToggleIcon(() => ({
+ state: classes,
+ icon: icon,
+ }));
+ };
+
+ const buttonRef = useRef(null);
+
+ const callback = useCallback(() => {
+ if (toggled) {
+ if (toggleIcon.state === 'selected') {
+ toggle('', toggled.unselected ?? 'add_circle');
+ } else {
+ toggle('selected', toggled.selected ?? 'add_circle');
+ }
+ }
+ if (props.onClick) {
+ props.onClick();
+ }
+ }, [toggleIcon]);
+
+ useImperativeHandle(ref, () => buttonRef.current);
+
+ return (
+
+
+ {toggled ? toggleIcon.icon : icon ? icon : undefined}
+
+
+ );
+ },
+);
diff --git a/src/primitive-components/icon-button/icon-button.types.ts b/src/primitive-components/icon-button/icon-button.types.ts
new file mode 100644
index 0000000..e67d69a
--- /dev/null
+++ b/src/primitive-components/icon-button/icon-button.types.ts
@@ -0,0 +1,4 @@
+export type toggleIconType = {
+ state: string;
+ icon: string;
+};
diff --git a/src/primitive-components/icon/icon.tsx b/src/primitive-components/icon/icon.tsx
new file mode 100644
index 0000000..dcf075c
--- /dev/null
+++ b/src/primitive-components/icon/icon.tsx
@@ -0,0 +1,53 @@
+import { IconProps } from './icon.types';
+import { bool, number, string } from 'prop-types';
+import React, { ForwardedRef, forwardRef } from 'react';
+
+const Icon = forwardRef(function Icon(
+ {
+ grade = 0,
+ weight = 500,
+ svgSize = 20,
+ fill = false,
+ iconSize = 20,
+ opticalSize = 24,
+ type = 'outlined',
+ ...props
+ }: IconProps,
+ ref: ForwardedRef,
+) {
+ const fontVariation = {
+ fontVariationSettings: `'FILL' ${fill ? 1 : 0}, 'wght' ${weight}, 'GRAD' ${grade}, 'optz' ${opticalSize}`,
+ };
+
+ return (
+
+ );
+});
+
+Icon.propTypes = {
+ fill: bool,
+ type: string,
+ grade: number,
+ weight: number,
+ svgSize: number,
+ iconSize: number,
+ children: string,
+ opticalSize: number,
+};
+
+export { Icon };
diff --git a/src/primitive-components/icon/icon.types.ts b/src/primitive-components/icon/icon.types.ts
new file mode 100644
index 0000000..c4d7bd2
--- /dev/null
+++ b/src/primitive-components/icon/icon.types.ts
@@ -0,0 +1,11 @@
+import { PropsWithChildren } from 'react';
+
+export interface IconProps extends PropsWithChildren {
+ fill?: boolean;
+ grade?: number;
+ svgSize?: number;
+ iconSize?: number;
+ opticalSize?: number;
+ type?: 'outlined' | 'rounded' | 'sharp';
+ weight?: 100 | 200 | 300 | 400 | 500 | 600 | 700;
+}
diff --git a/src/primitive-components/material-you-components.tsx b/src/primitive-components/material-you-components.tsx
new file mode 100644
index 0000000..7e3b841
--- /dev/null
+++ b/src/primitive-components/material-you-components.tsx
@@ -0,0 +1,13 @@
+export { FAB } from './fab/fab';
+export { Icon } from './icon/icon';
+export { Radio } from './radio/radio';
+export { Badge } from './badge/badge';
+export { Switch } from './switch/switch';
+export { Button } from './button/button';
+export { Divider } from './divider/divider';
+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 { ButtonLayout } from './button-layout/button-layout';
diff --git a/src/primitive-components/radio/radio.tsx b/src/primitive-components/radio/radio.tsx
new file mode 100644
index 0000000..2635e0a
--- /dev/null
+++ b/src/primitive-components/radio/radio.tsx
@@ -0,0 +1,38 @@
+'use client';
+
+import { RippleArea } from '../ripple/ripple-area';
+import { IRippleProps } from '../ripple/ripple.types';
+import useRippleEffect from '../ripple/hooks/useRippleEffect';
+import { CheckBoxLayout } from '../checkbox-layout/check-box-layout';
+import { forwardRef, PropsWithChildren, useRef, useState } from 'react';
+
+/**
+ * Radio component
+ ** description
+ */
+
+export const Radio = forwardRef<
+ HTMLInputElement,
+ PropsWithChildren & IRippleProps
+>(({ centralRipple, ...props }, ref) => {
+ const [isActive, setIsActive] = useState(false),
+ ripplesRef = useRef(null),
+ events = useRippleEffect(ripplesRef, setIsActive);
+
+ const classes =
+ `m3 m3-radio-label ${isActive === true ? 'visible' : ''}`.trimEnd();
+
+ return (
+
+ );
+});
diff --git a/src/primitive-components/ripple/hooks/useRippleEffect.ts b/src/primitive-components/ripple/hooks/useRippleEffect.ts
new file mode 100644
index 0000000..cb30bdb
--- /dev/null
+++ b/src/primitive-components/ripple/hooks/useRippleEffect.ts
@@ -0,0 +1,43 @@
+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;
diff --git a/src/primitive-components/ripple/ripple-area.tsx b/src/primitive-components/ripple/ripple-area.tsx
new file mode 100644
index 0000000..52da9e8
--- /dev/null
+++ b/src/primitive-components/ripple/ripple-area.tsx
@@ -0,0 +1,130 @@
+'use client';
+
+import React, {
+ forwardRef,
+ useCallback,
+ useId,
+ useImperativeHandle,
+ useRef,
+ useState,
+} 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(
+ { central = false, callback, ...props }: RippleAreaProps,
+ ref,
+) {
+ const [ripples, setRipples] = useState>([]),
+ rippleDomain = useRef(null),
+ clicked = useRef(false),
+ uniqueKey = useRef(0),
+ uniqueId = useId();
+
+ const 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,
+ };
+
+ const rippleX: number = !central
+ ? event.clientX - rippleDomainChar.left
+ : rippleDomainChar.width / 2,
+ rippleY: number = !central
+ ? event.clientY - rippleDomainChar.top
+ : rippleDomainChar.height / 2,
+ 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 [
+ ,
+ ];
+ }
+ const 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) {
+ const old = [...prevRipples];
+ old.shift();
+ return old;
+ }
+ return prevRipples;
+ });
+ }, []);
+
+ useImperativeHandle(
+ ref,
+ () => ({
+ start,
+ stop,
+ }),
+ [start, stop],
+ );
+
+ return (
+
+
+ {ripples}
+
+
+ );
+});
+
+export { rippleAreaContext, RippleArea };
diff --git a/src/primitive-components/ripple/ripple.tsx b/src/primitive-components/ripple/ripple.tsx
new file mode 100644
index 0000000..d173e93
--- /dev/null
+++ b/src/primitive-components/ripple/ripple.tsx
@@ -0,0 +1,86 @@
+'use client';
+
+import isEmpty from './utils/utils';
+import { rippleProps } from './ripple.types';
+import { rippleAreaContext } from './ripple-area';
+import RippleEffectBuild from './utils/ripple-effect-builder';
+import React, {
+ ForwardedRef,
+ forwardRef,
+ JSX,
+ useCallback,
+ useContext,
+ useEffect,
+ useRef,
+ useState,
+ useTransition,
+} from 'react';
+
+const Ripples = forwardRef(function Ripples(
+ props: any,
+ ref: ForwardedRef,
+) {
+ const [ripples, setRipples] = useState({});
+ const firstRender = useRef(true);
+ const [pending, startTransition] = useTransition();
+
+ const LifetimeEnd = useCallback((child: JSX.Element) => {
+ if (child.props.endLifetime) {
+ child.props.endLifetime();
+ }
+
+ setRipples(state => {
+ const 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)}>;
+});
+
+const Ripple = forwardRef(function Ripple(
+ props: rippleProps,
+ ref: ForwardedRef,
+) {
+ 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..43fead5
--- /dev/null
+++ b/src/primitive-components/ripple/ripple.types.ts
@@ -0,0 +1,21 @@
+import { Dispatch, SetStateAction } from 'react';
+
+export interface IRippleProps extends PropsWithChildren {
+ centralRipple?: boolean;
+}
+
+export interface RippleAreaProps extends PropsWithChildren {
+ callback: Dispatch>;
+ central?: boolean;
+}
+
+export type rippleProps = {
+ rippleX: number;
+ rippleY: number;
+ rippleS: number;
+ endLifetime?: () => void;
+ lifetime: number;
+ key?: number;
+};
+
+import { PropsWithChildren } from 'react';
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..8a02e34
--- /dev/null
+++ b/src/primitive-components/ripple/utils/array-convert-to-obj.ts
@@ -0,0 +1,15 @@
+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),
+ })),
+ );
+}
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..ed8b4eb
--- /dev/null
+++ b/src/primitive-components/ripple/utils/ripple-effect-builder.ts
@@ -0,0 +1,34 @@
+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,
+) {
+ const empty: boolean = isEmpty(prevRipples);
+ const preparedRipples: object = empty ? {} : prevRipples;
+
+ switch (empty) {
+ case true:
+ ArrayConvertToObj(preparedRipples, nextRipples, callback);
+ break;
+
+ case false:
+ // eslint-disable-next-line no-case-declarations
+ const next: object = {};
+ ArrayConvertToObj(next, nextRipples, callback);
+ for (const 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;
+}
diff --git a/src/primitive-components/ripple/utils/utils.ts b/src/primitive-components/ripple/utils/utils.ts
new file mode 100644
index 0000000..770d0fb
--- /dev/null
+++ b/src/primitive-components/ripple/utils/utils.ts
@@ -0,0 +1,6 @@
+export default function isEmpty(obj: Object): boolean {
+ for (const _i in obj) {
+ return false;
+ }
+ return true;
+}
diff --git a/src/primitive-components/switch/switch.tsx b/src/primitive-components/switch/switch.tsx
new file mode 100644
index 0000000..c520b03
--- /dev/null
+++ b/src/primitive-components/switch/switch.tsx
@@ -0,0 +1,36 @@
+'use client';
+
+import React, { forwardRef } from 'react';
+import { SwitchMainProps } from './switch.types';
+import { CheckBoxLayout } from '../checkbox-layout/check-box-layout';
+
+/**
+ * Switch component
+ ** description
+ */
+
+export const Switch = forwardRef(
+ ({ icon, disabled, selected = false, ...props }, ref) => (
+
+
+
+
+ ),
+);
diff --git a/src/primitive-components/switch/switch.types.ts b/src/primitive-components/switch/switch.types.ts
new file mode 100644
index 0000000..875a0f0
--- /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;
+}
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..b4604c7
--- /dev/null
+++ b/src/primitive-components/text-field/text-field.tsx
@@ -0,0 +1,103 @@
+'use client';
+
+import React, { forwardRef, useState } from 'react';
+import { bool, string } from 'prop-types';
+import { type TextFieldInterface } from './text-field.types';
+
+export const TextField = forwardRef(
+ (
+ {
+ variant = 'filled',
+ withAfterIcon,
+ withBeforeIcon,
+ supportingText,
+ ...props
+ },
+ ref,
+ ) => {
+ const [raised, setRaised] = useState(
+ props.placeholder ?? false,
+ );
+
+ const callback = (e: any): void => {
+ if (
+ e.type === 'blur' &&
+ e.target.value.length === 0 &&
+ !props.placeholder
+ ) {
+ setRaised(false);
+ } else if (e.type === 'focus') {
+ setRaised(true);
+ }
+ };
+
+ const iconStyles =
+ withBeforeIcon && withAfterIcon
+ ? 'with-before-icon with-after-icon'
+ : withBeforeIcon
+ ? 'with-before-icon'
+ : withAfterIcon
+ ? 'with-after-icon'
+ : '';
+
+ return (
+
+
+ {variant === 'outlined' && (
+
+ )}
+ {withBeforeIcon && (
+
+ {withBeforeIcon && 'search'}
+
+ )}
+ {
+ callback(event);
+ if (props.onBlur) {
+ props.onBlur(event);
+ }
+ }}
+ onFocus={event => {
+ callback(event);
+ if (props.onFocus) {
+ props.onFocus(event);
+ }
+ }}
+ />
+
+
+ {withAfterIcon && (
+
+ {withAfterIcon && 'cancel'}
+
+ )}
+
+ {supportingText !== '' && (
+
+ {supportingText}
+
+ )}
+
+ );
+ },
+);
+
+TextField.propTypes = {
+ children: string,
+ withBeforeIcon: bool,
+ withAfterIcon: bool,
+ className: string,
+ variant: string,
+ placeholder: string,
+ supportingText: string,
+};
diff --git a/src/primitive-components/text-field/text-field.types.ts b/src/primitive-components/text-field/text-field.types.ts
new file mode 100644
index 0000000..4147a93
--- /dev/null
+++ b/src/primitive-components/text-field/text-field.types.ts
@@ -0,0 +1,8 @@
+import { PropsWithChildren } from 'react';
+
+export interface TextFieldInterface extends PropsWithChildren {
+ variant: 'filled' | 'outlined';
+ withAfterIcon?: boolean;
+ withBeforeIcon?: boolean;
+ supportingText?: string;
+}
diff --git a/src/styles/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc b/src/styles/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc
new file mode 100644
index 0000000..e0c0331
Binary files /dev/null and b/src/styles/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc differ
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/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/button.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/button.sassc
new file mode 100644
index 0000000..b53dbdb
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/button.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/checkbox.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/checkbox.sassc
new file mode 100644
index 0000000..f8d100d
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/checkbox.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fabs.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fabs.sassc
new file mode 100644
index 0000000..4d4dc29
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fabs.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fonts.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fonts.sassc
new file mode 100644
index 0000000..8924fb2
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/fonts.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/generics.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/generics.sassc
new file mode 100644
index 0000000..5e979d5
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/generics.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/icon-button.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/icon-button.sassc
new file mode 100644
index 0000000..bfade6b
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/icon-button.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/radio.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/radio.sassc
new file mode 100644
index 0000000..cb94c39
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/radio.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/ripple.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/ripple.sassc
new file mode 100644
index 0000000..e39b96f
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/ripple.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/swtich.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/swtich.sassc
new file mode 100644
index 0000000..0203a9c
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/swtich.sassc differ
diff --git a/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/text-field.sassc b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/text-field.sassc
new file mode 100644
index 0000000..4a15d28
Binary files /dev/null and b/src/styles/.sass-cache/dea5f55dc4d726c922f4841b8139fc62e62f2286/text-field.sassc differ
diff --git a/src/styles/badge.css b/src/styles/badge.css
new file mode 100644
index 0000000..d7a0662
--- /dev/null
+++ b/src/styles/badge.css
@@ -0,0 +1,31 @@
+svg.m3.m3-badge {
+ position: absolute;
+ background-color: var(--md-sys-color-error);
+}
+svg.m3.m3-badge.disable-value {
+ padding: 0;
+ height: 6px;
+ width: 6px;
+ border-radius: 3px;
+}
+svg.m3.m3-badge.disable-value > text {
+ display: none;
+}
+svg.m3.m3-badge {
+ border-radius: 8px;
+ height: 16px;
+}
+svg.m3.m3-badge > text {
+ fill: var(--md-sys-color-on-error);
+ font-size: var(--md-sys-typescale-label-small-font-size);
+ font-weight: var(--md-sys-typescale-label-small-font-weight);
+ line-height: var(--md-sys-typescale-label-small-line-height);
+ font-optical-sizing: none;
+ alignment-baseline: central;
+ text-anchor: middle;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+/*# sourceMappingURL=badge.css.map */
diff --git a/src/styles/badge.css.map b/src/styles/badge.css.map
new file mode 100644
index 0000000..270c396
--- /dev/null
+++ b/src/styles/badge.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["badge.sass"],"names":[],"mappings":"AAAA;EACI;EACA;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AACR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"badge.css"}
\ No newline at end of file
diff --git a/src/styles/badge.sass b/src/styles/badge.sass
new file mode 100644
index 0000000..fe35806
--- /dev/null
+++ b/src/styles/badge.sass
@@ -0,0 +1,25 @@
+svg.m3.m3-badge
+ position: absolute
+ background-color: var(--md-sys-color-error)
+ &.disable-value
+ padding: 0
+ height: 6px
+ width: 6px
+ border-radius: 3px
+ & > text
+ display: none
+ &
+ border-radius: 8px
+ height: 16px
+
+ & > text
+ fill: var(--md-sys-color-on-error)
+ font-size: var(--md-sys-typescale-label-small-font-size)
+ font-weight: var(--md-sys-typescale-label-small-font-weight)
+ line-height: var(--md-sys-typescale-label-small-line-height)
+ font-optical-sizing: none
+ alignment-baseline: central
+ text-anchor: middle
+ display: flex
+ align-items: center
+ justify-content: center
diff --git a/src/styles/button.css b/src/styles/button.css
new file mode 100644
index 0000000..b25345c
--- /dev/null
+++ b/src/styles/button.css
@@ -0,0 +1,206 @@
+button:not(.m3-fab, .m3-icon-button) {
+ transition:
+ background-color,
+ box-shadow,
+ 0.2s cubic-bezier(0.2, 0, 0, 1) !important;
+ font-family: var(--md-sys-typescale-label-large-font-family-name);
+ font-size: var(--md-sys-typescale-label-large-font-size);
+ font-weight: var(--md-sys-typescale-label-large-font-weight);
+ line-height: var(--md-sys-typescale-label-large-line-height);
+ box-sizing: border-box;
+}
+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 > svg.m3-svg-icon {
+ color: var(--md-sys-color-on-primary);
+ fill: var(--md-sys-color-on-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined {
+ outline-offset: -1px;
+ outline: 1px solid var(--md-sys-color-outline) !important;
+ background-color: rgba(0, 0, 0, 0);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined > svg.m3-svg-icon {
+ fill: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text {
+ padding: 10px 12px !important;
+ background-color: rgba(0, 0, 0, 0);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text > svg.m3-svg-icon {
+ fill: 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);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).elevated > svg.m3-svg-icon {
+ fill: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).tonal {
+ background-color: var(--md-sys-color-secondary-container);
+ color: var(--md-sys-color-on-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button).tonal > svg.m3-svg-icon {
+ fill: 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 {
+ outline: 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..48749c7
--- /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;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAER;EACI;EACA;EACA;;AAEA;EACI;;AAER;ECNI;EDQA;EACA;;AAEA;EACI;;AAER;EACI;EACA;;AAEA;EACI;;AAER;ECMA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADVA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;EC3CA;;AD8CA;ECxCA;;AD2CA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EC1DA;;AD6DA;ECvDA;;AD0DA;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..f1d6f91
--- /dev/null
+++ b/src/styles/button.sass
@@ -0,0 +1,127 @@
+@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
+ font-family: var(--md-sys-typescale-label-large-font-family-name)
+ font-size: var(--md-sys-typescale-label-large-font-size)
+ font-weight: var(--md-sys-typescale-label-large-font-weight)
+ line-height: var(--md-sys-typescale-label-large-line-height)
+ box-sizing: border-box
+
+ &.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)
+ &, & > svg.m3-svg-icon
+ color: var(--md-sys-color-on-primary)
+ fill: var(--md-sys-color-on-primary)
+
+ &.outlined
+ outline-offset: -1px
+ outline: 1px solid var(--md-sys-color-outline) !important
+ background-color: #00000000
+ color: var(--md-sys-color-primary)
+
+ & > svg.m3-svg-icon
+ fill: var(--md-sys-color-primary)
+
+ &.text
+ padding: 10px 12px !important
+ background-color: #00000000
+ color: var(--md-sys-color-primary)
+
+ & > svg.m3-svg-icon
+ fill: var(--md-sys-color-primary)
+
+ &.elevated
+ @include elevation-1(false)
+ background-color: var(--md-sys-color-surface-container-low)
+ color: var(--md-sys-color-primary)
+
+ & > svg.m3-svg-icon
+ fill: var(--md-sys-color-primary)
+
+ &.tonal
+ background-color: var(--md-sys-color-secondary-container)
+ color: var(--md-sys-color-on-secondary-container)
+
+ & > svg.m3-svg-icon
+ fill: 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
+ outline: 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..eafbab2
--- /dev/null
+++ b/src/styles/checkbox.css
@@ -0,0 +1,190 @@
+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: 2.5rem;
+ 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: 2.5rem;
+ height: 2.5rem;
+}
+
+input[type="checkbox"].m3.m3-checkbox {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: content-box;
+ z-index: 10;
+ width: 1.125rem;
+ height: 1.125rem;
+ margin: 0;
+ outline-offset: -0.14rem;
+ border-radius: 0.14rem;
+ outline: 0.14rem 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)
+ ) {
+ outline-color: var(--md-sys-color-error);
+ background-color: var(--md-sys-color-error);
+}
+input[type="checkbox"].m3.m3-checkbox:is(.m3.m3-error, :user-invalid) {
+ outline-color: 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
+ )
+ ) {
+ outline-color: 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: 1.125rem;
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 700;
+ font-size: 1.125rem;
+ 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 {
+ outline-color: 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..36b94df
--- /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;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..98cf47c
--- /dev/null
+++ b/src/styles/checkbox.sass
@@ -0,0 +1,93 @@
+@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: 2.5rem
+ height: 2.5rem
+
+input[type="checkbox"].m3.m3-checkbox
+ appearance: none
+ display: flex
+ align-items: center
+ justify-content: center
+ box-sizing: content-box
+ z-index: 10
+ width: 1.125rem
+ height: 1.125rem
+ margin: 0
+ outline-offset: -.14rem
+ border-radius: .14rem
+ outline: .14rem 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))
+ outline-color: var(--md-sys-color-error)
+ background-color: var(--md-sys-color-error)
+
+ &:is(.m3.m3-error, :user-invalid)
+ outline-color: var(--md-sys-color-error)
+
+ &:is(:checked:is(:hover, &):not(.m3.m3-error, :disabled), :indeterminate:is(:hover, &):not(.m3.m3-error, :disabled))
+ outline-color: 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: 1.125rem
+ font-family: Material-Symbols-Outlined-Regular, sans-serif
+ font-weight: 700
+ font-size: 1.125rem
+ color: var(--md-sys-color-on-primary)
+
+ &:checked::after
+ content: "done"
+
+ &:indeterminate::after
+ content: "check_indeterminate_small"
+
+ &:hover
+ outline-color: 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/divider.css b/src/styles/divider.css
new file mode 100644
index 0000000..8518ae8
--- /dev/null
+++ b/src/styles/divider.css
@@ -0,0 +1,35 @@
+hr.m3.m3-divider {
+ display: flex;
+ align-items: end;
+ box-sizing: border-box;
+ border: none;
+ outline: 0.5px solid var(--md-sys-color-outline-variant);
+ margin: 4px;
+}
+hr.m3.m3-divider.vertical {
+ writing-mode: tb-rl;
+}
+hr.m3.m3-divider.vertical,
+hr.m3.m3-divider.vertical.full-width {
+ height: 100%;
+}
+hr.m3.m3-divider.vertical.inset {
+ align-self: end;
+ height: calc(100% - 16px);
+}
+hr.m3.m3-divider.vertical.middle-inset {
+ height: calc(100% - 32px);
+}
+hr.m3.m3-divider.horizontal,
+hr.m3.m3-divider.horizontal.full-width {
+ width: 100%;
+}
+hr.m3.m3-divider.horizontal.inset {
+ align-self: end;
+ width: calc(100% - 16px);
+}
+hr.m3.m3-divider.horizontal.middle-inset {
+ width: calc(100% - 32px);
+}
+
+/*# sourceMappingURL=divider.css.map */
diff --git a/src/styles/divider.css.map b/src/styles/divider.css.map
new file mode 100644
index 0000000..cbef9c7
--- /dev/null
+++ b/src/styles/divider.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["divider.sass"],"names":[],"mappings":"AAAA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AACA;EACI;;AACJ;EACI;EACA;;AACJ;EACI;;AAGJ;EACI;;AACJ;EACI;EACA;;AACJ;EACI","file":"divider.css"}
\ No newline at end of file
diff --git a/src/styles/divider.sass b/src/styles/divider.sass
new file mode 100644
index 0000000..bd25a65
--- /dev/null
+++ b/src/styles/divider.sass
@@ -0,0 +1,26 @@
+hr.m3.m3-divider
+ display: flex
+ align-items: end
+ box-sizing: border-box
+ border: none
+ outline: 0.5px solid var(--md-sys-color-outline-variant)
+ margin: 4px
+
+ &.vertical
+ writing-mode: tb-rl
+ &, &.full-width
+ height: 100%
+ &.inset
+ align-self: end
+ height: calc(100% - 16px)
+ &.middle-inset
+ height: calc(100% - (2 * 16px))
+
+ &.horizontal
+ &, &.full-width
+ width: 100%
+ &.inset
+ align-self: end
+ width: calc(100% - 16px)
+ &.middle-inset
+ width: calc(100% - (2 * 16px))
\ No newline at end of file
diff --git a/src/styles/elevation.css b/src/styles/elevation.css
new file mode 100644
index 0000000..72eeb01
--- /dev/null
+++ b/src/styles/elevation.css
@@ -0,0 +1,31 @@
+.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..9f380c0
--- /dev/null
+++ b/src/styles/fabs.css
@@ -0,0 +1,211 @@
+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 {
+ background-color: var(--md-sys-color-surface-container-high);
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-fab.surface:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.surface > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-primary-container);
+ color: var(--md-sys-color-on-primary-container);
+}
+button.m3.m3-fab.primary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.primary > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-secondary-container);
+ color: var(--md-sys-color-on-secondary-container);
+}
+button.m3.m3-fab.secondary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.secondary > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-tertiary-container);
+ color: var(--md-sys-color-on-tertiary-container);
+}
+button.m3.m3-fab.tertiary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.tertiary > svg.m3-svg-icon {
+ fill: 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:not(.without-elevation):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:not(.without-elevation):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..a5f45ff
--- /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;ECgDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADpDA;ECCA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADHJ;ECFA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADAJ;ECLA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADGJ;ECRA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADMJ;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;ECQI;;ADLJ;ECHI;;ADOA;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..d421e21
--- /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
+
+ &:not(.without-elevation):is(.surface, .primary, .secondary, .tertiary):hover
+ @include elevation-4(false)
+
+ &:not(.without-elevation):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..4db0f54
--- /dev/null
+++ b/src/styles/font/README.md
@@ -0,0 +1,37 @@
+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..98a5703
--- /dev/null
+++ b/src/styles/fonts.css
@@ -0,0 +1,56 @@
+@font-face {
+ font-family: Material-Symbols-Rounded-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-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-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..88acafb
--- /dev/null
+++ b/src/styles/fonts.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["fonts.sass"],"names":[],"mappings":"AAGI;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;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..40c7fb8
--- /dev/null
+++ b/src/styles/fonts.sass
@@ -0,0 +1,16 @@
+$fonts-family: ["Rounded", "Outlined", "Sharp"]
+
+@each $font-family in $fonts-family
+ @font-face
+ font-family: Material-Symbols-#{$font-family}-Regular
+ src: url("./font/MaterialSymbols#{$font-family}[FILL,GRAD,opsz,wght].ttf")
+ src: url("./font/MaterialSymbols#{$font-family}[FILL,GRAD,opsz,wght].woff2") format("woff2")
+
+$weights: ("Thin": 100, "Light": 300, "Regular": 400, "Medium": 500, "Bold": 700, "Black": 900)
+
+@each $name, $weight in $weights
+ @font-face
+ font-family: Roboto
+ font-face-name: #{$name}
+ font-weight: #{$weight}
+ src: url("./font/Roboto-#{$name}.ttf")
diff --git a/src/styles/generics.css b/src/styles/generics.css
new file mode 100644
index 0000000..9508c00
--- /dev/null
+++ b/src/styles/generics.css
@@ -0,0 +1,1710 @@
+@import "./themes/tokens.css";
+@import "./themes/colors.module.css";
+@import "./themes/typography.module.css";
+@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 {
+ background-color: var(--md-sys-color-surface-container-high);
+ color: var(--md-sys-color-primary);
+}
+button.m3.m3-fab.surface:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.surface > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-primary-container);
+ color: var(--md-sys-color-on-primary-container);
+}
+button.m3.m3-fab.primary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.primary > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-secondary-container);
+ color: var(--md-sys-color-on-secondary-container);
+}
+button.m3.m3-fab.secondary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.secondary > svg.m3-svg-icon {
+ fill: 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 {
+ background-color: var(--md-sys-color-tertiary-container);
+ color: var(--md-sys-color-on-tertiary-container);
+}
+button.m3.m3-fab.tertiary:not(.without-elevation) {
+ box-shadow:
+ 0 1px 3px 0 rgba(0, 0, 0, 0.3),
+ 0 4px 8px 3px rgba(0, 0, 0, 0.15);
+}
+button.m3.m3-fab.tertiary > svg.m3-svg-icon {
+ fill: 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:not(.without-elevation):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:not(.without-elevation):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
+ );
+}
+
+svg.m3.m3-svg-icon > text {
+ alignment-baseline: central;
+ text-anchor: middle;
+}
+svg.m3.m3-svg-icon > text.m3-size-12px {
+ width: 12px;
+ aspect-ratio: 1;
+ line-height: 12px;
+ font-size: 12px;
+}
+svg.m3.m3-svg-icon > text.m3-size-16px {
+ width: 16px;
+ aspect-ratio: 1;
+ line-height: 16px;
+ font-size: 16px;
+}
+svg.m3.m3-svg-icon > text.m3-size-20px {
+ width: 20px;
+ aspect-ratio: 1;
+ line-height: 20px;
+ font-size: 20px;
+}
+svg.m3.m3-svg-icon > text.m3-size-24px {
+ width: 24px;
+ aspect-ratio: 1;
+ line-height: 24px;
+ font-size: 24px;
+}
+svg.m3.m3-svg-icon > text.m3-size-28px {
+ width: 28px;
+ aspect-ratio: 1;
+ line-height: 28px;
+ font-size: 28px;
+}
+svg.m3.m3-svg-icon > text.m3-size-32px {
+ width: 32px;
+ aspect-ratio: 1;
+ line-height: 32px;
+ font-size: 32px;
+}
+svg.m3.m3-svg-icon > text.m3-size-36px {
+ width: 36px;
+ aspect-ratio: 1;
+ line-height: 36px;
+ font-size: 36px;
+}
+svg.m3.m3-svg-icon > text.m3-size-40px {
+ width: 40px;
+ aspect-ratio: 1;
+ line-height: 40px;
+ font-size: 40px;
+}
+svg.m3.m3-svg-icon > text.m3-size-48px {
+ width: 48px;
+ aspect-ratio: 1;
+ line-height: 48px;
+ font-size: 48px;
+}
+svg.m3.m3-svg-icon > text.m3-Outlined {
+ font-family: Material-Symbols-Outlined-Regular;
+}
+svg.m3.m3-svg-icon > text.m3-Rounded {
+ font-family: Material-Symbols-Rounded-Regular;
+}
+svg.m3.m3-svg-icon > text.m3-Sharp {
+ font-family: Material-Symbols-Sharp-Regular;
+}
+
+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: 2.5rem;
+ 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
+ );
+}
+
+svg.m3.m3-badge {
+ position: absolute;
+ background-color: var(--md-sys-color-error);
+}
+svg.m3.m3-badge.disable-value {
+ padding: 0;
+ height: 6px;
+ width: 6px;
+ border-radius: 3px;
+}
+svg.m3.m3-badge.disable-value > text {
+ display: none;
+}
+svg.m3.m3-badge {
+ border-radius: 8px;
+ height: 16px;
+}
+svg.m3.m3-badge > text {
+ fill: var(--md-sys-color-on-error);
+ font-size: var(--md-sys-typescale-label-small-font-size);
+ font-weight: var(--md-sys-typescale-label-small-font-weight);
+ line-height: var(--md-sys-typescale-label-small-line-height);
+ font-optical-sizing: none;
+ alignment-baseline: central;
+ text-anchor: middle;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+@font-face {
+ font-family: Material-Symbols-Rounded-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-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-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;
+ font-family: var(--md-sys-typescale-label-large-font-family-name);
+ font-size: var(--md-sys-typescale-label-large-font-size);
+ font-weight: var(--md-sys-typescale-label-large-font-weight);
+ line-height: var(--md-sys-typescale-label-large-line-height);
+ box-sizing: border-box;
+}
+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 > svg.m3-svg-icon {
+ color: var(--md-sys-color-on-primary);
+ fill: var(--md-sys-color-on-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined {
+ outline-offset: -1px;
+ outline: 1px solid var(--md-sys-color-outline) !important;
+ background-color: rgba(0, 0, 0, 0);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).outlined > svg.m3-svg-icon {
+ fill: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text {
+ padding: 10px 12px !important;
+ background-color: rgba(0, 0, 0, 0);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).text > svg.m3-svg-icon {
+ fill: 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);
+ color: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).elevated > svg.m3-svg-icon {
+ fill: var(--md-sys-color-primary);
+}
+button:not(.m3-fab, .m3-icon-button).tonal {
+ background-color: var(--md-sys-color-secondary-container);
+ color: var(--md-sys-color-on-secondary-container);
+}
+button:not(.m3-fab, .m3-icon-button).tonal > svg.m3-svg-icon {
+ fill: 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 {
+ outline: 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);
+ }
+}
+div.m3.m3-switch-exp {
+ margin: 4px;
+ box-sizing: content-box;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 52px;
+ height: 32px;
+}
+div.m3.m3-switch-exp > svg {
+ overflow: visible;
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ width: 52px;
+ height: 32px;
+}
+div.m3.m3-switch-exp > svg > g {
+ transform: translate(11.5%, 81%);
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+}
+div.m3.m3-switch-exp > svg > g > text {
+ font-family: Material-Symbols-Outlined-Regular;
+ font-size: 20px;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler-state-layer,
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler {
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ cy: 50%;
+ cx: 16px;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler-state-layer {
+ r: 20px;
+ fill-opacity: 0;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler {
+ r: 8px;
+}
+div.m3.m3-switch-exp > svg > rect.m3.m3-switch-track {
+ transition: fill 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ stroke-width: 2px;
+ border-radius: 16px;
+ rx: 15px;
+ width: 50px;
+ height: 30px;
+}
+div.m3.m3-switch-exp > input.m3 {
+ cursor: pointer;
+ appearance: none;
+ opacity: 0 !important;
+ margin: 0;
+ width: 52px;
+ height: 32px;
+ position: absolute;
+}
+div.m3.m3-switch-exp > input.m3:disabled {
+ cursor: not-allowed;
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked, :disabled)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-outline);
+}
+div.m3.m3-switch-exp > input.m3:checked:not(:disabled) + svg > g {
+ transform: translate(50%, 81%);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:not(:disabled)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-primary);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:disabled)
+ + svg
+ > g
+ > text.m3.m3-icon-unchecked {
+ fill: var(--md-sys-color-on-primary);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:disabled)
+ + svg
+ > g
+ > text.m3.m3-icon-checked {
+ fill: var(--md-sys-color-on-primary-container);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:disabled
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-surface);
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > circle.m3.m3-switch-handler,
+div.m3.m3-switch-exp
+ > input.m3
+ + svg:has(text.m3.m3-icon-unchecked)
+ > circle.m3.m3-switch-handler {
+ r: 12px;
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > g > text.m3.m3-icon-unchecked {
+ opacity: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:checked
+ + svg
+ > circle.m3:is(.m3-switch-handler, .m3-switch-handler-state-layer) {
+ cx: calc(100% - 16px);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked)
+ + svg
+ > g
+ > text.m3.m3-icon-checked {
+ opacity: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(
+ div.m3.m3-switch-exp > input.m3:checked,
+ div.m3.m3-switch-exp > input.m3
+ ):not(:disabled):active
+ + svg
+ > circle.m3.m3-switch-handler {
+ r: 14px;
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked):disabled
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 38%;
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-primary-container);
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-primary);
+ fill-opacity: 8%;
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-surface-variant);
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 8%;
+}
+div.m3.m3-switch-exp
+ > input.m3:active:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-primary);
+ fill-opacity: 12%;
+}
+div.m3.m3-switch-exp
+ > input.m3:active:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 12%;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(:checked, :checked:disabled)
+ + svg
+ > rect.m3.m3-switch-track {
+ rx: 16px;
+ width: 52px;
+ height: 32px;
+ stroke-width: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(
+ div.m3.m3-switch-exp > input.m3:not(:checked),
+ div.m3.m3-switch-exp > input.m3:not(:checked):disabled
+ )
+ + svg
+ > rect.m3.m3-switch-track {
+ x: 1px;
+ y: 1px;
+}
+div.m3.m3-switch-exp > input.m3:not(:checked) + svg > rect.m3.m3-switch-track {
+ stroke: var(--md-sys-color-outline);
+ fill: var(--md-sys-color-surface-container-highest);
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > rect.m3.m3-switch-track {
+ stroke: var(--md-sys-color-primary);
+ fill: var(--md-sys-color-primary);
+}
+div.m3.m3-switch-exp > input.m3:disabled + svg > g > text.m3 {
+ fill: color-mix(
+ in srgb,
+ var(--md-sys-color-surface-container-highest) 38%,
+ transparent
+ );
+}
+div.m3.m3-switch-exp > input.m3:disabled + svg > rect.m3.m3-switch-track {
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+ fill: color-mix(
+ in srgb,
+ var(--md-sys-color-surface-variant) 12%,
+ transparent
+ );
+}
+div.m3.m3-switch-exp > input.m3:checked:disabled + svg > g > text.m3 {
+ transform: translateX(38.5%);
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:disabled
+ + svg
+ > rect.m3.m3-switch-track {
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent);
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+
+hr.m3.m3-divider {
+ display: flex;
+ align-items: end;
+ box-sizing: border-box;
+ border: none;
+ outline: 0.5px solid var(--md-sys-color-outline-variant);
+ margin: 4px;
+}
+hr.m3.m3-divider.vertical {
+ writing-mode: tb-rl;
+}
+hr.m3.m3-divider.vertical,
+hr.m3.m3-divider.vertical.full-width {
+ height: 100%;
+}
+hr.m3.m3-divider.vertical.inset {
+ align-self: end;
+ height: calc(100% - 16px);
+}
+hr.m3.m3-divider.vertical.middle-inset {
+ height: calc(100% - 32px);
+}
+hr.m3.m3-divider.horizontal,
+hr.m3.m3-divider.horizontal.full-width {
+ width: 100%;
+}
+hr.m3.m3-divider.horizontal.inset {
+ align-self: end;
+ width: calc(100% - 16px);
+}
+hr.m3.m3-divider.horizontal.middle-inset {
+ width: calc(100% - 32px);
+}
+
+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: 2.5rem;
+ 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: 2.5rem;
+ height: 2.5rem;
+}
+
+input[type="checkbox"].m3.m3-checkbox {
+ appearance: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: content-box;
+ z-index: 10;
+ width: 1.125rem;
+ height: 1.125rem;
+ margin: 0;
+ outline-offset: -0.14rem;
+ border-radius: 0.14rem;
+ outline: 0.14rem 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)
+ ) {
+ outline-color: var(--md-sys-color-error);
+ background-color: var(--md-sys-color-error);
+}
+input[type="checkbox"].m3.m3-checkbox:is(.m3.m3-error, :user-invalid) {
+ outline-color: 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
+ )
+ ) {
+ outline-color: 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: 1.125rem;
+ font-family: Material-Symbols-Outlined-Regular, sans-serif;
+ font-weight: 700;
+ font-size: 1.125rem;
+ 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 {
+ outline-color: 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:is(.filled, .outlined) > input::placeholder,
+div.m3.m3-text-field > input,
+div.m3.m3-text-field > label {
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+}
+div.m3.m3-text-field + span.m3-text-field-supporting-text {
+ display: flex;
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ color: var(--md-sys-color-on-surface-variant);
+ margin: 4px 16px 2px 16px;
+}
+div.m3.m3-text-field > label {
+ padding-inline: 4px;
+ pointer-events: none;
+ transform: translate(16px, 0);
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ position: absolute;
+}
+div.m3.m3-text-field > input {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ 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 > input,
+div.m3.m3-text-field > label {
+ color: var(--md-sys-color-on-surface);
+}
+div.m3.m3-text-field:is(.filled, .outlined) > input::placeholder {
+ color: var(--md-sys-color-on-surface-variant);
+}
+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:is(.filled, .outlined):has(input:disabled) > *,
+div.m3.m3-text-field:is(.filled, .outlined):has(input:disabled)
+ + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.filled {
+ contain: content;
+ border-radius: 4px 4px 0 0;
+}
+div.m3.m3-text-field.filled > input {
+ display: inline-flex;
+ align-items: center;
+ 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 > label.raised {
+ 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);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid:focus-visible {
+ box-shadow: inset 0 -3px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid {
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled:has(input:required:user-invalid)
+ > *:not(input):nth-last-child(-n + 3),
+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: 3px;
+ box-shadow: inset 0 -3px 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: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 > fieldset {
+ margin: 0;
+ position: absolute;
+ border-radius: 4px;
+ pointer-events: none;
+ padding-inline: 12px;
+ border: 1px solid var(--md-sys-color-outline);
+ inset: -7.5px 0px 0px 0px;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined > fieldset > legend > span {
+ width: 100%;
+}
+div.m3.m3-text-field.outlined > fieldset > legend {
+ opacity: 0;
+ width: 0;
+ padding: 0;
+ pointer-events: none;
+ border: 0 solid transparent;
+ transition: 0.05s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined > fieldset > legend.raised {
+ border-inline-width: 6px;
+ border-style: solid;
+ border-color: transparent;
+ width: auto;
+ visibility: visible;
+}
+div.m3.m3-text-field.outlined > input {
+ box-sizing: border-box;
+ border-radius: 4px;
+}
+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:has(input:focus-visible) > fieldset {
+ border: 3px solid var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined:not(
+ div.m3.m3-text-field.outlined:has(label.raised)
+ ):has(input:focus-visible)
+ > fieldset
+ > legend {
+ border-top-width: 0;
+ border-bottom-width: 0;
+ border-inline-width: 5.5px;
+ border-style: solid;
+ border-color: transparent;
+}
+div.m3.m3-text-field.outlined:not(
+ div.m3.m3-text-field.outlined:has(input:focus-visible)
+ ):has(label.raised)
+ > fieldset
+ > legend {
+ border-top-width: 0;
+ border-bottom-width: 0;
+ border-inline-width: 7.5px;
+ border-style: solid;
+ border-color: transparent;
+}
+div.m3.m3-text-field.outlined > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined > label.raised,
+div.m3.m3-text-field.outlined > fieldset > * {
+ 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 > label.raised {
+ transform: translate(16px, -27px) !important;
+}
+div.m3.m3-text-field.outlined > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(input:required:user-invalid)
+ > *:not(input):nth-last-child(-n + 3),
+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:has(input:required:user-invalid) > fieldset {
+ border: 3px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(
+ input:required:user-invalid:not(:focus-visible)
+ )
+ > fieldset {
+ border: 1px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:hover:not(
+ div.m3.m3-text-field.outlined:hover:has(
+ input:disabled,
+ input:focus-visible,
+ label.raised,
+ input:required:user-invalid
+ )
+ )
+ > fieldset {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ border-color: var(--md-sys-color-on-surface);
+}
+
+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.default {
+ fill: 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 {
+ fill: 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 {
+ fill: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled {
+ fill: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled.toggled {
+ fill: var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.filled.selected.toggled {
+ fill: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.tonal.toggled {
+ fill: 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 {
+ fill: 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 {
+ fill: 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);
+ fill: 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);
+ fill: 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);
+ fill: 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.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface);
+ fill: 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
+ );
+}
+
+html {
+ font-family: Roboto, serif;
+ color: var(--md-sys-color-on-surface);
+ background-color: var(--md-sys-color-surface-container);
+}
+
+.m3 {
+ user-select: none;
+}
+
+.m3.m3-wrapper {
+ width: 100%;
+ background-color: var(--md-sys-color-surface);
+ border-radius: 25px;
+ padding: 25px;
+ display: flex;
+ align-items: center;
+ flex-direction: column;
+ 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..ba42a68
--- /dev/null
+++ b/src/styles/generics.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["generics.sass","fabs.sass","mixins/m3-mixins.sass","icon.sass","radio.sass","badge.sass","fonts.sass","button.sass","ripple.sass","swtich.sass","divider.sass","checkbox.sass","text-field.sass","icon-button.sass"],"names":[],"mappings":"AAYQ;AACA;AACA;AACA;AACA;ACdR;EACI;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;ECgDA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;ADpDA;ECCA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADHJ;ECFA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADAJ;ECLA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADGJ;ECRA;EACA;;AAHA;EA+BI;;AA3BJ;EACI;;AACJ;EACI;;ADMJ;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;ECQI;;ADLJ;ECHI;;ADOA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AE5ER;EACI;EACA;;AAGA;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAeJ;EACI;;AADJ;EACI;;AADJ;EACI;;;ACfZ;EFDI;EACA;EACA;EACA;EACA;;AEDA;EFIA;EACA;EACA;EACA;EACA;;;AELJ;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;;AACA;EACI;EACA;EACA;EACA;;AACA;EACI;;AACR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACrBJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAHJ;EACI;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;AAJJ;EACI;EACA;EACA;EACA;;ACbR;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAER;EACI;EACA;EACA;;AAEA;EACI;;AAER;ELNI;EKQA;EACA;;AAEA;EACI;;AAER;EACI;EACA;;AAEA;EACI;;AAER;ELMA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AKVA;EACI;;AAGA;EACI;;AAER;EACI;;AAGA;EL3CA;;AK8CA;ELxCA;;AK2CA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAGJ;EL1DA;;AK6DA;ELvDA;;AK0DA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AC9HZ;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;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEJ;EAEI;;AAGA;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAER;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA;;;AC5JhB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AACA;EACI;;AACJ;EACI;EACA;;AACJ;EACI;;AAGJ;EACI;;AACJ;EACI;EACA;;AACJ;EACI;;;ACvBZ;ETDI;EACA;EACA;EACA;EACA;;ASDA;ETIA;EACA;EACA;EACA;EACA;;;ASLJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;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;;;AC3FhB;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;;AAER;EACI;EACA;;AAEA;EAgBI;EACA;EACA;EACA;EACA;EACA;;AApBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AASR;EACI;EACA;EACA;;AAEJ;EACI;;AAEA;EACI;;AACJ;EACI;;AAER;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGA;EACI;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAER;EAgBI;EACA;;AAhBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAKR;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EACI;;AAEJ;EACI;;AAGA;EACI;EACA;;;ACrNhB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAGA;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;EACA;EACA;;AAGJ;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;;;AbrHZ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;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..bc70254
--- /dev/null
+++ b/src/styles/generics.sass
@@ -0,0 +1,36 @@
+@import "fabs"
+@import "icon"
+@import "radio"
+@import "badge"
+@import "fonts"
+@import "button"
+@import "ripple"
+@import "swtich"
+@import "divider"
+@import "checkbox"
+@import "text-field"
+@import "icon-button"
+@import "./themes/tokens.css"
+@import "./themes/colors.module.css"
+@import "./themes/typography.module.css"
+@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)
+ background-color: var(--md-sys-color-surface-container)
+
+.m3
+ user-select: none
+
+.m3.m3-wrapper
+ width: 100%
+ background-color: var(--md-sys-color-surface)
+ border-radius: 25px
+ padding: 25px
+ display: flex
+ align-items: center
+ flex-direction: column
+ height: min-content
+
diff --git a/src/styles/icon-button.css b/src/styles/icon-button.css
new file mode 100644
index 0000000..6173d2b
--- /dev/null
+++ b/src/styles/icon-button.css
@@ -0,0 +1,268 @@
+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.default {
+ fill: 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 {
+ fill: 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 {
+ fill: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled {
+ fill: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.filled.toggled {
+ fill: var(--md-sys-color-primary);
+ background-color: var(--md-sys-color-surface-container-highest);
+}
+button.m3.m3-icon-button.filled.selected.toggled {
+ fill: var(--md-sys-color-on-primary);
+ background-color: var(--md-sys-color-primary);
+}
+button.m3.m3-icon-button.tonal.toggled {
+ fill: 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 {
+ fill: 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 {
+ fill: 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);
+ fill: 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);
+ fill: 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);
+ fill: 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.selected.toggled {
+ border: 1px solid rgba(0, 0, 0, 0);
+ background-color: var(--md-sys-color-inverse-surface);
+ fill: 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..18b87d0
--- /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;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;EACA;EACA;;AAGJ;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..295d021
--- /dev/null
+++ b/src/styles/icon-button.sass
@@ -0,0 +1,136 @@
+@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
+
+ &.default
+ &
+ fill: var(--md-sys-color-on-surface-variant)
+ background-color: #00000000
+
+ &:disabled, &.selected:disabled, &.selected.toggled:disabled
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface-variant) 38%, transparent)
+ background-color: #00000000
+
+ &.selected.toggled
+ fill: var(--md-sys-color-primary)
+
+ &.filled
+ &
+ fill: var(--md-sys-color-on-primary)
+ background-color: var(--md-sys-color-primary)
+
+ &.toggled
+ fill: var(--md-sys-color-primary)
+ background-color: var(--md-sys-color-surface-container-highest)
+
+ &.selected.toggled
+ fill: var(--md-sys-color-on-primary)
+ background-color: var(--md-sys-color-primary)
+
+ &.tonal
+ &.toggled
+ fill: var(--md-sys-color-on-surface-variant)
+ background-color: var(--md-sys-color-surface-container-highest)
+
+ &.selected.toggled, &
+ fill: var(--md-sys-color-on-secondary-container)
+ background-color: var(--md-sys-color-secondary-container)
+
+ &:is(.tonal, .filled, .toggled.selected):disabled
+ fill: 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)
+ fill: 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)
+ fill: 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)
+ fill: 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)
+
+ &.selected.toggled
+ border: 1px solid #00000000
+ background-color: var(--md-sys-color-inverse-surface)
+ fill: 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/icon.css b/src/styles/icon.css
new file mode 100644
index 0000000..6955aa9
--- /dev/null
+++ b/src/styles/icon.css
@@ -0,0 +1,69 @@
+svg.m3.m3-svg-icon > text {
+ alignment-baseline: central;
+ text-anchor: middle;
+}
+svg.m3.m3-svg-icon > text.m3-size-12px {
+ width: 12px;
+ aspect-ratio: 1;
+ line-height: 12px;
+ font-size: 12px;
+}
+svg.m3.m3-svg-icon > text.m3-size-16px {
+ width: 16px;
+ aspect-ratio: 1;
+ line-height: 16px;
+ font-size: 16px;
+}
+svg.m3.m3-svg-icon > text.m3-size-20px {
+ width: 20px;
+ aspect-ratio: 1;
+ line-height: 20px;
+ font-size: 20px;
+}
+svg.m3.m3-svg-icon > text.m3-size-24px {
+ width: 24px;
+ aspect-ratio: 1;
+ line-height: 24px;
+ font-size: 24px;
+}
+svg.m3.m3-svg-icon > text.m3-size-28px {
+ width: 28px;
+ aspect-ratio: 1;
+ line-height: 28px;
+ font-size: 28px;
+}
+svg.m3.m3-svg-icon > text.m3-size-32px {
+ width: 32px;
+ aspect-ratio: 1;
+ line-height: 32px;
+ font-size: 32px;
+}
+svg.m3.m3-svg-icon > text.m3-size-36px {
+ width: 36px;
+ aspect-ratio: 1;
+ line-height: 36px;
+ font-size: 36px;
+}
+svg.m3.m3-svg-icon > text.m3-size-40px {
+ width: 40px;
+ aspect-ratio: 1;
+ line-height: 40px;
+ font-size: 40px;
+}
+svg.m3.m3-svg-icon > text.m3-size-48px {
+ width: 48px;
+ aspect-ratio: 1;
+ line-height: 48px;
+ font-size: 48px;
+}
+svg.m3.m3-svg-icon > text.m3-Outlined {
+ font-family: Material-Symbols-Outlined-Regular;
+}
+svg.m3.m3-svg-icon > text.m3-Rounded {
+ font-family: Material-Symbols-Rounded-Regular;
+}
+svg.m3.m3-svg-icon > text.m3-Sharp {
+ font-family: Material-Symbols-Sharp-Regular;
+}
+
+/*# sourceMappingURL=icon.css.map */
diff --git a/src/styles/icon.css.map b/src/styles/icon.css.map
new file mode 100644
index 0000000..5bb349e
--- /dev/null
+++ b/src/styles/icon.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["icon.sass"],"names":[],"mappings":"AAII;EACI;EACA;;AAGA;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAQJ;EACI,OATA;EAUA;EACA,aAXA;EAYA,WAZA;;AAeJ;EACI;;AADJ;EACI;;AADJ;EACI","file":"icon.css"}
\ No newline at end of file
diff --git a/src/styles/icon.sass b/src/styles/icon.sass
new file mode 100644
index 0000000..8e139cd
--- /dev/null
+++ b/src/styles/icon.sass
@@ -0,0 +1,19 @@
+svg.m3.m3-svg-icon
+ $sizes: [12px, 16px, 20px, 24px, 28px, 32px, 36px, 40px, 48px]
+ $types: ["Outlined", "Rounded", "Sharp"]
+
+ & > text
+ alignment-baseline: central
+ text-anchor: middle
+
+ @each $size in $sizes
+ & > text.m3-size-#{$size}
+ width: $size
+ aspect-ratio: 1
+ line-height: $size
+ font-size: $size
+
+ @each $type in $types
+ & > text.m3-#{$type}
+ font-family: Material-Symbols-#{$type}-Regular
+
diff --git a/src/styles/mixins/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc b/src/styles/mixins/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc
new file mode 100644
index 0000000..fe464b5
Binary files /dev/null and b/src/styles/mixins/.sass-cache/8b8ae4cfe093f9b8cd4cfabc532cf27ca06131f7/m3-mixins.sassc differ
diff --git a/src/styles/mixins/m3-mixins.css b/src/styles/mixins/m3-mixins.css
new file mode 100644
index 0000000..a31b927
--- /dev/null
+++ b/src/styles/mixins/m3-mixins.css
@@ -0,0 +1 @@
+/*# 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..c5ff5b2
--- /dev/null
+++ b/src/styles/mixins/m3-mixins.sass
@@ -0,0 +1,75 @@
+@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: 2.5rem
+ 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)
+ &:not(.without-elevation)
+ @include elevation-3(false)
+ background-color: var($bg-color)
+ color: var($color)
+ & > svg.m3-svg-icon
+ fill: 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..038157b
--- /dev/null
+++ b/src/styles/radio.css
@@ -0,0 +1,115 @@
+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: 2.5rem;
+ 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..0a37527
--- /dev/null
+++ b/src/styles/ripple.css
@@ -0,0 +1,40 @@
+.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..acb5bb1
--- /dev/null
+++ b/src/styles/swtich.css
@@ -0,0 +1,225 @@
+div.m3.m3-switch-exp {
+ margin: 4px;
+ box-sizing: content-box;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 52px;
+ height: 32px;
+}
+div.m3.m3-switch-exp > svg {
+ overflow: visible;
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ width: 52px;
+ height: 32px;
+}
+div.m3.m3-switch-exp > svg > g {
+ transform: translate(11.5%, 81%);
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+}
+div.m3.m3-switch-exp > svg > g > text {
+ font-family: Material-Symbols-Outlined-Regular;
+ font-size: 20px;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler-state-layer,
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler {
+ transition: 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ cy: 50%;
+ cx: 16px;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler-state-layer {
+ r: 20px;
+ fill-opacity: 0;
+}
+div.m3.m3-switch-exp > svg > circle.m3.m3-switch-handler {
+ r: 8px;
+}
+div.m3.m3-switch-exp > svg > rect.m3.m3-switch-track {
+ transition: fill 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ stroke-width: 2px;
+ border-radius: 16px;
+ rx: 15px;
+ width: 50px;
+ height: 30px;
+}
+div.m3.m3-switch-exp > input.m3 {
+ cursor: pointer;
+ appearance: none;
+ opacity: 0 !important;
+ margin: 0;
+ width: 52px;
+ height: 32px;
+ position: absolute;
+}
+div.m3.m3-switch-exp > input.m3:disabled {
+ cursor: not-allowed;
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked, :disabled)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-outline);
+}
+div.m3.m3-switch-exp > input.m3:checked:not(:disabled) + svg > g {
+ transform: translate(50%, 81%);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:not(:disabled)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-primary);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:disabled)
+ + svg
+ > g
+ > text.m3.m3-icon-unchecked {
+ fill: var(--md-sys-color-on-primary);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:disabled)
+ + svg
+ > g
+ > text.m3.m3-icon-checked {
+ fill: var(--md-sys-color-on-primary-container);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:disabled
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-surface);
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > circle.m3.m3-switch-handler,
+div.m3.m3-switch-exp
+ > input.m3
+ + svg:has(text.m3.m3-icon-unchecked)
+ > circle.m3.m3-switch-handler {
+ r: 12px;
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > g > text.m3.m3-icon-unchecked {
+ opacity: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:checked
+ + svg
+ > circle.m3:is(.m3-switch-handler, .m3-switch-handler-state-layer) {
+ cx: calc(100% - 16px);
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked)
+ + svg
+ > g
+ > text.m3.m3-icon-checked {
+ opacity: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(
+ div.m3.m3-switch-exp > input.m3:checked,
+ div.m3.m3-switch-exp > input.m3
+ ):not(:disabled):active
+ + svg
+ > circle.m3.m3-switch-handler {
+ r: 14px;
+}
+div.m3.m3-switch-exp
+ > input.m3:not(:checked):disabled
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 38%;
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-primary-container);
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-primary);
+ fill-opacity: 8%;
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler {
+ fill: var(--md-sys-color-on-surface-variant);
+}
+div.m3.m3-switch-exp
+ > input.m3:hover:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 8%;
+}
+div.m3.m3-switch-exp
+ > input.m3:active:not(:disabled):checked
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-primary);
+ fill-opacity: 12%;
+}
+div.m3.m3-switch-exp
+ > input.m3:active:not(:disabled):not(:checked)
+ + svg
+ > circle.m3.m3-switch-handler-state-layer {
+ fill: var(--md-sys-color-on-surface);
+ fill-opacity: 12%;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(:checked, :checked:disabled)
+ + svg
+ > rect.m3.m3-switch-track {
+ rx: 16px;
+ width: 52px;
+ height: 32px;
+ stroke-width: 0;
+}
+div.m3.m3-switch-exp
+ > input.m3:is(
+ div.m3.m3-switch-exp > input.m3:not(:checked),
+ div.m3.m3-switch-exp > input.m3:not(:checked):disabled
+ )
+ + svg
+ > rect.m3.m3-switch-track {
+ x: 1px;
+ y: 1px;
+}
+div.m3.m3-switch-exp > input.m3:not(:checked) + svg > rect.m3.m3-switch-track {
+ stroke: var(--md-sys-color-outline);
+ fill: var(--md-sys-color-surface-container-highest);
+}
+div.m3.m3-switch-exp > input.m3:checked + svg > rect.m3.m3-switch-track {
+ stroke: var(--md-sys-color-primary);
+ fill: var(--md-sys-color-primary);
+}
+div.m3.m3-switch-exp > input.m3:disabled + svg > g > text.m3 {
+ fill: color-mix(
+ in srgb,
+ var(--md-sys-color-surface-container-highest) 38%,
+ transparent
+ );
+}
+div.m3.m3-switch-exp > input.m3:disabled + svg > rect.m3.m3-switch-track {
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+ fill: color-mix(
+ in srgb,
+ var(--md-sys-color-surface-variant) 12%,
+ transparent
+ );
+}
+div.m3.m3-switch-exp > input.m3:checked:disabled + svg > g > text.m3 {
+ transform: translateX(38.5%);
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent);
+}
+div.m3.m3-switch-exp
+ > input.m3:checked:disabled
+ + svg
+ > rect.m3.m3-switch-track {
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent);
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent);
+}
+
+/*# sourceMappingURL=swtich.css.map */
diff --git a/src/styles/swtich.css.map b/src/styles/swtich.css.map
new file mode 100644
index 0000000..fe3f8fd
--- /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;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AACA;EACI;EACA;;AAER;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGA;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAEJ;EACI;;AAER;EACI;;AAEJ;EAEI;;AAGA;EACI;;AAEJ;EACI;;AAGJ;EACI;;AAER;EACI;;AAEJ;EACI;EACA;;AAII;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;;AAEJ;EACI;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAER;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;AAGA;EACI;;AAEJ;EACI;EACA;;AAGJ;EACI;EACA;;AAEJ;EACI;EACA","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..187750d
--- /dev/null
+++ b/src/styles/swtich.sass
@@ -0,0 +1,157 @@
+div.m3.m3-switch-exp
+ margin: 4px
+ box-sizing: content-box
+ display: flex
+ align-items: center
+ justify-content: center
+ width: 52px
+ height: 32px
+
+ & > svg
+ overflow: visible
+ transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ width: 52px
+ height: 32px
+
+ & > g
+ transform: translate(11.5%, 81%)
+ transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ & > text
+ font-family: Material-Symbols-Outlined-Regular
+ font-size: 20px
+
+ & > circle.m3.m3-switch-handler-state-layer, & > circle.m3.m3-switch-handler
+ transition: .2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ cy: 50%
+ cx: 16px
+
+ & > circle.m3.m3-switch-handler-state-layer
+ r: 20px
+ fill-opacity: 0
+
+ & > circle.m3.m3-switch-handler
+ r: 8px
+
+ & > rect.m3.m3-switch-track
+ transition: fill .2s cubic-bezier(0.175, 0.885, 0.32, 1.275)
+ stroke-width: 2px
+ border-radius: 16px
+ rx: 15px
+ width: 50px
+ height: 30px
+
+ & > input.m3
+ cursor: pointer
+ appearance: none
+ opacity: 0 !important
+ margin: 0
+ width: 52px
+ height: 32px
+ position: absolute
+
+ &:disabled
+ cursor: not-allowed
+
+ &:not(:checked, :disabled) + svg
+ & > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-outline)
+
+ &:checked:not(:disabled) + svg
+ & > g
+ transform: translate(50%, 81%)
+
+ & > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-on-primary)
+
+ &:not(:disabled) + svg
+ & > g > text.m3.m3-icon-unchecked
+ fill: var(--md-sys-color-on-primary)
+
+ & > g > text.m3.m3-icon-checked
+ fill: var(--md-sys-color-on-primary-container)
+
+ &:checked:disabled + svg > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-surface)
+
+ &:checked + svg > circle.m3.m3-switch-handler,
+ & + svg:has(text.m3.m3-icon-unchecked) > circle.m3.m3-switch-handler
+ r: 12px
+
+ &:checked + svg
+ & > g > text.m3.m3-icon-unchecked
+ opacity: 0
+
+ & > circle.m3:is(.m3-switch-handler, .m3-switch-handler-state-layer)
+ cx: calc(100% - 16px)
+
+ &:not(:checked) + svg
+ & > g > text.m3.m3-icon-checked
+ opacity: 0
+
+ &:is(&:checked, &):not(:disabled):active + svg > circle.m3.m3-switch-handler
+ r: 14px
+
+ &:not(:checked):disabled + svg > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-on-surface)
+ fill-opacity: 38%
+
+ &:hover:not(:disabled)
+ &:checked + svg
+ & > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-primary-container)
+
+ & > circle.m3.m3-switch-handler-state-layer
+ fill: var(--md-sys-color-primary)
+ fill-opacity: 8%
+
+ &:not(:checked) + svg
+ & > circle.m3.m3-switch-handler
+ fill: var(--md-sys-color-on-surface-variant)
+
+ & > circle.m3.m3-switch-handler-state-layer
+ fill: var(--md-sys-color-on-surface)
+ fill-opacity: 8%
+
+ &:active:not(:disabled)
+ &:checked + svg > circle.m3.m3-switch-handler-state-layer
+ fill: var(--md-sys-color-primary)
+ fill-opacity: 12%
+
+ &:not(:checked) + svg > circle.m3.m3-switch-handler-state-layer
+ fill: var(--md-sys-color-on-surface)
+ fill-opacity: 12%
+
+ &:is(:checked, :checked:disabled) + svg > rect.m3.m3-switch-track
+ rx: 16px
+ width: 52px
+ height: 32px
+ stroke-width: 0
+
+ &:is(&:not(:checked), &:not(:checked):disabled) + svg > rect.m3.m3-switch-track
+ x: 1px
+ y: 1px
+
+ &:not(:checked) + svg > rect.m3.m3-switch-track
+ stroke: var(--md-sys-color-outline)
+ fill: var(--md-sys-color-surface-container-highest)
+
+ &:checked + svg > rect.m3.m3-switch-track
+ stroke: var(--md-sys-color-primary)
+ fill: var(--md-sys-color-primary)
+
+ &:disabled + svg
+ & > g > text.m3
+ fill: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 38%, transparent)
+
+ & > rect.m3.m3-switch-track
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
+ fill: color-mix(in srgb, var(--md-sys-color-surface-variant) 12%, transparent)
+
+ &:checked:disabled + svg
+ & > g > text.m3
+ transform: translateX(38.5%)
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 38%, transparent)
+
+ & > rect.m3.m3-switch-track
+ stroke: color-mix(in srgb, var(--md-sys-color-on-surface) 0%, transparent)
+ fill: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)
\ 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..35ead7b
--- /dev/null
+++ b/src/styles/text-field.css
@@ -0,0 +1,251 @@
+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:is(.filled, .outlined) > input::placeholder,
+div.m3.m3-text-field > input,
+div.m3.m3-text-field > label {
+ line-height: var(--md-sys-typescale-body-large-line-height);
+ font-size: var(--md-sys-typescale-body-large-font-size);
+}
+div.m3.m3-text-field + span.m3-text-field-supporting-text {
+ display: flex;
+ line-height: var(--md-sys-typescale-body-small-line-height);
+ font-size: var(--md-sys-typescale-body-small-font-size);
+ color: var(--md-sys-color-on-surface-variant);
+ margin: 4px 16px 2px 16px;
+}
+div.m3.m3-text-field > label {
+ padding-inline: 4px;
+ pointer-events: none;
+ transform: translate(16px, 0);
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ position: absolute;
+}
+div.m3.m3-text-field > input {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ 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 > input,
+div.m3.m3-text-field > label {
+ color: var(--md-sys-color-on-surface);
+}
+div.m3.m3-text-field:is(.filled, .outlined) > input::placeholder {
+ color: var(--md-sys-color-on-surface-variant);
+}
+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:is(.filled, .outlined):has(input:disabled) > *,
+div.m3.m3-text-field:is(.filled, .outlined):has(input:disabled)
+ + span.m3-text-field-supporting-text {
+ opacity: 38%;
+}
+div.m3.m3-text-field.filled {
+ contain: content;
+ border-radius: 4px 4px 0 0;
+}
+div.m3.m3-text-field.filled > input {
+ display: inline-flex;
+ align-items: center;
+ 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 > label.raised {
+ 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);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid:focus-visible {
+ box-shadow: inset 0 -3px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled > input:required:user-invalid {
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-error);
+}
+div.m3.m3-text-field.filled:has(input:required:user-invalid)
+ > *:not(input):nth-last-child(-n + 3),
+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: 3px;
+ box-shadow: inset 0 -3px 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: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 > fieldset {
+ margin: 0;
+ position: absolute;
+ border-radius: 4px;
+ pointer-events: none;
+ padding-inline: 12px;
+ border: 1px solid var(--md-sys-color-outline);
+ inset: -7.5px 0px 0px 0px;
+ transition: background-color 0.2s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined > fieldset > legend > span {
+ width: 100%;
+}
+div.m3.m3-text-field.outlined > fieldset > legend {
+ opacity: 0;
+ width: 0;
+ padding: 0;
+ pointer-events: none;
+ border: 0 solid transparent;
+ transition: 0.05s cubic-bezier(0.2, 0, 0, 1);
+}
+div.m3.m3-text-field.outlined > fieldset > legend.raised {
+ border-inline-width: 6px;
+ border-style: solid;
+ border-color: transparent;
+ width: auto;
+ visibility: visible;
+}
+div.m3.m3-text-field.outlined > input {
+ box-sizing: border-box;
+ border-radius: 4px;
+}
+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:has(input:focus-visible) > fieldset {
+ border: 3px solid var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined:not(
+ div.m3.m3-text-field.outlined:has(label.raised)
+ ):has(input:focus-visible)
+ > fieldset
+ > legend {
+ border-top-width: 0;
+ border-bottom-width: 0;
+ border-inline-width: 5.5px;
+ border-style: solid;
+ border-color: transparent;
+}
+div.m3.m3-text-field.outlined:not(
+ div.m3.m3-text-field.outlined:has(input:focus-visible)
+ ):has(label.raised)
+ > fieldset
+ > legend {
+ border-top-width: 0;
+ border-bottom-width: 0;
+ border-inline-width: 7.5px;
+ border-style: solid;
+ border-color: transparent;
+}
+div.m3.m3-text-field.outlined > input:focus-visible + label {
+ color: var(--md-sys-color-primary);
+}
+div.m3.m3-text-field.outlined > label.raised,
+div.m3.m3-text-field.outlined > fieldset > * {
+ 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 > label.raised {
+ transform: translate(16px, -27px) !important;
+}
+div.m3.m3-text-field.outlined > input:required:user-invalid {
+ caret-color: var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(input:required:user-invalid)
+ > *:not(input):nth-last-child(-n + 3),
+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:has(input:required:user-invalid) > fieldset {
+ border: 3px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:has(
+ input:required:user-invalid:not(:focus-visible)
+ )
+ > fieldset {
+ border: 1px solid var(--md-sys-color-error);
+}
+div.m3.m3-text-field.outlined:hover:not(
+ div.m3.m3-text-field.outlined:hover:has(
+ input:disabled,
+ input:focus-visible,
+ label.raised,
+ input:required:user-invalid
+ )
+ )
+ > fieldset {
+ transition: 0.2s cubic-bezier(0.2, 0, 0, 1);
+ border-color: var(--md-sys-color-on-surface);
+}
+
+/*# 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..4975343
--- /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;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAGA;EACI;;AAER;EACI;EACA;;AAEA;EAgBI;EACA;EACA;EACA;EACA;EACA;;AApBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AASR;EACI;EACA;EACA;;AAEJ;EACI;;AAEA;EACI;;AACJ;EACI;;AAER;EAEI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAGA;EACI;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAER;EAgBI;EACA;;AAhBA;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAKR;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EAEI;;AAEJ;EACI;;AAEJ;EACI;;AAGA;EACI;EACA","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..41d438b
--- /dev/null
+++ b/src/styles/text-field.sass
@@ -0,0 +1,216 @@
+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
+
+ &:is(.filled, .outlined) > input::placeholder, & > input, & > label
+ line-height: var(--md-sys-typescale-body-large-line-height)
+ font-size: var(--md-sys-typescale-body-large-font-size)
+
+ & + span.m3-text-field-supporting-text
+ display: flex
+ line-height: var(--md-sys-typescale-body-small-line-height)
+ font-size: var(--md-sys-typescale-body-small-font-size)
+ color: var(--md-sys-color-on-surface-variant)
+ margin: 4px 16px 2px 16px
+
+ & > label
+ padding-inline: 4px
+ pointer-events: none
+ transform: translate(16px, 0)
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ position: absolute
+
+ & > input
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ 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
+
+ & > input, & > label
+ color: var(--md-sys-color-on-surface)
+
+ &:is(.filled, .outlined) > input::placeholder
+ color: var(--md-sys-color-on-surface-variant)
+
+ &:is(.filled, .outlined) > input:focus-visible
+ outline: none
+ caret-color: var(--md-sys-color-primary)
+
+ &:is(.filled, .outlined):has(input:disabled)
+ & > *, & + span.m3-text-field-supporting-text
+ opacity: 38%
+
+ &.filled
+ contain: content
+ border-radius: 4px 4px 0 0
+
+ & > 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
+
+ display: inline-flex
+ align-items: center
+ 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)
+
+ & > label.raised
+ 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)
+
+ &:focus-visible
+ box-shadow: inset 0 -3px 0 var(--md-sys-color-error)
+ &
+ box-shadow: inset 0 -1px 0 var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid) > *:not(input):nth-last-child(-n + 3),
+ &:has(input:required:user-invalid) + span.m3-text-field-supporting-text
+ color: var(--md-sys-color-error)
+
+ & > input:focus-visible
+ outline-offset: 3px
+ box-shadow: inset 0 -3px 0 var(--md-sys-color-primary)
+
+ & > input:focus-visible + label
+ color: var(--md-sys-color-primary)
+
+ &: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
+ & > fieldset
+ margin: 0
+ position: absolute
+ border-radius: 4px
+ pointer-events: none
+ padding-inline: 12px
+ border: 1px solid var(--md-sys-color-outline)
+ inset: -7.5px 0px 0px 0px
+ transition: background-color .2s cubic-bezier(0.2, 0, 0, 1)
+
+ & > legend > span
+ width: 100%
+
+ & > legend
+ opacity: 0
+ width: 0
+ padding: 0
+ pointer-events: none
+ border: 0 solid transparent
+ transition: .05s cubic-bezier(0.2, 0, 0, 1)
+
+ & > legend.raised
+ border-inline-width: 6px
+ border-style: solid
+ border-color: transparent
+ width: auto
+ visibility: visible
+
+ & > 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
+
+ &:has(input:focus-visible) > fieldset
+ border: 3px solid var(--md-sys-color-primary)
+
+ &:not(&:has(label.raised)):has(input:focus-visible) > fieldset > legend
+ border-top-width: 0
+ border-bottom-width: 0
+ border-inline-width: 5.5px
+ border-style: solid
+ border-color: transparent
+
+ &:not(&:has(input:focus-visible)):has(label.raised) > fieldset > legend
+ border-top-width: 0
+ border-bottom-width: 0
+ border-inline-width: 7.5px
+ border-style: solid
+ border-color: transparent
+
+ & > input:focus-visible + label
+ color: var(--md-sys-color-primary)
+
+ & > label.raised, & > fieldset > *
+ line-height: var(--md-sys-typescale-body-small-line-height)
+ font-size: var(--md-sys-typescale-body-small-font-size)
+
+ & > label.raised
+ transform: translate(16px, -27px) !important
+
+ & > input:required:user-invalid
+ caret-color: var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid) > *:not(input):nth-last-child(-n + 3),
+ &:has(input:required:user-invalid) + span.m3-text-field-supporting-text
+ color: var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid) > fieldset
+ border: 3px solid var(--md-sys-color-error)
+
+ &:has(input:required:user-invalid:not(:focus-visible)) > fieldset
+ border: 1px solid var(--md-sys-color-error)
+
+ &:hover
+ &:not(&:has(input:disabled, input:focus-visible, label.raised, input:required:user-invalid)) > fieldset
+ transition: .2s cubic-bezier(0.2, 0, 0, 1)
+ border-color: var(--md-sys-color-on-surface)
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..ceed734
--- /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);
+}
diff --git a/src/styles/themes/theme.light.css b/src/styles/themes/theme.light.css
new file mode 100644
index 0000000..cddac19
--- /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..6fe98f6
--- /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.5px;
+ /* 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.4px;
+ /* 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.1px;
+ /* 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.5px;
+ /* 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.5px;
+ /* 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.1px;
+}
diff --git a/src/styles/themes/typography.module.css b/src/styles/themes/typography.module.css
new file mode 100644
index 0000000..3de633f
--- /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
index b8d5978..7f2aeae 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,11 @@
{
"compilerOptions": {
"target": "es5",
- "lib": ["dom", "dom.iterable", "esnext"],
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
@@ -13,8 +17,20 @@
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
- "incremental": true
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ]
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
- "exclude": ["node_modules"]
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
}