diff --git a/backend/requirements.txt b/backend/requirements.txt index 25e846a..090495d 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,6 +1,7 @@ alembic==1.10.4 anyio==3.6.2 click==8.1.3 +Faker==18.9.0 fastapi==0.95.1 greenlet==2.0.2 h11==0.14.0 @@ -9,6 +10,8 @@ Mako==1.2.4 MarkupSafe==2.1.2 psycopg2-binary==2.9.6 pydantic==1.10.7 +python-dateutil==2.8.2 +six==1.16.0 sniffio==1.3.0 SQLAlchemy==2.0.13 starlette==0.26.1 diff --git a/backend/todo/crud/todos.py b/backend/todo/crud/todos.py index 85e2fe5..21debdb 100644 --- a/backend/todo/crud/todos.py +++ b/backend/todo/crud/todos.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import Session from todo.models import todos as todomodel from todo.models import users as usermodel from todo.schemas import todos as todoschema -from todo.exceptions import NotFoundException, InvalidFilterParameterException +from todo.utils.exceptions import NotFoundException, InvalidFilterParameterException def create_todo(db: Session, todo: todoschema.TodoItemCreate, user_id: int) -> todoschema.TodoItem: @@ -56,6 +56,16 @@ def read_todos_for_user(db: Session, user_id: int, skip: int = 0, limit: int = 1 return [todoschema.TodoItem.from_orm(db_todo) for db_todo in db_todos] +def read_todos_count_for_user(db: Session, user_id: int) -> int: + """Returns the total number of todo-items of the user with the specified user_id.""" + + db_user = db.query(usermodel.User).filter(usermodel.User.id == user_id).first() + if not db_user: + raise NotFoundException(f"User with id '{user_id}' not found.") + + return db.query(todomodel.TodoItem).filter(todomodel.TodoItem.user_id == user_id).count() + + def update_todo(db: Session, todo: todoschema.TodoItemUpdate, todo_id: int) -> todoschema.TodoItem: """Updates the todo-item with the provided id with all non-None fields from the input todo-item.""" diff --git a/backend/todo/crud/users.py b/backend/todo/crud/users.py index 77aac3f..e2e1ddd 100644 --- a/backend/todo/crud/users.py +++ b/backend/todo/crud/users.py @@ -6,7 +6,7 @@ from sqlalchemy.orm import Session from todo.models import users as usermodel from todo.schemas import users as userschema -from todo.exceptions import NotFoundException, InvalidFilterParameterException +from todo.utils.exceptions import NotFoundException, InvalidFilterParameterException def hash_password(password: str) -> str: @@ -70,6 +70,12 @@ def read_users(db: Session, skip: int = 0, limit: int = 100) -> list[userschema. return [userschema.User.from_orm(db_user) for db_user in db_users] +def read_users_count(db: Session) -> int: + """Returns the total number of users currently the database.""" + + return db.query(usermodel.User).count() + + def update_user(db: Session, user: userschema.UserUpdate, id: int) -> userschema.User: """Updates the user with the provided id with all non-None fields from the input user.""" diff --git a/backend/todo/exceptions.py b/backend/todo/exceptions.py deleted file mode 100644 index 40b521c..0000000 --- a/backend/todo/exceptions.py +++ /dev/null @@ -1,19 +0,0 @@ -"""This module is a collection of project-wide exceptions.""" - - -class NotFoundException(Exception): - """Raised when a resource was unexpectedly not found.""" - - pass - - -class DataIntegrityException(Exception): - """Raised to prevent a semantically invalid database operation.""" - - pass - - -class InvalidFilterParameterException(Exception): - """Raised when a query filter parameter is invalid.""" - - pass diff --git a/backend/todo/routes/todos.py b/backend/todo/routes/todos.py index 179a4fb..5f4be47 100644 --- a/backend/todo/routes/todos.py +++ b/backend/todo/routes/todos.py @@ -6,7 +6,8 @@ from sqlalchemy.orm import Session from todo.database.engine import get_db from todo.schemas import todos as todoschema from todo.crud import todos as todocrud -from todo.exceptions import NotFoundException, InvalidFilterParameterException +from todo.utils.exceptions import NotFoundException, InvalidFilterParameterException +from todo.utils.exceptions import create_exception_dict as fmt router = APIRouter( @@ -25,7 +26,7 @@ def create_todo(todo: todoschema.TodoItemCreate, user_id: int, db: Session = Dep try: return todocrud.create_todo(db=db, todo=todo, user_id=user_id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) @router.get("/{todo_id}", response_model=todoschema.TodoItem) @@ -33,7 +34,7 @@ def read_todo(todo_id: int, db: Session = Depends(get_db)): try: return todocrud.read_todo(db=db, todo_id=todo_id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) @router.get("/user/{user_id}", response_model=list[todoschema.TodoItem]) @@ -41,9 +42,17 @@ def read_todos(user_id: int, skip: int = 0, limit: int = 100, db: Session = Depe try: return todocrud.read_todos_for_user(db=db, user_id=user_id, skip=skip, limit=limit) except InvalidFilterParameterException as e: - raise HTTPException(400, str(e)) + raise HTTPException(400, fmt(str(e))) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) + + +@router.get("/user/{user_id}/total", response_model=dict[str, int]) +def read_todos_count(user_id: int, db: Session = Depends(get_db)): + try: + return {"total": todocrud.read_todos_count_for_user(db=db, user_id=user_id)} + except NotFoundException as e: + raise HTTPException(404, fmt(str(e))) @router.patch("/{todo_id}", response_model=todoschema.TodoItem) @@ -51,7 +60,7 @@ def update_todo(todo_id: int, todo: todoschema.TodoItemUpdate, db: Session = Dep try: return todocrud.update_todo(db=db, todo=todo, todo_id=todo_id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) @router.delete("/{todo_id}", response_model=todoschema.TodoItem) @@ -59,4 +68,4 @@ def delete_todo(todo_id: int, db: Session = Depends(get_db)): try: return todocrud.delete_todo(db=db, todo_id=todo_id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) diff --git a/backend/todo/routes/users.py b/backend/todo/routes/users.py index 21cfae9..9863aa6 100644 --- a/backend/todo/routes/users.py +++ b/backend/todo/routes/users.py @@ -6,7 +6,8 @@ from sqlalchemy.orm import Session from todo.database.engine import get_db from todo.schemas import users as userschema from todo.crud import users as usercrud -from todo.exceptions import NotFoundException +from todo.utils.exceptions import NotFoundException, InvalidFilterParameterException +from todo.utils.exceptions import create_exception_dict as fmt router = APIRouter( @@ -35,12 +36,20 @@ def read_user(id: int, db: Session = Depends(get_db)): try: return usercrud.read_user(db=db, id=id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) @router.get("/", response_model=list[userschema.User]) def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): - return usercrud.read_users(db=db, skip=skip, limit=limit) + try: + return usercrud.read_users(db=db, skip=skip, limit=limit) + except InvalidFilterParameterException as e: + raise HTTPException(400, fmt(str(e))) + + +@router.get("/total/", response_model=dict[str, int]) +def read_users_count(db: Session = Depends(get_db)): + return {"total": usercrud.read_users_count(db=db)} @router.patch("/{id}", response_model=userschema.User) @@ -48,7 +57,7 @@ def update_user(id: int, user: userschema.UserUpdate, db: Session = Depends(get_ try: return usercrud.update_user(db=db, user=user, id=id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) @router.delete("/{id}", response_model=userschema.User) @@ -56,4 +65,4 @@ def delete_user(id: int, db: Session = Depends(get_db)): try: return usercrud.delete_user(db=db, id=id) except NotFoundException as e: - raise HTTPException(404, str(e)) + raise HTTPException(404, fmt(str(e))) diff --git a/backend/todo/utils/__init__.py b/backend/todo/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/todo/utils/exceptions.py b/backend/todo/utils/exceptions.py new file mode 100644 index 0000000..0e794cd --- /dev/null +++ b/backend/todo/utils/exceptions.py @@ -0,0 +1,40 @@ +"""This module is a collection of project-wide exceptions.""" + + +class NotFoundException(Exception): + """Raised when a resource was unexpectedly not found.""" + + pass + + +class DataIntegrityException(Exception): + """Raised to prevent a semantically invalid database operation.""" + + pass + + +class InvalidFilterParameterException(Exception): + """Raised when a query filter parameter is invalid.""" + + pass + + +def create_exception_dict(message: str): + """Creates a list for returning API error messages to the client. + + The list has the following format: + [ + { + "msg": "Something went wrong!.", + }, + ] + + This is useful to return consistent API error messages. + """ + + if not isinstance(message, str): + raise TypeError(f"Expected a string but got '{type(message)}'.") + if not len(message): + message = "An unknown error occurred." + + return [{"msg": message}] diff --git a/backend/todo/utils/fakery.py b/backend/todo/utils/fakery.py new file mode 100644 index 0000000..8ffd5dc --- /dev/null +++ b/backend/todo/utils/fakery.py @@ -0,0 +1,83 @@ +"""This module contains utilities for creating fake database entries.""" + +from random import randint + +from faker import Faker +from sqlalchemy.orm import Session + +from todo.schemas.users import UserCreate, User +from todo.crud.users import create_user +from todo.schemas.todos import TodoItemCreate, TodoItem +from todo.crud.todos import create_todo +from todo.database.engine import get_db + + +def _get_faker() -> Faker: + """Creates and returns a Faker object.""" + + return Faker() + + +def get_fake_user_details() -> UserCreate: + """Returns a set of fake details for creating a new user.""" + + fk = _get_faker() + + password = fk.password(length=randint(6, 16)) + email = fk.profile(fields=['mail'])['mail'] + first_name = fk.first_name() + last_name = fk.last_name() + + return UserCreate( + email=email, + first_name=first_name, + last_name=last_name, + password=password, + password_confirmation=password, + ) + + +def get_fake_todo_details() -> TodoItemCreate: + """Returns a set of fake details for creating a new todo-item.""" + + fk = _get_faker() + + title = fk.sentence(nb_words=randint(4, 6)) + + # Generate some sentences and concatenate them with a randomized delimiter + description_sentences = [fk.sentence(nb_words=randint(4, 6)) for i in range(randint(1, 5))] + if randint(0, 1): + delimiter = '\n- ' + elif randint(0, 1): + delimiter = '\n' + else: + delimiter = ' ' + description = delimiter.join(description_sentences) + + return TodoItemCreate( + title=title, + description=description, + ) + + +def create_fake_user(db: Session = next(get_db())) -> User: + """Creates a fake user and saves them to the database.""" + + return create_user(db=db, user=get_fake_user_details()) + + +def create_fake_todo(user_id: int, db: Session = next(get_db())) -> TodoItem: + """Creates a fake todo-item for the specified user and saves it to the database.""" + + return create_todo(db=db, todo=get_fake_todo_details(), user_id=user_id) + + +def populate_database(num_users: int = 100, max_todos_per_user: int = 100) -> None: + """Creates the specified number of users, each with between 0 and max_todos_per_user todo-items.""" + + db = next(get_db()) + + for i in range(num_users): + user = create_fake_user(db) + for j in range(randint(0, max_todos_per_user)): + create_fake_todo(user.id, db) diff --git a/development.docker-compose.yml b/development.docker-compose.yml index 839d5be..f4fd1b3 100644 --- a/development.docker-compose.yml +++ b/development.docker-compose.yml @@ -88,6 +88,6 @@ services: ports: - "8001:8081" environment: - DATABASE_URL: "postgres://todo:todo@todo-db:5432/todo?sslmode=disable" + PGWEB_DATABASE_URL: "postgres://todo:todo@todo-db:5432/todo?sslmode=disable" ... diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b10125c..686399f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,13 +11,14 @@ "dotenv": "^16.0.3" }, "devDependencies": { - "@sveltejs/adapter-auto": "^2.0.0", "@sveltejs/adapter-node": "^1.2.4", "@sveltejs/kit": "^1.5.0", "autoprefixer": "^10.4.14", "postcss": "^8.4.23", + "sass": "^1.62.1", "svelte": "^3.54.0", "svelte-check": "^3.0.1", + "svelte-material-ui": "^7.0.0-beta.8", "tailwindcss": "^3.3.2", "tslib": "^2.4.1", "typescript": "^5.0.0", @@ -442,6 +443,780 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, + "node_modules/@material/animation": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0.tgz", + "integrity": "sha512-VlYSfUaIj/BBVtRZI8Gv0VvzikFf+XgK0Zdgsok5c1v5DDnNz5tpB8mnGrveWz0rHbp1X4+CWLKrTwNmjrw3Xw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/banner": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-14.0.0.tgz", + "integrity": "sha512-z0WPBVQxbQVcV1km4hFD40xBEeVWYtCzl2jrkHd8xXexP/fMvXkFU1UfwSWvY3jlWx//j4/Xd7VpnRdEXS4RLQ==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/base": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0.tgz", + "integrity": "sha512-Ou7vS7n1H4Y10MUZyYAbt6H0t67c6urxoCgeVT7M38aQlaNUwFMODp7KT/myjYz2YULfhu3PtfSV3Sltgac9mA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-14.0.0.tgz", + "integrity": "sha512-dqqHaJq0peyXBZupFzCjmvScrfljyVU66ZCS3oldsaaj5iz8sn33I/45Z4zPzdR5F5z8ExToHkRcXhakj1UEAA==", + "dev": true, + "dependencies": { + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/card": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-14.0.0.tgz", + "integrity": "sha512-SnpYWUrCb92meGYLXV7qa/k40gnHR6rPki6A1wz0OAyG2twY48f0HLscAqxBLvbbm1LuRaqjz0RLKGH3VzxZHw==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/checkbox": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-14.0.0.tgz", + "integrity": "sha512-OoqwysCqvj1d0cRmEwVWPvg5OqYAiCFpE6Wng6me/Cahfe4xgRxSPa37WWqsClw20W7PG/5RrYRCBtc6bUUUZA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/chips": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-14.0.0.tgz", + "integrity": "sha512-SfZX/Ovdq4NgjdtIr/N1O3fEHisZC+t8G8629OV/NrniSS6rKOa+q1mImzna8R4pfuYO+7nT5nZewQpL/JSYaQ==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/checkbox": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/circular-progress": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-14.0.0.tgz", + "integrity": "sha512-7EdkP6ty54g6qs6zzlsw29vWlUyrcSWr9b4pGGx4D/iNJww+eyxXZ07iWoNOr4uLgguauWEft2axpQiFCwFD0g==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/progress-indicator": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/data-table": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-14.0.0.tgz", + "integrity": "sha512-tnmLawGaMtnp29KH8pX99bqeKmFODE+MtRUTt6TauupkEfQE/wd0Um4JQDFiI0kCch7uF3r/NmQKyKuan10hXw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/checkbox": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/linear-progress": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/select": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-14.0.0.tgz", + "integrity": "sha512-NlxXBV5XjNsKd8UXF4K/+fOXLxoFNecKbsaQO6O2u+iG8QBfFreKRmkhEBb2hPPwC3w8nrODwXX0lHV+toICQw==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-14.0.0.tgz", + "integrity": "sha512-E07NEE4jP8jHaw/y2Il2R1a3f4wDFh2sgfCBtRO/Xh0xxJUMuQ7YXo/F3SAA8jfMbbkUv/PHdJUM3I3HmI9mAA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dom": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0.tgz", + "integrity": "sha512-8t88XyacclTj8qsIw9q0vEj4PI2KVncLoIsIMzwuMx49P2FZg6TsLjor262MI3Qs00UWAifuLMrhnOnfyrbe7Q==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/drawer": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-14.0.0.tgz", + "integrity": "sha512-VPrxMIhbkXVbfH7aMFV+Um0tjOVrU/Y65X2hWsVdmjASadE8C5UYjIE3vjL1DM1M+zIa3qZZRUWqz0j1zqbr3w==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-14.0.0.tgz", + "integrity": "sha512-Di3tkxTpXwvf1GJUmaC8rd+zVh5dB2SWMBGagL4+kT8UmjSISif/OPRGuGnXs3QhF6nmEjkdC0ijdZLcYQkepw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/fab": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-14.0.0.tgz", + "integrity": "sha512-s4rrw2TLU8ITKopHSTEHuJEFsGEZsb+ijwW16pQt0h9GArxPGaALT+CCJIPjf75D3wPEEMW0vnLj7oMoII2VFg==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/feature-targeting": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0.tgz", + "integrity": "sha512-a5WGgHEq5lJeeNL5yevtgoZjBjXWy6+klfVWQEh8oyix/rMJygGgO7gEc52uv8fB8uAIoYEB3iBMOv8jRq8FeA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-14.0.0.tgz", + "integrity": "sha512-Aq8BboP1sbNnOtsV72AfaYirHyOrQ/GKFoLrZ1Jt+ZGIAuXPETcj9z7nQDznst0ZeKcz420PxNn9tsybTbeL/Q==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/focus-ring": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-14.0.0.tgz", + "integrity": "sha512-fqqka6iSfQGJG3Le48RxPCtnOiaLGPDPikhktGbxlyW9srBVMgeCiONfHM7IT/1eu80O0Y67Lh/4ohu5+C+VAQ==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0" + } + }, + "node_modules/@material/form-field": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-14.0.0.tgz", + "integrity": "sha512-k1GNBj6Sp8A7Xsn5lTMp5DkUkg60HX7YkQIRyFz1qCDCKJRWh/ou7Z45GMMgKmG3aF6LfjIavc7SjyCl8e5yVg==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-14.0.0.tgz", + "integrity": "sha512-wHMqzm7Q/UwbWLoWv32Li1r2iVYxadIrwTNxT0+p+7NdfI3lEwMN3NoB0CvoJnHTljjXDzce0KJ3nZloa0P0gA==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/image-list": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-14.0.0.tgz", + "integrity": "sha512-vx/7WCMbiZoy/R+DmO7r0N3jWzFjlvvDMeBpXt0btglWP3EYbVnDqzseW4u1TtY+IBbJldW/DsiCN1oLnlEVxw==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/layout-grid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-14.0.0.tgz", + "integrity": "sha512-tAce0PR/c85VI2gf1HUdM0Y15ZWpfZWAFIwaCRW1+jnOLWnG1/aOJYLlzqtVEv2m0TS1R1WRRGN3Or+CWvpDRA==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-14.0.0.tgz", + "integrity": "sha512-Rx9eSnfp3FcsNz4O+fobNNq2PSm5tYHC3hRpY2ZK3ghTvgp3Y40/soaGEi/Vdg0F7jJXRaBSNOe6p5t9CVfy8Q==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/linear-progress": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-14.0.0.tgz", + "integrity": "sha512-MGIAWMHMW6TSV/TNWyl5N/escpDHk3Rq6hultFif+D9adqbOXrtfZZIFPLj1FpMm1Ucnj6zgOmJHgCDsxRVNIA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/progress-indicator": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-14.0.0.tgz", + "integrity": "sha512-AFaBGV9vQyfnG8BT2R3UGVdF5w2SigQqBH+qbOSxQhk4BgVvhDfJUIKT415poLNMdnaDtcuYz+ZWvVNoRDaL7w==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-14.0.0.tgz", + "integrity": "sha512-oU6GjbYnkG6a5nX9HUSege5OQByf6yUteEij8fpf0ci3f5BWf/gr39dnQ+rfl+q119cW0WIEmVK2YJ/BFxMzEQ==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-14.0.0.tgz", + "integrity": "sha512-wRz3UCrhJ4kRrijJEbvIPRa0mqA5qkQmKXjBH4Xu1ApedZruP+OM3Qb2Bj4XugCA3eCXpiohg+gdyTAX3dVQyw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/notched-outline": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-14.0.0.tgz", + "integrity": "sha512-6S58DlWmhCDr4RQF2RuwqANxlmLdHtWy2mF4JQLD9WOiCg4qY9eCQnMXu3Tbhr7f/nOZ0vzc7AtA3vfJoZmCSw==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/progress-indicator": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-14.0.0.tgz", + "integrity": "sha512-09JRTuIySxs670Tcy4jVlqCUbyrO+Ad6z3nHnAi8pYl74duco4n/9jTROV0mlFdr9NIFifnd08lKbiFLDmfJGQ==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-14.0.0.tgz", + "integrity": "sha512-VwPOi5fAoZXL3RhQJ6iDWTR34L6JXlwd5VXli8ZhzNHnUzcmpMODrRhGVew4Z5uuNj6/n2Jbn1zcS9XmmqjssA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/ripple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0.tgz", + "integrity": "sha512-9XoGBFd5JhFgELgW7pqtiLy+CnCIcV2s9cQ2BWbOQeA8faX9UZIDUx/g76nHLZ7UzKFtsULJxZTwORmsEt2zvw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/rtl": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0.tgz", + "integrity": "sha512-xl6OZYyRjuiW2hmbjV2omMV8sQtfmKAjeWnD1RMiAPLCTyOW9Lh/PYYnXjxUrNa0cRwIIbOn5J7OYXokja8puA==", + "dev": true, + "dependencies": { + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/segmented-button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-14.0.0.tgz", + "integrity": "sha512-6es7PPNX3T3h7bOLyb8L38hMoTXqBs5XX8XCKycKZG2Dm4stac/yYMKKO/q3MOn36t37s+JAVTjyRB8HnJu5Gg==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/select": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-14.0.0.tgz", + "integrity": "sha512-4aY1kUHEnbOCRG3Tkuuk8yFfyNYSvOstBbjiYE/Z1ZGF3P1z+ON35iLatP84LvNteX4F1EMO2QAta2QbLRMAkw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/line-ripple": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@material/notched-outline": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-14.0.0.tgz", + "integrity": "sha512-o0mJB0+feOv473KckI8gFnUo8IQAaEA6ynXzw3VIYFjPi48pJwrxa0mZcJP/OoTXrCbDzDeFJfDPXEmRioBb9A==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/slider": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-14.0.0.tgz", + "integrity": "sha512-m5RqySIps1vhAQnGp2eg4Sh2Ss6bzrZm10TWBw2cNFHmbiI72rK2EeFnMsBXAarplY0cot/FaMuj91VP36gKFQ==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/snackbar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-14.0.0.tgz", + "integrity": "sha512-28uQBj9bw7BalNarK9j8/aVW4Ys5aRaGHoWH+CeYvAjqQUJkrYoqM52aiKhBwqrjBPMJHk1aXthe3YbzMBm6vA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/switch": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-14.0.0.tgz", + "integrity": "sha512-vHVKzbvHVKGSrkMB1lZAl8z3eJ8sPRnSR+DWn+IhqHcTsDdDyly2NNj4i2vTSrEA39CztGqkx0OnKM4vkpiZHw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-14.0.0.tgz", + "integrity": "sha512-jGSQdp6BvZOVnvGbv0DvNDJL2lHYVFtKGehV0gSZ7FrjHK6gZnKZjWOVwt1NPu9ig9zy85vPRFpvFTeje1KZpg==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/tab-indicator": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-bar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-14.0.0.tgz", + "integrity": "sha512-G/UYEOIcljCHlkj3iCRGIz4zE9RVcsdC9wuOR6LE2rla6EGyT0x2psNlL0pIMROjXoB0HGda/gB90ovzKcbURA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/tab": "^14.0.0", + "@material/tab-indicator": "^14.0.0", + "@material/tab-scroller": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-indicator": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-14.0.0.tgz", + "integrity": "sha512-wfq136fsJGqtCIW8x1wFQHgRr7dIQ9SWqp6WG4FQGHpSzliNDA23/bdBUjh3lX2U+mfbdsFmZWEPy06jg2uc5g==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-scroller": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-14.0.0.tgz", + "integrity": "sha512-wadETsRM7vT4mRjXedaPXxI/WFSSgqHRNI//dORJ6627hoiJfLb5ixwUKTYk9zTz6gNwAlRTrKh98Dr9T7n7Kw==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/tab": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-14.0.0.tgz", + "integrity": "sha512-HGbtAlvlIB2vWBq85yw5wQeeP3Kndl6Z0TJzQ6piVtcfdl2mPyWhuuVHQRRAOis3rCIaAAaxCQYYTJh8wIi0XQ==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/line-ripple": "^14.0.0", + "@material/notched-outline": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/theme": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0.tgz", + "integrity": "sha512-6/SENWNIFuXzeHMPHrYwbsXKgkvCtWuzzQ3cUu4UEt3KcQ5YpViazIM6h8ByYKZP8A9d8QpkJ0WGX5btGDcVoA==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-14.0.0.tgz", + "integrity": "sha512-SXgB9VwsKW4DFkHmJfDIS0x0cGdMWC1D06m6z/WQQ5P5j6/m0pKrbHVlrLzXcRjau+mFhXGvj/KyPo9Pp/Rc8Q==", + "dev": true, + "dependencies": { + "@material/elevation": "^14.0.0" + } + }, + "node_modules/@material/tooltip": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-14.0.0.tgz", + "integrity": "sha512-rp7sOuVE1hmg4VgBJMnSvtDbSzctL42X7y1yv8ukuu40Sli+H5FT0Zbn351EfjJgQWg/AlXA6+reVXkXje8JzQ==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/top-app-bar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-14.0.0.tgz", + "integrity": "sha512-uPej5vHgZnlSB1+koiA9FnabXrHh3O/Npl2ifpUgDVwHDSOxKvLp2LNjyCO71co1QLNnNHIU0xXv3B97Gb0rpA==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/touch-target": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-14.0.0.tgz", + "integrity": "sha512-o3kvxmS4HkmZoQTvtzLJrqSG+ezYXkyINm3Uiwio1PTg67pDgK5FRwInkz0VNaWPcw9+5jqjUQGjuZMtjQMq8w==", + "dev": true, + "dependencies": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-14.0.0.tgz", + "integrity": "sha512-/QtHBYiTR+TPMryM/CT386B2WlAQf/Ae32V324Z7P40gHLKY/YBXx7FDutAWZFeOerq/two4Nd2aAHBcMM2wMw==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -575,16 +1350,558 @@ } } }, - "node_modules/@sveltejs/adapter-auto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", - "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==", + "node_modules/@smui-extra/accordion": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/accordion/-/accordion-7.0.0-beta.8.tgz", + "integrity": "sha512-Kydoz1nSqBdHA5R7VoeUJnwlmDVXuyAd8EnJYfB3rOluN7RrKFlIO6fiVpcD1kzrtTKKSsmVo3BwLcdPU2HNfw==", "dev": true, "dependencies": { - "import-meta-resolve": "^3.0.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^1.0.0" + "@material/animation": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui-extra/autocomplete": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/autocomplete/-/autocomplete-7.0.0-beta.8.tgz", + "integrity": "sha512-kYrfJTjAdF5ibZoGeuxC/CzsDvz64wurHTEfO2OyZhgJ8NSCnQZhUJVR4dud4N+c+7ENmugTEY9HgiyGEJ3EHg==", + "dev": true, + "dependencies": { + "@smui/common": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/textfield": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui-extra/badge": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/badge/-/badge-7.0.0-beta.8.tgz", + "integrity": "sha512-/h1qTj3sLuMT0npqfS4PNKXIdeaISke03+bF3gLYcwgTP7ZISObRem4FYp+HyIPSfexhhnO7Icb+YTE/OhdF8A==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui-extra/bottom-app-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/bottom-app-bar/-/bottom-app-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-lh/f0ef4rzs7OIb473uh8Mj45YJeNGfJIKFRyg9+EvWleu3R13Ze0OHWFFbVVWnX09X6ktb3kPUHrZDJAt+6PA==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/banner": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/banner/-/banner-7.0.0-beta.8.tgz", + "integrity": "sha512-nI2iKLTKsH3xSgD92cDO0uV3gnaKt2ZFq/RBSN+ZtfSFvaicFZOph9ednyFMHKwzLRbi2Ug70gFb7BXG3pr+Uw==", + "dev": true, + "dependencies": { + "@material/banner": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/button/-/button-7.0.0-beta.8.tgz", + "integrity": "sha512-DE/dXV0a0L+LtXZRyhEH1rN6+5XJwG1s1xqa8v4778fCe/Zf8qpHTXsF1Y8xxjbr7NeOdqIYkgFEk3F8Gee1lg==", + "dev": true, + "dependencies": { + "@material/button": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/card": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/card/-/card-7.0.0-beta.8.tgz", + "integrity": "sha512-dcSvlEIV7gaqr4AJuAvRvHeerb90yZgTw3xh/X69Pm6fVt+1kYI9tRm6oMmqS/eY+EbvHU7zYQI9AGR/r9PGnA==", + "dev": true, + "dependencies": { + "@material/card": "^14.0.0", + "@smui/button": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/checkbox": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/checkbox/-/checkbox-7.0.0-beta.8.tgz", + "integrity": "sha512-ODu1VpH3fgle7AmM1BSNHy3nViwAm4ljDhyM64PYPpyCc19dKUsiKDd5uW4PgG02Pe8RmepyQjysLaTPFO326g==", + "dev": true, + "dependencies": { + "@material/checkbox": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/chips": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/chips/-/chips-7.0.0-beta.8.tgz", + "integrity": "sha512-RpXT7Y9b2ELQoXt3ha5MjImMBUG1JPaekUgyV++AyotkfQ5LEqDTJQJONhsVdbROGi1F1HX3of0DtwNdnLZIhg==", + "dev": true, + "dependencies": { + "@material/chips": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/rtl": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/circular-progress": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/circular-progress/-/circular-progress-7.0.0-beta.8.tgz", + "integrity": "sha512-oKBilgNqkJalG+nv6L12/3YHGJKz9LsFHhxhNzbv2M0Yen+MQZCf5hVTsRhdRTfhpHJBvqXDqiZ8Ec2Gs5oXRA==", + "dev": true, + "dependencies": { + "@material/circular-progress": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/common": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/common/-/common-7.0.0-beta.8.tgz", + "integrity": "sha512-IeU7KqE+EcvEm3fkEKuvHY2MkNJm1hpl1sHlnVWFSrS8D1+NypwpuQWnOPDgLYRq/5zhm8ZCDkvX1G1ZiXUC7A==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/data-table": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/data-table/-/data-table-7.0.0-beta.8.tgz", + "integrity": "sha512-sBmgQccJ4qasqbYIJD6fldu486lGPW38uLDgukjXDOuB9185f2pdgUhltCbP+sz+svHZDg/QXn0qEA4nks1Tbw==", + "dev": true, + "dependencies": { + "@material/data-table": "^14.0.0", + "@material/dom": "^14.0.0", + "@smui/checkbox": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/select": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/dialog": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/dialog/-/dialog-7.0.0-beta.8.tgz", + "integrity": "sha512-BTUgj8ZKe9xQU1/kfgyZDtxf3kHtog3/2dTiYCm9M1fJAqc5tUXS+SaWI+XoD/F9g2dm9JKBCp3e5nnNoAv0vQ==", + "dev": true, + "dependencies": { + "@material/button": "^14.0.0", + "@material/dialog": "^14.0.0", + "@material/dom": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/drawer": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/drawer/-/drawer-7.0.0-beta.8.tgz", + "integrity": "sha512-YLUzRd9x5wXhAyzWR2SvojgSG3tjdtWFj7mC5W6GYfqdMe3J+qIfWfVh/ytgzaUPcR9sNPorD4AbxVh6psoK9w==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/drawer": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/fab": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/fab/-/fab-7.0.0-beta.8.tgz", + "integrity": "sha512-rhtEniZwPC+7R0Bciv/BbS+1AVU6t7sh/nbeaOYWtdQ1wm/c2KxUeQSYC5Qa592Pl8HSrY2tTnt1eeKU1o8LHw==", + "dev": true, + "dependencies": { + "@material/fab": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/floating-label": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/floating-label/-/floating-label-7.0.0-beta.8.tgz", + "integrity": "sha512-FfIpdOV6Y0Up2kC88qb5uBsFI+vzsk5HNhhxILixCjYVGO1jfDOJF0MiQIu0PQFdGR6vBpmOHg5PSWy4TR5sTg==", + "dev": true, + "dependencies": { + "@material/floating-label": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/form-field": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/form-field/-/form-field-7.0.0-beta.8.tgz", + "integrity": "sha512-B+8QJulCY13qiWiwLn9Fso3ZzYLCRBpq6MHE0o/4ZI0g5tI4yzyU1YNSXA3zWg6FJx7XukqOqoOA2sNCd00cjA==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/form-field": "^14.0.0", + "@material/rtl": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/icon-button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/icon-button/-/icon-button-7.0.0-beta.8.tgz", + "integrity": "sha512-QMqBoDQFcKqGYniky+VhTTp7QHH2ID7Zvdht6kGRcWC8Yb5UhcE4+yLnvKUWqz8I608bVznbL5viQfmsJbSlvA==", + "dev": true, + "dependencies": { + "@material/density": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/image-list": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/image-list/-/image-list-7.0.0-beta.8.tgz", + "integrity": "sha512-2k227Cnq4pfDYYm4g9EMpKoaIqNz3mePTeoWRnwqi92Y3EoJ8k7+ZY86QE1dc3W8ATTt8s9pTGXJZrPCPQK6mQ==", + "dev": true, + "dependencies": { + "@material/image-list": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/layout-grid": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/layout-grid/-/layout-grid-7.0.0-beta.8.tgz", + "integrity": "sha512-VPNa7BPBIdYq90Zut33+MsR5CEh1jUT6jpeCtFWaA7S/jRsxZocHeL4dH3CfCDYuO2rMUs2+zWTOvLe3tDzIqA==", + "dev": true, + "dependencies": { + "@material/layout-grid": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/line-ripple": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/line-ripple/-/line-ripple-7.0.0-beta.8.tgz", + "integrity": "sha512-PdSgPBd/If4Vh1a81JEa/kAVkVezeeROhXH6w9eeuByMaHrhe6m/SyMp7L7NUc1O9JaNKCRCiIigoM0qmHz7UQ==", + "dev": true, + "dependencies": { + "@material/line-ripple": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/linear-progress": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/linear-progress/-/linear-progress-7.0.0-beta.8.tgz", + "integrity": "sha512-2S5QrzdeRVmepnDqVdMdjpDb+wxtxZW3CrYbfu2lnGF74QznPT1SyuTLTkY+czoTLc7Qc3nJ+gBkxga+vBbonA==", + "dev": true, + "dependencies": { + "@material/linear-progress": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/list": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/list/-/list-7.0.0-beta.8.tgz", + "integrity": "sha512-Rh2rpKDgaxzCdqcWZkkrRP+kPyu7Owwbkk8waG06BG9bFyCfov8i1Ai2MQkz6QFG/CVX6fi+rapvWhQaafSsOg==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/menu": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/menu/-/menu-7.0.0-beta.8.tgz", + "integrity": "sha512-n3yRf/F5pc2Rpu73OufoFDlv/IX4pWM7Espn1uUfVSXsWIG52Or7+br1piJHooeK8zxz22mko0eYisjhQosdSQ==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/menu": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/menu-surface": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/menu-surface/-/menu-surface-7.0.0-beta.8.tgz", + "integrity": "sha512-VrdxJD1OyXVrho/BYfykc5pwENkPjpFS3nhTuYZLnPQiAPVKzI2JXMfDOCcB5yKwS5DcBnz36ICWngZ93wCXjQ==", + "dev": true, + "dependencies": { + "@material/animation": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/notched-outline": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/notched-outline/-/notched-outline-7.0.0-beta.8.tgz", + "integrity": "sha512-L0r3VPPOaPTiWMfLeX+8vy0zyZ80ALa02RWPPQ4KPoboaYU1WZ9+t7mtxsDexA6CZub8I2ZfybanxDJIT+5xBQ==", + "dev": true, + "dependencies": { + "@material/notched-outline": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/paper": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/paper/-/paper-7.0.0-beta.8.tgz", + "integrity": "sha512-NoOrlU67YUnI19V685MbSzoBV+0AQj2Swj5U6VQIYqW7JRVOk09BQAj45pPXAYWGQUCzzkeXzwD+V5O9J8+PVQ==", + "dev": true, + "dependencies": { + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/radio": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/radio/-/radio-7.0.0-beta.8.tgz", + "integrity": "sha512-dN7lG+5kuLLXz3Fghl+M+yzCyEsi0tnAzx8oP33wLkj+/frOFL34i5o4sDHaoSrQaBABVt2YZVCRBg5oPtzwLg==", + "dev": true, + "dependencies": { + "@material/radio": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/ripple": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/ripple/-/ripple-7.0.0-beta.8.tgz", + "integrity": "sha512-f762Wi8ESc6rRDhsmm2WUtEjAmaUB3BlYwMJ9kgOODxIxdk4kaoflUzgJemeLwohsnGfvP+o0cGxR8DM9BE3nA==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/ripple": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/segmented-button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/segmented-button/-/segmented-button-7.0.0-beta.8.tgz", + "integrity": "sha512-hQEaWQpA6ExhSXjFxTOJ0ZpO222cm/CqgzOIep3W9mtvhN6vKfD57fS82gq09va2V/7ucjevOZym+YYrGWWTNw==", + "dev": true, + "dependencies": { + "@material/segmented-button": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/select": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/select/-/select-7.0.0-beta.8.tgz", + "integrity": "sha512-3RigAea8A4k3LnDWVBJN6GQQnJsGVraB5FrpW6n4b7CBbVLuia4PBR1ks3YJrKp5UtSJ4eqhWGs4RZuJosKPVw==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/select": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/slider": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/slider/-/slider-7.0.0-beta.8.tgz", + "integrity": "sha512-SkNUeHhk6+JtYZyL5mMRHY8gFZn68MByywGMUgPMLprlkuF33pSrigf4Q8xD63UOYlICCy1U1gzT5Y4p58QQWg==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/slider": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/snackbar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/snackbar/-/snackbar-7.0.0-beta.8.tgz", + "integrity": "sha512-NdlqsWYtgnHDjCXIi/iHVqMHk+93zjZsJLkGZvbVlSSPrQJsYVHKxogYjP301M/n/AjvcLOXFrJL7qXR2PP5MQ==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/snackbar": "^14.0.0", + "@smui/button": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/switch": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/switch/-/switch-7.0.0-beta.8.tgz", + "integrity": "sha512-+S1hh5v9u5sGkl39WormaUrIndPpnYB0v9NCxIg/XVAEn39hryCI9OFXlHq2zyfLiVtjAoWO09l+SnNV78tHyA==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/switch": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/tab": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab/-/tab-7.0.0-beta.8.tgz", + "integrity": "sha512-v+WKqv4Hv4KzU3unM/xBX3sJOIiB6vatlEze1HKGBAlLLh+kRZOM1NgLh/SPBpPOSNbdZwbGzPZDAFXCT1ZnIw==", + "dev": true, + "dependencies": { + "@material/tab": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/tab-indicator": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/tab-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-bar/-/tab-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-N0hraNszsVCIBAFxXu9YZhMEn9o85coQ1+BYXdhx4J+11x0dwa+E5qTCntqm6RN9zNK/ZaH9ctNUxhvWMbG4ww==", + "dev": true, + "dependencies": { + "@material/tab-bar": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/tab": "^7.0.0-beta.8", + "@smui/tab-scroller": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/tab-indicator": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-indicator/-/tab-indicator-7.0.0-beta.8.tgz", + "integrity": "sha512-sj4dH+AwZbgZq1oz/7FzNgA7lKQNobbXyMfSi100Sx27PnXbEEXto0zyafROaNAtjD0h9fzfczPEQEABM9qHwg==", + "dev": true, + "dependencies": { + "@material/tab-indicator": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/tab-scroller": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-scroller/-/tab-scroller-7.0.0-beta.8.tgz", + "integrity": "sha512-LRsnQwIg2UCsBmG57EkRvsL9pv07Lb2O3T8Sdt3a6ackKweOqMWQyir04uAcE3EcjTzsZxM7MGzLLZ8mJr1ACg==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/tab-scroller": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/textfield": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/textfield/-/textfield-7.0.0-beta.8.tgz", + "integrity": "sha512-gTpGFEJCxHMI/fFPkVArX4J9Gq2JnoZ8+XbSZoOMf3tnH62QwfA26B6nFpMIVUmlzH8XFfSTmA2IOVCq54hnug==", + "dev": true, + "dependencies": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/textfield": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/tooltip": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tooltip/-/tooltip-7.0.0-beta.8.tgz", + "integrity": "sha512-nECLWPBhEcCBtrLe0HWnykrN+VbNzNaFE/NaqTnkOxGR2RPzqlBsbplQvP76fHASZm3oFHiP3Wo4vmMvbmES+g==", + "dev": true, + "dependencies": { + "@material/tooltip": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/top-app-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/top-app-bar/-/top-app-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-iBbqzVQl90edxmuIZD8V4wzOR/r2inSJwuYIsI8Re3dS8v68Pl86C+4CgH68GZXX1d6K4WTwxgBcMdJ+QJy/GQ==", + "dev": true, + "dependencies": { + "@material/feature-targeting": "^14.0.0", + "@material/top-app-bar": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "node_modules/@smui/touch-target": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/touch-target/-/touch-target-7.0.0-beta.8.tgz", + "integrity": "sha512-/+LGOIWtq37mVZXIZb2RjdrIqgA4PHghr/cIL0SNMzw0lEpVkMg7swXUDQcJ1i9btz6/c2DbVoL0IZgAccvqjQ==", + "dev": true, + "dependencies": { + "@material/touch-target": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" } }, "node_modules/@sveltejs/adapter-node": { @@ -982,6 +2299,12 @@ } } }, + "node_modules/dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", + "dev": true + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -1233,6 +2556,12 @@ "node": ">= 0.4.0" } }, + "node_modules/immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -1249,16 +2578,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1392,6 +2711,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/magic-string": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", @@ -1533,10 +2861,20 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.11.tgz", + "integrity": "sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==", "dev": true }, "node_modules/normalize-path": { @@ -1596,6 +2934,16 @@ "node": ">=6" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1972,6 +3320,23 @@ "rimraf": "^2.5.2" } }, + "node_modules/sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -2156,6 +3521,56 @@ "svelte": ">=3.19.0" } }, + "node_modules/svelte-material-ui": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/svelte-material-ui/-/svelte-material-ui-7.0.0-beta.8.tgz", + "integrity": "sha512-QY/nFIDckTAYrH90HYckWyteWkiOODwK48Ll0dzOAV/gNAmaI1JVkPB2RgAcEifALO3sNhF2guYYjHZmsKe1dQ==", + "dev": true, + "dependencies": { + "@smui-extra/accordion": "^7.0.0-beta.8", + "@smui-extra/autocomplete": "^7.0.0-beta.8", + "@smui-extra/badge": "^7.0.0-beta.8", + "@smui-extra/bottom-app-bar": "^7.0.0-beta.8", + "@smui/banner": "^7.0.0-beta.8", + "@smui/button": "^7.0.0-beta.8", + "@smui/card": "^7.0.0-beta.8", + "@smui/checkbox": "^7.0.0-beta.8", + "@smui/chips": "^7.0.0-beta.8", + "@smui/circular-progress": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/data-table": "^7.0.0-beta.8", + "@smui/dialog": "^7.0.0-beta.8", + "@smui/drawer": "^7.0.0-beta.8", + "@smui/fab": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/form-field": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/image-list": "^7.0.0-beta.8", + "@smui/layout-grid": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/linear-progress": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "@smui/radio": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/segmented-button": "^7.0.0-beta.8", + "@smui/select": "^7.0.0-beta.8", + "@smui/slider": "^7.0.0-beta.8", + "@smui/snackbar": "^7.0.0-beta.8", + "@smui/switch": "^7.0.0-beta.8", + "@smui/tab": "^7.0.0-beta.8", + "@smui/tab-bar": "^7.0.0-beta.8", + "@smui/tab-indicator": "^7.0.0-beta.8", + "@smui/tab-scroller": "^7.0.0-beta.8", + "@smui/textfield": "^7.0.0-beta.8", + "@smui/tooltip": "^7.0.0-beta.8", + "@smui/top-app-bar": "^7.0.0-beta.8", + "@smui/touch-target": "^7.0.0-beta.8" + } + }, "node_modules/svelte-preprocess": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", @@ -2218,6 +3633,20 @@ } } }, + "node_modules/svelte2tsx": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.14.tgz", + "integrity": "sha512-Sxo9gtpc3dYWuFQ8fruZG+M+I6OZMIvOxxKjt48Lr8jD6Kr9cNf1Hf/yHUDEgDwQdRbAzn5y0FL9xk8Dx5v9lg==", + "dev": true, + "dependencies": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + }, + "peerDependencies": { + "svelte": "^3.55", + "typescript": "^4.9.4 || ^5.0.0" + } + }, "node_modules/tailwindcss": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", @@ -2679,6 +4108,780 @@ } } }, + "@material/animation": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-14.0.0.tgz", + "integrity": "sha512-VlYSfUaIj/BBVtRZI8Gv0VvzikFf+XgK0Zdgsok5c1v5DDnNz5tpB8mnGrveWz0rHbp1X4+CWLKrTwNmjrw3Xw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/banner": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-14.0.0.tgz", + "integrity": "sha512-z0WPBVQxbQVcV1km4hFD40xBEeVWYtCzl2jrkHd8xXexP/fMvXkFU1UfwSWvY3jlWx//j4/Xd7VpnRdEXS4RLQ==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/base": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-14.0.0.tgz", + "integrity": "sha512-Ou7vS7n1H4Y10MUZyYAbt6H0t67c6urxoCgeVT7M38aQlaNUwFMODp7KT/myjYz2YULfhu3PtfSV3Sltgac9mA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-14.0.0.tgz", + "integrity": "sha512-dqqHaJq0peyXBZupFzCjmvScrfljyVU66ZCS3oldsaaj5iz8sn33I/45Z4zPzdR5F5z8ExToHkRcXhakj1UEAA==", + "dev": true, + "requires": { + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/card": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-14.0.0.tgz", + "integrity": "sha512-SnpYWUrCb92meGYLXV7qa/k40gnHR6rPki6A1wz0OAyG2twY48f0HLscAqxBLvbbm1LuRaqjz0RLKGH3VzxZHw==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/checkbox": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-14.0.0.tgz", + "integrity": "sha512-OoqwysCqvj1d0cRmEwVWPvg5OqYAiCFpE6Wng6me/Cahfe4xgRxSPa37WWqsClw20W7PG/5RrYRCBtc6bUUUZA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/chips": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-14.0.0.tgz", + "integrity": "sha512-SfZX/Ovdq4NgjdtIr/N1O3fEHisZC+t8G8629OV/NrniSS6rKOa+q1mImzna8R4pfuYO+7nT5nZewQpL/JSYaQ==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/checkbox": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/circular-progress": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-14.0.0.tgz", + "integrity": "sha512-7EdkP6ty54g6qs6zzlsw29vWlUyrcSWr9b4pGGx4D/iNJww+eyxXZ07iWoNOr4uLgguauWEft2axpQiFCwFD0g==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/progress-indicator": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/data-table": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-14.0.0.tgz", + "integrity": "sha512-tnmLawGaMtnp29KH8pX99bqeKmFODE+MtRUTt6TauupkEfQE/wd0Um4JQDFiI0kCch7uF3r/NmQKyKuan10hXw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/checkbox": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/linear-progress": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/select": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/density": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-14.0.0.tgz", + "integrity": "sha512-NlxXBV5XjNsKd8UXF4K/+fOXLxoFNecKbsaQO6O2u+iG8QBfFreKRmkhEBb2hPPwC3w8nrODwXX0lHV+toICQw==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/dialog": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-14.0.0.tgz", + "integrity": "sha512-E07NEE4jP8jHaw/y2Il2R1a3f4wDFh2sgfCBtRO/Xh0xxJUMuQ7YXo/F3SAA8jfMbbkUv/PHdJUM3I3HmI9mAA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/dom": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-14.0.0.tgz", + "integrity": "sha512-8t88XyacclTj8qsIw9q0vEj4PI2KVncLoIsIMzwuMx49P2FZg6TsLjor262MI3Qs00UWAifuLMrhnOnfyrbe7Q==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/drawer": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-14.0.0.tgz", + "integrity": "sha512-VPrxMIhbkXVbfH7aMFV+Um0tjOVrU/Y65X2hWsVdmjASadE8C5UYjIE3vjL1DM1M+zIa3qZZRUWqz0j1zqbr3w==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/elevation": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-14.0.0.tgz", + "integrity": "sha512-Di3tkxTpXwvf1GJUmaC8rd+zVh5dB2SWMBGagL4+kT8UmjSISif/OPRGuGnXs3QhF6nmEjkdC0ijdZLcYQkepw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/fab": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-14.0.0.tgz", + "integrity": "sha512-s4rrw2TLU8ITKopHSTEHuJEFsGEZsb+ijwW16pQt0h9GArxPGaALT+CCJIPjf75D3wPEEMW0vnLj7oMoII2VFg==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/feature-targeting": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-14.0.0.tgz", + "integrity": "sha512-a5WGgHEq5lJeeNL5yevtgoZjBjXWy6+klfVWQEh8oyix/rMJygGgO7gEc52uv8fB8uAIoYEB3iBMOv8jRq8FeA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/floating-label": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-14.0.0.tgz", + "integrity": "sha512-Aq8BboP1sbNnOtsV72AfaYirHyOrQ/GKFoLrZ1Jt+ZGIAuXPETcj9z7nQDznst0ZeKcz420PxNn9tsybTbeL/Q==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/focus-ring": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-14.0.0.tgz", + "integrity": "sha512-fqqka6iSfQGJG3Le48RxPCtnOiaLGPDPikhktGbxlyW9srBVMgeCiONfHM7IT/1eu80O0Y67Lh/4ohu5+C+VAQ==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0" + } + }, + "@material/form-field": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-14.0.0.tgz", + "integrity": "sha512-k1GNBj6Sp8A7Xsn5lTMp5DkUkg60HX7YkQIRyFz1qCDCKJRWh/ou7Z45GMMgKmG3aF6LfjIavc7SjyCl8e5yVg==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/icon-button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-14.0.0.tgz", + "integrity": "sha512-wHMqzm7Q/UwbWLoWv32Li1r2iVYxadIrwTNxT0+p+7NdfI3lEwMN3NoB0CvoJnHTljjXDzce0KJ3nZloa0P0gA==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/image-list": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-14.0.0.tgz", + "integrity": "sha512-vx/7WCMbiZoy/R+DmO7r0N3jWzFjlvvDMeBpXt0btglWP3EYbVnDqzseW4u1TtY+IBbJldW/DsiCN1oLnlEVxw==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/layout-grid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-14.0.0.tgz", + "integrity": "sha512-tAce0PR/c85VI2gf1HUdM0Y15ZWpfZWAFIwaCRW1+jnOLWnG1/aOJYLlzqtVEv2m0TS1R1WRRGN3Or+CWvpDRA==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/line-ripple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-14.0.0.tgz", + "integrity": "sha512-Rx9eSnfp3FcsNz4O+fobNNq2PSm5tYHC3hRpY2ZK3ghTvgp3Y40/soaGEi/Vdg0F7jJXRaBSNOe6p5t9CVfy8Q==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/linear-progress": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-14.0.0.tgz", + "integrity": "sha512-MGIAWMHMW6TSV/TNWyl5N/escpDHk3Rq6hultFif+D9adqbOXrtfZZIFPLj1FpMm1Ucnj6zgOmJHgCDsxRVNIA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/progress-indicator": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/list": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-14.0.0.tgz", + "integrity": "sha512-AFaBGV9vQyfnG8BT2R3UGVdF5w2SigQqBH+qbOSxQhk4BgVvhDfJUIKT415poLNMdnaDtcuYz+ZWvVNoRDaL7w==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/menu": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-14.0.0.tgz", + "integrity": "sha512-oU6GjbYnkG6a5nX9HUSege5OQByf6yUteEij8fpf0ci3f5BWf/gr39dnQ+rfl+q119cW0WIEmVK2YJ/BFxMzEQ==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/menu-surface": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-14.0.0.tgz", + "integrity": "sha512-wRz3UCrhJ4kRrijJEbvIPRa0mqA5qkQmKXjBH4Xu1ApedZruP+OM3Qb2Bj4XugCA3eCXpiohg+gdyTAX3dVQyw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/notched-outline": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-14.0.0.tgz", + "integrity": "sha512-6S58DlWmhCDr4RQF2RuwqANxlmLdHtWy2mF4JQLD9WOiCg4qY9eCQnMXu3Tbhr7f/nOZ0vzc7AtA3vfJoZmCSw==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/progress-indicator": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-14.0.0.tgz", + "integrity": "sha512-09JRTuIySxs670Tcy4jVlqCUbyrO+Ad6z3nHnAi8pYl74duco4n/9jTROV0mlFdr9NIFifnd08lKbiFLDmfJGQ==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@material/radio": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-14.0.0.tgz", + "integrity": "sha512-VwPOi5fAoZXL3RhQJ6iDWTR34L6JXlwd5VXli8ZhzNHnUzcmpMODrRhGVew4Z5uuNj6/n2Jbn1zcS9XmmqjssA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/ripple": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-14.0.0.tgz", + "integrity": "sha512-9XoGBFd5JhFgELgW7pqtiLy+CnCIcV2s9cQ2BWbOQeA8faX9UZIDUx/g76nHLZ7UzKFtsULJxZTwORmsEt2zvw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/rtl": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-14.0.0.tgz", + "integrity": "sha512-xl6OZYyRjuiW2hmbjV2omMV8sQtfmKAjeWnD1RMiAPLCTyOW9Lh/PYYnXjxUrNa0cRwIIbOn5J7OYXokja8puA==", + "dev": true, + "requires": { + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/segmented-button": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-14.0.0.tgz", + "integrity": "sha512-6es7PPNX3T3h7bOLyb8L38hMoTXqBs5XX8XCKycKZG2Dm4stac/yYMKKO/q3MOn36t37s+JAVTjyRB8HnJu5Gg==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/touch-target": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/select": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-14.0.0.tgz", + "integrity": "sha512-4aY1kUHEnbOCRG3Tkuuk8yFfyNYSvOstBbjiYE/Z1ZGF3P1z+ON35iLatP84LvNteX4F1EMO2QAta2QbLRMAkw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/line-ripple": "^14.0.0", + "@material/list": "^14.0.0", + "@material/menu": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@material/notched-outline": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/shape": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-14.0.0.tgz", + "integrity": "sha512-o0mJB0+feOv473KckI8gFnUo8IQAaEA6ynXzw3VIYFjPi48pJwrxa0mZcJP/OoTXrCbDzDeFJfDPXEmRioBb9A==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/slider": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-14.0.0.tgz", + "integrity": "sha512-m5RqySIps1vhAQnGp2eg4Sh2Ss6bzrZm10TWBw2cNFHmbiI72rK2EeFnMsBXAarplY0cot/FaMuj91VP36gKFQ==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/snackbar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-14.0.0.tgz", + "integrity": "sha512-28uQBj9bw7BalNarK9j8/aVW4Ys5aRaGHoWH+CeYvAjqQUJkrYoqM52aiKhBwqrjBPMJHk1aXthe3YbzMBm6vA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/button": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/switch": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-14.0.0.tgz", + "integrity": "sha512-vHVKzbvHVKGSrkMB1lZAl8z3eJ8sPRnSR+DWn+IhqHcTsDdDyly2NNj4i2vTSrEA39CztGqkx0OnKM4vkpiZHw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/tab": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-14.0.0.tgz", + "integrity": "sha512-jGSQdp6BvZOVnvGbv0DvNDJL2lHYVFtKGehV0gSZ7FrjHK6gZnKZjWOVwt1NPu9ig9zy85vPRFpvFTeje1KZpg==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/focus-ring": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/tab-indicator": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-bar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-14.0.0.tgz", + "integrity": "sha512-G/UYEOIcljCHlkj3iCRGIz4zE9RVcsdC9wuOR6LE2rla6EGyT0x2psNlL0pIMROjXoB0HGda/gB90ovzKcbURA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/tab": "^14.0.0", + "@material/tab-indicator": "^14.0.0", + "@material/tab-scroller": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-indicator": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-14.0.0.tgz", + "integrity": "sha512-wfq136fsJGqtCIW8x1wFQHgRr7dIQ9SWqp6WG4FQGHpSzliNDA23/bdBUjh3lX2U+mfbdsFmZWEPy06jg2uc5g==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/tab-scroller": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-14.0.0.tgz", + "integrity": "sha512-wadETsRM7vT4mRjXedaPXxI/WFSSgqHRNI//dORJ6627hoiJfLb5ixwUKTYk9zTz6gNwAlRTrKh98Dr9T7n7Kw==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/tab": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/textfield": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-14.0.0.tgz", + "integrity": "sha512-HGbtAlvlIB2vWBq85yw5wQeeP3Kndl6Z0TJzQ6piVtcfdl2mPyWhuuVHQRRAOis3rCIaAAaxCQYYTJh8wIi0XQ==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/density": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/floating-label": "^14.0.0", + "@material/line-ripple": "^14.0.0", + "@material/notched-outline": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/tokens": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/theme": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-14.0.0.tgz", + "integrity": "sha512-6/SENWNIFuXzeHMPHrYwbsXKgkvCtWuzzQ3cUu4UEt3KcQ5YpViazIM6h8ByYKZP8A9d8QpkJ0WGX5btGDcVoA==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/tokens": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-14.0.0.tgz", + "integrity": "sha512-SXgB9VwsKW4DFkHmJfDIS0x0cGdMWC1D06m6z/WQQ5P5j6/m0pKrbHVlrLzXcRjau+mFhXGvj/KyPo9Pp/Rc8Q==", + "dev": true, + "requires": { + "@material/elevation": "^14.0.0" + } + }, + "@material/tooltip": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-14.0.0.tgz", + "integrity": "sha512-rp7sOuVE1hmg4VgBJMnSvtDbSzctL42X7y1yv8ukuu40Sli+H5FT0Zbn351EfjJgQWg/AlXA6+reVXkXje8JzQ==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/top-app-bar": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-14.0.0.tgz", + "integrity": "sha512-uPej5vHgZnlSB1+koiA9FnabXrHh3O/Npl2ifpUgDVwHDSOxKvLp2LNjyCO71co1QLNnNHIU0xXv3B97Gb0rpA==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/base": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/touch-target": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-14.0.0.tgz", + "integrity": "sha512-o3kvxmS4HkmZoQTvtzLJrqSG+ezYXkyINm3Uiwio1PTg67pDgK5FRwInkz0VNaWPcw9+5jqjUQGjuZMtjQMq8w==", + "dev": true, + "requires": { + "@material/base": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "tslib": "^2.1.0" + } + }, + "@material/typography": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-14.0.0.tgz", + "integrity": "sha512-/QtHBYiTR+TPMryM/CT386B2WlAQf/Ae32V324Z7P40gHLKY/YBXx7FDutAWZFeOerq/two4Nd2aAHBcMM2wMw==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "tslib": "^2.1.0" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2759,13 +4962,558 @@ "picomatch": "^2.3.1" } }, - "@sveltejs/adapter-auto": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", - "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==", + "@smui-extra/accordion": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/accordion/-/accordion-7.0.0-beta.8.tgz", + "integrity": "sha512-Kydoz1nSqBdHA5R7VoeUJnwlmDVXuyAd8EnJYfB3rOluN7RrKFlIO6fiVpcD1kzrtTKKSsmVo3BwLcdPU2HNfw==", "dev": true, "requires": { - "import-meta-resolve": "^3.0.0" + "@material/animation": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui-extra/autocomplete": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/autocomplete/-/autocomplete-7.0.0-beta.8.tgz", + "integrity": "sha512-kYrfJTjAdF5ibZoGeuxC/CzsDvz64wurHTEfO2OyZhgJ8NSCnQZhUJVR4dud4N+c+7ENmugTEY9HgiyGEJ3EHg==", + "dev": true, + "requires": { + "@smui/common": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/textfield": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui-extra/badge": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/badge/-/badge-7.0.0-beta.8.tgz", + "integrity": "sha512-/h1qTj3sLuMT0npqfS4PNKXIdeaISke03+bF3gLYcwgTP7ZISObRem4FYp+HyIPSfexhhnO7Icb+YTE/OhdF8A==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui-extra/bottom-app-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui-extra/bottom-app-bar/-/bottom-app-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-lh/f0ef4rzs7OIb473uh8Mj45YJeNGfJIKFRyg9+EvWleu3R13Ze0OHWFFbVVWnX09X6ktb3kPUHrZDJAt+6PA==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/banner": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/banner/-/banner-7.0.0-beta.8.tgz", + "integrity": "sha512-nI2iKLTKsH3xSgD92cDO0uV3gnaKt2ZFq/RBSN+ZtfSFvaicFZOph9ednyFMHKwzLRbi2Ug70gFb7BXG3pr+Uw==", + "dev": true, + "requires": { + "@material/banner": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/button/-/button-7.0.0-beta.8.tgz", + "integrity": "sha512-DE/dXV0a0L+LtXZRyhEH1rN6+5XJwG1s1xqa8v4778fCe/Zf8qpHTXsF1Y8xxjbr7NeOdqIYkgFEk3F8Gee1lg==", + "dev": true, + "requires": { + "@material/button": "^14.0.0", + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/card": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/card/-/card-7.0.0-beta.8.tgz", + "integrity": "sha512-dcSvlEIV7gaqr4AJuAvRvHeerb90yZgTw3xh/X69Pm6fVt+1kYI9tRm6oMmqS/eY+EbvHU7zYQI9AGR/r9PGnA==", + "dev": true, + "requires": { + "@material/card": "^14.0.0", + "@smui/button": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/checkbox": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/checkbox/-/checkbox-7.0.0-beta.8.tgz", + "integrity": "sha512-ODu1VpH3fgle7AmM1BSNHy3nViwAm4ljDhyM64PYPpyCc19dKUsiKDd5uW4PgG02Pe8RmepyQjysLaTPFO326g==", + "dev": true, + "requires": { + "@material/checkbox": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/chips": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/chips/-/chips-7.0.0-beta.8.tgz", + "integrity": "sha512-RpXT7Y9b2ELQoXt3ha5MjImMBUG1JPaekUgyV++AyotkfQ5LEqDTJQJONhsVdbROGi1F1HX3of0DtwNdnLZIhg==", + "dev": true, + "requires": { + "@material/chips": "^14.0.0", + "@material/dom": "^14.0.0", + "@material/rtl": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/circular-progress": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/circular-progress/-/circular-progress-7.0.0-beta.8.tgz", + "integrity": "sha512-oKBilgNqkJalG+nv6L12/3YHGJKz9LsFHhxhNzbv2M0Yen+MQZCf5hVTsRhdRTfhpHJBvqXDqiZ8Ec2Gs5oXRA==", + "dev": true, + "requires": { + "@material/circular-progress": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/common": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/common/-/common-7.0.0-beta.8.tgz", + "integrity": "sha512-IeU7KqE+EcvEm3fkEKuvHY2MkNJm1hpl1sHlnVWFSrS8D1+NypwpuQWnOPDgLYRq/5zhm8ZCDkvX1G1ZiXUC7A==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/data-table": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/data-table/-/data-table-7.0.0-beta.8.tgz", + "integrity": "sha512-sBmgQccJ4qasqbYIJD6fldu486lGPW38uLDgukjXDOuB9185f2pdgUhltCbP+sz+svHZDg/QXn0qEA4nks1Tbw==", + "dev": true, + "requires": { + "@material/data-table": "^14.0.0", + "@material/dom": "^14.0.0", + "@smui/checkbox": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/select": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/dialog": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/dialog/-/dialog-7.0.0-beta.8.tgz", + "integrity": "sha512-BTUgj8ZKe9xQU1/kfgyZDtxf3kHtog3/2dTiYCm9M1fJAqc5tUXS+SaWI+XoD/F9g2dm9JKBCp3e5nnNoAv0vQ==", + "dev": true, + "requires": { + "@material/button": "^14.0.0", + "@material/dialog": "^14.0.0", + "@material/dom": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/drawer": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/drawer/-/drawer-7.0.0-beta.8.tgz", + "integrity": "sha512-YLUzRd9x5wXhAyzWR2SvojgSG3tjdtWFj7mC5W6GYfqdMe3J+qIfWfVh/ytgzaUPcR9sNPorD4AbxVh6psoK9w==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/drawer": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/fab": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/fab/-/fab-7.0.0-beta.8.tgz", + "integrity": "sha512-rhtEniZwPC+7R0Bciv/BbS+1AVU6t7sh/nbeaOYWtdQ1wm/c2KxUeQSYC5Qa592Pl8HSrY2tTnt1eeKU1o8LHw==", + "dev": true, + "requires": { + "@material/fab": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/floating-label": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/floating-label/-/floating-label-7.0.0-beta.8.tgz", + "integrity": "sha512-FfIpdOV6Y0Up2kC88qb5uBsFI+vzsk5HNhhxILixCjYVGO1jfDOJF0MiQIu0PQFdGR6vBpmOHg5PSWy4TR5sTg==", + "dev": true, + "requires": { + "@material/floating-label": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/form-field": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/form-field/-/form-field-7.0.0-beta.8.tgz", + "integrity": "sha512-B+8QJulCY13qiWiwLn9Fso3ZzYLCRBpq6MHE0o/4ZI0g5tI4yzyU1YNSXA3zWg6FJx7XukqOqoOA2sNCd00cjA==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/form-field": "^14.0.0", + "@material/rtl": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/icon-button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/icon-button/-/icon-button-7.0.0-beta.8.tgz", + "integrity": "sha512-QMqBoDQFcKqGYniky+VhTTp7QHH2ID7Zvdht6kGRcWC8Yb5UhcE4+yLnvKUWqz8I608bVznbL5viQfmsJbSlvA==", + "dev": true, + "requires": { + "@material/density": "^14.0.0", + "@material/icon-button": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/image-list": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/image-list/-/image-list-7.0.0-beta.8.tgz", + "integrity": "sha512-2k227Cnq4pfDYYm4g9EMpKoaIqNz3mePTeoWRnwqi92Y3EoJ8k7+ZY86QE1dc3W8ATTt8s9pTGXJZrPCPQK6mQ==", + "dev": true, + "requires": { + "@material/image-list": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/layout-grid": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/layout-grid/-/layout-grid-7.0.0-beta.8.tgz", + "integrity": "sha512-VPNa7BPBIdYq90Zut33+MsR5CEh1jUT6jpeCtFWaA7S/jRsxZocHeL4dH3CfCDYuO2rMUs2+zWTOvLe3tDzIqA==", + "dev": true, + "requires": { + "@material/layout-grid": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/line-ripple": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/line-ripple/-/line-ripple-7.0.0-beta.8.tgz", + "integrity": "sha512-PdSgPBd/If4Vh1a81JEa/kAVkVezeeROhXH6w9eeuByMaHrhe6m/SyMp7L7NUc1O9JaNKCRCiIigoM0qmHz7UQ==", + "dev": true, + "requires": { + "@material/line-ripple": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/linear-progress": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/linear-progress/-/linear-progress-7.0.0-beta.8.tgz", + "integrity": "sha512-2S5QrzdeRVmepnDqVdMdjpDb+wxtxZW3CrYbfu2lnGF74QznPT1SyuTLTkY+czoTLc7Qc3nJ+gBkxga+vBbonA==", + "dev": true, + "requires": { + "@material/linear-progress": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/list": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/list/-/list-7.0.0-beta.8.tgz", + "integrity": "sha512-Rh2rpKDgaxzCdqcWZkkrRP+kPyu7Owwbkk8waG06BG9bFyCfov8i1Ai2MQkz6QFG/CVX6fi+rapvWhQaafSsOg==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/list": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/menu": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/menu/-/menu-7.0.0-beta.8.tgz", + "integrity": "sha512-n3yRf/F5pc2Rpu73OufoFDlv/IX4pWM7Espn1uUfVSXsWIG52Or7+br1piJHooeK8zxz22mko0eYisjhQosdSQ==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/menu": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/menu-surface": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/menu-surface/-/menu-surface-7.0.0-beta.8.tgz", + "integrity": "sha512-VrdxJD1OyXVrho/BYfykc5pwENkPjpFS3nhTuYZLnPQiAPVKzI2JXMfDOCcB5yKwS5DcBnz36ICWngZ93wCXjQ==", + "dev": true, + "requires": { + "@material/animation": "^14.0.0", + "@material/menu-surface": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/notched-outline": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/notched-outline/-/notched-outline-7.0.0-beta.8.tgz", + "integrity": "sha512-L0r3VPPOaPTiWMfLeX+8vy0zyZ80ALa02RWPPQ4KPoboaYU1WZ9+t7mtxsDexA6CZub8I2ZfybanxDJIT+5xBQ==", + "dev": true, + "requires": { + "@material/notched-outline": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/paper": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/paper/-/paper-7.0.0-beta.8.tgz", + "integrity": "sha512-NoOrlU67YUnI19V685MbSzoBV+0AQj2Swj5U6VQIYqW7JRVOk09BQAj45pPXAYWGQUCzzkeXzwD+V5O9J8+PVQ==", + "dev": true, + "requires": { + "@material/elevation": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/shape": "^14.0.0", + "@material/theme": "^14.0.0", + "@material/typography": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/radio": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/radio/-/radio-7.0.0-beta.8.tgz", + "integrity": "sha512-dN7lG+5kuLLXz3Fghl+M+yzCyEsi0tnAzx8oP33wLkj+/frOFL34i5o4sDHaoSrQaBABVt2YZVCRBg5oPtzwLg==", + "dev": true, + "requires": { + "@material/radio": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/ripple": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/ripple/-/ripple-7.0.0-beta.8.tgz", + "integrity": "sha512-f762Wi8ESc6rRDhsmm2WUtEjAmaUB3BlYwMJ9kgOODxIxdk4kaoflUzgJemeLwohsnGfvP+o0cGxR8DM9BE3nA==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/ripple": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/segmented-button": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/segmented-button/-/segmented-button-7.0.0-beta.8.tgz", + "integrity": "sha512-hQEaWQpA6ExhSXjFxTOJ0ZpO222cm/CqgzOIep3W9mtvhN6vKfD57fS82gq09va2V/7ucjevOZym+YYrGWWTNw==", + "dev": true, + "requires": { + "@material/segmented-button": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/select": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/select/-/select-7.0.0-beta.8.tgz", + "integrity": "sha512-3RigAea8A4k3LnDWVBJN6GQQnJsGVraB5FrpW6n4b7CBbVLuia4PBR1ks3YJrKp5UtSJ4eqhWGs4RZuJosKPVw==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/select": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/slider": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/slider/-/slider-7.0.0-beta.8.tgz", + "integrity": "sha512-SkNUeHhk6+JtYZyL5mMRHY8gFZn68MByywGMUgPMLprlkuF33pSrigf4Q8xD63UOYlICCy1U1gzT5Y4p58QQWg==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/slider": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/snackbar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/snackbar/-/snackbar-7.0.0-beta.8.tgz", + "integrity": "sha512-NdlqsWYtgnHDjCXIi/iHVqMHk+93zjZsJLkGZvbVlSSPrQJsYVHKxogYjP301M/n/AjvcLOXFrJL7qXR2PP5MQ==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/snackbar": "^14.0.0", + "@smui/button": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/switch": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/switch/-/switch-7.0.0-beta.8.tgz", + "integrity": "sha512-+S1hh5v9u5sGkl39WormaUrIndPpnYB0v9NCxIg/XVAEn39hryCI9OFXlHq2zyfLiVtjAoWO09l+SnNV78tHyA==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/switch": "^14.0.0", + "@material/theme": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/tab": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab/-/tab-7.0.0-beta.8.tgz", + "integrity": "sha512-v+WKqv4Hv4KzU3unM/xBX3sJOIiB6vatlEze1HKGBAlLLh+kRZOM1NgLh/SPBpPOSNbdZwbGzPZDAFXCT1ZnIw==", + "dev": true, + "requires": { + "@material/tab": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/tab-indicator": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/tab-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-bar/-/tab-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-N0hraNszsVCIBAFxXu9YZhMEn9o85coQ1+BYXdhx4J+11x0dwa+E5qTCntqm6RN9zNK/ZaH9ctNUxhvWMbG4ww==", + "dev": true, + "requires": { + "@material/tab-bar": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/tab": "^7.0.0-beta.8", + "@smui/tab-scroller": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/tab-indicator": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-indicator/-/tab-indicator-7.0.0-beta.8.tgz", + "integrity": "sha512-sj4dH+AwZbgZq1oz/7FzNgA7lKQNobbXyMfSi100Sx27PnXbEEXto0zyafROaNAtjD0h9fzfczPEQEABM9qHwg==", + "dev": true, + "requires": { + "@material/tab-indicator": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/tab-scroller": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tab-scroller/-/tab-scroller-7.0.0-beta.8.tgz", + "integrity": "sha512-LRsnQwIg2UCsBmG57EkRvsL9pv07Lb2O3T8Sdt3a6ackKweOqMWQyir04uAcE3EcjTzsZxM7MGzLLZ8mJr1ACg==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/tab-scroller": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/textfield": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/textfield/-/textfield-7.0.0-beta.8.tgz", + "integrity": "sha512-gTpGFEJCxHMI/fFPkVArX4J9Gq2JnoZ8+XbSZoOMf3tnH62QwfA26B6nFpMIVUmlzH8XFfSTmA2IOVCq54hnug==", + "dev": true, + "requires": { + "@material/dom": "^14.0.0", + "@material/feature-targeting": "^14.0.0", + "@material/ripple": "^14.0.0", + "@material/rtl": "^14.0.0", + "@material/textfield": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/tooltip": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/tooltip/-/tooltip-7.0.0-beta.8.tgz", + "integrity": "sha512-nECLWPBhEcCBtrLe0HWnykrN+VbNzNaFE/NaqTnkOxGR2RPzqlBsbplQvP76fHASZm3oFHiP3Wo4vmMvbmES+g==", + "dev": true, + "requires": { + "@material/tooltip": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/top-app-bar": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/top-app-bar/-/top-app-bar-7.0.0-beta.8.tgz", + "integrity": "sha512-iBbqzVQl90edxmuIZD8V4wzOR/r2inSJwuYIsI8Re3dS8v68Pl86C+4CgH68GZXX1d6K4WTwxgBcMdJ+QJy/GQ==", + "dev": true, + "requires": { + "@material/feature-targeting": "^14.0.0", + "@material/top-app-bar": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" + } + }, + "@smui/touch-target": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@smui/touch-target/-/touch-target-7.0.0-beta.8.tgz", + "integrity": "sha512-/+LGOIWtq37mVZXIZb2RjdrIqgA4PHghr/cIL0SNMzw0lEpVkMg7swXUDQcJ1i9btz6/c2DbVoL0IZgAccvqjQ==", + "dev": true, + "requires": { + "@material/touch-target": "^14.0.0", + "@smui/common": "^7.0.0-beta.8", + "svelte2tsx": "^0.6.10" } }, "@sveltejs/adapter-node": { @@ -3033,6 +5781,12 @@ "ms": "2.1.2" } }, + "dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", + "dev": true + }, "deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -3233,6 +5987,12 @@ "function-bind": "^1.1.1" } }, + "immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -3243,12 +6003,6 @@ "resolve-from": "^4.0.0" } }, - "import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3352,6 +6106,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, "magic-string": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", @@ -3448,10 +6211,20 @@ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.11.tgz", + "integrity": "sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==", "dev": true }, "normalize-path": { @@ -3496,6 +6269,16 @@ "callsites": "^3.0.0" } }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -3728,6 +6511,17 @@ "rimraf": "^2.5.2" } }, + "sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, "set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -3863,6 +6657,56 @@ "dev": true, "requires": {} }, + "svelte-material-ui": { + "version": "7.0.0-beta.8", + "resolved": "https://registry.npmjs.org/svelte-material-ui/-/svelte-material-ui-7.0.0-beta.8.tgz", + "integrity": "sha512-QY/nFIDckTAYrH90HYckWyteWkiOODwK48Ll0dzOAV/gNAmaI1JVkPB2RgAcEifALO3sNhF2guYYjHZmsKe1dQ==", + "dev": true, + "requires": { + "@smui-extra/accordion": "^7.0.0-beta.8", + "@smui-extra/autocomplete": "^7.0.0-beta.8", + "@smui-extra/badge": "^7.0.0-beta.8", + "@smui-extra/bottom-app-bar": "^7.0.0-beta.8", + "@smui/banner": "^7.0.0-beta.8", + "@smui/button": "^7.0.0-beta.8", + "@smui/card": "^7.0.0-beta.8", + "@smui/checkbox": "^7.0.0-beta.8", + "@smui/chips": "^7.0.0-beta.8", + "@smui/circular-progress": "^7.0.0-beta.8", + "@smui/common": "^7.0.0-beta.8", + "@smui/data-table": "^7.0.0-beta.8", + "@smui/dialog": "^7.0.0-beta.8", + "@smui/drawer": "^7.0.0-beta.8", + "@smui/fab": "^7.0.0-beta.8", + "@smui/floating-label": "^7.0.0-beta.8", + "@smui/form-field": "^7.0.0-beta.8", + "@smui/icon-button": "^7.0.0-beta.8", + "@smui/image-list": "^7.0.0-beta.8", + "@smui/layout-grid": "^7.0.0-beta.8", + "@smui/line-ripple": "^7.0.0-beta.8", + "@smui/linear-progress": "^7.0.0-beta.8", + "@smui/list": "^7.0.0-beta.8", + "@smui/menu": "^7.0.0-beta.8", + "@smui/menu-surface": "^7.0.0-beta.8", + "@smui/notched-outline": "^7.0.0-beta.8", + "@smui/paper": "^7.0.0-beta.8", + "@smui/radio": "^7.0.0-beta.8", + "@smui/ripple": "^7.0.0-beta.8", + "@smui/segmented-button": "^7.0.0-beta.8", + "@smui/select": "^7.0.0-beta.8", + "@smui/slider": "^7.0.0-beta.8", + "@smui/snackbar": "^7.0.0-beta.8", + "@smui/switch": "^7.0.0-beta.8", + "@smui/tab": "^7.0.0-beta.8", + "@smui/tab-bar": "^7.0.0-beta.8", + "@smui/tab-indicator": "^7.0.0-beta.8", + "@smui/tab-scroller": "^7.0.0-beta.8", + "@smui/textfield": "^7.0.0-beta.8", + "@smui/tooltip": "^7.0.0-beta.8", + "@smui/top-app-bar": "^7.0.0-beta.8", + "@smui/touch-target": "^7.0.0-beta.8" + } + }, "svelte-preprocess": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.3.tgz", @@ -3876,6 +6720,16 @@ "strip-indent": "^3.0.0" } }, + "svelte2tsx": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.14.tgz", + "integrity": "sha512-Sxo9gtpc3dYWuFQ8fruZG+M+I6OZMIvOxxKjt48Lr8jD6Kr9cNf1Hf/yHUDEgDwQdRbAzn5y0FL9xk8Dx5v9lg==", + "dev": true, + "requires": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + } + }, "tailwindcss": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index f5a4260..b6e5f7c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,13 +10,14 @@ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" }, "devDependencies": { - "@sveltejs/adapter-auto": "^2.0.0", "@sveltejs/adapter-node": "^1.2.4", "@sveltejs/kit": "^1.5.0", "autoprefixer": "^10.4.14", "postcss": "^8.4.23", + "sass": "^1.62.1", "svelte": "^3.54.0", "svelte-check": "^3.0.1", + "svelte-material-ui": "^7.0.0-beta.8", "tailwindcss": "^3.3.2", "tslib": "^2.4.1", "typescript": "^5.0.0", diff --git a/frontend/src/app.css b/frontend/src/app.css index b2a041b..a20b537 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -1,9 +1,12 @@ /* This file imports all styles defined in other files. */ @import "./fonts.css"; + @tailwind base; @tailwind components; @tailwind utilities; +/* Global defaults */ + @layer base { h1, h2, h3, h4, h5, h6 { @apply font-bold text-primary; @@ -48,4 +51,42 @@ button:focus { @apply ring-1 ring-neutral-400 ring-offset-1; } + + table { + @apply border-collapse; + } + + th:first-of-type { + @apply rounded-tl-md; + } + th:last-of-type { + @apply rounded-tr-md; + } + tr:last-of-type td:first-of-type { + @apply rounded-bl-md; + } + tr:last-of-type td:last-of-type { + @apply rounded-br-md; + } + + tr { + @apply hover:bg-secondary-300/50; + @apply border-y border-primary/50; + @apply bg-secondary-100/10; + } + tr:first-of-type, tr:last-of-type { + @apply border-y-0; + } + + th { + @apply bg-primary font-semibold text-secondary-100; + } + caption, th, td { + @apply p-1; + } + @media screen(sm) { + caption, th, td { + @apply p-2 text-start; + } + } } diff --git a/frontend/src/routes/todo/+page.svelte b/frontend/src/routes/todo/+page.svelte deleted file mode 100644 index ac36072..0000000 --- a/frontend/src/routes/todo/+page.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - -
Waiting
-{:then users} -{users}
-{:catch error} -{error}
-{/await} diff --git a/frontend/src/routes/users/+page.svelte b/frontend/src/routes/users/+page.svelte new file mode 100644 index 0000000..a2c72ca --- /dev/null +++ b/frontend/src/routes/users/+page.svelte @@ -0,0 +1,178 @@ + + +Loading...
+{errorMessage}
+ {/each} + {:else} +An unknown error occurred.
+ {/if} + {:else} +ID | +First Name | +Last Name | +Created | +Updated | +|
---|---|---|---|---|---|
{user.id} | +{user.email} | +{user.first_name} | +{user.last_name} | +{new Date(user.created).toLocaleDateString()} | +{new Date(user.updated).toLocaleDateString()} | +