From bc17f10b67ee6d92de35c905d412c79d9e4c9f2f Mon Sep 17 00:00:00 2001 From: "Aamon P. Hoffmann" <aamon.hoffmann@student.uni-halle.de> Date: Wed, 18 Sep 2024 22:41:12 +0200 Subject: [PATCH] migrate to gitlab --- .../chorechef_backend/__init__.py | 0 chorechef_backend/chorechef_backend/asgi.py | 16 + .../chorechef_backend/settings.py | 132 + chorechef_backend/chorechef_backend/urls.py | 24 + chorechef_backend/chorechef_backend/wsgi.py | 16 + chorechef_backend/manage.py | 22 + chorechef_backend/requirements.txt | 4 + chorechef_backend/rest/__init__.py | 0 chorechef_backend/rest/admin.py | 8 + chorechef_backend/rest/apps.py | 6 + .../rest/migrations/0001_initial.py | 20 + .../rest/migrations/0002_chore_meal.py | 33 + .../migrations/0003_alter_meal_meal_image.py | 18 + ...emove_meal_meal_id_alter_meal_meal_date.py | 22 + .../0005_alter_meal_meal_description.py | 18 + .../0006_alter_meal_meal_description.py | 18 + .../rest/migrations/0007_chore_chore_done.py | 18 + .../rest/migrations/0008_chore_chore_user.py | 24 + .../migrations/0009_remove_meal_meal_image.py | 17 + chorechef_backend/rest/migrations/__init__.py | 0 chorechef_backend/rest/models.py | 24 + chorechef_backend/rest/serializers.py | 21 + chorechef_backend/rest/tests.py | 3 + chorechef_backend/rest/urls.py | 12 + chorechef_backend/rest/views.py | 36 + chorechef_frontend/env.d.ts | 1 + chorechef_frontend/index.html | 21 + chorechef_frontend/package-lock.json | 2377 +++++++++++++++++ chorechef_frontend/package.json | 44 + chorechef_frontend/postcss.config.js | 6 + chorechef_frontend/public/favicon.ico | Bin 0 -> 52379 bytes chorechef_frontend/public/favicon.png | Bin 0 -> 89006 bytes chorechef_frontend/src/App.vue | 51 + .../src/assets/icons/arrow-left.svg | 62 + .../src/assets/icons/arrow-right.svg | 62 + chorechef_frontend/src/assets/icons/gear.svg | 66 + chorechef_frontend/src/assets/main.css | 12 + chorechef_frontend/src/components/Chores.vue | 557 ++++ .../src/components/Chores.vue.old | 452 ++++ .../src/components/Dashboard.vue | 5 + .../src/components/DashboardMeals.vue | 54 + .../src/components/DashboardTasks.vue | 46 + .../src/components/Mealplan.vue | 227 ++ .../src/components/Settings.vue | 162 ++ chorechef_frontend/src/main.ts | 18 + chorechef_frontend/src/router/index.ts | 36 + chorechef_frontend/src/views/ChoresView.vue | 7 + .../src/views/DashboardView.vue | 67 + chorechef_frontend/src/views/MealplanView.vue | 7 + .../src/views/MealplanView.vue.old | 198 ++ chorechef_frontend/src/views/SettingsView.vue | 7 + chorechef_frontend/tailwind.config.js | 20 + chorechef_frontend/tsconfig.app.json | 14 + chorechef_frontend/tsconfig.json | 11 + chorechef_frontend/tsconfig.node.json | 19 + chorechef_frontend/vite.config.ts | 16 + startapp.sh | 21 + 57 files changed, 5158 insertions(+) create mode 100644 chorechef_backend/chorechef_backend/__init__.py create mode 100644 chorechef_backend/chorechef_backend/asgi.py create mode 100644 chorechef_backend/chorechef_backend/settings.py create mode 100644 chorechef_backend/chorechef_backend/urls.py create mode 100644 chorechef_backend/chorechef_backend/wsgi.py create mode 100755 chorechef_backend/manage.py create mode 100644 chorechef_backend/requirements.txt create mode 100644 chorechef_backend/rest/__init__.py create mode 100644 chorechef_backend/rest/admin.py create mode 100644 chorechef_backend/rest/apps.py create mode 100644 chorechef_backend/rest/migrations/0001_initial.py create mode 100644 chorechef_backend/rest/migrations/0002_chore_meal.py create mode 100644 chorechef_backend/rest/migrations/0003_alter_meal_meal_image.py create mode 100644 chorechef_backend/rest/migrations/0004_remove_meal_meal_id_alter_meal_meal_date.py create mode 100644 chorechef_backend/rest/migrations/0005_alter_meal_meal_description.py create mode 100644 chorechef_backend/rest/migrations/0006_alter_meal_meal_description.py create mode 100644 chorechef_backend/rest/migrations/0007_chore_chore_done.py create mode 100644 chorechef_backend/rest/migrations/0008_chore_chore_user.py create mode 100644 chorechef_backend/rest/migrations/0009_remove_meal_meal_image.py create mode 100644 chorechef_backend/rest/migrations/__init__.py create mode 100644 chorechef_backend/rest/models.py create mode 100644 chorechef_backend/rest/serializers.py create mode 100644 chorechef_backend/rest/tests.py create mode 100644 chorechef_backend/rest/urls.py create mode 100644 chorechef_backend/rest/views.py create mode 100644 chorechef_frontend/env.d.ts create mode 100644 chorechef_frontend/index.html create mode 100644 chorechef_frontend/package-lock.json create mode 100644 chorechef_frontend/package.json create mode 100644 chorechef_frontend/postcss.config.js create mode 100644 chorechef_frontend/public/favicon.ico create mode 100644 chorechef_frontend/public/favicon.png create mode 100644 chorechef_frontend/src/App.vue create mode 100644 chorechef_frontend/src/assets/icons/arrow-left.svg create mode 100644 chorechef_frontend/src/assets/icons/arrow-right.svg create mode 100644 chorechef_frontend/src/assets/icons/gear.svg create mode 100644 chorechef_frontend/src/assets/main.css create mode 100644 chorechef_frontend/src/components/Chores.vue create mode 100644 chorechef_frontend/src/components/Chores.vue.old create mode 100644 chorechef_frontend/src/components/Dashboard.vue create mode 100644 chorechef_frontend/src/components/DashboardMeals.vue create mode 100644 chorechef_frontend/src/components/DashboardTasks.vue create mode 100644 chorechef_frontend/src/components/Mealplan.vue create mode 100644 chorechef_frontend/src/components/Settings.vue create mode 100644 chorechef_frontend/src/main.ts create mode 100644 chorechef_frontend/src/router/index.ts create mode 100644 chorechef_frontend/src/views/ChoresView.vue create mode 100644 chorechef_frontend/src/views/DashboardView.vue create mode 100644 chorechef_frontend/src/views/MealplanView.vue create mode 100644 chorechef_frontend/src/views/MealplanView.vue.old create mode 100644 chorechef_frontend/src/views/SettingsView.vue create mode 100644 chorechef_frontend/tailwind.config.js create mode 100644 chorechef_frontend/tsconfig.app.json create mode 100644 chorechef_frontend/tsconfig.json create mode 100644 chorechef_frontend/tsconfig.node.json create mode 100644 chorechef_frontend/vite.config.ts create mode 100755 startapp.sh diff --git a/chorechef_backend/chorechef_backend/__init__.py b/chorechef_backend/chorechef_backend/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chorechef_backend/chorechef_backend/asgi.py b/chorechef_backend/chorechef_backend/asgi.py new file mode 100644 index 0000000..ac7570e --- /dev/null +++ b/chorechef_backend/chorechef_backend/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for chorechef_backend project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chorechef_backend.settings") + +application = get_asgi_application() diff --git a/chorechef_backend/chorechef_backend/settings.py b/chorechef_backend/chorechef_backend/settings.py new file mode 100644 index 0000000..172ad7e --- /dev/null +++ b/chorechef_backend/chorechef_backend/settings.py @@ -0,0 +1,132 @@ +""" +Django settings for chorechef_backend project. + +Generated by 'django-admin startproject' using Django 5.1.1. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/5.1/ref/settings/ +""" + +from pathlib import Path + +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = "django-insecure-cz#@s%5xbay(6sxd2d*@f_*89)f+%tcwi*g03zuf8+@k@5u=i0" + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", + "rest_framework", + "rest", + "corsheaders", +] + +MIDDLEWARE = [ + "django.middleware.security.SecurityMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", + "corsheaders.middleware.CorsMiddleware", + "django.middleware.common.CommonMiddleware", +] + +CORS_ALLOWED_ORIGINS = [ + "http://localhost:5173", +] + +ROOT_URLCONF = "chorechef_backend.urls" + +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + ], + }, + }, +] + +WSGI_APPLICATION = "chorechef_backend.wsgi.application" + + +# Database +# https://docs.djangoproject.com/en/5.1/ref/settings/#databases + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": BASE_DIR / "db.sqlite3", + } +} + + +# Password validation +# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", + }, + { + "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/5.1/topics/i18n/ + +LANGUAGE_CODE = "en-us" + +TIME_ZONE = "UTC" + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/5.1/howto/static-files/ + +STATIC_URL = "static/" + +# Default primary key field type +# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/chorechef_backend/chorechef_backend/urls.py b/chorechef_backend/chorechef_backend/urls.py new file mode 100644 index 0000000..b88bf74 --- /dev/null +++ b/chorechef_backend/chorechef_backend/urls.py @@ -0,0 +1,24 @@ +""" +URL configuration for chorechef_backend project. + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/5.1/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" + +from django.contrib import admin +from django.urls import include, path + +urlpatterns = [ + path("admin/", admin.site.urls), + path("", include("rest.urls")), +] diff --git a/chorechef_backend/chorechef_backend/wsgi.py b/chorechef_backend/chorechef_backend/wsgi.py new file mode 100644 index 0000000..d325044 --- /dev/null +++ b/chorechef_backend/chorechef_backend/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for chorechef_backend project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chorechef_backend.settings") + +application = get_wsgi_application() diff --git a/chorechef_backend/manage.py b/chorechef_backend/manage.py new file mode 100755 index 0000000..3b19e5e --- /dev/null +++ b/chorechef_backend/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "chorechef_backend.settings") + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == "__main__": + main() diff --git a/chorechef_backend/requirements.txt b/chorechef_backend/requirements.txt new file mode 100644 index 0000000..e1c394b --- /dev/null +++ b/chorechef_backend/requirements.txt @@ -0,0 +1,4 @@ +django +djangorestframework +pygments +django-cors-headers diff --git a/chorechef_backend/rest/__init__.py b/chorechef_backend/rest/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chorechef_backend/rest/admin.py b/chorechef_backend/rest/admin.py new file mode 100644 index 0000000..2c4a8b6 --- /dev/null +++ b/chorechef_backend/rest/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +# Register your models here. +from .models import Chore, Meal, User + +admin.site.register(User) +admin.site.register(Chore) +admin.site.register(Meal) diff --git a/chorechef_backend/rest/apps.py b/chorechef_backend/rest/apps.py new file mode 100644 index 0000000..576bd5d --- /dev/null +++ b/chorechef_backend/rest/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class RestConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "rest" diff --git a/chorechef_backend/rest/migrations/0001_initial.py b/chorechef_backend/rest/migrations/0001_initial.py new file mode 100644 index 0000000..f4667fc --- /dev/null +++ b/chorechef_backend/rest/migrations/0001_initial.py @@ -0,0 +1,20 @@ +# Generated by Django 5.1.1 on 2024-09-12 12:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="User", + fields=[ + ("user_id", models.AutoField(primary_key=True, serialize=False)), + ("username", models.CharField(max_length=50)), + ], + ), + ] diff --git a/chorechef_backend/rest/migrations/0002_chore_meal.py b/chorechef_backend/rest/migrations/0002_chore_meal.py new file mode 100644 index 0000000..8b108c7 --- /dev/null +++ b/chorechef_backend/rest/migrations/0002_chore_meal.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.1 on 2024-09-12 20:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="Chore", + fields=[ + ("chore_id", models.AutoField(primary_key=True, serialize=False)), + ("chore_name", models.CharField(max_length=50)), + ("chore_date", models.DateField()), + ("chore_frequency", models.IntegerField()), + ("chore_frequency_unit", models.CharField(max_length=50)), + ], + ), + migrations.CreateModel( + name="Meal", + fields=[ + ("meal_id", models.AutoField(primary_key=True, serialize=False)), + ("meal_name", models.CharField(max_length=50)), + ("meal_description", models.CharField(max_length=500)), + ("meal_date", models.DateField()), + ("meal_image", models.ImageField(upload_to="")), + ], + ), + ] diff --git a/chorechef_backend/rest/migrations/0003_alter_meal_meal_image.py b/chorechef_backend/rest/migrations/0003_alter_meal_meal_image.py new file mode 100644 index 0000000..ea88286 --- /dev/null +++ b/chorechef_backend/rest/migrations/0003_alter_meal_meal_image.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.1 on 2024-09-12 20:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0002_chore_meal"), + ] + + operations = [ + migrations.AlterField( + model_name="meal", + name="meal_image", + field=models.ImageField(null=True, upload_to=""), + ), + ] diff --git a/chorechef_backend/rest/migrations/0004_remove_meal_meal_id_alter_meal_meal_date.py b/chorechef_backend/rest/migrations/0004_remove_meal_meal_id_alter_meal_meal_date.py new file mode 100644 index 0000000..bd5db8f --- /dev/null +++ b/chorechef_backend/rest/migrations/0004_remove_meal_meal_id_alter_meal_meal_date.py @@ -0,0 +1,22 @@ +# Generated by Django 5.1.1 on 2024-09-13 15:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0003_alter_meal_meal_image"), + ] + + operations = [ + migrations.RemoveField( + model_name="meal", + name="meal_id", + ), + migrations.AlterField( + model_name="meal", + name="meal_date", + field=models.DateField(primary_key=True, serialize=False), + ), + ] diff --git a/chorechef_backend/rest/migrations/0005_alter_meal_meal_description.py b/chorechef_backend/rest/migrations/0005_alter_meal_meal_description.py new file mode 100644 index 0000000..b421fb4 --- /dev/null +++ b/chorechef_backend/rest/migrations/0005_alter_meal_meal_description.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.1 on 2024-09-13 15:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0004_remove_meal_meal_id_alter_meal_meal_date"), + ] + + operations = [ + migrations.AlterField( + model_name="meal", + name="meal_description", + field=models.CharField(max_length=500, null=True), + ), + ] diff --git a/chorechef_backend/rest/migrations/0006_alter_meal_meal_description.py b/chorechef_backend/rest/migrations/0006_alter_meal_meal_description.py new file mode 100644 index 0000000..d1520d7 --- /dev/null +++ b/chorechef_backend/rest/migrations/0006_alter_meal_meal_description.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.1 on 2024-09-13 15:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0005_alter_meal_meal_description"), + ] + + operations = [ + migrations.AlterField( + model_name="meal", + name="meal_description", + field=models.CharField(blank=True, max_length=500, null=True), + ), + ] diff --git a/chorechef_backend/rest/migrations/0007_chore_chore_done.py b/chorechef_backend/rest/migrations/0007_chore_chore_done.py new file mode 100644 index 0000000..a154ae5 --- /dev/null +++ b/chorechef_backend/rest/migrations/0007_chore_chore_done.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.1 on 2024-09-14 15:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0006_alter_meal_meal_description"), + ] + + operations = [ + migrations.AddField( + model_name="chore", + name="chore_done", + field=models.BooleanField(default=False), + ), + ] diff --git a/chorechef_backend/rest/migrations/0008_chore_chore_user.py b/chorechef_backend/rest/migrations/0008_chore_chore_user.py new file mode 100644 index 0000000..466b90b --- /dev/null +++ b/chorechef_backend/rest/migrations/0008_chore_chore_user.py @@ -0,0 +1,24 @@ +# Generated by Django 5.1.1 on 2024-09-15 17:02 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0007_chore_chore_done"), + ] + + operations = [ + migrations.AddField( + model_name="chore", + name="chore_user", + field=models.ForeignKey( + default=10, + on_delete=django.db.models.deletion.CASCADE, + to="rest.user", + ), + preserve_default=False, + ), + ] diff --git a/chorechef_backend/rest/migrations/0009_remove_meal_meal_image.py b/chorechef_backend/rest/migrations/0009_remove_meal_meal_image.py new file mode 100644 index 0000000..7a91bea --- /dev/null +++ b/chorechef_backend/rest/migrations/0009_remove_meal_meal_image.py @@ -0,0 +1,17 @@ +# Generated by Django 5.1.1 on 2024-09-18 16:25 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("rest", "0008_chore_chore_user"), + ] + + operations = [ + migrations.RemoveField( + model_name="meal", + name="meal_image", + ), + ] diff --git a/chorechef_backend/rest/migrations/__init__.py b/chorechef_backend/rest/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chorechef_backend/rest/models.py b/chorechef_backend/rest/models.py new file mode 100644 index 0000000..c709fac --- /dev/null +++ b/chorechef_backend/rest/models.py @@ -0,0 +1,24 @@ +from django.db import models + +# Create your models here. + + +class User(models.Model): + user_id = models.AutoField(primary_key=True) + username = models.CharField(max_length=50) + + +class Chore(models.Model): + chore_id = models.AutoField(primary_key=True) + chore_name = models.CharField(max_length=50) + chore_date = models.DateField() + chore_frequency = models.IntegerField() + chore_frequency_unit = models.CharField(max_length=50) + chore_done = models.BooleanField(default=False) + chore_user = models.ForeignKey(User, on_delete=models.CASCADE) + + +class Meal(models.Model): + meal_date = models.DateField(primary_key=True) + meal_name = models.CharField(max_length=50) + meal_description = models.CharField(max_length=500, null=True, blank=True) diff --git a/chorechef_backend/rest/serializers.py b/chorechef_backend/rest/serializers.py new file mode 100644 index 0000000..e9f2e06 --- /dev/null +++ b/chorechef_backend/rest/serializers.py @@ -0,0 +1,21 @@ +from rest_framework import serializers + +from .models import Chore, Meal, User + + +class MealSerializer(serializers.ModelSerializer): + class Meta: + model = Meal + fields = "__all__" + + +class ChoreSerializer(serializers.ModelSerializer): + class Meta: + model = Chore + fields = "__all__" + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = "__all__" diff --git a/chorechef_backend/rest/tests.py b/chorechef_backend/rest/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/chorechef_backend/rest/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/chorechef_backend/rest/urls.py b/chorechef_backend/rest/urls.py new file mode 100644 index 0000000..d43a4b0 --- /dev/null +++ b/chorechef_backend/rest/urls.py @@ -0,0 +1,12 @@ +from django.urls import path +from rest import views +from rest_framework.urlpatterns import format_suffix_patterns + +urlpatterns = [ + path("meals/", views.MealList.as_view()), + path("meals/<str:pk>/", views.MealDetail.as_view()), + path("chores/", views.ChoreList.as_view()), + path("chores/<str:pk>/", views.ChoreDetail.as_view()), + path("users/", views.UserList.as_view()), + path("users/<str:pk>/", views.UserDetail.as_view()), +] diff --git a/chorechef_backend/rest/views.py b/chorechef_backend/rest/views.py new file mode 100644 index 0000000..c5ed87b --- /dev/null +++ b/chorechef_backend/rest/views.py @@ -0,0 +1,36 @@ +from rest_framework import generics + +from .models import Chore, Meal, User +from .serializers import ChoreSerializer, MealSerializer, UserSerializer + +# Create your views here. + + +class MealList(generics.ListCreateAPIView): + queryset = Meal.objects.all() + serializer_class = MealSerializer + + +class MealDetail(generics.RetrieveUpdateDestroyAPIView): + queryset = Meal.objects.all() + serializer_class = MealSerializer + + +class ChoreList(generics.ListCreateAPIView): + queryset = Chore.objects.all() + serializer_class = ChoreSerializer + + +class ChoreDetail(generics.RetrieveUpdateDestroyAPIView): + queryset = Chore.objects.all() + serializer_class = ChoreSerializer + + +class UserList(generics.ListCreateAPIView): + queryset = User.objects.all() + serializer_class = UserSerializer + + +class UserDetail(generics.RetrieveUpdateDestroyAPIView): + queryset = User.objects.all() + serializer_class = UserSerializer diff --git a/chorechef_frontend/env.d.ts b/chorechef_frontend/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/chorechef_frontend/env.d.ts @@ -0,0 +1 @@ +/// <reference types="vite/client" /> diff --git a/chorechef_frontend/index.html b/chorechef_frontend/index.html new file mode 100644 index 0000000..af78768 --- /dev/null +++ b/chorechef_frontend/index.html @@ -0,0 +1,21 @@ +<!doctype html> +<html lang="de" class="flex h-full"> + <head> + <meta charset="UTF-8" /> + <link rel="icon" href="/favicon.ico" /> + <link rel="stylesheet" href="https://rsms.me/inter/inter.css" /> + <link rel="preconnect" href="https://fonts.googleapis.com" /> + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> + <link + href="https://fonts.googleapis.com/css2?family=Indie+Flower&display=swap" + rel="stylesheet" + /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>ChoreChef</title> + </head> + <body class="bg-neutral-100 flex flex-col grow"> + <div id="app" class="flex flex-col grow"></div> + <script type="module" src="/src/main.ts"></script> + </body> +</html> diff --git a/chorechef_frontend/package-lock.json b/chorechef_frontend/package-lock.json new file mode 100644 index 0000000..4da8c00 --- /dev/null +++ b/chorechef_frontend/package-lock.json @@ -0,0 +1,2377 @@ +{ + "name": "chorechef", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chorechef", + "version": "0.0.0", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-brands-svg-icons": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@headlessui/vue": "^1.7.23", + "@heroicons/vue": "^2.1.5", + "air-datepicker": "^3.5.3", + "date-fns": "^4.0.0-beta.1", + "moment": "^2.30.1", + "vue": "^3.4.29", + "vue-luxon": "^0.10.0", + "vue-moment": "^4.1.0", + "vue-router": "^4.3.3", + "vue-toastification": "^2.0.0-rc.5" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.9", + "@tsconfig/node20": "^20.1.4", + "@types/node": "^20.14.5", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/tsconfig": "^0.5.1", + "autoprefixer": "^10.4.19", + "npm-run-all2": "^6.2.0", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.7", + "typescript": "~5.4.0", + "vite": "^5.3.1", + "vue-tsc": "^2.0.21" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", + "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", + "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz", + "integrity": "sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz", + "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", + "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", + "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@headlessui/vue": { + "version": "1.7.23", + "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.23.tgz", + "integrity": "sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==", + "license": "MIT", + "dependencies": { + "@tanstack/vue-virtual": "^3.0.0-beta.60" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@heroicons/vue": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.1.5.tgz", + "integrity": "sha512-IpqR72sFqFs55kyKfFS7tN+Ww6odFNeH/7UxycIOrlVYfj4WUGAdzQtLBnJspucSeqWFQsKM0g0YrgU655BEfA==", + "license": "MIT", + "peerDependencies": { + "vue": ">= 3" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", + "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz", + "integrity": "sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.9.tgz", + "integrity": "sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.10.7.tgz", + "integrity": "sha512-ND5dfsU0n9F4gROzwNNDJmg6y8n9pI8YWxtgbfJ5UcNn7Hx+MxEXtXcQ189tS7sh8pmCObgz2qSiyRKTZxT4dg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/vue-virtual": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.10.7.tgz", + "integrity": "sha512-OSK1fkvz4GaBhF80KVmBsJZoMI9ncVaUU//pI8OqTdBnepw467zcuF2Y+Ia1VC0CPYfUEALyS8n4Ar0RI/7ASg==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.10.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.0.0" + } + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", + "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz", + "integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.1.tgz", + "integrity": "sha512-sDckXxlHpMsjRQbAH9WanangrfrblsOd3pNifePs+FOHjJg1jfWq5L/P0PsBRndEt3nmdUnmvieP8ULDeX5AvA==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", + "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.0-alpha.18" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", + "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", + "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.0-alpha.18", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.34.tgz", + "integrity": "sha512-Z0izUf32+wAnQewjHu+pQf1yw00EGOmevl1kE+ljjjMe7oEfpQ+BI3/JNK7yMB4IrUsqLDmPecUrpj3mCP+yJQ==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.34", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.34.tgz", + "integrity": "sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==", + "dependencies": { + "@vue/compiler-core": "3.4.34", + "@vue/shared": "3.4.34" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.34.tgz", + "integrity": "sha512-x6lm0UrM03jjDXTPZgD9Ad8bIVD1ifWNit2EaWQIZB5CULr46+FbLQ5RpK7AXtDHGjx9rmvC7QRCTjsiGkAwRw==", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.34", + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.39", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.34.tgz", + "integrity": "sha512-8TDBcLaTrFm5rnF+Qm4BlliaopJgqJ28Nsrc80qazynm5aJO+Emu7y0RWw34L8dNnTRdcVBpWzJxhGYzsoVu4g==", + "dependencies": { + "@vue/compiler-dom": "3.4.34", + "@vue/shared": "3.4.34" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==" + }, + "node_modules/@vue/language-core": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz", + "integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.0-alpha.18", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.34.tgz", + "integrity": "sha512-ua+Lo+wBRlBEX9TtgPOShE2JwIO7p6BTZ7t1KZVPoaBRfqbC7N3c8Mpzicx173fXxx5VXeU6ykiHo7WgLzJQDA==", + "dependencies": { + "@vue/shared": "3.4.34" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.34.tgz", + "integrity": "sha512-PXhkiRPwcPGJ1BnyBZFI96GfInCVskd0HPNIAZn7i3YOmLbtbTZpB7/kDTwC1W7IqdGPkTVC63IS7J2nZs4Ebg==", + "dependencies": { + "@vue/reactivity": "3.4.34", + "@vue/shared": "3.4.34" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.34.tgz", + "integrity": "sha512-dXqIe+RqFAK2Euak4UsvbIupalrhc67OuQKpD7HJ3W2fv8jlqvI7szfBCsAEcE8o/wyNpkloxB6J8viuF/E3gw==", + "dependencies": { + "@vue/reactivity": "3.4.34", + "@vue/runtime-core": "3.4.34", + "@vue/shared": "3.4.34", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.34.tgz", + "integrity": "sha512-GeyEUfMVRZMD/mZcNONEqg7MiU10QQ1DB3O/Qr6+8uXpbwdlmVgQ5Qs1/ZUAFX1X2UUtqMoGrDRbxdWfOJFT7Q==", + "dependencies": { + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34" + }, + "peerDependencies": { + "vue": "3.4.34" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.34.tgz", + "integrity": "sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz", + "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==", + "dev": true + }, + "node_modules/air-datepicker": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/air-datepicker/-/air-datepicker-3.5.3.tgz", + "integrity": "sha512-Elf9gLhv/jidN1+TfeRJYMQRUfYx5apXw2dY5DuAMPRnNtQ4Iw9fTTJK772osmXSUB9xQ2Y8Q1Pt6pgBOQLPQw==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/date-fns": { + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.0.0-beta.1.tgz", + "integrity": "sha512-EjMXEgaR2r/Ff8aLwg8OtPnMq3caEANXuYVDz3F7UnL0f/sjeQW+mwQAS2iwziipMSi7kqc9tdfBmGAefhrY+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz", + "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/luxon": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", + "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "license": "MIT", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-all2": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz", + "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-package-json-fast": "^3.0.2", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || ^16.13.0 || >=18.0.0", + "npm": ">= 8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.1.tgz", + "integrity": "sha512-K5vziVlg7hTpYfFBI+91zHBEMo6jafYXpkMlqZjg7/zhIG9iHqazBf4xz9AVdjS9BruRn280ROqLI7G3OFRIlw==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.19.1", + "@rollup/rollup-android-arm64": "4.19.1", + "@rollup/rollup-darwin-arm64": "4.19.1", + "@rollup/rollup-darwin-x64": "4.19.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.1", + "@rollup/rollup-linux-arm-musleabihf": "4.19.1", + "@rollup/rollup-linux-arm64-gnu": "4.19.1", + "@rollup/rollup-linux-arm64-musl": "4.19.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.1", + "@rollup/rollup-linux-riscv64-gnu": "4.19.1", + "@rollup/rollup-linux-s390x-gnu": "4.19.1", + "@rollup/rollup-linux-x64-gnu": "4.19.1", + "@rollup/rollup-linux-x64-musl": "4.19.1", + "@rollup/rollup-win32-arm64-msvc": "4.19.1", + "@rollup/rollup-win32-ia32-msvc": "4.19.1", + "@rollup/rollup-win32-x64-msvc": "4.19.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.7.tgz", + "integrity": "sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vue": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.34.tgz", + "integrity": "sha512-VZze05HWlA3ItreQ/ka7Sx7PoD0/3St8FEiSlSTVgb6l4hL+RjtP2/8g5WQBzZgyf8WG2f+g1bXzC7zggLhAJA==", + "dependencies": { + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-sfc": "3.4.34", + "@vue/runtime-dom": "3.4.34", + "@vue/server-renderer": "3.4.34", + "@vue/shared": "3.4.34" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-luxon": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/vue-luxon/-/vue-luxon-0.10.0.tgz", + "integrity": "sha512-edMqK3qfWNze9z7Upbkb6RSI5XFFwaU3LwD6ZPJJPBhinTg1VBH7Rn8qNi5+5GmHMcbp2ybnOWm78m5lTjznFw==", + "license": "MIT", + "dependencies": { + "luxon": "^1.25.0" + } + }, + "node_modules/vue-moment": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vue-moment/-/vue-moment-4.1.0.tgz", + "integrity": "sha512-Gzisqpg82ItlrUyiD9d0Kfru+JorW2o4mQOH06lEDZNgxci0tv/fua1Hl0bo4DozDV2JK1r52Atn/8QVCu8qQw==", + "license": "MIT", + "dependencies": { + "moment": "^2.19.2" + }, + "peerDependencies": { + "vue": ">=1.x.x" + } + }, + "node_modules/vue-router": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.0.tgz", + "integrity": "sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==", + "dependencies": { + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-toastification": { + "version": "2.0.0-rc.5", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", + "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.2" + } + }, + "node_modules/vue-tsc": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz", + "integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.0-alpha.18", + "@vue/language-core": "2.0.29", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/chorechef_frontend/package.json b/chorechef_frontend/package.json new file mode 100644 index 0000000..dd4d58a --- /dev/null +++ b/chorechef_frontend/package.json @@ -0,0 +1,44 @@ +{ + "name": "chorechef", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "build-only": "vite build", + "type-check": "vue-tsc --build --force" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-brands-svg-icons": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@headlessui/vue": "^1.7.23", + "@heroicons/vue": "^2.1.5", + "air-datepicker": "^3.5.3", + "date-fns": "^4.0.0-beta.1", + "moment": "^2.30.1", + "vue": "^3.4.29", + "vue-luxon": "^0.10.0", + "vue-moment": "^4.1.0", + "vue-router": "^4.3.3", + "vue-toastification": "^2.0.0-rc.5" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.9", + "@tsconfig/node20": "^20.1.4", + "@types/node": "^20.14.5", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/tsconfig": "^0.5.1", + "autoprefixer": "^10.4.19", + "npm-run-all2": "^6.2.0", + "postcss": "^8.4.40", + "tailwindcss": "^3.4.7", + "typescript": "~5.4.0", + "vite": "^5.3.1", + "vue-tsc": "^2.0.21" + } +} diff --git a/chorechef_frontend/postcss.config.js b/chorechef_frontend/postcss.config.js new file mode 100644 index 0000000..2aa7205 --- /dev/null +++ b/chorechef_frontend/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/chorechef_frontend/public/favicon.ico b/chorechef_frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5ea54d7a9ad90c4b613d53051d5c0f0bdbd1e2e4 GIT binary patch literal 52379 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ℑ+6ZfJk!5)v{Ccr_7w!E0 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 Y{^b4dbMQzk0|Nttr>mdKI;Vst0M}#T-2eap literal 0 HcmV?d00001 diff --git a/chorechef_frontend/public/favicon.png b/chorechef_frontend/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..24bfbd7f547d533b80d9471ecdce02295711230b GIT binary patch literal 89006 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 E09RjV^Z)<= literal 0 HcmV?d00001 diff --git a/chorechef_frontend/src/App.vue b/chorechef_frontend/src/App.vue new file mode 100644 index 0000000..0c2c08d --- /dev/null +++ b/chorechef_frontend/src/App.vue @@ -0,0 +1,51 @@ +<script setup lang="ts"> +import { RouterLink, RouterView } from "vue-router"; +import Dashboard from "./components/Dashboard.vue"; +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { faCog } from "@fortawesome/free-solid-svg-icons"; +</script> + +<template> + <header> + <div class="wrapper flex flex-row bg-neutral-200"> + <Dashboard /> + + <nav class="flex flex-row items-center grow gap-8 pl-8"> + <RouterLink + to="/" + class="flex items-center p-2 rounded-xl hover:cursor-pointer hover:text-neutral-700 hover:drop-shadow-lg transition" + >Dashboard</RouterLink + > + <RouterLink + to="/mealplan" + class="flex items-center p-2 rounded-xl hover:cursor-pointer hover:text-neutral-700 hover:drop-shadow-lg transition" + >Essensplan</RouterLink + > + <RouterLink + to="/chores" + class="flex items-center p-2 rounded-xl hover:cursor-pointer hover:text-neutral-700 hover:drop-shadow-lg transition" + >Aufgaben</RouterLink + > + </nav> + <div class="filler"></div> + <RouterLink + to="/settings" + class="flex items-center px-2 my-2 mr-8 rounded-xl hover:cursor-pointer hover:text-neutral-700 hover:drop-shadow-lg transition" + > + <div class="text-2xl items-center"> + <FontAwesomeIcon :icon="faCog" /> + </div> + </RouterLink> + </div> + </header> + <RouterView /> +</template> +<style lang="css"> +.router-link-exact-active { + font-weight: bold; + background-color: #d1d5db; + box-shadow: + 0 20px 25px -5px rgb(0 0 0 / 0.1), + 0 8px 10px -6px rgb(0 0 0 / 0.1); +} +</style> diff --git a/chorechef_frontend/src/assets/icons/arrow-left.svg b/chorechef_frontend/src/assets/icons/arrow-left.svg new file mode 100644 index 0000000..a646d1c --- /dev/null +++ b/chorechef_frontend/src/assets/icons/arrow-left.svg @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="512" + height="512" + viewBox="0 0 512 512" + version="1.1" + id="svg1" + sodipodi:docname="arrow-left.svg" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#999999" + borderopacity="1" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="px" + inkscape:zoom="0.70710678" + inkscape:cx="135.7645" + inkscape:cy="0.70710678" + inkscape:window-width="1368" + inkscape:window-height="843" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + id="path1" + style="fill:#000000;stroke:#000000" + cx="2625.9294" + cy="205.98904" + r="2.8478267" /> + <circle + id="path4" + style="fill:#000000;stroke:#000000" + cx="2289.0151" + cy="-92.03437" + r="2.8478267" /> + <path + id="path6" + style="fill:#000000" + d="m 481.17559,42.546875 c 0.10678,0.0025 0.2139,0.0079 0.32031,0.01758 0.23486,0.02139 0.4312,0.06746 0.66211,0.113281 0.25881,0.05896 0.5108,0.136444 0.75977,0.22461 0.008,0.004 0.0157,0.0077 0.0234,0.01172 0.21093,0.141159 0.41991,0.285522 0.62695,0.431641 0.76867,2.738626 1.25985,4.700927 1.58594,6.8125 0.007,0.297067 0.0157,0.593558 0.0273,0.890625 0.015,0.505097 0.038,1.010969 0.0645,1.515625 0.0349,0.540312 0.0502,1.08155 0.0977,1.621094 0.0278,0.413725 0.0598,0.827484 0.0996,1.240234 0.0134,0.410002 0.0253,0.82025 0.0312,1.230469 0.008,0.327728 0.0366,0.654838 0.041,0.982422 0.0245,0.175436 0.0171,0.285218 0.10937,0.302734 3e-4,0.02083 0.002,0.04167 0.002,0.0625 0.031,0.292497 0.0505,0.585039 0.0645,0.878906 0.0133,0.306546 0.0234,0.613357 0.0391,0.919922 0.005,0.155752 0.0219,0.310772 0.041,0.464844 -0.0117,1.076553 -0.0407,2.154099 0.0625,3.22461 0.43494,4.510045 1.586,8.931409 2.02149,13.441406 0.5331,5.520915 0.56309,11.079704 0.88085,16.617187 0.40418,7.043215 0.85693,14.083205 1.28516,21.124995 0.32731,8.60911 1.04569,17.21298 0.98242,25.82813 -0.0533,7.25913 -2.65105,46.802 -3.11133,53.65625 -4.49447,66.92986 0.61264,-9.60712 -4.56835,58.63476 -0.78366,10.322 -1.3783,20.65765 -2.06836,30.98633 -0.92891,10.12176 -1.86735,20.24263 -2.78711,30.36523 -0.88138,9.70005 -1.64031,19.41066 -2.61719,29.10157 -1.99373,19.77839 -3.65741,32.32055 -6.30469,51.75976 -0.95708,7.028 -1.78085,14.07702 -2.96484,21.07031 -0.93437,5.51892 -2.25727,10.96501 -3.38672,16.44727 -1.89626,9.99363 -3.12564,14.04167 -3.375,23.92188 -0.2379,9.4262 1.3315,18.79448 1.94726,28.16796 0.15865,2.41501 0.14015,4.83864 0.21094,7.25782 -0.11813,1.96906 0.052,3.97768 -0.35351,5.9082 -0.56513,2.69048 -2.6512,6.65825 -6.20508,6.5 -2.71964,-0.12111 -5.21096,-1.71024 -7.57032,-3.06836 -4.38133,-2.52205 -13.01734,-10.6612 -16.17773,-13.48047 -3.07815,-3.27348 -6.02962,-6.67062 -9.23438,-9.82031 -3.71423,-3.65045 -7.63623,-7.08324 -11.50781,-10.56641 -7.5234,-6.76863 -18.67988,-16.69057 -26.79492,-22.62695 -7.01174,-5.12928 -27.86904,-18.2894 -34.95703,-22.81836 -16.9684,-10.26397 -20.49321,-12.59268 -37.83789,-22.28906 -6.33578,-3.54196 -12.7966,-6.85706 -19.125,-10.41211 -9.24181,-5.19166 -22.64578,-13.6634 -32.51172,-18.01172 -6.49513,-2.86267 -13.29546,-4.97357 -19.94336,-7.46094 -10.80441,-5.09688 -25.72186,-12.36939 -36.86523,-16.67773 -7.18641,-2.77847 -14.55987,-5.04538 -21.83985,-7.56836 -7.32703,-2.81296 -14.68748,-5.53931 -21.98047,-8.43945 -15.80201,-6.284 -22.89994,-9.50162 -38.125,-16.11914 -8.36708,-4.63523 -17.77715,-7.17347 -26.191397,-11.72071 -1.49931,-0.81026 -2.51814,-2.3366 -3.99024,-3.19531 -2.0323,-1.18549 -4.30141,-1.90661 -6.43945,-2.88867 -5.0955,-2.3405 -4.75793,-2.25478 -9.88867,-4.95703 -0.67137,-1.11627 -1.83321,-2.05761 -2.01367,-3.34766 -0.71709,-5.12629 3.53902,-9.04049 6.66015,-12.30078 3.9962,-4.17438 7.1673,-7.17015 11.41406,-11.30274 11.562597,-9.41896 23.888167,-17.8272 37.119137,-24.72851 3.61782,-1.88706 7.3382,-3.57292 10.99805,-5.37695 3.95046,-1.9473 7.88928,-3.91804 11.83399,-5.87696 13.85228,-6.87939 27.59737,-13.97398 41.51562,-20.7207 5.92737,-2.87324 23.13726,-10.8227 28.9707,-14.12109 5.10466,-2.88634 9.93223,-6.23707 14.89844,-9.35547 23.61785,-16.82416 48.47588,-31.8934 73.86914,-45.875 11.6464,-6.41258 23.45552,-12.52827 35.17578,-18.80469 21.55947,-10.48441 41.57921,-23.690781 61.82222,-36.437501 15.63016,-9.842083 16.08347,-10.015342 31.7168,-19.447265 9.48522,-4.607574 17.71173,-11.544141 27.16797,-16.210938 2.63469,-1.300255 5.4269,-2.237362 8.20898,-3.199218 0.006,-0.0149 0.0119,-0.03404 0.0176,-0.04883 0.0409,-0.01192 0.0818,-0.02442 0.12305,-0.03516 0.29068,-0.07691 0.57807,-0.162751 0.86914,-0.238281 0.39072,-0.09743 0.78412,-0.189842 1.16992,-0.306641 0.44929,-0.115 0.90183,-0.224939 1.32031,-0.43164 0.3797,-0.191982 0.74414,-0.412686 1.09571,-0.652344 0.31464,-0.214747 0.61698,-0.446502 0.9375,-0.652344 0.0549,-0.0268 0.11255,-0.04546 0.16797,-0.07031 0.23882,-0.02127 0.47737,-0.04059 0.71679,-0.05469 0.31952,-0.0069 0.64058,-0.02518 0.96094,-0.01758 z m -14.54492,35.964844 c -3.65087,2.918638 -7.52891,5.990737 -9.33789,7.433593 -15.00823,10.760744 -15.54272,11.600186 -31.60352,21.226568 -20.64752,12.37543 -42.41225,22.91211 -62.16406,36.77539 -36.04918,22.69648 -71.56888,46.70177 -110.56836,64.16406 -5.70349,2.69221 -11.44483,5.30707 -17.11133,8.07617 -15.42875,7.53961 -13.75597,7.46335 -29.45899,14.45117 -9.99878,4.44948 -20.2682,8.41917 -30.53906,12.18945 -4.58751,1.68404 -9.21492,3.25966 -13.82226,4.88868 -4.04834,1.46474 -8.14081,2.80995 -12.14454,4.39258 -17.00003,6.7199 -32.82668,16.00976 -48.39648,25.49023 -3.925606,1.91783 -10.259516,4.99777 -14.466796,7.09766 1.27244,-0.007 2.5461,-0.0396 3.81446,0.0508 15.232166,1.08501 30.287756,3.64053 45.054676,7.54297 18.62714,5.44973 22.73846,6.21799 41.29688,13.51757 27.55514,10.83829 15.75534,7.10574 42.14844,19.49024 6.51651,3.05779 30.96703,13.34 37.58789,16.14453 6.12184,3.35421 12.09407,6.99653 18.36523,10.0625 11.80393,5.77088 24.38991,9.83895 36.21875,15.55859 6.76193,3.26965 13.33874,6.91309 19.89258,10.58203 18.83162,10.54228 20.86113,12.34426 38.88867,24.21094 5.99972,4.48937 12.17979,8.74455 17.99805,13.4668 5.47414,4.44295 10.65317,9.24316 15.85156,14.00586 9.80299,8.98128 17.24612,16.11523 25.64453,26.37304 3.39484,4.14647 6.4258,8.57735 9.54688,12.9336 2.06422,2.8812 4.04278,5.82375 6.04296,8.75 -2.35507,-15.57309 -2.06338,-31.4689 -4.52148,-47.04688 -0.60038,-5.66986 -1.40211,-11.32216 -1.80078,-17.00976 -0.502,-7.16169 -0.64633,-14.3447 -0.89844,-21.51953 -0.6393,-18.19439 -1.12921,-34.23186 -0.73242,-52.52344 0.49623,-22.87524 1.78976,-37.32595 3.39258,-60.25195 3.33773,-26.81815 4.18534,-33.63693 7.47461,-60.03711 1.15241,-9.24939 2.42343,-18.48484 3.45898,-27.74805 0.97994,-8.7658 1.79055,-17.54969 2.58789,-26.33398 0.78636,-8.66343 1.10375,-17.37369 2.16407,-26.00782 1.0344,-8.4231 2.74333,-16.74828 4.11523,-25.12304 1.2217,-6.87597 2.48914,-13.74484 3.66407,-20.62891 0.83179,-4.873651 1.45979,-9.783689 2.35742,-14.644531 z" /> + <path + style="fill:#000000" + d="m 466.21349,77.679688 c 5.20187,3.266294 0.40472,10.30491 0.70984,15.16384 -4.52616,26.307312 -8.98424,52.510992 -10.6439,79.182892 -6.02047,61.00092 -16.90491,121.71299 -16.05032,183.16499 -0.0707,32.01085 1.76424,63.72639 5.3803,95.45782 0.19064,8.28992 2.17452,16.74153 1.73493,24.89765 -4.12225,5.13687 -8.40113,-2.5937 -10.62304,-5.66993 -36.78337,-50.60618 -91.53232,-85.20998 -148.31897,-109.71176 -19.99215,-8.48238 -38.77654,-19.53839 -59.02156,-27.48768 -26.17033,-12.1058 -51.9659,-25.37614 -79.81442,-33.34183 -19.62906,-6.10616 -39.76062,-10.17528 -60.292315,-12.0349 -6.61742,-3.02435 0.93093,-8.03122 4.87305,-9.05859 23.304125,-13.34361 46.595565,-27.23772 72.460835,-35.1084 34.61369,-11.66592 66.83499,-29.11373 99.85947,-44.71582 51.92433,-26.01609 98.58566,-61.51214 149.74567,-89.10991 16.79933,-9.13242 32.03337,-20.744986 47.79144,-31.442826 0.70223,-0.391313 1.45377,-0.230392 2.20899,-0.185546 z" + id="path9" /> + </g> +</svg> diff --git a/chorechef_frontend/src/assets/icons/arrow-right.svg b/chorechef_frontend/src/assets/icons/arrow-right.svg new file mode 100644 index 0000000..496c806 --- /dev/null +++ b/chorechef_frontend/src/assets/icons/arrow-right.svg @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="512" + height="512" + viewBox="0 0 512 512" + version="1.1" + id="svg1" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + sodipodi:docname="arrow_back.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#999999" + borderopacity="1" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="px" + inkscape:zoom="0.5" + inkscape:cx="67" + inkscape:cy="69" + inkscape:window-width="1368" + inkscape:window-height="843" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + id="path1" + style="fill:#000000;stroke:#000000" + cx="2625.9294" + cy="205.98904" + r="2.8478267" /> + <circle + id="path4" + style="fill:#000000;stroke:#000000" + cx="2289.0151" + cy="-92.03437" + r="2.8478267" /> + <path + id="path6" + style="fill:#000000" + d="m 74.177734,42.546875 c -0.106785,0.0025 -0.213905,0.0079 -0.320312,0.01758 -0.234863,0.02139 -0.431203,0.06746 -0.66211,0.113281 -0.25881,0.05896 -0.510795,0.136444 -0.759765,0.22461 -0.0077,0.004 -0.0157,0.0077 -0.02344,0.01172 -0.210936,0.141159 -0.419918,0.285522 -0.626953,0.431641 -0.768669,2.738626 -1.259854,4.700927 -1.585937,6.8125 -0.0075,0.297067 -0.01573,0.593558 -0.02734,0.890625 -0.01497,0.505097 -0.03801,1.010969 -0.06445,1.515625 -0.03493,0.540312 -0.05017,1.08155 -0.09766,1.621094 -0.02782,0.413725 -0.05983,0.827484 -0.09961,1.240234 -0.01339,0.410002 -0.02528,0.82025 -0.03125,1.230469 -0.0078,0.327728 -0.0366,0.654838 -0.04102,0.982422 -0.02454,0.175436 -0.01713,0.285218 -0.109375,0.302734 -3.03e-4,0.02083 -0.0017,0.04167 -0.002,0.0625 -0.03101,0.292497 -0.05045,0.585039 -0.06445,0.878906 -0.01329,0.306546 -0.0234,0.613357 -0.03906,0.919922 -0.0053,0.155752 -0.02191,0.310772 -0.04102,0.464844 0.01166,1.076553 0.04074,2.154099 -0.0625,3.22461 -0.434942,4.510045 -1.585998,8.931409 -2.021484,13.441406 -0.533106,5.520915 -0.563097,11.079704 -0.880859,16.617187 -0.404173,7.043219 -0.856929,14.083209 -1.285157,21.124999 -0.327304,8.60911 -1.045684,17.21298 -0.982422,25.82813 0.0533,7.25913 2.651053,46.802 3.111329,53.65625 4.494475,66.92986 -0.612639,-9.60712 4.568359,58.63476 0.783656,10.322 1.378293,20.65765 2.068359,30.98633 0.928909,10.12176 1.867347,20.24263 2.78711,30.36523 0.881372,9.70005 1.640309,19.41066 2.617187,29.10157 1.993732,19.77839 3.657405,32.32055 6.304688,51.75976 0.957085,7.028 1.780851,14.07702 2.964843,21.07031 0.934369,5.51892 2.257273,10.96501 3.386719,16.44727 1.89626,9.99363 3.12564,14.04167 3.375,23.92188 0.237903,9.4262 -1.331502,18.79448 -1.947265,28.16796 -0.158647,2.41501 -0.140142,4.83864 -0.210938,7.25782 0.118132,1.96906 -0.05198,3.97768 0.353516,5.9082 0.565123,2.69048 2.651197,6.65825 6.205078,6.5 2.719636,-0.12111 5.210956,-1.71024 7.570316,-3.06836 4.38133,-2.52205 13.01734,-10.6612 16.17773,-13.48047 3.07815,-3.27348 6.02962,-6.67062 9.23438,-9.82031 3.71423,-3.65045 7.63623,-7.08324 11.50781,-10.56641 7.5234,-6.76863 18.67988,-16.69057 26.79492,-22.62695 7.01174,-5.12928 27.86904,-18.2894 34.95703,-22.81836 16.9684,-10.26397 20.49321,-12.59268 37.83789,-22.28906 6.33578,-3.54196 12.7966,-6.85706 19.125,-10.41211 9.24181,-5.19166 22.64578,-13.6634 32.51172,-18.01172 6.49513,-2.86267 13.29546,-4.97357 19.94336,-7.46094 10.80441,-5.09688 25.72186,-12.36939 36.86523,-16.67773 7.18641,-2.77847 14.55987,-5.04538 21.83985,-7.56836 7.32703,-2.81296 14.68748,-5.53931 21.98047,-8.43945 15.80201,-6.284 22.89994,-9.50162 38.125,-16.11914 8.36708,-4.63523 17.77715,-7.17347 26.1914,-11.72071 1.49931,-0.81026 2.51814,-2.3366 3.99024,-3.19531 2.0323,-1.18549 4.30141,-1.90661 6.43945,-2.88867 5.0955,-2.3405 4.75793,-2.25478 9.88867,-4.95703 0.67137,-1.11627 1.83321,-2.05761 2.01367,-3.34766 0.71709,-5.12629 -3.53902,-9.04049 -6.66015,-12.30078 -3.9962,-4.17438 -7.1673,-7.17015 -11.41406,-11.30274 -11.5626,-9.41896 -23.88817,-17.8272 -37.11914,-24.72851 -3.61782,-1.88706 -7.3382,-3.57292 -10.99805,-5.37695 -3.95046,-1.9473 -7.88928,-3.91804 -11.83399,-5.87696 -13.85228,-6.87939 -27.59737,-13.97398 -41.51562,-20.7207 -5.92737,-2.87324 -23.13726,-10.8227 -28.9707,-14.12109 -5.10466,-2.88634 -9.93223,-6.23707 -14.89844,-9.35547 -23.61785,-16.82416 -48.47588,-31.8934 -73.86914,-45.875 -11.6464,-6.41258 -23.45552,-12.52827 -35.17578,-18.80469 C 188.91314,109.8652 168.8934,96.658829 148.65039,83.912109 133.02023,74.070026 132.56692,73.896767 116.93359,64.464844 107.44837,59.85727 99.221862,52.920703 89.765625,48.253906 c -2.634688,-1.300255 -5.426904,-2.237362 -8.208984,-3.199218 -0.0057,-0.0149 -0.01194,-0.03404 -0.01758,-0.04883 -0.04089,-0.01192 -0.08179,-0.02442 -0.123046,-0.03516 -0.290686,-0.07691 -0.57807,-0.162751 -0.869141,-0.238281 -0.390724,-0.09743 -0.784121,-0.189842 -1.169922,-0.306641 -0.449287,-0.115 -0.90183,-0.224939 -1.320312,-0.43164 -0.379696,-0.191982 -0.744138,-0.412686 -1.095703,-0.652344 -0.314646,-0.214747 -0.616986,-0.446502 -0.9375,-0.652344 -0.05485,-0.0268 -0.11255,-0.04546 -0.167969,-0.07031 -0.238822,-0.02127 -0.477371,-0.04059 -0.716797,-0.05469 -0.319518,-0.0069 -0.640582,-0.02518 -0.960938,-0.01758 z m 14.544922,35.964844 c 3.650864,2.918638 7.528904,5.990737 9.337891,7.433593 15.008223,10.760744 15.542713,11.600186 31.603513,21.226568 20.64752,12.37543 42.41225,22.91211 62.16406,36.77539 36.04918,22.69648 71.56888,46.70177 110.56836,64.16406 5.70349,2.69221 11.44483,5.30707 17.11133,8.07617 15.42875,7.53961 13.75597,7.46335 29.45899,14.45117 9.99878,4.44948 20.2682,8.41917 30.53906,12.18945 4.58751,1.68404 9.21492,3.25966 13.82226,4.88868 4.04834,1.46474 8.14081,2.80995 12.14454,4.39258 17.00003,6.7199 32.82668,16.00976 48.39648,25.49023 3.92561,1.91783 10.25952,4.99777 14.4668,7.09766 -1.27244,-0.007 -2.5461,-0.0396 -3.81446,0.0508 -15.23217,1.08501 -30.28776,3.64053 -45.05468,7.54297 -18.62714,5.44973 -22.73846,6.21799 -41.29688,13.51757 -27.55514,10.83829 -15.75534,7.10574 -42.14844,19.49024 -6.51651,3.05779 -30.96703,13.34 -37.58789,16.14453 -6.12184,3.35421 -12.09407,6.99653 -18.36523,10.0625 -11.80393,5.77088 -24.38991,9.83895 -36.21875,15.55859 -6.76193,3.26965 -13.33874,6.91309 -19.89258,10.58203 -18.83162,10.54228 -20.86113,12.34426 -38.88867,24.21094 -5.99972,4.48937 -12.17979,8.74455 -17.99805,13.4668 -5.47414,4.44295 -10.65317,9.24316 -15.85156,14.00586 -9.80299,8.98128 -17.24612,16.11523 -25.64453,26.37304 -3.39484,4.14647 -6.4258,8.57735 -9.54688,12.9336 -2.06422,2.8812 -4.04278,5.82375 -6.04296,8.75 2.35507,-15.57309 2.06338,-31.4689 4.52148,-47.04688 0.60038,-5.66986 1.40211,-11.32216 1.80078,-17.00976 0.502,-7.16169 0.64633,-14.3447 0.89844,-21.51953 0.6393,-18.19439 1.12921,-34.23186 0.73242,-52.52344 -0.49623,-22.87524 -1.78976,-37.32595 -3.39258,-60.25195 -3.33773,-26.81815 -4.18534,-33.63693 -7.47461,-60.03711 -1.15241,-9.24939 -2.42343,-18.48484 -3.45898,-27.74805 -0.97994,-8.7658 -1.79055,-17.54969 -2.58789,-26.33398 -0.78636,-8.66343 -1.103748,-17.37369 -2.164065,-26.00782 -1.034404,-8.4231 -2.743333,-16.74828 -4.115234,-25.12304 -1.2217,-6.87597 -2.489141,-13.74484 -3.664063,-20.62891 -0.831796,-4.873651 -1.459794,-9.783689 -2.357422,-14.644531 z" /> + <path + style="fill:#000000" + d="m 89.091797,77.679688 c -5.20187,3.266294 -0.404727,10.30491 -0.709843,15.16384 4.526161,26.307312 8.984239,52.510992 10.643902,79.182892 6.020464,61.00092 16.904904,121.71299 16.050314,183.16499 0.0707,32.01085 -1.76424,63.72639 -5.3803,95.45782 -0.19064,8.28992 -2.17452,16.74153 -1.73493,24.89765 4.12225,5.13687 8.40113,-2.5937 10.62304,-5.66993 36.78337,-50.60618 91.53232,-85.20998 148.31897,-109.71176 19.99215,-8.48238 38.77654,-19.53839 59.02156,-27.48768 26.17033,-12.1058 51.9659,-25.37614 79.81442,-33.34183 19.62906,-6.10616 39.76062,-10.17528 60.29232,-12.0349 6.61742,-3.02435 -0.93093,-8.03122 -4.87305,-9.05859 -23.30413,-13.34361 -46.59557,-27.23772 -72.46084,-35.1084 -34.61369,-11.66592 -66.83499,-29.11373 -99.85947,-44.71582 -51.92433,-26.01609 -98.58566,-61.51214 -149.74567,-89.10991 -16.79933,-9.13242 -32.03337,-20.744986 -47.791439,-31.442826 -0.702227,-0.391313 -1.45377,-0.230392 -2.208984,-0.185546 z" + id="path9" /> + </g> +</svg> diff --git a/chorechef_frontend/src/assets/icons/gear.svg b/chorechef_frontend/src/assets/icons/gear.svg new file mode 100644 index 0000000..1c91b3a --- /dev/null +++ b/chorechef_frontend/src/assets/icons/gear.svg @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="512" + height="512" + viewBox="0 0 512 512" + version="1.1" + id="svg1" + sodipodi:docname="gear.svg" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#999999" + borderopacity="1" + inkscape:showpageshadow="2" + inkscape:pageopacity="0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="px" + inkscape:zoom="1.1503906" + inkscape:cx="246.87267" + inkscape:cy="255.13073" + inkscape:window-width="1368" + inkscape:window-height="843" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" /> + <defs + id="defs1" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + id="path1" + style="fill:#000000;stroke:#000000" + cx="2072.7852" + cy="207.6427" + r="2.8478267" /> + <circle + id="path4" + style="fill:#000000;stroke:#000000" + cx="1735.8708" + cy="-90.380722" + r="2.8478267" /> + <path + id="path6" + style="fill:#000000" + d="m -71.968724,44.200526 c 0.10678,0.0025 0.2139,0.0079 0.32031,0.01758 0.23486,0.02139 0.4312,0.06746 0.66211,0.113281 0.25881,0.05896 0.5108,0.136444 0.75977,0.22461 0.008,0.004 0.0157,0.0077 0.0234,0.01172 0.21093,0.141159 0.41991,0.285522 0.62695,0.431641 0.76867,2.738626 1.25985,4.700927 1.58594,6.8125 0.007,0.297067 0.0157,0.593558 0.0273,0.890625 0.015,0.505097 0.038,1.010969 0.0645,1.515625 0.0349,0.540312 0.0502,1.08155 0.0977,1.621094 0.0278,0.413725 0.0598,0.827484 0.0996,1.240234 0.0134,0.410002 0.0253,0.82025 0.0312,1.230469 0.008,0.327728 0.0366,0.654838 0.041,0.982422 0.0245,0.175436 0.0171,0.285218 0.10937,0.302734 3e-4,0.02083 0.002,0.04167 0.002,0.0625 0.031,0.292497 0.0505,0.585039 0.0645,0.878906 0.0133,0.306546 0.0234,0.613357 0.0391,0.919922 0.005,0.155752 0.0219,0.310772 0.041,0.464844 -0.0117,1.076553 -0.0407,2.154099 0.0625,3.22461 0.43494,4.510045 1.586,8.931409 2.02149,13.441406 0.5331,5.520915 0.56309,11.079704 0.88085,16.617181 0.40418,7.04322 0.85693,14.08321 1.28516,21.125 0.32731,8.60911 1.04569,17.21298 0.98242,25.82813 -0.0533,7.25913 -2.65105,46.802 -3.11133,53.65625 -4.49447,66.92986 0.61264,-9.60712 -4.56835,58.63476 -0.78366,10.322 -1.3783,20.65765 -2.06836,30.98633 -0.92891,10.12176 -1.86735,20.24263 -2.78711,30.36523 -0.88138,9.70005 -1.64031,19.41066 -2.61719,29.10157 -1.99373,19.77839 -3.65741,32.32055 -6.30469,51.75976 -0.95708,7.028 -1.78085,14.07702 -2.96484,21.07031 -0.93437,5.51892 -2.25727,10.96501 -3.38672,16.44727 -1.89626,9.99363 -3.12564,14.04167 -3.375,23.92188 -0.2379,9.4262 1.3315,18.79448 1.94726,28.16796 0.15865,2.41501 0.14015,4.83864 0.21094,7.25782 -0.11813,1.96906 0.052,3.97768 -0.35351,5.9082 -0.56513,2.69048 -2.6512,6.65825 -6.20508,6.5 -2.719636,-0.12111 -5.210956,-1.71024 -7.570316,-3.06836 -4.38133,-2.52205 -13.01734,-10.6612 -16.17773,-13.48047 -3.07815,-3.27348 -6.02962,-6.67062 -9.23438,-9.82031 -3.71423,-3.65045 -7.63623,-7.08324 -11.50781,-10.56641 -7.5234,-6.76863 -18.67988,-16.69057 -26.79492,-22.62695 -7.01174,-5.12928 -27.86904,-18.2894 -34.95703,-22.81836 -16.9684,-10.26397 -20.49321,-12.59268 -37.83789,-22.28906 -6.33578,-3.54196 -12.7966,-6.85706 -19.125,-10.41211 -9.24181,-5.19166 -22.64578,-13.6634 -32.51172,-18.01172 -6.49513,-2.86267 -13.29546,-4.97357 -19.94336,-7.46094 -10.80441,-5.09688 -25.72186,-12.36939 -36.86523,-16.67773 -7.18641,-2.77847 -14.55987,-5.04538 -21.83985,-7.56836 -7.32703,-2.81296 -14.68748,-5.53931 -21.98047,-8.43945 -15.80201,-6.284 -22.89994,-9.50162 -38.125,-16.11914 -8.36708,-4.63523 -17.77715,-7.17347 -26.1914,-11.72071 -1.49931,-0.81026 -2.51814,-2.3366 -3.99024,-3.19531 -2.0323,-1.18549 -4.30141,-1.90661 -6.43945,-2.88867 -5.0955,-2.3405 -4.75793,-2.25478 -9.88867,-4.95703 -0.67137,-1.11627 -1.83321,-2.05761 -2.01367,-3.34766 -0.71709,-5.12629 3.53902,-9.04049 6.66015,-12.30078 3.9962,-4.17438 7.1673,-7.17015 11.41406,-11.30274 11.5626,-9.41896 23.88817,-17.8272 37.11914,-24.72851 3.61782,-1.88706 7.3382,-3.57292 10.99805,-5.37695 3.95046,-1.9473 7.88928,-3.91804 11.83399,-5.87696 13.85228,-6.87939 27.59737,-13.97398 41.51562,-20.7207 5.92737,-2.87324 23.13726,-10.8227 28.9707,-14.12109 5.10466,-2.88634 9.93223,-6.23707 14.89844,-9.35547 23.61785,-16.82416 48.47588,-31.8934 73.86914,-45.875 11.6464,-6.41258 23.45552,-12.52827 35.17578,-18.80469 21.55947,-10.48441 41.57921,-23.69078 61.82222,-36.4375 15.63016,-9.842083 16.08347,-10.015342 31.7168,-19.447265 9.48522,-4.607574 17.711726,-11.544141 27.167966,-16.210938 2.63469,-1.300255 5.4269,-2.237362 8.20898,-3.199218 0.006,-0.0149 0.0119,-0.03404 0.0176,-0.04883 0.0409,-0.01192 0.0818,-0.02442 0.12305,-0.03516 0.29068,-0.07691 0.57807,-0.162751 0.86914,-0.238281 0.39072,-0.09743 0.78412,-0.189842 1.16992,-0.306641 0.44929,-0.115 0.90183,-0.224939 1.32031,-0.43164 0.3797,-0.191982 0.74414,-0.412686 1.09571,-0.652344 0.31464,-0.214747 0.61698,-0.446502 0.9375,-0.652344 0.0549,-0.0268 0.11255,-0.04546 0.16797,-0.07031 0.23882,-0.02127 0.47737,-0.04059 0.71679,-0.05469 0.31952,-0.0069 0.64058,-0.02518 0.96094,-0.01758 z m -14.54492,35.964844 c -3.65087,2.918638 -7.52891,5.990737 -9.33789,7.433593 -15.008226,10.760737 -15.542716,11.600177 -31.603516,21.226567 -20.64752,12.37543 -42.41225,22.91211 -62.16406,36.77539 -36.04918,22.69648 -71.56888,46.70177 -110.56836,64.16406 -5.70349,2.69221 -11.44483,5.30707 -17.11133,8.07617 -15.42875,7.53961 -13.75597,7.46335 -29.45899,14.45117 -9.99878,4.44948 -20.2682,8.41917 -30.53906,12.18945 -4.58751,1.68404 -9.21492,3.25966 -13.82226,4.88868 -4.04834,1.46474 -8.14081,2.80995 -12.14454,4.39258 -17.00003,6.7199 -32.82668,16.00976 -48.39648,25.49023 -3.92561,1.91783 -10.25952,4.99777 -14.4668,7.09766 1.27244,-0.007 2.5461,-0.0396 3.81446,0.0508 15.23217,1.08501 30.28776,3.64053 45.05468,7.54297 18.62714,5.44973 22.73846,6.21799 41.29688,13.51757 27.55514,10.83829 15.75534,7.10574 42.14844,19.49024 6.51651,3.05779 30.96703,13.34 37.58789,16.14453 6.12184,3.35421 12.09407,6.99653 18.36523,10.0625 11.80393,5.77088 24.38991,9.83895 36.21875,15.55859 6.76193,3.26965 13.33874,6.91309 19.89258,10.58203 18.83162,10.54228 20.86113,12.34426 38.88867,24.21094 5.99972,4.48937 12.17979,8.74455 17.99805,13.4668 5.47414,4.44295 10.65317,9.24316 15.85156,14.00586 9.80299,8.98128 17.24612,16.11523 25.64453,26.37304 3.39484,4.14647 6.4258,8.57735 9.54688,12.9336 2.06422,2.8812 4.04278,5.82375 6.04296,8.75 -2.35507,-15.57309 -2.06338,-31.4689 -4.52148,-47.04688 -0.60038,-5.66986 -1.40211,-11.32216 -1.80078,-17.00976 -0.502,-7.16169 -0.64633,-14.3447 -0.89844,-21.51953 -0.6393,-18.19439 -1.12921,-34.23186 -0.73242,-52.52344 0.49623,-22.87524 1.78976,-37.32595 3.39258,-60.25195 3.33773,-26.81815 4.18534,-33.63693 7.47461,-60.03711 1.15241,-9.24939 2.42343,-18.48484 3.45898,-27.74805 0.97994,-8.7658 1.790546,-17.54969 2.587886,-26.33398 0.78636,-8.66343 1.10375,-17.37369 2.16407,-26.00782 1.0344,-8.4231 2.74333,-16.74828 4.11523,-25.12304 1.2217,-6.87597 2.48914,-13.74484 3.66407,-20.62891 0.83179,-4.87365 1.45979,-9.783688 2.35742,-14.64453 z" /> + <path + style="fill:#000000" + d="m -86.930824,79.333339 c 5.20187,3.266294 0.40472,10.30491 0.70984,15.163831 -4.52616,26.30732 -8.98424,52.511 -10.6439,79.1829 -6.020466,61.00092 -16.904906,121.71299 -16.050316,183.16499 -0.0707,32.01085 1.76424,63.72639 5.3803,95.45782 0.19064,8.28992 2.17452,16.74153 1.73493,24.89765 -4.12225,5.13687 -8.40113,-2.5937 -10.62304,-5.66993 -36.78337,-50.60618 -91.53232,-85.20998 -148.31897,-109.71176 -19.99215,-8.48238 -38.77654,-19.53839 -59.02156,-27.48768 -26.17033,-12.1058 -51.9659,-25.37614 -79.81442,-33.34183 -19.62906,-6.10616 -39.76062,-10.17528 -60.29232,-12.0349 -6.61742,-3.02435 0.93093,-8.03122 4.87305,-9.05859 23.30413,-13.34361 46.59557,-27.23772 72.46084,-35.1084 34.61369,-11.66592 66.83499,-29.11373 99.85947,-44.71582 51.92433,-26.01609 98.58566,-61.51214 149.74567,-89.10991 16.79933,-9.13242 32.03337,-20.744985 47.791436,-31.442825 0.70223,-0.391313 1.45377,-0.230392 2.20899,-0.185546 z" + id="path9" /> + <path + id="path20" + style="fill:#000000" + d="m 241.02344,7.0410156 a 249.82173,248.80815 0 0 0 -0.46485,0.03125 c 0.0985,0.1264188 0.19852,0.2527137 0.30469,0.3730469 0.0479,-0.1283059 0.11049,-0.2741381 0.16016,-0.4042969 z m -24.39258,2.8691406 a 249.82173,248.80815 0 0 0 -19.99024,4.2519528 c -0.96614,0.53266 -1.92275,0.723756 -2.79296,0.595703 a 249.82173,248.80815 0 0 0 -30.04493,9.449219 c -0.94209,0.590429 -1.85273,1.227912 -2.65234,2.025391 -1.45697,1.19756 -2.7081,2.588906 -3.8457,4.09375 -0.86953,1.030846 -1.63463,2.142823 -2.42969,3.228516 -0.78508,2.818718 -1.334,5.684079 -1.10547,8.664062 0.15755,2.753247 0.39339,5.502375 0.70313,8.242188 0.19567,0.619972 0.38732,1.23995 0.70703,1.822265 0.58848,1.15059 0.92279,2.413737 0.99609,3.689453 0.23913,1.541191 0.13554,3.068345 -0.28906,4.570313 -0.032,0.127658 -0.0813,0.251893 -0.11719,0.378906 0.0992,2.636221 -0.19542,5.243401 -1.51758,7.667969 -0.36587,0.57133 -0.68513,1.176182 -1.09765,1.714844 -1.32755,1.733412 -3.07797,3.01133 -4.90821,4.18164 -0.36518,0.277484 -0.77705,0.506902 -1.18945,0.734375 -0.28636,0.172929 -0.56488,0.355367 -0.85156,0.525391 -0.038,0.02713 -0.0822,0.04797 -0.11914,0.07617 -0.21568,0.158815 -0.44526,0.292491 -0.67969,0.416015 -0.20652,0.122602 -0.41263,0.257857 -0.61719,0.38086 -0.51417,0.281043 -1.01379,0.588614 -1.52734,0.871093 -0.70904,0.519305 -1.60752,0.820818 -2.22461,1.486328 -1.02,0.502205 -2.04665,0.992526 -2.92188,1.732422 -1.39886,0.745264 -2.68456,1.641421 -4.11328,2.332032 -0.49678,0.203898 -0.9843,0.428282 -1.46875,0.658203 -3.60034,2.211687 -7.19108,4.440614 -10.66211,6.853515 -4.07835,2.603974 -8.22105,5.192666 -12.96093,6.40625 -3.29752,0.842253 -6.57962,1.420408 -9.919926,0.390625 -3.788114,-1.406073 -7.102436,-3.640677 -10.148437,-6.289062 -0.95592,-0.867101 -1.907311,-1.74279 -2.855469,-2.621094 -0.544771,-0.153337 -1.079655,-0.351722 -1.564453,-0.617187 -0.576134,-0.09642 -1.150714,-0.341598 -1.6875,-0.685547 -2.523567,0.278641 -4.9174,1.045516 -7.335937,1.78125 -2.703811,0.888863 -5.253011,2.224506 -7.722657,3.666015 A 249.82173,248.80815 0 0 0 27.380859,155.84766 c -0.251597,2.0346 -0.333337,4.08629 -0.384765,6.13476 0.107287,1.93203 0.507526,3.83632 1.138672,5.66211 0.473622,2.00194 1.258555,3.91444 2.013672,5.82813 1.69696,2.45473 3.455145,4.86494 5.365234,7.17187 2.712,3.46374 5.338653,6.99252 7.884766,10.58008 2.332648,3.48458 4.619305,7.1103 5.320312,11.32031 0.553365,3.71672 0.661237,7.41074 0.002,11.13086 -0.714173,3.83002 -1.279518,7.68574 -2.082031,11.5 -0.673469,3.70155 -1.338741,7.40519 -2.00586,11.10742 -0.556595,2.65566 -1.133708,5.30309 -1.861328,7.91797 -0.608243,2.26865 -1.31097,4.54454 -2.410156,6.62695 -1.151307,2.14054 -2.557172,4.11946 -3.980469,6.08594 -1.423387,1.7531 -2.780459,3.57059 -4.466797,5.08985 -1.870631,1.69934 -4.038852,3.02614 -6.05664,4.53906 -2.680878,1.6593 -5.373691,3.29784 -8.214844,4.67578 -1.886629,1.0002 -3.735754,2.08386 -5.347656,3.49609 -1.124671,1.27746 -2.3841471,2.43026 -3.1250001,3.9961 -0.5898081,1.34479 -1.2380992,2.6537 -1.5117188,4.08789 A 249.82173,248.80815 0 0 0 30.275391,359.5332 c 1.685675,1.87279 3.360761,3.75563 5.082031,5.59766 0.258238,0.27115 0.569316,0.49212 0.84375,0.75 1.439612,0.473 2.925226,0.76724 4.402344,1.09766 0.714199,-0.0469 1.411799,0.24442 2.144531,0.0488 0.792331,-0.0424 1.563952,-0.25432 2.345703,-0.23632 1.287669,-0.28865 2.542026,-0.7103 3.828125,-1.00196 1.863281,-0.37602 3.682316,-0.8946 5.556641,-1.20508 1.313688,-0.16743 2.618858,-0.42751 3.939453,-0.51367 2.654645,-0.9494 5.304883,-1.91244 7.912109,-2.98437 2.315852,-0.78381 4.603846,-1.7292 7.039063,-2.07032 1.376833,-0.19932 2.753654,-0.34156 4.132812,-0.39062 1.379191,-0.0491 2.762036,-0.004 4.148438,0.17383 2.674412,0.3505 5.351183,0.786 7.929687,1.59765 2.554665,0.8819 5.09614,1.80821 7.484375,3.0879 2.669099,1.16284 5.302697,2.55208 7.197267,4.82617 1.32071,1.81877 2.3802,3.76285 3.22461,5.84765 1.09162,1.99694 2.196,3.97233 3.54492,5.81055 1.62279,2.23029 3.31573,4.39325 5.35156,6.26953 2.56825,2.329 5.21969,4.55063 7.89649,6.75195 2.55277,2.33468 5.03558,4.75015 7.18945,7.4668 2.12241,2.37246 4.23189,4.75653 6.3457,7.13672 1.88271,2.34966 3.7476,4.74907 4.95703,7.5293 1.21855,2.39896 1.83415,5.04653 2.00977,7.73047 -0.0947,1.75756 -0.2736,3.49402 -1.01172,5.11718 -0.14665,0.48342 -0.31772,0.95846 -0.4707,1.43946 -0.002,0.0209 -0.002,0.0416 -0.004,0.0625 -0.28118,1.36241 -0.33712,2.75627 -0.51172,4.13476 -0.15948,1.71912 -0.36302,3.46672 -0.79297,5.13281 -0.4813,1.6262 -0.91515,3.26174 -1.41406,4.88282 -0.3324,1.04405 -0.75425,2.05899 -0.91797,3.15039 -0.10224,1.41235 -0.59975,2.82181 -0.59375,4.26367 -0.35351,1.5424 -0.69,3.10713 -0.7539,4.6875 -0.1792,1.33469 -0.32725,2.65953 -0.37305,4 0.11387,0.7392 0.14619,1.48559 0.16406,2.23242 0.97829,1.80113 1.99685,3.58103 3.03711,5.33789 1.64037,2.67817 3.19924,5.41034 5.27539,7.79102 1.18844,1.14364 2.37508,2.27699 3.64453,3.31836 a 249.82173,248.80815 0 0 0 53.76953,18.92773 c 0.23676,-0.0401 0.47064,-0.0939 0.70899,-0.12695 2.30546,-0.36078 4.59378,-0.75726 6.93164,-0.81836 1.313,-0.16468 2.62962,-0.10756 3.9375,-0.34375 1.74446,-0.26499 3.50336,-0.21841 5.23633,-0.56641 0.96529,0.0165 1.72832,-0.23532 2.66406,-0.32812 0.84585,-0.0839 1.65738,0.10404 2.4375,-0.39844 1.65863,-0.16113 3.25889,-0.80955 4.89844,-1.10547 1.39196,-0.35053 2.76676,-0.65358 4.16797,-0.90234 1.42597,-0.31299 2.78063,-0.7489 4.20117,-1.04102 1.0011,-0.27451 2.00131,-0.50369 2.98633,-0.82422 0.50269,-0.39587 1.23556,-0.49637 1.73047,-0.90625 0.36358,-0.51282 -0.19813,0.23904 0.58789,-0.55468 0.70658,-0.71363 1.3687,-1.4884 2.04492,-2.23438 0.94992,-0.88736 1.71755,-1.95387 2.68359,-2.82812 0.98444,-1.07198 2.0822,-1.99441 3.17774,-2.94727 0.87364,-0.96568 1.8945,-1.78661 2.68554,-2.83008 0.84291,-1.05538 1.7244,-2.07861 2.48438,-3.19531 0.5902,-1.08366 1.36201,-2.02468 2.15625,-2.95313 0.54808,-1.02284 1.13501,-2.02129 1.58789,-3.10351 1.55306,-3.4563 3.13092,-6.95729 5.60547,-9.87305 2.37102,-2.5019 5.09369,-4.5512 8.45508,-5.50195 2.67242,-0.76759 5.37407,-1.3299 8.12109,-1.77149 2.99691,-0.39335 5.96171,-1.0339 8.96289,-1.40234 2.4527,-0.46938 4.90482,-0.98609 7.30078,-1.69141 2.77877,-0.87568 5.52694,-1.83159 8.26758,-2.82031 2.67368,-0.93334 5.43185,-1.76019 8.26562,-1.99219 2.66099,-0.0238 5.28925,0.29138 7.84766,1.06055 2.47435,0.73645 4.83314,1.79771 7.05469,3.11719 2.32294,1.3637 4.48538,2.91899 6.45117,4.77148 1.98777,1.76713 3.96753,3.54843 5.71094,5.56446 0.71549,0.84717 1.33091,1.76372 1.94726,2.67968 0.017,0.0181 0.0385,0.0319 0.0547,0.0508 0.18352,0.21379 0.33053,0.46016 0.48828,0.69727 0.0366,0.0577 0.081,0.11003 0.11719,0.16797 0.34372,0.5309 0.68097,1.06953 1.11523,1.52539 0.40923,0.80568 0.98388,1.51664 1.56641,2.20117 0.72125,0.91981 1.1954,1.90078 1.98047,2.77735 0.34762,0.63803 0.77226,1.21133 1.1875,1.80468 0.48046,0.56603 1.05401,1.02711 1.42773,1.67383 0.65831,0.59116 1.26586,1.20318 1.88086,1.83399 0.63743,0.62266 1.33058,1.18145 2.01172,1.72656 0.54528,0.31674 1.05464,0.72133 1.58789,1.0625 0.37667,0.19782 1.12613,0.46966 1.30078,0.72656 0.32012,0.0208 0.74647,0.17363 1.125,0.20313 0.7446,-0.10537 1.50026,-0.0541 2.25391,-0.14649 1.00933,-0.16836 2.03142,-0.25605 3.0293,-0.49805 a 249.82173,248.80815 0 0 0 57.70117,-40.07031 c 1.4782,-2.89987 3.18607,-5.67102 4.9414,-8.41406 2.04663,-3.33292 3.79948,-6.78829 4.73633,-10.61133 0.40724,-2.04635 0.88338,-4.08937 0.85938,-6.18555 -0.0143,-1.66003 0.0827,-3.30289 -0.19922,-4.95703 -0.26089,-1.33292 -0.43666,-2.67744 -0.76953,-3.99414 -0.27633,-1.06266 -0.44884,-2.1444 -0.71875,-3.20508 -0.004,-0.0189 -0.0343,-0.1851 -0.0449,-0.23437 -0.14334,-0.27614 -0.33041,-0.52635 -0.44922,-0.81641 -2.41209,-3.1294 -4.61335,-6.42683 -5.87696,-10.20508 -1.07275,-3.31757 -2.10744,-6.66292 -2.5957,-10.10937 -0.22963,-1.01597 -0.35438,-2.0542 -0.35156,-3.11523 0.0149,-0.49735 0.074,-0.97887 0.15625,-1.45313 0.0787,-2.95798 0.39619,-5.84197 2.09961,-8.40039 1.79549,-2.90517 3.78341,-5.66053 5.77343,-8.43359 2.25905,-3.18328 4.60973,-6.30693 6.70313,-9.60352 2.35132,-3.8538 4.31431,-7.89494 5.92383,-12.11719 1.74901,-4.47756 3.57699,-8.93614 5.94726,-13.1289 2.24452,-4.24715 4.46591,-8.52116 6.19141,-13.01172 1.6535,-3.72876 3.0513,-7.79219 6.24219,-10.51367 2.81636,-1.81476 5.95004,-2.55809 9.29687,-2.64649 3.56848,-0.24524 7.1404,-0.40133 10.70313,-0.72265 1.61896,-0.17267 3.24132,-0.29737 4.86328,-0.42579 0.24438,-0.0511 0.48697,-0.11427 0.7207,-0.22265 1.01726,-0.19925 2.00055,-0.49177 3.04297,-0.57227 0.50647,-0.0922 0.94335,-0.44536 1.48438,-0.44336 0.55952,-0.21628 1.15344,-0.4287 1.72851,-0.4707 0.48992,-0.18791 0.92479,-0.37302 1.41016,-0.47852 0.76982,-0.2853 1.51696,-0.56335 2.22265,-0.99218 0.56621,-0.25133 1.18456,-0.34904 1.70703,-0.65821 0.22801,-0.14408 0.44978,-0.32876 0.55469,-0.25586 -0.20261,-0.0126 -0.12334,0.22429 0.13672,-0.0879 0.25543,-0.49334 0.44233,-1.04194 0.67774,-1.55273 0.1565,-0.31218 0.52191,-0.70962 0.63476,-0.95899 0.13746,-0.30357 0.0745,-0.62182 0.39649,-0.90039 0.38452,-0.75103 0.65058,-1.57043 1.08593,-2.2832 a 249.82173,248.80815 0 0 0 2.22657,-30.20117 249.82173,248.80815 0 0 0 -6.83008,-54.10156 c -0.0816,-0.0841 -0.15838,-0.17206 -0.22656,-0.26758 -0.32922,-0.45999 -0.23283,-1.82252 -0.49219,-2.37891 -0.34822,-1.22825 -0.46117,-2.5057 -0.8711,-3.71679 -0.0317,-0.8735 -0.24961,-1.81419 -0.63086,-2.5918 -0.14463,-0.35264 -0.30312,-0.78248 -0.40429,-1.06055 -0.50227,-0.58604 -0.9093,-1.24919 -1.41602,-1.83398 -0.16036,-0.2104 -0.31504,-0.42846 -0.4707,-0.64453 -0.44766,-0.48909 -0.92178,-0.95662 -1.25586,-1.53321 -0.23836,-0.1927 -0.41821,-0.47053 -0.63672,-0.69336 -0.14371,-0.13793 -0.27385,-0.2725 -0.36914,-0.39648 -0.003,-0.006 -0.007,-0.0114 -0.01,-0.0176 -0.28497,-0.31905 -0.59185,-0.60568 -0.86328,-0.94141 -0.17174,-0.13013 -0.34723,-0.2588 -0.50976,-0.39257 -2.65426,-0.91507 -5.32474,-1.77705 -8.06446,-2.41211 -2.84018,-0.712 -5.67947,-1.43737 -8.58984,-1.8125 -3.66418,-0.60066 -7.31138,-1.30021 -10.96484,-1.95899 -3.47044,-0.67001 -6.92476,-1.42037 -10.41602,-1.98242 -3.47863,-0.62783 -6.9971,-1.10563 -10.38867,-2.12109 -3.06667,-0.91978 -6.17531,-1.88908 -8.62891,-4.03906 -2.10814,-2.28124 -3.52711,-4.80144 -3.7539,-7.9629 -0.23804,-2.44686 -0.21205,-4.90763 -0.58203,-7.34179 -0.49456,-2.88342 -1.27721,-5.70506 -2.06055,-8.52149 -0.67887,-2.6633 -1.56396,-5.27828 -2.61914,-7.8164 -1.08825,-2.87157 -2.40461,-5.65741 -3.8711,-8.35547 -1.76724,-2.83566 -3.64656,-5.56972 -5.91211,-8.04297 -2.58724,-3.03812 -5.08184,-6.1838 -7.24023,-9.54297 -1.36095,-2.42539 -2.62867,-4.89586 -3.83008,-7.4043 -0.78957,-2.14238 -1.28136,-4.34366 -1.00195,-6.642574 0.26986,-2.333352 0.94803,-4.540859 1.89453,-6.691407 1.09797,-2.713517 2.65386,-5.212918 4.00195,-7.80664 1.28138,-2.368286 2.72967,-4.654003 3.78516,-7.134766 0.66093,-1.812226 1.30175,-3.616966 1.44531,-5.556641 0.21625,-1.744709 0.41036,-3.550674 0.16407,-5.296874 -0.20395,-1.439463 -0.66524,-2.825542 -1.36719,-4.097657 A 249.82173,248.80815 0 0 0 361.48828,29.919922 c -0.582,-0.106572 -1.16192,-0.228959 -1.75586,-0.275391 -0.54683,-0.0906 -1.08468,-0.07737 -1.62695,-0.07617 -1.50285,0.175781 -2.99638,0.459341 -4.47852,0.744141 -0.9523,0.162411 -2.06911,0.229857 -2.98242,0.535156 -0.26737,0.08938 -0.48683,0.290869 -0.75195,0.386719 -0.2584,0.09342 -0.53625,0.117191 -0.80469,0.175781 -1.53172,0.602302 -3.12217,1.031591 -4.5332,1.927735 -1.98175,1.135885 -3.99212,2.263366 -5.82617,3.621093 -2.07406,1.00443 -3.88512,2.395013 -5.74414,3.744141 -1.42873,0.845402 -2.61215,1.950692 -3.97461,2.873047 -0.69763,0.452803 -1.36007,0.947248 -2.08594,1.345703 -0.72742,0.664544 -1.6604,1.044508 -2.31055,1.818359 -1.02388,0.962642 -2.20009,1.843859 -3.38672,2.59375 -1.06643,0.758252 -2.14394,1.496558 -3.17968,2.294922 -0.86532,0.498539 -1.44598,1.35039 -2.33985,1.810547 -1.28204,1.021391 -2.6071,1.955199 -4.24805,2.337891 -0.78687,0.05246 -1.55356,0.281756 -2.35937,0.285156 -0.81775,-0.305772 -1.86207,0.04397 -2.67578,-0.363281 -0.52968,-0.09382 -1.07805,0.0109 -1.61328,-0.04297 -3.32627,0.0099 -6.65022,-0.492706 -9.92774,-1.019531 -1.30498,-0.223856 -2.60539,-0.475571 -3.90234,-0.744141 -1.29807,-0.124845 -2.59232,-0.2821 -3.88867,-0.396484 -3.54272,-0.356488 -7.13488,-0.639112 -10.58203,-1.558594 -2.7947,-0.807968 -5.42479,-2.036059 -8.15235,-3.035156 -3.09074,-1.207908 -6.31118,-2.014874 -9.46289,-3.046875 -3.30265,-1.131461 -6.56223,-2.528182 -9.14844,-4.94336 -1.04712,-1.002993 -2.00377,-2.088437 -2.91797,-3.210937 -0.85261,-0.613971 -1.60332,-1.412801 -2.2539,-2.19336 -0.77397,-0.684165 -1.38943,-1.540579 -1.91016,-2.429687 -0.63958,-0.763088 -1.16106,-1.634474 -1.69531,-2.472656 -0.46201,-0.92709 -1.20253,-1.711476 -1.68945,-2.63086 -0.29261,-0.48242 -0.34504,-0.606272 -0.47071,-0.732421 -0.41657,-0.627226 -0.99865,-1.129962 -1.47851,-1.705079 -0.38054,-0.409438 -0.62091,-0.83469 -1,-1.283203 -0.39109,-0.508696 -0.7486,-1.029931 -1.13672,-1.539062 -0.34745,-0.444429 -0.62944,-1.012887 -1.12695,-1.310547 -0.39121,-0.420283 -0.73527,-0.867831 -1.2168,-1.210938 -0.26023,-0.36324 -0.99632,-0.669865 -1.29297,-1.091797 -0.82103,-0.630288 -1.5795,-1.312363 -2.28125,-2.089843 -0.62742,-0.598118 -1.07245,-1.313332 -1.56445,-2.00586 -0.24778,-0.414793 -1.04189,-1.342722 -1.53711,-1.875 -0.13882,-0.149837 0.10661,0.01672 -0.41992,-0.466797 -0.10538,-0.0094 -0.63051,-0.418747 -1.08008,-0.826171 -0.37487,-0.145896 -0.85861,-0.318125 -1.19141,-0.498047 -0.87935,-0.466058 -1.85012,-0.750916 -2.67383,-1.322266 -0.92722,0.06082 -1.86565,0.05365 -2.77734,0.03711 -0.46234,-0.077765 -0.93193,-0.1069155 -1.40039,-0.1445318 z m 51.86328,6.3691408 c 0.1035,0.07735 0.20504,0.157101 0.30859,0.234375 0.0128,-0.0491 0.0243,-0.113594 0.0371,-0.16211 -0.11521,-0.0243 -0.23043,-0.04828 -0.3457,-0.07227 z M 245.51953,148.15234 c 0.42971,0.0131 0.84562,0.16073 1.27344,0.20313 1.27141,0.12602 2.57131,0.002 3.82031,0.3418 2.15858,0.0694 4.29468,0.49286 6.46289,0.44726 2.84682,0.0637 5.6263,0.76694 8.45899,0.9668 1.1584,0.32588 2.34223,0.52747 3.52734,0.72851 0.23633,-0.0433 0.31039,-0.0769 0.5625,-0.12109 0.98531,-0.17259 1.91951,0.32019 2.85156,0.8125 0.18703,0.0495 0.37478,0.0965 0.56055,0.15234 2.40934,0.60734 4.72358,1.53645 7.0293,2.45508 0.77235,0.39167 1.90561,0.93374 2.59375,1.42969 0.25448,0.18341 0.60258,0.47649 0.97461,0.82617 4.88744,2.31742 9.69513,4.71137 14.43164,7.35156 1.46228,0.81516 2.97738,1.53983 4.40039,2.42188 1.43627,0.89027 2.77728,1.92592 4.16601,2.88867 3.72905,3.02181 7.51139,6.00441 11.01172,9.29492 2.5327,2.38093 4.34584,4.3693 6.67969,6.96289 1.11228,1.2361 2.20083,2.49317 3.30078,3.74024 2.97053,3.66959 3.6062,4.33218 6.32617,8.18359 3.85391,5.45714 7.02203,11.33583 10.22071,17.18945 4.444,9.27675 8.07815,18.88835 9.08398,29.20704 0.13454,1.29999 0.18877,2.61663 0.31641,3.92187 0.79869,3.50943 1.55297,7.03095 2.16992,10.58008 0.88519,4.18785 0.75986,8.40469 0.58984,12.64844 -0.34524,4.73672 -1.24537,9.41953 -2.00195,14.10546 -0.58583,4.26441 -1.72059,8.3859 -2.78125,12.54297 -1.10826,4.22331 -2.92012,8.15589 -5.28321,11.81055 -2.74915,4.12083 -6.30399,7.62956 -9.66992,11.24219 -0.58939,0.54085 -1.20006,1.06127 -1.76953,1.62305 -0.64958,0.64078 -1.23209,1.34677 -1.88672,1.98242 -2.59656,2.52134 -5.5605,4.69988 -8.40625,6.92578 -4.27753,3.34693 -8.91386,6.13105 -13.60742,8.83789 -5.57337,3.08486 -11.43979,5.55627 -17.36523,7.86914 -6.1857,2.39493 -12.58876,4.12241 -19,5.78711 -6.27284,1.39802 -12.63684,2.35025 -19.04688,2.79101 -6.17857,0.46617 -12.37946,0.14985 -18.52734,-0.53515 -6.45214,-0.40196 -12.76583,-2.05416 -18.81641,-4.26953 -2.81199,-1.20725 -5.77645,-2.27115 -8.44336,-3.79297 -2.80842,-1.60257 -5.65796,-3.84239 -8.30664,-5.72656 -0.72491,-0.53168 -1.36293,-1.14848 -2.03711,-1.73047 -2.35274,-1.18777 -4.45024,-2.75036 -6.56836,-4.3086 -1.96476,-1.66779 -4.02131,-3.19015 -6.02929,-4.80273 -2.78422,-1.90504 -5.47668,-4.0142 -8.04493,-6.21484 -2.67149,-2.14694 -5.04316,-4.61853 -7.20507,-7.26954 -2.59078,-3.14161 -4.8534,-6.52296 -7.00586,-9.97461 -2.45873,-3.90438 -4.59641,-7.99883 -6.68946,-12.10742 -2.03355,-4.1348 -3.77107,-8.43935 -5.13672,-12.83984 -1.87699,-5.79372 -2.84663,-11.83073 -3.5664,-17.86524 -0.84904,-6.7597 -1.08447,-13.62373 -0.76953,-20.42773 0.26221,-7.80434 1.37493,-15.52854 2.91015,-23.17383 1.894,-8.15406 4.71517,-16.03784 8.47657,-23.52148 0.91633,-1.8231 1.95443,-3.58184 2.93164,-5.37305 5.18441,-9.36131 11.86437,-17.70746 18.79297,-25.80859 3.09113,-2.97252 6.27937,-5.90119 9.82421,-8.33594 3.12333,-2.14523 6.51658,-3.7895 9.92579,-5.41211 3.27734,-1.25232 6.59421,-2.50143 10.06054,-3.13477 1.14158,-0.20858 2.30132,-0.29204 3.45313,-0.43359 1.13718,-0.13975 2.26819,-0.34566 3.41211,-0.41016 1.16994,-0.0659 2.34384,0.0125 3.51562,0.0195 4.47955,0.0303 2.76093,-0.10911 7.06446,0.40234 0.16468,0.0196 0.33073,0.0325 0.49609,0.0488 3.24357,-0.51062 6.26206,-0.94211 9.54687,-0.89844 0.3845,0.005 0.77075,-0.009 1.15625,-0.008 0.3855,9.2e-4 0.77076,0.0149 1.15039,0.0762 0.015,0.002 0.0819,0.0277 0.0996,0.0312 0.28588,-0.031 0.57045,-0.0653 0.85938,-0.0859 0.23936,-0.0203 3.15518,-0.27758 3.47656,-0.26758 z M 17.470703,194.38086 c -0.0035,0.0466 -0.01622,0.0921 -0.01953,0.13867 0.0083,-0.02 0.01513,-0.0403 0.02344,-0.0606 -0.0015,-0.026 -0.0024,-0.0521 -0.0039,-0.0781 z m 6.927735,44.48828 c -0.03469,0.13911 -0.06615,0.27905 -0.101563,0.41797 0.07525,-0.13792 0.145097,-0.27933 0.224609,-0.41406 -0.0411,-0.002 -0.08195,-0.002 -0.123046,-0.004 z M 285.4043,305.86328 c 0.16734,0.28515 0.33458,0.49334 0.48242,0.53125 -0.15876,-0.20683 -0.3203,-0.37183 -0.48242,-0.53125 z m 36.46875,143.10352 c 0.70106,0.20994 1.3928,0.45197 2.07422,0.70703 0.4567,0.1269 0.91314,0.24753 1.37109,0.36523 -0.84352,-0.32272 -1.69163,-0.63441 -2.55274,-0.92578 -0.29298,-0.0785 -0.59766,-0.0771 -0.89257,-0.14648 z m -14.02735,24.72461 c -0.0601,0.0326 -0.12195,0.0683 -0.17578,0.10937 0.0579,-0.005 0.1159,-0.0103 0.17383,-0.0156 10e-4,-0.0326 2.9e-4,-0.0618 0.002,-0.0937 z" /> + </g> +</svg> diff --git a/chorechef_frontend/src/assets/main.css b/chorechef_frontend/src/assets/main.css new file mode 100644 index 0000000..0cb34ed --- /dev/null +++ b/chorechef_frontend/src/assets/main.css @@ -0,0 +1,12 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +.indie-flower-regular { + font-family: "Indie Flower", cursive; + font-weight: 400; +} +.indie-flower-bold { + font-family: "Indie Flower", cursive; + font-weight: 800; +} diff --git a/chorechef_frontend/src/components/Chores.vue b/chorechef_frontend/src/components/Chores.vue new file mode 100644 index 0000000..0b5876a --- /dev/null +++ b/chorechef_frontend/src/components/Chores.vue @@ -0,0 +1,557 @@ +<script setup lang="ts"> +import { add, format, compareAsc } from "date-fns"; +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faCirclePlus, + faCheck, + faTrash, + faPenToSquare, + faCaretUp, + faCaretDown, + faTimes, + faBackward, + faFloppyDisk, + faCircleCheck, + faTriangleExclamation, +} from "@fortawesome/free-solid-svg-icons"; +import { faCircle } from "@fortawesome/free-regular-svg-icons"; +import AirDatepicker from "air-datepicker"; +import localeDe from "air-datepicker/locale/de"; +import "air-datepicker/air-datepicker.css"; +</script> +<template> + <div + class="flex flex-col gap-2 m-2 rounded-xl shadow-lg bg-secondary-400 grow" + > + <h2 + class="text-xl font-bold bg-secondary-300 rounded-xl shadow-lg m-4 px-4 py-2" + > + Aufgaben + </h2> + <div + id="chores" + v-for="chore in chores" + class="flex flex-row items-center p-1 rounded-xl shadow-lg mx-4 bg-secondary-200" + :class="{ + 'text-red-600': isOverdue(new Date(chore.chore_date)) && onDashboard, + 'text-gray-600 italic line-through': chore.chore_done && onDashboard, + }" + > + <div + class="hover:cursor-pointer w-6 h-6 mx-4 flex items-center justify-center rounded-full shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg border-black border transition" + v-if="onDashboard" + @click="forwardChore(chore)" + > + <div class="opacity-0 hover:opacity-100 transition-opacity"> + <FontAwesomeIcon :icon="faCheck" /> + </div> + </div> + + <!-- Chore Name --> + <div v-if="editingChore === chore" class="w-3/12"> + <input + v-focus + v-on:keyup.enter="saveChore(chore)" + type="text" + v-model="chore.chore_name" + placeholder="Aufgabe" + class="rounded-xl px-4 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-4/5 indie-flower-regular text-lg" + /> + </div> + <div v-else class="w-3/12"> + <div + class="rounded-xl px-4 shadow-lg py-0 bg-secondary-100 border-none focus:ring-2 focus:ring-secondary-600 w-4/5 indie-flower-regular text-lg" + > + <div> + {{ chore.chore_name }} + </div> + </div> + </div> + + <!-- Chore Date --> + <div v-if="editingChore === chore" class="w-3/12"> + am + <input + id="chore-date-picker" + v-on:keyup.enter="saveChore(chore)" + type="text" + v-model="editingChore.chore_date" + class="rounded-xl mx-1 px-2 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-1/2" + /> + </div> + <div + v-else + class="flex" + :class="{ 'w-2/12': '!onDashboard', 'w-3/12': 'onDashboard' }" + > + am + <div + class="rounded-xl mx-2 px-2 shadow-lg py-0 bg-secondary-100 border-none focus:ring-2 focus:ring-secondary-600 w-1/2" + > + {{ formatDate(chore.chore_date) }} + </div> + </div> + + <!-- Chore Frequency --> + <div v-if="editingChore === chore" class="w-3/12 gap-1 flex"> + alle + <input + v-on:keyup.enter="saveChore(chore)" + type="number" + v-model="chore.chore_frequency" + class="rounded-xl shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-1/6" + /> + <select + v-on:keyup.enter="saveChore(chore)" + v-model="chore.chore_frequency_unit" + class="rounded-xl shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-3/6" + > + <option value="Tage">Tage</option> + <option value="Wochen">Wochen</option> + <option value="Monate">Monate</option> + </select> + </div> + <div v-else class="flex gap-1 w-3/12"> + alle + <div + class="rounded-xl px-3 shadow-lg py-0 bg-secondary-100 border-none focus:ring-2 focus:ring-secondary-600 w-1/6" + > + {{ chore.chore_frequency }} + </div> + <div + class="rounded-xl px-3 shadow-lg py-0 bg-secondary-100 border-none focus:ring-2 focus:ring-secondary-600 w-3/6" + > + {{ chore.chore_frequency_unit }} + </div> + </div> + + <!-- Chore User --> + <div v-if="editingChore === chore" class="w-2/12"> + <select + v-on:keyup.enter="updateChore(chore)" + v-model="chore.chore_user" + class="rounded-xl px-3 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-7/12" + > + <option + v-for="user in users" + :value="user.user_id" + :key="user.user_id" + > + {{ user.username }} + </option> + </select> + </div> + <div v-else class="w-2/12"> + <div + class="rounded-xl px-3 shadow-lg py-0 bg-secondary-100 border-none focus:ring-2 focus:ring-secondary-600 w-7/12" + > + {{ getUserName(chore.chore_user) }} + </div> + </div> + + <!-- Empty Space --> + <div class="flex grow"></div> + + <!-- Chore Actions --> + <div + id="chore-actions" + class="flex flex-row gap-2 pr-4" + v-if="!onDashboard" + > + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="saveChore(chore)" + v-if="editingChore === chore" + > + <FontAwesomeIcon :icon="faCheck" class="hover:cursor-pointer" /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="cancelEditChore(chore)" + v-if="editingChore === chore" + > + <FontAwesomeIcon :icon="faTimes" class="hover:cursor-pointer" /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="backwardChore(chore)" + v-if="!editingChore && !chore.chore_done" + > + <FontAwesomeIcon :icon="faBackward" class="hover:cursor-pointer" /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="editChore(chore)" + v-if="editingChore !== chore" + > + <FontAwesomeIcon :icon="faPenToSquare" class="hover:cursor-pointer" /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + > + <FontAwesomeIcon + :icon="faTrash" + class="hover:cursor-pointer" + @click="deleteChore(chore)" + /> + </div> + </div> + </div> + + <!-- Add Chore --> + <div + id="add-chore" + class="flex flex-row items-center p-1" + :class="{ + 'justify-center': !addingChore, + }" + v-if="!onDashboard" + > + <div + class="rounded-full shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 py-1 text-xl flex items-center justify-center" + @click="addChore" + v-if="!addingChore" + > + <FontAwesomeIcon + :icon="faCirclePlus" + class="hover:cursor-pointer text-xl justify-center" + /> + </div> + <div + v-else + class="flex flex-row w-full items-center bg-secondary-200 shadow-lg rounded-xl p-2 mx-3" + > + <div class="w-3/12"> + <input + v-focus + v-on:keyup.enter="saveNewChore" + type="text" + v-model="addingChore.chore_name" + placeholder="Aufgabe" + class="rounded-xl px-4 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-4/5 indie-flower-regular text-lg" + :class="{ + 'border-red-600 border-4': addingChore.chore_name === '', + }" + /> + </div> + <div class="w-3/12"> + am + <input + id="adding-chore-date-picker" + v-on:keyup.enter="saveNewChore" + type="text" + v-model="addingChore.chore_date" + class="rounded-xl mx-1 px-2 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-1/2" + /> + </div> + <div class="w-3/12 gap-1 flex"> + alle + <input + v-on:keyup.enter="saveNewChore" + type="number" + min="1" + v-model="addingChore.chore_frequency" + class="rounded-xl shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-1/6" + /> + <select + v-on:keyup.enter="saveNewChore" + v-model="addingChore.chore_frequency_unit" + class="rounded-xl shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-3/6" + > + <option value="Tage">Tage</option> + <option value="Wochen">Wochen</option> + <option value="Monate">Monate</option> + </select> + </div> + <div class="w-2/12"> + <select + v-on:keyup.enter="saveNewChore" + v-model="addingChore.chore_user" + class="rounded-xl px-3 shadow-lg py-0 bg-secondary-50 border-none focus:ring-2 focus:ring-secondary-600 w-7/12" + :class="{ + 'border-red-600 border-4': addingChore.chore_user === '', + }" + > + <option value="" disabled>Nutzer</option> + <option + v-for="user in users" + :value="user.user_id" + :key="user.user_id" + > + {{ user.username }} + </option> + </select> + </div> + + <div class="flex grow"></div> + <div id="add-chore-actions" class="flex flex-row gap-2 pr-3"> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + v-if=" + addingChore.chore_name === '' || addingChore.chore_user === '' + " + > + <FontAwesomeIcon + :icon="faTriangleExclamation" + class="text-red-600" + /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="saveNewChore" + > + <FontAwesomeIcon :icon="faCheck" class="hover:cursor-pointer" /> + </div> + <div + class="rounded-xl shadow-lg bg-secondary-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1" + @click="addingChore = null" + > + <FontAwesomeIcon :icon="faTimes" class="px-0.5" /> + </div> + </div> + </div> + </div> + </div> +</template> + +<script lang="ts"> +interface Chore { + chore_id: number; + chore_name: string; + chore_user: number; + chore_date: string; + chore_done: boolean; +} +interface User { + user_id: number; + username: string; +} + +var unitConversion = { + Tage: "days", + Wochen: "weeks", + Monate: "months", +}; + +export default { + data() { + return { + allChores: [] as Chore[], + editingChore: null as Chore | null, + addingChore: null as Chore | null, + users: [] as User[], + }; + }, + props: { onDashboard: Boolean, currDate: Date }, + methods: { + forwardChore(chore: Chore) { + // change date to next date + let newDate: string = format( + add(chore.chore_date, { + [unitConversion[chore.chore_frequency_unit]]: chore.chore_frequency, + }), + "yyyy-MM-dd", + ); + let newUser: number = + this.users[ + (this.users.findIndex((user) => user.user_id === chore.chore_user) + + 1) % + this.users.length + ].user_id; + + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + chore_date: newDate, + chore_user: newUser, + }), + }).then(() => { + chore.chore_date = newDate; + chore.chore_user = newUser; + }); + }, + cancelEditChore(chore: Chore) { + this.editingChore = null; + }, + backwardChore(chore: Chore) { + // change date to previous date + let newDate: string = format( + add(chore.chore_date, { + [unitConversion[chore.chore_frequency_unit]]: -chore.chore_frequency, + }), + "yyyy-MM-dd", + ); + + let newUser: number = + this.users[ + (this.users.findIndex((user) => user.user_id === chore.chore_user) + + this.users.length - + 1) % + this.users.length + ].user_id; + + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PATCH", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + chore_date: newDate, + chore_user: newUser, + }), + }).then(() => { + chore.chore_date = newDate; + chore.chore_user = newUser; + }); + }, + addChore() { + this.addingChore = { + chore_name: "", + chore_user: "", + chore_date: format(new Date(), "yyyy-MM-dd"), + chore_done: false, + chore_frequency: 1, + chore_frequency_unit: "Wochen", + }; + this.$nextTick(() => { + new AirDatepicker("#adding-chore-date-picker", { + selectedDates: [new Date()], + locale: localeDe, + dateFormat: "dd.MM.yyyy", + onSelect: (ret) => { + console.log(ret.date); + console.log(ret.formattedDate); + this.addingChore.chore_date = format(ret.date, "yyyy-MM-dd"); + }, + }); + }); + }, + saveNewChore() { + if ( + this.addingChore.chore_name === "" || + this.addingChore.chore_user === "" + ) { + return; + } + + fetch("http://localhost:8000/chores/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.addingChore), + }).then(() => { + this.allChores.push(this.addingChore); + this.addingChore = null; + }); + }, + editChore(chore: Chore) { + this.editingChore = chore; + //wait for next tick to create the datepicker + this.$nextTick(() => { + new AirDatepicker("#chore-date-picker", { + selectedDates: [new Date(chore.chore_date)], + locale: localeDe, + dateFormat: "dd.MM.yyyy", + onSelect: (ret) => { + console.log(ret.date); + console.log(ret.formattedDate); + this.editingChore.chore_date = format(ret.date, "yyyy-MM-dd"); + }, + }); + }); + }, + saveChore(chore: Chore) { + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(chore), + }).then(() => { + chore = this.editingChore; + this.editingChore = null; + }); + }, + deleteChore(chore: Chore) { + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "DELETE", + }).then(() => { + this.allChores = this.allChores.filter( + (c: Chore) => c.chore_id !== chore.chore_id, + ); + }); + }, + isOverdue(date: Date) { + console.log(this.chores); + // console.log("isOverdue"); + // console.log(date); + return this.compareDates(date, new Date()) < 0; + }, + compareDates(date1: Date, date2: Date) { + let dateString1 = this.compareFormat(date1); + let dateString2 = this.compareFormat(date2); + if (dateString1 < dateString2) { + return -1; + } else if (dateString1 > dateString2) { + return 1; + } else { + return 0; + } + }, + getUserName(userId: number) { + let user = this.users.find((user) => user.user_id === userId); + return user ? user.username : ""; + }, + compareFormat(date: Date) { + return format(date, "yyyy-MM-dd"); + }, + formatDate(date: Date | string) { + let theDate: Date; + if (typeof date === "string") { + theDate = new Date(date); + } + return format(theDate, "dd.MM.yyyy"); + }, + }, + computed: { + chores() { + if (this.onDashboard) { + return this.allChores + .filter((chore: Chore) => { + return ( + this.compareDates(new Date(chore.chore_date), this.currDate) <= 0 + ); + }) + .sort((a: Chore, b: Chore) => { + return compareAsc(a.chore_date, b.chore_date); + }); + } else { + return this.allChores + .sort((a: Chore, b: Chore) => { + a.chore_id - b.chore_id; + }) + .sort((a: Chore, b: Chore) => { + return compareAsc(a.chore_date, b.chore_date); + }); + } + }, + }, + async mounted() { + fetch("http://localhost:8000/chores/") + .then((response) => response.json()) + .then((data) => { + this.allChores = data; + }); + fetch("http://localhost:8000/users/") + .then((response) => response.json()) + .then((data) => { + // sort by id to keep the order consistent + this.users = data.sort((a: User, b: User) => a.user_id - b.user_id); + }); + }, +}; +</script> diff --git a/chorechef_frontend/src/components/Chores.vue.old b/chorechef_frontend/src/components/Chores.vue.old new file mode 100644 index 0000000..a252625 --- /dev/null +++ b/chorechef_frontend/src/components/Chores.vue.old @@ -0,0 +1,452 @@ +<script setup lang="ts"> +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faCirclePlus, + faCheck, + faTrash, + faPenToSquare, + faCaretUp, + faCaretDown, + faTimes, + faFloppyDisk, +} from "@fortawesome/free-solid-svg-icons"; +import { format, add } from "date-fns"; +import AirDatepicker from "air-datepicker"; +import "air-datepicker/air-datepicker.css"; +import localeDe from "air-datepicker/locale/de"; +</script> +<template> + <h2 class="font-bold p-1">Aufgaben</h2> + <div id="chores" class="flex flex-col shrink gap-1 p-1"> + <div + v-for="chore in chores" + class="chore items-center" + :class="{ + 'text-red-600': + chore.chore_date < compareFormatDate(new Date().toISOString()), + }" + > + <div + class="w-full border border-black rounded p-1 flex flex-row gap-4 items-center" + v-if=" + !onDashboard || + (chore.chore_date <= compareFormatDate(currDate.toISOString()) && + !chore.chore_done) + " + > + <div + v-if="onDashboard" + class="chore-checkbox border border-black w-4 h-4 rounded bg-gray-50 hover:cursor-pointer flex justify-center items-center" + @click="toggleChore(chore)" + > + <FontAwesomeIcon :icon="faCheck" v-if="chore.chore_done" /> + </div> + <div + class="chore-name w-1/4" + v-if="editChore.chore_id != chore.chore_id" + > + {{ chore.chore_name }} | {{ editChore.chore_id }} | + {{ chore.chore_id }} + </div> + <input + v-else + v-focus + v-model="editChore.chore_name" + type="text" + class="chore-name-input pl-2 pr-2 w-1/4 flex flex-row gap-1 border border-black rounded bg-gray-50" + /> + <div + class="chore-date w-[6.25rem]" + v-if="editChore.chore_id != chore.chore_id" + > + {{ formatDate(chore.chore_date) }} + </div> + <input + id="edit-date-picker" + type="text" + class="chore-date-input px-1 w-[6.25rem] bg-gray-50 border border-black rounded hover:cursor-pointer" + readonly + v-else + /> + <div + v-if="editChore.chore_id != chore.chore_id" + class="chore-frequency" + > + alle {{ chore.chore_frequency }} {{ chore.chore_frequency_unit }} + </div> + <div v-else class="flex flex-row gap-1"> + <label for="chore-frequency" class="flex flex-row shrink gap-1"> + alle + <input + v-model="editChore.chore_frequency" + type="number" + class="chore-frequency-input w-12 px-1 bg-gray-50 border border-black rounded hover:cursor-text" + /> + <select + v-model="editChore.chore_frequency_unit" + class="chore-frequency-input flex flex-row gap-1 bg-gray-50 border border-black rounded hover:cursor-pointer" + > + <option value="Tage" class="hover:cursor-pointer">Tage</option> + <option value="Wochen" class="hover:cursor-pointer"> + Wochen + </option> + <option value="Monate" class="hover:cursor-pointer"> + Monate + </option> + </select> + </label> + </div> + + <div class="px-4"> + {{ users.find((u) => u.user_id == chore.chore_user)?.username }} + </div> + + <div class="grow"></div> + <FontAwesomeIcon + v-if="editChore.chore_id == chore.chore_id" + :icon="faTimes" + class="hover:cursor-pointer pr-2 hover:text-green-600" + @click="cancelEditing" + /> + <FontAwesomeIcon + v-if="editChore.chore_id == chore.chore_id" + :icon="faFloppyDisk" + class="hover:cursor-pointer pr-2 hover:text-green-600" + @click="endEditing" + /> + <FontAwesomeIcon + v-if="!onDashboard && editChore.chore_id != chore.chore_id" + :icon="faPenToSquare" + class="hover:cursor-pointer pr-2" + @click="startEditing(chore)" + /> + <FontAwesomeIcon + v-if="!onDashboard" + :icon="faTrash" + class="hover:cursor-pointer pr-2 hover:text-red-600" + @click="deleteChore(chore)" + /> + </div> + </div> + </div> + <div + v-if="!onDashboard" + id="add-chore" + class="flex flex-row gap-4 p-1 justify-center" + > + <FontAwesomeIcon + v-if="!adding" + @click="startAdding" + :icon="faCirclePlus" + class="hover:cursor-pointer text-2xl" + /> + <div class="flex flex-row items-center gap-2 px-2 w-full" v-else> + <input + v-focus + v-model="newChore.chore_name" + type="text" + class="chore-name-input pl-2 pr-2 w-1/3 flex flex-row gap-1 bg-gray-50 border border-black rounded" + placeholder="Neue Aufgabe" + /> + <label for="date-picker" class="flex flex-row shrink gap-1"> + erste Ausführung am + <input + id="date-picker" + type="text" + class="chore-date-input px-1 w-[6.25rem] bg-gray-50 border border-black rounded hover:cursor-pointer" + readonly + /> + </label> + <label for="chore-frequency" class="flex flex-row shrink gap-1"> + alle + <input + v-model="newChore.chore_frequency" + type="number" + class="chore-frequency-input w-12 px-1 bg-gray-50 border border-black rounded hover:cursor-text" + /> + </label> + <select + v-model="newChore.chore_frequency_unit" + class="chore-frequency-input flex flex-row gap-1 bg-gray-50 border border-black rounded hover:cursor-pointer" + > + <option value="Tage" class="hover:cursor-pointer">Tage</option> + <option value="Wochen" class="hover:cursor-pointer">Wochen</option> + <option value="Monate" class="hover:cursor-pointer">Monate</option> + </select> + + <select + v-model="newChore.chore_user" + class="chore-user-input flex flex-row gap-1 bg-gray-50 border border-black rounded hover:cursor-pointer" + > + <option + v-for="user in users" + :value="user.user_id" + class="hover:cursor-pointer" + > + {{ user.username }} + </option> + </select> + + <div class="flex-grow"></div> + <FontAwesomeIcon + :icon="faTimes" + @click="adding = false" + class="hover:cursor-pointer px-2 hover:text-red-600" + /> + <FontAwesomeIcon + :icon="faCheck" + @click="endAdding" + class="hover:cursor-pointer px-2 hover:text-green-600" + /> + </div> + </div> + <div v-if="onDashboard" class="done-chores"> + <h3 class="font-bold p-1 hover:cursor-pointer" @click="toggleDoneChores"> + Erledigte Aufgaben + <FontAwesomeIcon :icon="faCaretDown" v-if="!showDone" /> + <FontAwesomeIcon :icon="faCaretUp" v-if="showDone" /> + </h3> + <div v-if="showDone" class="flex flex-col gap-1 p-1"> + <div + v-for="chore in chores.filter((c) => c.chore_done)" + class="flex flex-row shrink gap-4 border border-black rounded p-1 italic line-through text-gray-500 items-center" + > + <div + v-if="onDashboard" + class="chore-checkbox border border-black w-4 h-4 rounded bg-gray-50 hover:cursor-pointer flex justify-center items-center" + @click="toggleChore(chore)" + > + <FontAwesomeIcon :icon="faCheck" v-if="chore.chore_done" /> + </div> + <div class="chore-name w-1/4">{{ chore.chore_name }}</div> + <div class="chore-date">{{ formatDate(chore.chore_date) }}</div> + <div class="chore-frequency"> + alle {{ chore.chore_frequency }} {{ chore.chore_frequency_unit }} + </div> + + <div class="grow"></div> + </div> + </div> + </div> +</template> + +<script lang="ts"> +interface Chore { + chore_id: number; + chore_name: string; + chore_date: string; + chore_frequency: string; + chore_frequency_unit: string; + chore_done: boolean; + chore_user: number; +} +interface User { + user_id: number; + username: string; +} +export default { + name: "Chores", + data() { + return { + chores: [] as Chore[], + users: [] as User[], + adding: false, + newChore: {} as Chore, + editChore: {} as Chore, + rollBackChore: {} as Chore, + showDone: false, + unitConversion: { + Tage: "days", + Wochen: "weeks", + Monate: "months", + }, + }; + }, + props: { + currDate: Date, + onDashboard: Boolean, + }, + methods: { + toggleDoneChores() { + this.showDone = !this.showDone; + }, + async fetchChores() { + const response = await fetch("http://localhost:8000/chores/"); + const chores = await response.json(); + if (this.onDashboard) { + this.chores = chores.sort((a, b) => + a.chore_date.localeCompare(b.chore_date), + ); + } else { + this.chores = chores; + } + }, + startEditing(chore: Chore) { + this.editChore = chore; + this.rollBackChore = { ...chore }; + this.$nextTick(() => { + new AirDatepicker("#edit-date-picker", { + selectedDates: [new Date(chore.chore_date)], + locale: localeDe, + onSelect: (rec) => { + this.editChore.chore_date = format(rec.date, "yyyy-MM-dd"); + }, + }); + }); + }, + cancelEditing() { + this.editChore = this.rollBackChore; + this.rollBackChore = {} as Chore; + this.endEditing(); + // reflect the changes in the UI + this.fetchChores(); + }, + endEditing() { + fetch(`http://localhost:8000/chores/${this.editChore.chore_id}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.editChore), + }); + this.editChore = {} as Chore; + this.rollBackChore = {} as Chore; + }, + startAdding() { + this.adding = true; + this.newChore.chore_date = format(new Date(), "yyyy-MM-dd"); + this.newChore.chore_frequency = 1; + this.newChore.chore_frequency_unit = "Wochen"; + this.newChore.chore_done = false; + // pause until the element is rendered + this.$nextTick(() => { + new AirDatepicker("#date-picker", { + selectedDates: [new Date()], + locale: localeDe, + onSelect: (rec) => { + this.newChore.chore_date = format(rec.date, "yyyy-MM-dd"); + }, + }); + }); + }, + endAdding() { + console.log(this.newChore); + fetch("http://localhost:8000/chores/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + chore_name: this.newChore.chore_name, + chore_date: this.newChore.chore_date, + chore_frequency: this.newChore.chore_frequency, + chore_frequency_unit: this.newChore.chore_frequency_unit, + chore_done: false, + chore_user: this.newChore.chore_user, + }), + }); + this.chores.push(this.newChore); + this.newChore = {} as Chore; + this.adding = false; + }, + deleteChore(chore: Chore) { + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "DELETE", + }); + this.chores = this.chores.filter((c) => c.chore_id !== chore.chore_id); + }, + toggleChore(chore: Chore) { + chore.chore_done = !chore.chore_done; + this.updateDonePastChores(chore); + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(chore), + }); + }, + formatDate(date: string) { + return format(new Date(date), "d.M.yy"); + }, + compareFormatDate(date: string) { + return format(new Date(date), "yyyy-MM-dd"); + }, + moveChoreBack(chore: Chore) { + let unit = this.unitConversion[chore.chore_frequency_unit]; + let updatedChore = { + chore_id: chore.chore_id, + chore_name: chore.chore_name, + chore_date: this.compareFormatDate( + add(new Date(chore.chore_date), { + [unit]: -chore.chore_frequency, + }).toISOString(), + "yyyy-MM-dd", + ), + chore_frequency: chore.chore_frequency, + chore_frequency_unit: chore.chore_frequency_unit, + chore_done: false, + } as Chore; + this.chores.push(updatedChore); + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(updatedChore), + }); + }, + updateDonePastChores(chore) { + console.log("updateDonePastChores"); + if ( + chore.chore_date < this.compareFormatDate(new Date().toISOString()) && + chore.chore_done + ) { + let unit = this.unitConversion[chore.chore_frequency_unit]; + + let updatedChore = { + chore_id: chore.chore_id, + chore_name: chore.chore_name, + chore_date: this.compareFormatDate( + add(new Date(chore.chore_date), { + [unit]: chore.chore_frequency, + }).toISOString(), + ), + chore_frequency: chore.chore_frequency, + chore_frequency_unit: chore.chore_frequency_unit, + chore_done: false, + chore_user: chore.chore_user, + } as Chore; + console.log(this.chores); + console.log(updatedChore); + this.chores.push(updatedChore); + console.log(this.chores); + fetch(`http://localhost:8000/chores/${chore.chore_id}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(updatedChore), + }); + } + }, + fetchUsers() { + fetch("http://localhost:8000/users/").then((response) => { + response.json().then((users) => { + this.users = users.sort((a, b) => a.user_id - b.user_id); + console.log(this.users); + }); + }); + }, + }, + async mounted() { + await this.fetchChores(); + this.fetchUsers(); + }, + watch: { + currDate() { + this.fetchChores(); + }, + }, +}; +</script> diff --git a/chorechef_frontend/src/components/Dashboard.vue b/chorechef_frontend/src/components/Dashboard.vue new file mode 100644 index 0000000..8c02dc6 --- /dev/null +++ b/chorechef_frontend/src/components/Dashboard.vue @@ -0,0 +1,5 @@ +<script setup lang="ts"></script> + +<template> + <h1 class="text-4xl p-2 font-bold">ChoreChef</h1> +</template> diff --git a/chorechef_frontend/src/components/DashboardMeals.vue b/chorechef_frontend/src/components/DashboardMeals.vue new file mode 100644 index 0000000..bf329ec --- /dev/null +++ b/chorechef_frontend/src/components/DashboardMeals.vue @@ -0,0 +1,54 @@ +<script setup lang="ts"></script> +<template> + <h2 class="font-bold p-1">Essensplan</h2> + <div id="meals" class="flex flex-row grow gap-1 p-1"> + <div class="meal flex flex-col gap-1 w-1/4 border border-black rounded p-1"> + <div + class="meal-name h-2/6 text-xl font-bold border border-black rounded flex justify-center items-center" + > + Kassler + </div> + <div + class="meal-notices text-sm break-normal h-4/6 border border-black rounded p-0.5" + > + Lexker Schmecker po palekker + </div> + </div> + <div class="meal flex flex-col gap-1 w-1/4 border border-black rounded p-1"> + <div + class="meal-name h-2/6 text-xl font-bold border border-black rounded flex justify-center items-center" + > + Kassler + </div> + <div + class="meal-notices text-sm break-normal h-4/6 border border-black rounded p-0.5" + > + Lexker Schmecker po palekker + </div> + </div> + <div class="meal flex flex-col gap-1 w-1/4 border border-black rounded p-1"> + <div + class="meal-name h-2/6 text-xl font-bold border border-black rounded flex justify-center items-center" + > + Kassler + </div> + <div + class="meal-notices text-sm break-normal h-4/6 border border-black rounded p-0.5" + > + Lexker Schmecker po palekker + </div> + </div> + <div class="meal flex flex-col gap-1 w-1/4 border border-black rounded p-1"> + <div + class="meal-name h-2/6 text-xl font-bold border border-black rounded flex justify-center items-center" + > + Kassler + </div> + <div + class="meal-notices text-sm break-normal h-4/6 border border-black rounded p-0.5" + > + Lexker Schmecker po palekker + </div> + </div> + </div> +</template> diff --git a/chorechef_frontend/src/components/DashboardTasks.vue b/chorechef_frontend/src/components/DashboardTasks.vue new file mode 100644 index 0000000..2316d62 --- /dev/null +++ b/chorechef_frontend/src/components/DashboardTasks.vue @@ -0,0 +1,46 @@ +<script setup lang="ts"></script> +<template> + <h2 class="font-bold p-1">Aufgaben</h2> + <div id="tasks" class="flex flex-col grow gap-1 p-1"> + <div + class="task flex flex-row gap-4 border border-black rounded p-1 items-center" + > + <div + class="task-checkbox border border-black w-4 h-4 rounded bg-gray-50" + ></div> + <div class="task-name flex-grow">Wohnzimmer saugen</div> + </div> + <div + class="task flex flex-row gap-4 border border-black rounded p-1 items-center" + > + <div + class="task-checkbox border border-black w-4 h-4 rounded bg-gray-50" + ></div> + <div class="task-name flex-grow">Wohnzimmer saugen</div> + </div> + <div + class="task flex flex-row gap-4 border border-black rounded p-1 items-center" + > + <div + class="task-checkbox border border-black w-4 h-4 rounded bg-gray-50" + ></div> + <div class="task-name flex-grow">Wohnzimmer saugen</div> + </div> + <div + class="task flex flex-row gap-4 border border-black rounded p-1 items-center" + > + <div + class="task-checkbox border border-black w-4 h-4 rounded bg-gray-50" + ></div> + <div class="task-name flex-grow">Wohnzimmer saugen</div> + </div> + <div + class="task flex flex-row gap-4 border border-black rounded p-1 items-center" + > + <div + class="task-checkbox border border-black w-4 h-4 rounded bg-gray-50" + ></div> + <div class="task-name flex-grow">Wohnzimmer saugen</div> + </div> + </div> +</template> diff --git a/chorechef_frontend/src/components/Mealplan.vue b/chorechef_frontend/src/components/Mealplan.vue new file mode 100644 index 0000000..85b164c --- /dev/null +++ b/chorechef_frontend/src/components/Mealplan.vue @@ -0,0 +1,227 @@ +<script setup lang="ts"> +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faPenToSquare, + faTimes, + faSave, + faTrash, +} from "@fortawesome/free-solid-svg-icons"; +import { ref } from "vue"; +</script> + +<template> + <div + id="meals" + class="flex flex-row grow gap-2 p-2 bg-primary-400 shadow-lg rounded-xl m-2" + > + <div + class="meal flex flex-col gap-4 w-1/4 rounded-xl p-2 shadow-lg bg-primary-300" + v-for="n in numMeals" + > + <div class="flex flex-row"> + <div + class="meal-date text-xl font-bold flex justify-center bg-primary-200 rounded-xl shadow-lg grow" + > + {{ dateOnPos(n) }} + </div> + <div v-if="!onDashboard" class="grow"></div> + <div v-if="!onDashboard" class="flex flex-row gap-1"> + <div + class="edit-button flex p-1.5 items-center bg-primary-100 rounded-full shadow-lg hover:cursor-pointer hover:scale-110 hover:text-neutral-900 transition hover:drop-shadow-lg" + v-if="editingMeal && editingMeal.meal_date === compDateOnPos(n)" + @click="saveMeal" + > + <FontAwesomeIcon :icon="faSave" class="hover:cursor-pointer" /> + </div> + <div + class="edit-button flex p-1.5 items-center bg-primary-100 rounded-full shadow-lg hover:cursor-pointer hover:scale-110 hover:text-neutral-900 transition hover:drop-shadow-lg" + v-if="editingMeal && editingMeal.meal_date === compDateOnPos(n)" + @click="cancelEditing" + > + <FontAwesomeIcon :icon="faTimes" class="hover:cursor-pointer" /> + </div> + <div v-else class="flex flex-row gap-1"> + <div + class="edit-button flex p-1.5 items-center bg-primary-100 rounded-full shadow-lg hover:cursor-pointer hover:scale-110 hover:text-neutral-900 transition hover:drop-shadow-lg" + @click="startEditing(n)" + > + <FontAwesomeIcon :icon="faPenToSquare" /> + </div> + <div + class="edit-button flex p-1.5 items-center bg-primary-100 rounded-full shadow-lg hover:cursor-pointer hover:scale-110 hover:text-neutral-900 transition hover:drop-shadow-lg" + @click="deleteMeal(n)" + > + <FontAwesomeIcon :icon="faTrash" /> + </div> + </div> + </div> + </div> + <input + v-focus + v-if="editingMeal && editingMeal.meal_date === compDateOnPos(n)" + v-model="editingMeal.meal_name" + class="meal-name-input p-2 h-2/6 w-full bg-primary-50 rounded-xl shadow-lg border-none transition focus:ring-2 focus:ring-primary-500 indie-flower-bold text-center text-3xl" + placeholder="Neues Gericht" + /> + <div + v-else + class="meal-name h-2/6 text-3xl font-bold flex flex-col justify-center rounded-xl shadow-lg bg-primary-100 indie-flower-bold text-center" + > + {{ + meals.find( + (meal) => + meal.meal_date === + format(add(currDate, { days: n - 1 }), "yyyy-MM-dd"), + )?.meal_name + }} + </div> + <textarea + v-model="editingMeal.meal_description" + v-if="editingMeal && editingMeal.meal_date === compDateOnPos(n)" + class="meal-description-input p-2 h-4/6 flex flex-row gap-1 bg-primary-50 rounded-xl shadow-lg border-none transition focus:ring-2 focus:ring-primary-500 indie-flower-regular text-lg" + ></textarea> + + <div + v-else + class="meal-notice text-lg break-normal h-4/6 p-2 indie-flower-regular bg-primary-100 shadow-lg rounded-xl" + > + {{ + meals.find( + (meal) => + meal.meal_date === + format(add(currDate, { days: n - 1 }), "yyyy-MM-dd"), + )?.meal_description + }} + </div> + </div> + </div> +</template> + +<script lang="ts"> +import { format, add, setDefaultOptions } from "date-fns"; +import { de } from "date-fns/locale"; +setDefaultOptions({ locale: de }); +interface Meal { + meal_name: string; + meal_description: string; + meal_date: string; + meal_image: string | null; +} + +export default { + data() { + return { + meals: [] as Meal[], + editingMeal: null as Meal | null, + rollBackMeal: null as Meal | null, + }; + }, + props: { + onDashboard: Boolean, + currDate: Date, + }, + computed: { + numMeals: function () { + if (this.onDashboard) { + return 4; + } else { + return 7; + } + }, + }, + methods: { + mealOnPos(n: int) { + console.log("mealOnPos"); + const date = format(add(this.currDate, { days: n - 1 }), "yyyy-MM-dd"); + return ( + this.meals.find((meal) => meal.meal_date === date) || { + meal_name: "", + meal_description: "", + meal_date: date, + meal_image: null, + } + ); + }, + dateOnPos(n: int) { + return format(add(this.currDate, { days: n - 1 }), "EEEEEE, d. MMM"); + }, + compDateOnPos(n: int) { + return format(add(this.currDate, { days: n - 1 }), "yyyy-MM-dd"); + }, + + async fetchMeals() { + const response = await fetch("http://localhost:8000/meals"); + const data = await response.json(); + return data as Meal[]; + }, + startEditing(n: int) { + this.editingMeal = this.mealOnPos(n); + this.rollBackMeal = { ...this.editingMeal }; + }, + deleteMeal(n: int) { + const date = format(add(this.currDate, { days: n - 1 }), "yyyy-MM-dd"); + const index = this.meals.findIndex((meal) => meal.meal_date === date); + if (index !== -1) { + this.meals.splice(index, 1); + } + fetch(`http://localhost:8000/meals/${date}/`, { + method: "DELETE", + }); + }, + async saveMeal() { + const index = this.meals.findIndex( + (meal) => meal.meal_date === this.editingMeal!.meal_date, + ); + if (index !== -1) { + this.meals.splice(index, 1, this.editingMeal!); + } + + //Update the meal or create a new one in database + console.log(JSON.stringify(this.editingMeal)); + + if (index === -1) { + let resp = await fetch("http://localhost:8000/meals/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.editingMeal), + }); + console.log(resp); + console.log(resp.json()); + } else { + fetch(`http://localhost:8000/meals/${this.editingMeal!.meal_date}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.editingMeal), + }); + } + + this.meals = await this.fetchMeals(); + + this.editingMeal = null; + this.rollBackMeal = null; + }, + cancelEditing() { + console.log(this.rollBackMeal); + const index = this.meals.findIndex( + (meal) => meal.meal_date === this.editingMeal!.meal_date, + ); + if (index !== -1) { + this.meals.splice(index, 1, this.rollBackMeal!); + } + this.editingMeal = null; + this.rollBackMeal = null; + }, + }, + async mounted() { + const meals = await this.fetchMeals(); + this.meals = meals; + }, + created() { + console.log(this.currDate); + }, +}; +</script> diff --git a/chorechef_frontend/src/components/Settings.vue b/chorechef_frontend/src/components/Settings.vue new file mode 100644 index 0000000..361300d --- /dev/null +++ b/chorechef_frontend/src/components/Settings.vue @@ -0,0 +1,162 @@ +<script setup lang="ts"> +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faUser, + faTrash, + faCirclePlus, + faTimes, + faFloppyDisk, + faPenToSquare, +} from "@fortawesome/free-solid-svg-icons"; +</script> +<template> + <div class="bg-neutral-400 grow"> + <h1 class="text-4xl p-3 font-bold">Einstellungen</h1> + <div + class="p-4 w-1/3 rounded-xl mx-4 flex flex-col gap-4 bg-neutral-300 shadow-lg" + > + <h2 class="text-2xl font-bold"> + <FontAwesomeIcon :icon="faUser" /> Nutzer + </h2> + <div + v-for="user in users" + class="flex flex-row gap-4 bg-neutral-200 rounded-xl shadow-lg p-2 items-center" + > + <input + v-focus + v-on:keyup.enter="updateUser(user)" + type="text" + v-model="userToEdit.username" + placeholder="Nutzername" + class="border-none rounded-xl py-0 bg-neutral-50 focus:ring-2 focus:ring-neutral-600 shadow-lg w-1/2" + v-if="userToEdit === user" + /> + <p v-else class="px-3 bg-neutral-100 rounded-xl shadow-lg w-1/2"> + {{ user.username }} + </p> + <div class="grow"></div> + <div + class="rounded-xl shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 transition" + @click="editUser(user)" + v-if="!userToEdit" + > + <FontAwesomeIcon :icon="faPenToSquare" class="px-0.5" /> + </div> + <div + class="rounded-xl shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 transition" + @click="updateUser(user)" + v-if="userToEdit === user" + > + <FontAwesomeIcon :icon="faFloppyDisk" class="px-0.5" /> + </div> + <div + class="rounded-xl shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 transition" + @click="deleteUser(user)" + > + <FontAwesomeIcon :icon="faTrash" class="px-0.5" /> + </div> + </div> + + <div class="flex flex-grow justify-center"> + <div + class="rounded-full shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 py-2 text-xl flex items-center justify-center transition" + @click="addUser" + v-if="!userToAdd" + > + <FontAwesomeIcon :icon="faCirclePlus" class="px-1" /> + </div> + <div + v-if="userToAdd" + class="flex flex-row grow gap-4 bg-neutral-200 rounded-xl shadow-lg p-2 items-center" + > + <input + v-focus + v-on:keyup.enter="saveUser" + type="text" + v-model="userToAdd.username" + placeholder="Nutzername" + class="border-none rounded-xl py-0 bg-neutral-50 focus:ring-2 focus:ring-neutral-600 shadow-lg w-1/2" + /> + <div class="grow"></div> + <div + class="rounded-xl shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 transition" + @click="saveUser" + > + <FontAwesomeIcon :icon="faFloppyDisk" class="px-0.5" /> + </div> + + <div + class="rounded-xl shadow-lg bg-neutral-100 hover:scale-110 hover:drop-shadow-lg hover:cursor-pointer px-1 transition" + @click="userToAdd = null" + > + <FontAwesomeIcon :icon="faTimes" class="px-0.5 text-lg" /> + </div> + </div> + </div> + </div> + </div> +</template> + +<script lang="ts"> +interface User { + user_id: number; + username: string; +} +export default { + name: "Settings", + data() { + return { + users: [] as User[], + userToAdd: null as User | null, + userToEdit: null as User | null, + }; + }, + methods: { + async fetchUsers() { + const response = await fetch("http://localhost:8000/users/"); + this.users = await response.json(); + }, + addUser() { + this.userToAdd = {}; + }, + editUser(user: User) { + this.userToEdit = user; + }, + deleteUser(user: User) { + fetch("http://localhost:8000/users/" + user.user_id + "/", { + method: "DELETE", + }).then(() => { + this.fetchUsers(); + }); + }, + updateUser(user: User) { + console.log(user); + fetch("http://localhost:8000/users/" + user.user_id + "/", { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(user), + }).then(() => { + this.fetchUsers(); + this.userToEdit = null; + }); + }, + saveUser() { + fetch("http://localhost:8000/users/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.userToAdd), + }).then(() => { + this.fetchUsers(); + this.userToAdd = null; + }); + }, + }, + mounted() { + this.fetchUsers(); + }, +}; +</script> diff --git a/chorechef_frontend/src/main.ts b/chorechef_frontend/src/main.ts new file mode 100644 index 0000000..0695425 --- /dev/null +++ b/chorechef_frontend/src/main.ts @@ -0,0 +1,18 @@ +import "./assets/main.css"; + +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router"; + +const app = createApp(App); + +app.use(router); + +app.directive("focus", { + mounted(el) { + // When the bound element is inserted into the DOM... + el.focus(); // Focus the element + }, +}); + +app.mount("#app"); diff --git a/chorechef_frontend/src/router/index.ts b/chorechef_frontend/src/router/index.ts new file mode 100644 index 0000000..91f32d6 --- /dev/null +++ b/chorechef_frontend/src/router/index.ts @@ -0,0 +1,36 @@ +import { createRouter, createWebHistory } from "vue-router"; +import DashboardView from "../views/DashboardView.vue"; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: "/", + name: "dashboard", + component: DashboardView, + }, + { + path: "/mealplan", + name: "mealplan", + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import("../views/MealplanView.vue"), + }, + { + path: "/chores", + name: "chores", + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import("../views/ChoresView.vue"), + }, + { + path: "/settings", + name: "settings", + component: () => import("../views/SettingsView.vue"), + }, + ], +}); + +export default router; diff --git a/chorechef_frontend/src/views/ChoresView.vue b/chorechef_frontend/src/views/ChoresView.vue new file mode 100644 index 0000000..9f235d8 --- /dev/null +++ b/chorechef_frontend/src/views/ChoresView.vue @@ -0,0 +1,7 @@ +<script setup lang="ts"> +import Chores from "../components/Chores.vue"; +</script> + +<template> + <Chores /> +</template> diff --git a/chorechef_frontend/src/views/DashboardView.vue b/chorechef_frontend/src/views/DashboardView.vue new file mode 100644 index 0000000..e3b9e5b --- /dev/null +++ b/chorechef_frontend/src/views/DashboardView.vue @@ -0,0 +1,67 @@ +<script setup lang="ts"> +import Mealplan from "../components/Mealplan.vue"; +import Chores from "../components/Chores.vue"; +import { add, format } from "date-fns"; +import { onMounted } from "vue"; +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faCircleChevronLeft, + faCircleChevronRight, +} from "@fortawesome/free-solid-svg-icons"; +</script> +<template> + <div class="flex flex-col grow"> + <div + id="date" + class="flex justify-center m-6 p-4 rounded-xl bg-neutral-300 shadow-lg" + > + <FontAwesomeIcon + :icon="faCircleChevronLeft" + class="self-center h-8 w-8 ml-4 hover:cursor-pointer hover:drop-shadow-lg hover:scale-110 hover:text-primary-600 transition" + @click="decrementDate" + /> + + <p class="grow flex justify-center text-3xl font-semibold"> + {{ formattedDate }} + </p> + + <FontAwesomeIcon + :icon="faCircleChevronRight" + class="self-center h-8 w-8 mr-4 hover:cursor-pointer hover:drop-shadow-lg hover:scale-110 hover:text-primary-600 transition" + @click="incrementDate" + /> + </div> + <div id="content" class="flex grow px-4 gap-4"> + <div id="meals-section" class="flex flex-col w-1/2"> + <Mealplan :onDashboard="true" :currDate="currDate" /> + </div> + <div id="tasks-section" class="flex flex-col w-1/2"> + <Chores :onDashboard="true" :currDate="currDate" /> + </div> + </div> + </div> +</template> + +<script lang="ts"> +export default { + data() { + return { + currDate: new Date(), + }; + }, + name: "DashboardView", + methods: { + incrementDate() { + this.currDate = add(this.currDate, { days: 1 }); + }, + decrementDate() { + this.currDate = add(this.currDate, { days: -1 }); + }, + }, + computed: { + formattedDate() { + return format(this.currDate, "cccc d. MMMM yyyy"); + }, + }, +}; +</script> diff --git a/chorechef_frontend/src/views/MealplanView.vue b/chorechef_frontend/src/views/MealplanView.vue new file mode 100644 index 0000000..fb9c0b3 --- /dev/null +++ b/chorechef_frontend/src/views/MealplanView.vue @@ -0,0 +1,7 @@ +<script setup lang="ts"> +import Mealplan from "../components/Mealplan.vue"; +</script> + +<template> + <Mealplan :currDate="new Date()" /> +</template> diff --git a/chorechef_frontend/src/views/MealplanView.vue.old b/chorechef_frontend/src/views/MealplanView.vue.old new file mode 100644 index 0000000..f09ffc1 --- /dev/null +++ b/chorechef_frontend/src/views/MealplanView.vue.old @@ -0,0 +1,198 @@ +<script setup lang="ts"> +import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; +import { + faPenToSquare, + faTimes, + faSave, +} from "@fortawesome/free-solid-svg-icons"; +import { ref } from "vue"; +import moment from "moment"; +import de from "moment/locale/de"; +moment.locale("de", de); +</script> + +<template> + <div id="meals" class="flex flex-row grow gap-1 p-1"> + <div + class="meal flex flex-col gap-1 w-1/4 border border-black rounded p-1" + v-for="n in 7" + > + <div class="flex flex-row"> + <div class="meal-date text-xl font-bold flex justify-center"> + {{ + today() + .add(n - 1, "days") + .format("DD.MM.") + }} + </div> + <div + class="flex justify-end w-full p-1 gap-2 flex-row" + v-if="editingMeal && editingMeal.meal_date === dateOnPos(n)" + > + <FontAwesomeIcon + :icon="faSave" + @click="saveMeal" + class="hover:cursor-pointer" + /> + <FontAwesomeIcon + :icon="faTimes" + @click="cancelEditing" + class="hover:cursor-pointer" + /> + </div> + <div v-else class="edit-button flex justify-end w-full p-1"> + <FontAwesomeIcon + :icon="faPenToSquare" + @click="startEditing(n)" + class="hover:cursor-pointer" + /> + </div> + </div> + <input + v-if="editingMeal && editingMeal.meal_date === dateOnPos(n)" + v-model="editingMeal.meal_name" + class="meal-name-input p-2 h-2/6 w-full flex flex-row gap-1 bg-gray-50 border border-black rounded" + /> + <div + v-else + class="meal-name h-2/6 text-xl font-bold border border-black rounded flex flex-col justify-center items-center" + > + {{ + meals.find( + (meal) => + meal.meal_date === + today() + .add(n - 1, "days") + .format("YYYY-MM-DD"), + )?.meal_name + }} + </div> + <textarea + v-model="editingMeal.meal_description" + v-if="editingMeal && editingMeal.meal_date === dateOnPos(n)" + class="meal-description-input p-2 h-4/6 flex flex-row gap-1 bg-gray-50 border border-black rounded" + ></textarea> + + <div + v-else + class="meal-notice text-sm break-normal h-4/6 border border-black rounded p-0.5" + > + {{ + meals.find( + (meal) => + meal.meal_date === + today() + .add(n - 1, "days") + .format("YYYY-MM-DD"), + )?.meal_description + }} + </div> + </div> + </div> +</template> + +<script lang="ts"> +import moment from "moment"; + +interface Meal { + meal_name: string; + meal_description: string; + meal_date: string; + meal_image: string | null; +} + +export default { + data() { + return { + meals: [] as Meal[], + editingMeal: null as Meal | null, + rollBackMeal: null as Meal | null, + }; + }, + methods: { + today() { + return moment(); + }, + mealOnPos(n: int) { + const date = this.today() + .add(n - 1, "days") + .format("YYYY-MM-DD"); + + return ( + this.meals.find((meal) => meal.meal_date === date) || { + meal_name: "", + meal_description: "", + meal_date: date, + meal_image: null, + } + ); + }, + dateOnPos(n: int) { + return this.today() + .add(n - 1, "days") + .format("YYYY-MM-DD"); + }, + + async fetchMeals() { + const response = await fetch("http://localhost:8000/meals"); + const data = await response.json(); + return data as Meal[]; + }, + startEditing(n: int) { + this.editingMeal = this.mealOnPos(n); + this.rollBackMeal = { ...this.editingMeal }; + }, + async saveMeal() { + const index = this.meals.findIndex( + (meal) => meal.meal_date === this.editingMeal!.meal_date, + ); + if (index !== -1) { + this.meals.splice(index, 1, this.editingMeal!); + } + + //Update the meal or create a new one in database + console.log(JSON.stringify(this.editingMeal)); + + if (index === -1) { + let resp = await fetch("http://localhost:8000/meals/", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.editingMeal), + }); + console.log(resp); + console.log(resp.json()); + } else { + fetch(`http://localhost:8000/meals/${this.editingMeal!.meal_date}/`, { + method: "PUT", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(this.editingMeal), + }); + } + + this.meals = await this.fetchMeals(); + + this.editingMeal = null; + this.rollBackMeal = null; + }, + cancelEditing() { + console.log(this.rollBackMeal); + const index = this.meals.findIndex( + (meal) => meal.meal_date === this.editingMeal!.meal_date, + ); + if (index !== -1) { + this.meals.splice(index, 1, this.rollBackMeal!); + } + this.editingMeal = null; + this.rollBackMeal = null; + }, + }, + async mounted() { + const meals = await this.fetchMeals(); + this.meals = meals; + }, +}; +</script> diff --git a/chorechef_frontend/src/views/SettingsView.vue b/chorechef_frontend/src/views/SettingsView.vue new file mode 100644 index 0000000..fe7a6fb --- /dev/null +++ b/chorechef_frontend/src/views/SettingsView.vue @@ -0,0 +1,7 @@ +<script setup lang="ts"> +import Settings from "../components/Settings.vue"; +</script> + +<template> + <Settings /> +</template> diff --git a/chorechef_frontend/tailwind.config.js b/chorechef_frontend/tailwind.config.js new file mode 100644 index 0000000..74038db --- /dev/null +++ b/chorechef_frontend/tailwind.config.js @@ -0,0 +1,20 @@ +/** @type {import('tailwindcss').Config} */ +const defaultTheme = require("tailwindcss/defaultTheme"); +const colors = require("tailwindcss/colors"); + +export default { + content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], + theme: { + extend: { + fontFamily: { + sans: ["Inter var", ...defaultTheme.fontFamily.sans], + }, + colors: { + primary: colors.indigo, + secondary: colors.red, + neutral: colors.gray, + }, + }, + }, + plugins: [require("@tailwindcss/forms")], +}; diff --git a/chorechef_frontend/tsconfig.app.json b/chorechef_frontend/tsconfig.app.json new file mode 100644 index 0000000..e14c754 --- /dev/null +++ b/chorechef_frontend/tsconfig.app.json @@ -0,0 +1,14 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/chorechef_frontend/tsconfig.json b/chorechef_frontend/tsconfig.json new file mode 100644 index 0000000..66b5e57 --- /dev/null +++ b/chorechef_frontend/tsconfig.json @@ -0,0 +1,11 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/chorechef_frontend/tsconfig.node.json b/chorechef_frontend/tsconfig.node.json new file mode 100644 index 0000000..f094063 --- /dev/null +++ b/chorechef_frontend/tsconfig.node.json @@ -0,0 +1,19 @@ +{ + "extends": "@tsconfig/node20/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "noEmit": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/chorechef_frontend/vite.config.ts b/chorechef_frontend/vite.config.ts new file mode 100644 index 0000000..5c45e1d --- /dev/null +++ b/chorechef_frontend/vite.config.ts @@ -0,0 +1,16 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +}) diff --git a/startapp.sh b/startapp.sh new file mode 100755 index 0000000..38dd433 --- /dev/null +++ b/startapp.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Setup Backend +cd chorechef_backend +python -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +python manage.py migrate +cd .. + +# Setup Frontend +cd chorechef_frontend +npm install +cd .. + +# Start Application + +python chorechef_backend/manage.py runserver & npm run dev --prefix chorechef_frontend/ + + + -- GitLab