diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 0000000..d04ebb1 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,5 @@ +#!/bin/sh +echo "poetry export req" +pwd +~/.local/bin/poetry install +~/.local/bin/poetry export --without-hashes --format=requirements.txt > back/requirements.txt \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4ae0e5c..66b7f09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,11 @@ -.venv -poetry.lock +.venv/ files/* -.vscode/ \ No newline at end of file +.vscode/ +__pycache__/ +poetry.lock +<<<<<<< HEAD +files/* +.vscode/ +======= +.env +>>>>>>> bx-596-makepromo diff --git a/.vscode/PythonImportHelper-v2-Completion.json b/.vscode/PythonImportHelper-v2-Completion.json new file mode 100644 index 0000000..cc01f8c --- /dev/null +++ b/.vscode/PythonImportHelper-v2-Completion.json @@ -0,0 +1,1114 @@ +[ + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "migrations", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "models", + "importPath": "django.db", + "description": "django.db", + "isExtraImport": true, + "detail": "django.db", + "documentation": {} + }, + { + "label": "django.db.models.deletion", + "kind": 6, + "isExtraImport": true, + "importPath": "django.db.models.deletion", + "description": "django.db.models.deletion", + "detail": "django.db.models.deletion", + "documentation": {} + }, + { + "label": "admin", + "importPath": "django.contrib", + "description": "django.contrib", + "isExtraImport": true, + "detail": "django.contrib", + "documentation": {} + }, + { + "label": "admin", + "importPath": "django.contrib", + "description": "django.contrib", + "isExtraImport": true, + "detail": "django.contrib", + "documentation": {} + }, + { + "label": "admin", + "importPath": "django.contrib", + "description": "django.contrib", + "isExtraImport": true, + "detail": "django.contrib", + "documentation": {} + }, + { + "label": "admin", + "importPath": "django.contrib", + "description": "django.contrib", + "isExtraImport": true, + "detail": "django.contrib", + "documentation": {} + }, + { + "label": "AppConfig", + "importPath": "django.apps", + "description": "django.apps", + "isExtraImport": true, + "detail": "django.apps", + "documentation": {} + }, + { + "label": "AppConfig", + "importPath": "django.apps", + "description": "django.apps", + "isExtraImport": true, + "detail": "django.apps", + "documentation": {} + }, + { + "label": "AppConfig", + "importPath": "django.apps", + "description": "django.apps", + "isExtraImport": true, + "detail": "django.apps", + "documentation": {} + }, + { + "label": "json", + "kind": 6, + "isExtraImport": true, + "importPath": "json", + "description": "json", + "detail": "json", + "documentation": {} + }, + { + "label": "routers", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "serializers", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "viewsets", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "status", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "routers", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "serializers", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "viewsets", + "importPath": "rest_framework", + "description": "rest_framework", + "isExtraImport": true, + "detail": "rest_framework", + "documentation": {} + }, + { + "label": "logging", + "kind": 6, + "isExtraImport": true, + "importPath": "logging", + "description": "logging", + "detail": "logging", + "documentation": {} + }, + { + "label": "TestCase", + "importPath": "django.test", + "description": "django.test", + "isExtraImport": true, + "detail": "django.test", + "documentation": {} + }, + { + "label": "TestCase", + "importPath": "django.test", + "description": "django.test", + "isExtraImport": true, + "detail": "django.test", + "documentation": {} + }, + { + "label": "TestCase", + "importPath": "django.test", + "description": "django.test", + "isExtraImport": true, + "detail": "django.test", + "documentation": {} + }, + { + "label": "io", + "kind": 6, + "isExtraImport": true, + "importPath": "io", + "description": "io", + "detail": "io", + "documentation": {} + }, + { + "label": "base64", + "kind": 6, + "isExtraImport": true, + "importPath": "base64", + "description": "base64", + "detail": "base64", + "documentation": {} + }, + { + "label": "cv2", + "kind": 6, + "isExtraImport": true, + "importPath": "cv2", + "description": "cv2", + "detail": "cv2", + "documentation": {} + }, + { + "label": "numpy", + "kind": 6, + "isExtraImport": true, + "importPath": "numpy", + "description": "numpy", + "detail": "numpy", + "documentation": {} + }, + { + "label": "JSONParser", + "importPath": "rest_framework.parsers", + "description": "rest_framework.parsers", + "isExtraImport": true, + "detail": "rest_framework.parsers", + "documentation": {} + }, + { + "label": "MultiPartParser", + "importPath": "rest_framework.parsers", + "description": "rest_framework.parsers", + "isExtraImport": true, + "detail": "rest_framework.parsers", + "documentation": {} + }, + { + "label": "APIView", + "importPath": "rest_framework.views", + "description": "rest_framework.views", + "isExtraImport": true, + "detail": "rest_framework.views", + "documentation": {} + }, + { + "label": "JsonResponse", + "importPath": "django.http", + "description": "django.http", + "isExtraImport": true, + "detail": "django.http", + "documentation": {} + }, + { + "label": "get_object_or_404", + "importPath": "django.shortcuts", + "description": "django.shortcuts", + "isExtraImport": true, + "detail": "django.shortcuts", + "documentation": {} + }, + { + "label": "render", + "importPath": "django.shortcuts", + "description": "django.shortcuts", + "isExtraImport": true, + "detail": "django.shortcuts", + "documentation": {} + }, + { + "label": "render", + "importPath": "django.shortcuts", + "description": "django.shortcuts", + "isExtraImport": true, + "detail": "django.shortcuts", + "documentation": {} + }, + { + "label": "parse_image", + "importPath": "api.tracer", + "description": "api.tracer", + "isExtraImport": true, + "detail": "api.tracer", + "documentation": {} + }, + { + "label": "read_image", + "importPath": "api.tracer", + "description": "api.tracer", + "isExtraImport": true, + "detail": "api.tracer", + "documentation": {} + }, + { + "label": "numpy_zip_str_to_arr", + "importPath": "api.tracer", + "description": "api.tracer", + "isExtraImport": true, + "detail": "api.tracer", + "documentation": {} + }, + { + "label": "os", + "kind": 6, + "isExtraImport": true, + "importPath": "os", + "description": "os", + "detail": "os", + "documentation": {} + }, + { + "label": "get_asgi_application", + "importPath": "django.core.asgi", + "description": "django.core.asgi", + "isExtraImport": true, + "detail": "django.core.asgi", + "documentation": {} + }, + { + "label": "Path", + "importPath": "pathlib", + "description": "pathlib", + "isExtraImport": true, + "detail": "pathlib", + "documentation": {} + }, + { + "label": "load_dotenv", + "importPath": "dotenv", + "description": "dotenv", + "isExtraImport": true, + "detail": "dotenv", + "documentation": {} + }, + { + "label": "include", + "importPath": "django.urls", + "description": "django.urls", + "isExtraImport": true, + "detail": "django.urls", + "documentation": {} + }, + { + "label": "path", + "importPath": "django.urls", + "description": "django.urls", + "isExtraImport": true, + "detail": "django.urls", + "documentation": {} + }, + { + "label": "static", + "importPath": "django.conf.urls.static", + "description": "django.conf.urls.static", + "isExtraImport": true, + "detail": "django.conf.urls.static", + "documentation": {} + }, + { + "label": "csrf_exempt", + "importPath": "django.views.decorators.csrf", + "description": "django.views.decorators.csrf", + "isExtraImport": true, + "detail": "django.views.decorators.csrf", + "documentation": {} + }, + { + "label": "views", + "importPath": "api", + "description": "api", + "isExtraImport": true, + "detail": "api", + "documentation": {} + }, + { + "label": "views", + "importPath": "frontImages", + "description": "frontImages", + "isExtraImport": true, + "detail": "frontImages", + "documentation": {} + }, + { + "label": "get_wsgi_application", + "importPath": "django.core.wsgi", + "description": "django.core.wsgi", + "isExtraImport": true, + "detail": "django.core.wsgi", + "documentation": {} + }, + { + "label": "sys", + "kind": 6, + "isExtraImport": true, + "importPath": "sys", + "description": "sys", + "detail": "sys", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0002_floorplan_d_border_floorplan_d_size_floorplan_paths", + "description": "back.api.migrations.0002_floorplan_d_border_floorplan_d_size_floorplan_paths", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0001_initial'),\n ]\n operations = [\n migrations.AddField(\n model_name='floorplan',\n name='d_border',\n field=models.IntegerField(default=1),\n preserve_default=False,", + "detail": "back.api.migrations.0002_floorplan_d_border_floorplan_d_size_floorplan_paths", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0003_alter_floorplan_paths", + "description": "back.api.migrations.0003_alter_floorplan_paths", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0002_floorplan_d_border_floorplan_d_size_floorplan_paths'),\n ]\n operations = [\n migrations.AlterField(\n model_name='floorplan',\n name='paths',\n field=models.TextField(),\n ),", + "detail": "back.api.migrations.0003_alter_floorplan_paths", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0004_alter_floorplan_d_border_alter_floorplan_d_size", + "description": "back.api.migrations.0004_alter_floorplan_d_border_alter_floorplan_d_size", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0003_alter_floorplan_paths'),\n ]\n operations = [\n migrations.AlterField(\n model_name='floorplan',\n name='d_border',\n field=models.IntegerField(blank=True, null=True),\n ),", + "detail": "back.api.migrations.0004_alter_floorplan_d_border_alter_floorplan_d_size", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0005_floorplanpoints", + "description": "back.api.migrations.0005_floorplanpoints", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0004_alter_floorplan_d_border_alter_floorplan_d_size'),\n ]\n operations = [\n migrations.CreateModel(\n name='FloorplanPoints',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('points', models.JSONField()),", + "detail": "back.api.migrations.0005_floorplanpoints", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0006_remove_floorplanpoints_id_alter_floorplanpoints_plan", + "description": "back.api.migrations.0006_remove_floorplanpoints_id_alter_floorplanpoints_plan", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0005_floorplanpoints'),\n ]\n operations = [\n migrations.RemoveField(\n model_name='floorplanpoints',\n name='id',\n ),\n migrations.AlterField(", + "detail": "back.api.migrations.0006_remove_floorplanpoints_id_alter_floorplanpoints_plan", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0007_alter_product_image1_alter_product_image2_and_more", + "description": "back.api.migrations.0007_alter_product_image1_alter_product_image2_and_more", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0006_product_image2_product_image3'),\n ]\n operations = [\n migrations.AlterField(\n model_name='product',\n name='image1',\n field=models.ImageField(blank=True, default=None, null=True, upload_to='files'),\n ),", + "detail": "back.api.migrations.0007_alter_product_image1_alter_product_image2_and_more", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0008_element3d_image_clickablearea", + "description": "back.api.migrations.0008_element3d_image_clickablearea", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0007_alter_product_image1_alter_product_image2_and_more'),\n ]\n operations = [\n migrations.CreateModel(\n name='Element3D',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('model_file', models.FileField(upload_to='models/')),", + "detail": "back.api.migrations.0008_element3d_image_clickablearea", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.api.migrations.0009_remove_clickablearea_target_delete_image_and_more", + "description": "back.api.migrations.0009_remove_clickablearea_target_delete_image_and_more", + "peekOfCode": "class Migration(migrations.Migration):\n dependencies = [\n ('api', '0008_element3d_image_clickablearea'),\n ]\n operations = [\n migrations.RemoveField(\n model_name='clickablearea',\n name='target',\n ),\n migrations.DeleteModel(", + "detail": "back.api.migrations.0009_remove_clickablearea_target_delete_image_and_more", + "documentation": {} + }, + { + "label": "ApiConfig", + "kind": 6, + "importPath": "back.api.apps", + "description": "back.api.apps", + "peekOfCode": "class ApiConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'api'", + "detail": "back.api.apps", + "documentation": {} + }, + { + "label": "Product", + "kind": 6, + "importPath": "back.api.models", + "description": "back.api.models", + "peekOfCode": "class Product(models.Model):\n title = models.CharField(max_length=100)\n description = models.TextField(default=None, null=True)\n model3d = models.FileField(default=None, blank=True, null=True, upload_to=\"files\")\n image1 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n image2 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n image3 = models.ImageField(default=None, blank=True, null=True, upload_to=\"files\")\n def __str__(self):\n return self.title\n<<<<<<< HEAD", + "detail": "back.api.models", + "documentation": {} + }, + { + "label": "Floorplan", + "kind": 6, + "importPath": "back.api.models", + "description": "back.api.models", + "peekOfCode": "class Floorplan(models.Model):\n title = models.CharField(max_length=200)\n np_field = models.TextField()\n d_size = models.IntegerField(null=True, blank=True)\n d_border = models.IntegerField(null=True, blank=True)\n paths = models.TextField()\nclass FloorplanPoints(models.Model):\n plan = models.OneToOneField(Floorplan, on_delete=models.CASCADE, primary_key=True)\n points = models.JSONField()\n>>>>>>> bx-596-makepromo", + "detail": "back.api.models", + "documentation": {} + }, + { + "label": "FloorplanPoints", + "kind": 6, + "importPath": "back.api.models", + "description": "back.api.models", + "peekOfCode": "class FloorplanPoints(models.Model):\n plan = models.OneToOneField(Floorplan, on_delete=models.CASCADE, primary_key=True)\n points = models.JSONField()\n>>>>>>> bx-596-makepromo", + "detail": "back.api.models", + "documentation": {} + }, + { + "label": "ProductSerializer", + "kind": 6, + "importPath": "back.api.serializers", + "description": "back.api.serializers", + "peekOfCode": "class ProductSerializer(serializers.HyperlinkedModelSerializer):\n class Meta:\n model = Product\n fields = [\n \"id\",\n \"title\",\n \"description\",\n \"model3d\",\n \"image1\",\n \"image2\",", + "detail": "back.api.serializers", + "documentation": {} + }, + { + "label": "FloorplanSerializer", + "kind": 6, + "importPath": "back.api.serializers", + "description": "back.api.serializers", + "peekOfCode": "class FloorplanSerializer(serializers.ModelSerializer):\n class Meta:\n model = Floorplan\n fields = [\n \"id\",\n \"title\",\n \"np_field\",\n \"d_border\",\n \"d_size\",\n \"paths\",", + "detail": "back.api.serializers", + "documentation": {} + }, + { + "label": "FloorplanListSerializer", + "kind": 6, + "importPath": "back.api.serializers", + "description": "back.api.serializers", + "peekOfCode": "class FloorplanListSerializer(serializers.ModelSerializer):\n class Meta:\n model = Floorplan\n fields = [\n \"id\",\n \"title\",\n ]\nclass FloorplanPointsSerializer(serializers.ModelSerializer):\n class Meta:\n model = FloorplanPoints", + "detail": "back.api.serializers", + "documentation": {} + }, + { + "label": "FloorplanPointsSerializer", + "kind": 6, + "importPath": "back.api.serializers", + "description": "back.api.serializers", + "peekOfCode": "class FloorplanPointsSerializer(serializers.ModelSerializer):\n class Meta:\n model = FloorplanPoints\n fields = [\n \"points\",\n \"plan\",\n ]", + "detail": "back.api.serializers", + "documentation": {} + }, + { + "label": "logger", + "kind": 5, + "importPath": "back.api.serializers", + "description": "back.api.serializers", + "peekOfCode": "logger = logging.getLogger(\"root\")\nclass ProductSerializer(serializers.HyperlinkedModelSerializer):\n class Meta:\n model = Product\n fields = [\n \"id\",\n \"title\",\n \"description\",\n \"model3d\",\n \"image1\",", + "detail": "back.api.serializers", + "documentation": {} + }, + { + "label": "numpy_arr_to_zip_str", + "kind": 2, + "importPath": "back.api.tracer", + "description": "back.api.tracer", + "peekOfCode": "def numpy_arr_to_zip_str(arr):\n f = io.BytesIO()\n np.savez_compressed(f, arr=arr)\n return base64.b64encode(f.getvalue())\ndef numpy_zip_str_to_arr(zip_str):\n f = io.BytesIO(base64.b64decode(zip_str))\n return np.load(f)['arr'].tolist()\ndef read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image", + "detail": "back.api.tracer", + "documentation": {} + }, + { + "label": "numpy_zip_str_to_arr", + "kind": 2, + "importPath": "back.api.tracer", + "description": "back.api.tracer", + "peekOfCode": "def numpy_zip_str_to_arr(zip_str):\n f = io.BytesIO(base64.b64decode(zip_str))\n return np.load(f)['arr'].tolist()\ndef read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image\n :param content: Image bytes\n :returns OpenCV image\n :raises TypeError: If content is not bytes\n :raises ValueError: If content does not represent an image", + "detail": "back.api.tracer", + "documentation": {} + }, + { + "label": "read_image", + "kind": 2, + "importPath": "back.api.tracer", + "description": "back.api.tracer", + "peekOfCode": "def read_image(content: bytes) -> np.ndarray:\n \"\"\"\n Image bytes to OpenCV image\n :param content: Image bytes\n :returns OpenCV image\n :raises TypeError: If content is not bytes\n :raises ValueError: If content does not represent an image\n \"\"\"\n if not isinstance(content, bytes):\n raise TypeError(f\"Expected 'content' to be bytes, received: {type(content)}\")", + "detail": "back.api.tracer", + "documentation": {} + }, + { + "label": "parse_image", + "kind": 2, + "importPath": "back.api.tracer", + "description": "back.api.tracer", + "peekOfCode": "def parse_image(img):\n (img_h, img_w) = img.shape[:2]\n t = 1920\n w = t\n h = int((img_h / img_w) * t)\n img = cv2.resize(img, (w, h))\n gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)\n gray = 255 - gray\n gray = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)[1]\n gray = cv2.blur(gray, (10, 5))", + "detail": "back.api.tracer", + "documentation": {} + }, + { + "label": "Products", + "kind": 6, + "importPath": "back.api.views", + "description": "back.api.views", + "peekOfCode": "class Products(APIView):\n def get(self, request):\n tasks = Product.objects.all()\n serializer = ProductSerializer(tasks, many=True)\n return JsonResponse(serializer.data, safe=False)\n def post(self, request):\n data = JSONParser().parse(request)\n serializer = ProductSerializer(data=data)\n if serializer.is_valid():\n serializer.save()", + "detail": "back.api.views", + "documentation": {} + }, + { + "label": "FloorplanView", + "kind": 6, + "importPath": "back.api.views", + "description": "back.api.views", + "peekOfCode": "class FloorplanView(APIView):\n parser_classes = (\n MultiPartParser,\n JSONParser,\n )\n def post(self, request):\n try:\n file = request.FILES[\"demo\"]\n logger.info(file.__dict__)\n res = parse_image(read_image(file.read()))", + "detail": "back.api.views", + "documentation": {} + }, + { + "label": "FloorplanPointsView", + "kind": 6, + "importPath": "back.api.views", + "description": "back.api.views", + "peekOfCode": "class FloorplanPointsView(APIView):\n def get(self, request, id):\n if FloorplanPoints.objects.filter(plan=id).exists():\n points = FloorplanPoints.objects.get(plan=id)\n serializer = FloorplanPointsSerializer(points, many=False)\n return JsonResponse(serializer.data, safe=False)\n else:\n return JsonResponse(\n \"No item\", safe=False, status=status.HTTP_400_BAD_REQUEST\n )", + "detail": "back.api.views", + "documentation": {} + }, + { + "label": "logger", + "kind": 5, + "importPath": "back.api.views", + "description": "back.api.views", + "peekOfCode": "logger = logging.getLogger(\"root\")\nclass Products(APIView):\n def get(self, request):\n tasks = Product.objects.all()\n serializer = ProductSerializer(tasks, many=True)\n return JsonResponse(serializer.data, safe=False)\n def post(self, request):\n data = JSONParser().parse(request)\n serializer = ProductSerializer(data=data)\n if serializer.is_valid():", + "detail": "back.api.views", + "documentation": {} + }, + { + "label": "application", + "kind": 5, + "importPath": "back.back.asgi", + "description": "back.back.asgi", + "peekOfCode": "application = get_asgi_application()", + "detail": "back.back.asgi", + "documentation": {} + }, + { + "label": "BASE_DIR", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "BASE_DIR = Path(__file__).resolve().parent.parent\n# Quick-start development settings - unsuitable for production\n# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/\n# SECURITY WARNING: keep the secret key used in production secret!\nSECRET_KEY = \"django-insecure-ly8rk@zb&ne*-063&q-=81!d@8q0hh4$&q!_7mtqc81(rlejqd\"\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "SECRET_KEY", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "SECRET_KEY = \"django-insecure-ly8rk@zb&ne*-063&q-=81!d@8q0hh4$&q!_7mtqc81(rlejqd\"\n# SECURITY WARNING: don't run with debug turned on in production!\nDEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "DEBUG", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "DEBUG = True\nALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",\n \"back\",\n \"back:8000\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "ALLOWED_HOSTS", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "ALLOWED_HOSTS = [\n \"localhost\",\n \"localhost:8000\",\n \"127.0.0.1\",\n \"127.0.0.1:8000\",\n \"192.168.103.159\",\n \"192.168.103.159:8000\",\n \"back\",\n \"back:8000\",\n \"demo.kustarshina.ru\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "CSRF_TRUSTED_ORIGINS", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "CSRF_TRUSTED_ORIGINS = (\n \"https://demo.kustarshina.ru\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://192.168.103.159:3011\",\n \"http://192.168.103.159\",\n)\nCORS_ORIGIN_ALLOW_ALL = False", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "CORS_ORIGIN_ALLOW_ALL", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "CORS_ORIGIN_ALLOW_ALL = False\nCORS_ORIGIN_WHITELIST = [\n \"null\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://localhost:8000\",\n \"http://192.168.103.159:3011\",\n \"http://127.0.0.1\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "CORS_ORIGIN_WHITELIST", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "CORS_ORIGIN_WHITELIST = [\n \"null\",\n \"http://localhost\",\n \"http://localhost:3011\",\n \"http://localhost:4173\",\n \"http://localhost:5173\",\n \"http://localhost:8000\",\n \"http://192.168.103.159:3011\",\n \"http://127.0.0.1\",\n \"http://192.168.103.159\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "INSTALLED_APPS", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "INSTALLED_APPS = [\n \"django.contrib.admin\",\n \"django.contrib.auth\",\n \"django.contrib.contenttypes\",\n \"django.contrib.sessions\",\n \"django.contrib.messages\",\n \"django.contrib.staticfiles\",\n \"corsheaders\",\n \"api\",\n \"rest_framework\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "MIDDLEWARE", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "MIDDLEWARE = [\n \"django.middleware.security.SecurityMiddleware\",\n \"django.contrib.sessions.middleware.SessionMiddleware\",\n \"django.middleware.common.CommonMiddleware\",\n \"corsheaders.middleware.CorsMiddleware\",\n \"django.middleware.csrf.CsrfViewMiddleware\",\n \"django.contrib.auth.middleware.AuthenticationMiddleware\",\n \"django.contrib.messages.middleware.MessageMiddleware\",\n \"django.middleware.clickjacking.XFrameOptionsMiddleware\",\n]", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "ROOT_URLCONF", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "ROOT_URLCONF = \"back.urls\"\nTEMPLATES = [\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"context_processors\": [\n \"django.template.context_processors.debug\",\n \"django.template.context_processors.request\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "TEMPLATES", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "TEMPLATES = [\n {\n \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n \"DIRS\": [],\n \"APP_DIRS\": True,\n \"OPTIONS\": {\n \"context_processors\": [\n \"django.template.context_processors.debug\",\n \"django.template.context_processors.request\",\n \"django.contrib.auth.context_processors.auth\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "WSGI_APPLICATION", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "WSGI_APPLICATION = \"back.wsgi.application\"\n# Database\n# https://docs.djangoproject.com/en/5.0/ref/settings/#databases\nDATABASES = {\n \"default\": {\n \"ENGINE\": \"django.db.backends.postgresql_psycopg2\", # change engine to this\n \"NAME\": \"interactive_table\", # db name you created above\n \"HOST\": os.getenv(\"DB_HOST\"), # usually localhost\n \"USER\": os.getenv(\"DB_USER\"), # db user you created above or postgres default\n \"PASSWORD\": os.getenv(", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "DATABASES", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "DATABASES = {\n \"default\": {\n \"ENGINE\": \"django.db.backends.postgresql_psycopg2\", # change engine to this\n \"NAME\": \"interactive_table\", # db name you created above\n \"HOST\": os.getenv(\"DB_HOST\"), # usually localhost\n \"USER\": os.getenv(\"DB_USER\"), # db user you created above or postgres default\n \"PASSWORD\": os.getenv(\n \"DB_PASSWORD\"\n ), # db password you created above or postgres\n \"PORT\": os.getenv(\"DB_PORT\"), # usually 5432", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "AUTH_PASSWORD_VALIDATORS", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "AUTH_PASSWORD_VALIDATORS = [\n {\n \"NAME\": \"django.contrib.auth.password_validation.UserAttributeSimilarityValidator\",\n },\n {\n \"NAME\": \"django.contrib.auth.password_validation.MinimumLengthValidator\",\n },\n {\n \"NAME\": \"django.contrib.auth.password_validation.CommonPasswordValidator\",\n },", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "LANGUAGE_CODE", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "LANGUAGE_CODE = \"en-us\"\nTIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "TIME_ZONE", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "TIME_ZONE = \"UTC\"\nUSE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "USE_I18N", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "USE_I18N = True\nUSE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "USE_TZ", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "USE_TZ = True\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/5.0/howto/static-files/\nSTATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "STATIC_URL", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "STATIC_URL = \"static/\"\n# Default primary key field type\n# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "DEFAULT_AUTO_FIELD", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "DEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\nLOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },\n \"large\": {", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "LOGGING", + "kind": 5, + "importPath": "back.back.settings", + "description": "back.back.settings", + "peekOfCode": "LOGGING = {\n \"version\": 1,\n \"disable_existing_loggers\": False,\n \"formatters\": {\n \"verbose\": {\n \"format\": \"{levelname} {asctime} {module} {process:d} {thread:d} {message}\",\n \"style\": \"{\",\n },\n \"large\": {\n \"format\": \"%(asctime)s %(levelname)s %(process)d %(filename)s:%(lineno)d \"", + "detail": "back.back.settings", + "documentation": {} + }, + { + "label": "router", + "kind": 5, + "importPath": "back.back.urls", + "description": "back.back.urls", + "peekOfCode": "router = routers.DefaultRouter()\nrouter.register(r'api/front_img', frontimg_views.ImageViewSet)\nurlpatterns = [\n path('', include(router.urls)),\n path(\"admin/\", admin.site.urls),\n path(\"api/products\", csrf_exempt(views.Products.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan//points\", csrf_exempt(views.FloorplanPointsView.as_view())),\n] + static('/files', document_root='files')", + "detail": "back.back.urls", + "documentation": {} + }, + { + "label": "urlpatterns", + "kind": 5, + "importPath": "back.back.urls", + "description": "back.back.urls", + "peekOfCode": "urlpatterns = [\n path('', include(router.urls)),\n path(\"admin/\", admin.site.urls),\n path(\"api/products\", csrf_exempt(views.Products.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan/\", csrf_exempt(views.FloorplanView.as_view())),\n path(\"api/floorplan//points\", csrf_exempt(views.FloorplanPointsView.as_view())),\n] + static('/files', document_root='files')", + "detail": "back.back.urls", + "documentation": {} + }, + { + "label": "application", + "kind": 5, + "importPath": "back.back.wsgi", + "description": "back.back.wsgi", + "peekOfCode": "application = get_wsgi_application()", + "detail": "back.back.wsgi", + "documentation": {} + }, + { + "label": "Migration", + "kind": 6, + "importPath": "back.frontImages.migrations.0001_initial", + "description": "back.frontImages.migrations.0001_initial", + "peekOfCode": "class Migration(migrations.Migration):\n initial = True\n dependencies = [\n ]\n operations = [\n migrations.CreateModel(\n name='Element3D',\n fields=[\n ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n ('model_file', models.FileField(upload_to='models/')),", + "detail": "back.frontImages.migrations.0001_initial", + "documentation": {} + }, + { + "label": "FrontimagesConfig", + "kind": 6, + "importPath": "back.frontImages.apps", + "description": "back.frontImages.apps", + "peekOfCode": "class FrontimagesConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'frontImages'", + "detail": "back.frontImages.apps", + "documentation": {} + }, + { + "label": "Image", + "kind": 6, + "importPath": "back.frontImages.models", + "description": "back.frontImages.models", + "peekOfCode": "class Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)\n def __str__(self):\n return self.title", + "detail": "back.frontImages.models", + "documentation": {} + }, + { + "label": "group_based_upload_to", + "kind": 2, + "importPath": "back.frontImages.models", + "description": "back.frontImages.models", + "peekOfCode": "def group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)\n def __str__(self):", + "detail": "back.frontImages.models", + "documentation": {} + }, + { + "label": "logger", + "kind": 5, + "importPath": "back.frontImages.models", + "description": "back.frontImages.models", + "peekOfCode": "logger = logging.getLogger(\"root\")\ndef group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Image(models.Model):\n file = models.ImageField(upload_to=group_based_upload_to)\n alt = models.CharField(max_length=255)\n title = models.CharField(max_length=255)", + "detail": "back.frontImages.models", + "documentation": {} + }, + { + "label": "ImageSerializer", + "kind": 6, + "importPath": "back.frontImages.serializers", + "description": "back.frontImages.serializers", + "peekOfCode": "class ImageSerializer(serializers.ModelSerializer):\n class Meta:\n model = Image\n fields = \"__all__\"", + "detail": "back.frontImages.serializers", + "documentation": {} + }, + { + "label": "ImageViewSet", + "kind": 6, + "importPath": "back.frontImages.views", + "description": "back.frontImages.views", + "peekOfCode": "class ImageViewSet(viewsets.ModelViewSet):\n queryset = Image.objects.all()\n serializer_class = ImageSerializer", + "detail": "back.frontImages.views", + "documentation": {} + }, + { + "label": "ObjectConfig", + "kind": 6, + "importPath": "back.object.apps", + "description": "back.object.apps", + "peekOfCode": "class ObjectConfig(AppConfig):\n default_auto_field = 'django.db.models.BigAutoField'\n name = 'object'", + "detail": "back.object.apps", + "documentation": {} + }, + { + "label": "Element3D", + "kind": 6, + "importPath": "back.object.models", + "description": "back.object.models", + "peekOfCode": "class Element3D(models.Model):\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()\n def __str__(self):\n return self.name\nclass ClickableArea(models.Model):\n name = models.CharField(max_length=255)\n description = models.TextField()\n object_name = models.CharField(max_length=255)", + "detail": "back.object.models", + "documentation": {} + }, + { + "label": "ClickableArea", + "kind": 6, + "importPath": "back.object.models", + "description": "back.object.models", + "peekOfCode": "class ClickableArea(models.Model):\n name = models.CharField(max_length=255)\n description = models.TextField()\n object_name = models.CharField(max_length=255)\n target = models.ForeignKey(Element3D, on_delete=models.CASCADE, related_name='clickable_areas')\n def __str__(self):\n return self.name", + "detail": "back.object.models", + "documentation": {} + }, + { + "label": "group_based_upload_to", + "kind": 2, + "importPath": "back.object.models", + "description": "back.object.models", + "peekOfCode": "def group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Element3D(models.Model):\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()\n def __str__(self):", + "detail": "back.object.models", + "documentation": {} + }, + { + "label": "logger", + "kind": 5, + "importPath": "back.object.models", + "description": "back.object.models", + "peekOfCode": "logger = logging.getLogger(\"root\")\ndef group_based_upload_to(instance, filename):\n logger.info(instance)\n return \"files/image/{}/{}/{}\".format(\n type(instance).__name__.lower(), instance.id, filename\n )\nclass Element3D(models.Model):\n model_file = models.FileField(upload_to=group_based_upload_to)\n name = models.CharField(max_length=255)\n description = models.TextField()", + "detail": "back.object.models", + "documentation": {} + }, + { + "label": "main", + "kind": 2, + "importPath": "back.manage", + "description": "back.manage", + "peekOfCode": "def main():\n \"\"\"Run administrative tasks.\"\"\"\n os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'back.settings')\n try:\n from django.core.management import execute_from_command_line\n except ImportError as exc:\n raise ImportError(\n \"Couldn't import Django. Are you sure it's installed and \"\n \"available on your PYTHONPATH environment variable? Did you \"\n \"forget to activate a virtual environment?\"", + "detail": "back.manage", + "documentation": {} + } +] \ No newline at end of file diff --git a/admin_front/.gitignore b/admin_front/.gitignore new file mode 100644 index 0000000..4a7f73a --- /dev/null +++ b/admin_front/.gitignore @@ -0,0 +1,24 @@ +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example diff --git a/admin_front/README.md b/admin_front/README.md new file mode 100644 index 0000000..f5db2a2 --- /dev/null +++ b/admin_front/README.md @@ -0,0 +1,75 @@ +# Nuxt 3 Minimal Starter + +Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. + +## Setup + +Make sure to install the dependencies: + +```bash +# npm +npm install + +# pnpm +pnpm install + +# yarn +yarn install + +# bun +bun install +``` + +## Development Server + +Start the development server on `http://localhost:3000`: + +```bash +# npm +npm run dev + +# pnpm +pnpm run dev + +# yarn +yarn dev + +# bun +bun run dev +``` + +## Production + +Build the application for production: + +```bash +# npm +npm run build + +# pnpm +pnpm run build + +# yarn +yarn build + +# bun +bun run build +``` + +Locally preview production build: + +```bash +# npm +npm run preview + +# pnpm +pnpm run preview + +# yarn +yarn preview + +# bun +bun run preview +``` + +Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/admin_front/app.vue b/admin_front/app.vue new file mode 100644 index 0000000..7d34f6c --- /dev/null +++ b/admin_front/app.vue @@ -0,0 +1,36 @@ + + diff --git a/admin_front/assets/css/main.css b/admin_front/assets/css/main.css new file mode 100644 index 0000000..afbec47 --- /dev/null +++ b/admin_front/assets/css/main.css @@ -0,0 +1,38 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + + +@font-face { + font-family: 'albertus'; + src: url('~/assets/font/albertus.ttf' + ); +} + +.header { + @apply col-span-12 p-2 font-extrabold text-2xl flex align-middle justify-center bg-gradient-to-r from-primary-100 to-surface-100; + font-family: 'albertus';; +} + +.sidebar { + @apply col-span-12 md:col-span-2 pl-4 +} + +.content { + @apply col-span-12 md:col-span-10 pr-4; + min-height: calc(100vh - 7.75rem); +} + +.footer { + @apply col-span-12 p-2 text-lg flex align-middle justify-between bg-gradient-to-r from-primary-100 to-surface-100; + font-family: 'albertus'; + /* background: radial-gradient(circle at 18.7% 37.8%, rgb(250, 250, 250) 0%, rgb(225, 234, 238) 90%); */ +} + +.router-link-active { + @apply bg-surface-100 dark:bg-[rgba(255,255,255,0.03)] +} + +[data-pc-section="list"] { + @apply bg-slate-50 +} \ No newline at end of file diff --git a/admin_front/assets/font/albertus.ttf b/admin_front/assets/font/albertus.ttf new file mode 100644 index 0000000..3713495 Binary files /dev/null and b/admin_front/assets/font/albertus.ttf differ diff --git a/admin_front/assets/img/plan.png b/admin_front/assets/img/plan.png new file mode 100644 index 0000000..855d291 Binary files /dev/null and b/admin_front/assets/img/plan.png differ diff --git a/admin_front/assets/img/plan.svg b/admin_front/assets/img/plan.svg new file mode 100644 index 0000000..6be125f --- /dev/null +++ b/admin_front/assets/img/plan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin_front/components/FloorplanCanvas.vue b/admin_front/components/FloorplanCanvas.vue new file mode 100644 index 0000000..3a4fdc4 --- /dev/null +++ b/admin_front/components/FloorplanCanvas.vue @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/admin_front/components/FloorplanSvg.vue b/admin_front/components/FloorplanSvg.vue new file mode 100644 index 0000000..a2159b3 --- /dev/null +++ b/admin_front/components/FloorplanSvg.vue @@ -0,0 +1,146 @@ + + + + \ No newline at end of file diff --git a/admin_front/helpers.ts b/admin_front/helpers.ts new file mode 100644 index 0000000..a3cad98 --- /dev/null +++ b/admin_front/helpers.ts @@ -0,0 +1,5 @@ +export function* chunks(arr: T[], n: number): Generator { + for (let i = 0; i < arr.length; i += n) { + yield arr.slice(i, i + n); + } +} \ No newline at end of file diff --git a/admin_front/nuxt.config.ts b/admin_front/nuxt.config.ts new file mode 100644 index 0000000..964fe75 --- /dev/null +++ b/admin_front/nuxt.config.ts @@ -0,0 +1,28 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +import path from 'path'; + +export default defineNuxtConfig({ + devtools: { enabled: true }, + modules: [ + 'nuxt-primevue', + '@nuxtjs/tailwindcss', + '@nuxtjs/color-mode', + ], + primevue: { + options: { + unstyled: true + }, + importPT: { from: path.resolve(__dirname, './presets/aura/') } //import and apply preset + }, + css: ['~/assets/css/main.css'], + ssr: false, + devServer: { + host: '0.0.0.0', + port: 3011 + }, + runtimeConfig: { + public: { + apiBase: '', // can be overridden by NUXT_PUBLIC_API_BASE environment variable + } + }, +}) \ No newline at end of file diff --git a/admin_front/package-lock.json b/admin_front/package-lock.json new file mode 100644 index 0000000..e3b2bbb --- /dev/null +++ b/admin_front/package-lock.json @@ -0,0 +1,12683 @@ +{ + "name": "nuxt-app", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nuxt-app", + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/color-mode": "^3.4.1", + "@nuxtjs/tailwindcss": "^6.12.0", + "d3": "^7.9.0", + "nuxt": "^3.11.2", + "pathfinding": "^0.4.18", + "primeicons": "^7.0.0", + "vue": "^3.4.27", + "vue-router": "^4.3.2" + }, + "devDependencies": { + "@types/d3": "^7.4.3", + "@types/pathfinding": "^0.0.9", + "nuxt-primevue": "^0.3.1", + "sass": "^1.77.2" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", + "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", + "peer": true, + "dependencies": { + "execa": "^5.1.1", + "find-up": "^5.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/install-pkg/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@antfu/install-pkg/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "peer": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@antfu/install-pkg/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@antfu/install-pkg/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@antfu/install-pkg/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@antfu/install-pkg/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.8.tgz", + "integrity": "sha512-rWQkqXRESdjXtc+7NRfK9lASQjpXJu1ayp7qi1d23zZorY+wBHVLHHoVcMsEnkqEBWTFqbztO7/QdJFzyEcLTg==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", + "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-decorators": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", + "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "peer": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", + "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.5", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.24.5.tgz", + "integrity": "sha512-Sl8oN9bGfRlNUA2jzfzoHEZxFBDliBlwi5mPVCAWKSlBNkXXJOHpu7SDOqjF6mRoTa6GNX/1kAWG3Tr+YQ3N7A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.2.tgz", + "integrity": "sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==", + "dependencies": { + "mime": "^3.0.0" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/@cloudflare/kv-asset-handler/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz", + "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", + "peer": true, + "dependencies": { + "@floating-ui/utils": "^0.2.0" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz", + "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", + "peer": true, + "dependencies": { + "@floating-ui/core": "^1.1.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", + "peer": true + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "peer": true + }, + "node_modules/@iconify/utils": { + "version": "2.1.23", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.23.tgz", + "integrity": "sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==", + "peer": true, + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.7", + "@iconify/types": "^2.0.0", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0", + "mlly": "^1.6.1" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" + }, + "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==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==" + }, + "node_modules/@isaacs/cliui/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==", + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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==", + "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/@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==", + "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==", + "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==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@koa/router": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.1.tgz", + "integrity": "sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==", + "dependencies": { + "debug": "^4.3.4", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.2.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mswjs/interceptors": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.27.2.tgz", + "integrity": "sha512-mE6PhwcoW70EX8+h+Y/4dLfHk33GFt/y5PzDJz56ktMyaVGFXMJ5BYLbUjdmGEABfE0x5GgAGyKbrbkYww2s3A==", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.2.1", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@netlify/functions": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.6.3.tgz", + "integrity": "sha512-7Z9gWyAuPI2NnBOvpYPD66KIWOgNznLz9BkyZ0c7qeRE6p23UCMVZ2VsrJpjPDgoJtKplGSBzASl6fQD7iEeWw==", + "dependencies": { + "@netlify/serverless-functions-api": "1.18.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@netlify/node-cookies": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@netlify/node-cookies/-/node-cookies-0.1.0.tgz", + "integrity": "sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==", + "engines": { + "node": "^14.16.0 || >=16.0.0" + } + }, + "node_modules/@netlify/serverless-functions-api": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-1.18.0.tgz", + "integrity": "sha512-VCU5btoGZ8M6iI7HSwpfZXCpBLKWFmRtq5xYt0K7dY96BZWVBmaZY6Tn+w4L2DrGXwAsIeOFNp8CHjVXfuCAkg==", + "dependencies": { + "@mswjs/interceptors": "0.27.2", + "@netlify/node-cookies": "^0.1.0", + "@opentelemetry/core": "^1.23.0", + "@opentelemetry/otlp-transformer": "^0.50.0", + "@opentelemetry/resources": "^1.23.0", + "@opentelemetry/sdk-trace-base": "^1.23.0", + "@opentelemetry/semantic-conventions": "^1.23.0", + "urlpattern-polyfill": "8.0.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz", + "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.0.tgz", + "integrity": "sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ==", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@nuxt/devalue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz", + "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==" + }, + "node_modules/@nuxt/devtools": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-1.3.1.tgz", + "integrity": "sha512-SuiuqtlN6OMPn7hYqbydcJmRF/L86yxi8ApcjNVnMURYBPaAAN9egkEFpQ6AjzjX+UnaG1hU8FE0w6pWKSRp3A==", + "dependencies": { + "@antfu/utils": "^0.7.8", + "@nuxt/devtools-kit": "1.3.1", + "@nuxt/devtools-wizard": "1.3.1", + "@nuxt/kit": "^3.11.2", + "@vue/devtools-applet": "^7.1.3", + "@vue/devtools-core": "^7.1.3", + "@vue/devtools-kit": "^7.1.3", + "birpc": "^0.2.17", + "consola": "^3.2.3", + "cronstrue": "^2.50.0", + "destr": "^2.0.3", + "error-stack-parser-es": "^0.1.1", + "execa": "^7.2.0", + "fast-glob": "^3.3.2", + "flatted": "^3.3.1", + "get-port-please": "^3.1.2", + "hookable": "^5.5.3", + "image-meta": "^0.2.0", + "is-installed-globally": "^1.0.0", + "launch-editor": "^2.6.1", + "local-pkg": "^0.5.0", + "magicast": "^0.3.4", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pacote": "^18.0.6", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.1.1", + "rc9": "^2.1.2", + "scule": "^1.3.0", + "semver": "^7.6.2", + "simple-git": "^3.24.0", + "sirv": "^2.0.4", + "unimport": "^3.7.1", + "vite-plugin-inspect": "^0.8.4", + "vite-plugin-vue-inspector": "^5.1.0", + "which": "^3.0.1", + "ws": "^8.17.0" + }, + "bin": { + "devtools": "cli.mjs" + }, + "peerDependencies": { + "nuxt": "^3.9.0", + "vite": "*" + } + }, + "node_modules/@nuxt/devtools-kit": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-1.3.1.tgz", + "integrity": "sha512-YckEiiTef3dMckwLLUb+feKV0O8pS9s8ujw/FQ600oQbOCbq6hpWY5HQYxVYc3E41wu87lFiIZ1rnHjO3nM9sw==", + "dependencies": { + "@nuxt/kit": "^3.11.2", + "@nuxt/schema": "^3.11.2", + "execa": "^7.2.0" + }, + "peerDependencies": { + "nuxt": "^3.9.0", + "vite": "*" + } + }, + "node_modules/@nuxt/devtools-wizard": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-1.3.1.tgz", + "integrity": "sha512-t6qTp573s1NWoS1nqOqKRld6wFWDiMzoFojBG8GeqTwPi2NYbjyPbQobmvMGiihkWPudMpChhAhYwTTyCPFE7Q==", + "dependencies": { + "consola": "^3.2.3", + "diff": "^5.2.0", + "execa": "^7.2.0", + "global-directory": "^4.0.1", + "magicast": "^0.3.4", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "prompts": "^2.4.2", + "rc9": "^2.1.2", + "semver": "^7.6.2" + }, + "bin": { + "devtools-wizard": "cli.mjs" + } + }, + "node_modules/@nuxt/kit": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.11.2.tgz", + "integrity": "sha512-yiYKP0ZWMW7T3TCmsv4H8+jEsB/nFriRAR8bKoSqSV9bkVYWPE36sf7JDux30dQ91jSlQG6LQkB3vCHYTS2cIg==", + "dependencies": { + "@nuxt/schema": "3.11.2", + "c12": "^1.10.0", + "consola": "^3.2.3", + "defu": "^6.1.4", + "globby": "^14.0.1", + "hash-sum": "^2.0.0", + "ignore": "^5.3.1", + "jiti": "^1.21.0", + "knitwork": "^1.1.0", + "mlly": "^1.6.1", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "scule": "^1.3.0", + "semver": "^7.6.0", + "ufo": "^1.5.3", + "unctx": "^2.3.1", + "unimport": "^3.7.1", + "untyped": "^1.4.2" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/schema": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.11.2.tgz", + "integrity": "sha512-Z0bx7N08itD5edtpkstImLctWMNvxTArsKXzS35ZuqyAyKBPcRjO1CU01slH0ahO30Gg9kbck3/RKNZPwfOjJg==", + "dependencies": { + "@nuxt/ui-templates": "^1.3.2", + "consola": "^3.2.3", + "defu": "^6.1.4", + "hookable": "^5.5.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "scule": "^1.3.0", + "std-env": "^3.7.0", + "ufo": "^1.5.3", + "unimport": "^3.7.1", + "untyped": "^1.4.2" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/telemetry": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.5.4.tgz", + "integrity": "sha512-KH6wxzsNys69daSO0xUv0LEBAfhwwjK1M+0Cdi1/vxmifCslMIY7lN11B4eywSfscbyVPAYJvANyc7XiVPImBQ==", + "dependencies": { + "@nuxt/kit": "^3.11.2", + "ci-info": "^4.0.0", + "consola": "^3.2.3", + "create-require": "^1.1.1", + "defu": "^6.1.4", + "destr": "^2.0.3", + "dotenv": "^16.4.5", + "git-url-parse": "^14.0.0", + "is-docker": "^3.0.0", + "jiti": "^1.21.0", + "mri": "^1.2.0", + "nanoid": "^5.0.7", + "ofetch": "^1.3.4", + "parse-git-config": "^3.0.0", + "pathe": "^1.1.2", + "rc9": "^2.1.2", + "std-env": "^3.7.0" + }, + "bin": { + "nuxt-telemetry": "bin/nuxt-telemetry.mjs" + } + }, + "node_modules/@nuxt/ui-templates": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@nuxt/ui-templates/-/ui-templates-1.3.3.tgz", + "integrity": "sha512-3BG5doAREcD50dbKyXgmjD4b1GzY8CUy3T41jMhHZXNDdaNwOd31IBq+D6dV00OSrDVhzrTVj0IxsUsnMyHvIQ==" + }, + "node_modules/@nuxt/vite-builder": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.11.2.tgz", + "integrity": "sha512-eXTZsAAN4dPz4eA2UD5YU2kD/DqgfyQp1UYsIdCe6+PAVe1ifkUboBjbc0piR5+3qI/S/eqk3nzxRGbiYF7Ccg==", + "dependencies": { + "@nuxt/kit": "3.11.2", + "@rollup/plugin-replace": "^5.0.5", + "@vitejs/plugin-vue": "^5.0.4", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "autoprefixer": "^10.4.19", + "clear": "^0.1.0", + "consola": "^3.2.3", + "cssnano": "^6.1.2", + "defu": "^6.1.4", + "esbuild": "^0.20.2", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "externality": "^1.0.2", + "fs-extra": "^11.2.0", + "get-port-please": "^3.1.2", + "h3": "^1.11.1", + "knitwork": "^1.1.0", + "magic-string": "^0.30.9", + "mlly": "^1.6.1", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "postcss": "^8.4.38", + "rollup-plugin-visualizer": "^5.12.0", + "std-env": "^3.7.0", + "strip-literal": "^2.1.0", + "ufo": "^1.5.3", + "unenv": "^1.9.0", + "unplugin": "^1.10.1", + "vite": "^5.2.8", + "vite-node": "^1.4.0", + "vite-plugin-checker": "^0.6.4", + "vue-bundle-renderer": "^2.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + }, + "peerDependencies": { + "vue": "^3.3.4" + } + }, + "node_modules/@nuxtjs/color-mode": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@nuxtjs/color-mode/-/color-mode-3.4.1.tgz", + "integrity": "sha512-vZgJqDstxInGw3RGSWbLoCLXtU1mvh1LLeuEA/X3a++DYA4ifwSbNoiSiOyb9qZHFEwz1Xr99H71sXV4IhOaEg==", + "dependencies": { + "@nuxt/kit": "^3.11.2", + "pathe": "^1.1.2", + "pkg-types": "^1.1.0", + "semver": "^7.6.0" + } + }, + "node_modules/@nuxtjs/tailwindcss": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@nuxtjs/tailwindcss/-/tailwindcss-6.12.0.tgz", + "integrity": "sha512-vXvEq8z177TQcx0tc10mw3O6T9WeN0iTL8hIKGDfidmr+HKReexJU01aPgHefFrCu4LJB70egYFYnywzB9lMyQ==", + "dependencies": { + "@nuxt/kit": "^3.11.2", + "autoprefixer": "^10.4.19", + "consola": "^3.2.3", + "defu": "^6.1.4", + "h3": "^1.11.1", + "pathe": "^1.1.2", + "postcss": "^8.4.38", + "postcss-nesting": "^12.1.1", + "tailwind-config-viewer": "^2.0.1", + "tailwindcss": "~3.4.3", + "ufo": "^1.5.3", + "unctx": "^2.3.1" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==" + }, + "node_modules/@opentelemetry/api": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", + "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.50.0.tgz", + "integrity": "sha512-JdZuKrhOYggqOpUljAq4WWNi5nB10PmgoF0y2CvedLGXd0kSawb/UBnWT8gg1ND3bHCNHStAIVT0ELlxJJRqrA==", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.24.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.50.0.tgz", + "integrity": "sha512-s0sl1Yfqd5q1Kjrf6DqXPWzErL+XHhrXOfejh4Vc/SMTNqC902xDsC8JQxbjuramWt/+hibfguIvi7Ns8VLolA==", + "dependencies": { + "@opentelemetry/api-logs": "0.50.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-logs": "0.50.0", + "@opentelemetry/sdk-metrics": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/resources": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.23.0.tgz", + "integrity": "sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", + "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", + "dependencies": { + "@opentelemetry/core": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.50.0.tgz", + "integrity": "sha512-PeUEupBB29p9nlPNqXoa1PUWNLsZnxG0DCDj3sHqzae+8y76B/A5hvZjg03ulWdnvBLYpnJslqzylG9E0IL87g==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.9.0", + "@opentelemetry/api-logs": ">=0.39.1" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.23.0.tgz", + "integrity": "sha512-4OkvW6+wST4h6LFG23rXSTf6nmTf201h9dzq7bE0z5R9ESEVLERZz6WXwE7PSgg1gdjlaznm1jLJf8GttypFDg==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.23.0.tgz", + "integrity": "sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.23.0.tgz", + "integrity": "sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.23.0.tgz", + "integrity": "sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.24.1.tgz", + "integrity": "sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==", + "dependencies": { + "@opentelemetry/core": "1.24.1", + "@opentelemetry/resources": "1.24.1", + "@opentelemetry/semantic-conventions": "1.24.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", + "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz", + "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==", + "bundleDependencies": [ + "napi-wasm" + ], + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "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==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" + }, + "node_modules/@rollup/plugin-alias": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz", + "integrity": "sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==", + "dependencies": { + "slash": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-alias/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.7", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", + "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/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/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/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/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/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/@rollup/rollup-android-arm-eabi": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz", + "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz", + "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.5.2.tgz", + "integrity": "sha512-wSAOgaz48GmhILFElMCeQypSZmj6Ru6DttOOtl3KNkdJ17ApQuGNCfzpk4cClasVrnIu45++2DBwG4LNMQAfaA==" + }, + "node_modules/@sigstore/bundle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", + "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz", + "integrity": "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==", + "dependencies": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz", + "integrity": "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", + "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", + "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "dev": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dev": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dev": true, + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "dev": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "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==" + }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/pathfinding": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/pathfinding/-/pathfinding-0.0.9.tgz", + "integrity": "sha512-b7tf4+gVc8+sRETzJ7pCeqhknQ9XVgYqbH5+ekcHmO5Hf/fy9BTBzSstE9mcOQc81Y0qITda8tF/UsN3huIMwg==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "node_modules/@unhead/dom": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.9.10.tgz", + "integrity": "sha512-F4sBrmd8kG8MEqcVTGL0Y6tXbJMdWK724pznUzefpZTs1GaVypFikLluaLt4EnICcVhOBSe4TkGrc8N21IJJzQ==", + "dependencies": { + "@unhead/schema": "1.9.10", + "@unhead/shared": "1.9.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/schema": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.9.10.tgz", + "integrity": "sha512-3ROh0doKfA7cIcU0zmjYVvNOiJuxSOcjInL+7iOFIxQovEWr1PcDnrnbEWGJsXrLA8eqjrjmhuDqAr3JbMGsLg==", + "dependencies": { + "hookable": "^5.5.3", + "zhead": "^2.2.4" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/shared": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.9.10.tgz", + "integrity": "sha512-LBXxm/8ahY4FZ0FbWVaM1ANFO5QpPzvaYwjAQhgHANsrqFP2EqoGcOv1CfhdQbxg8vpGXkjI7m0r/8E9d3JoDA==", + "dependencies": { + "@unhead/schema": "1.9.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/ssr": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.9.10.tgz", + "integrity": "sha512-4hy3uFrYGJd5h0jmCIC0vFBf5DDhbz+j6tkATTNIaLz5lR4ZdFT+ipwzR20GvnaOiGWiOhZF3yv9FTJQyX4jog==", + "dependencies": { + "@unhead/schema": "1.9.10", + "@unhead/shared": "1.9.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/vue": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.9.10.tgz", + "integrity": "sha512-Zi65eTU5IIaqqXAVOVJ4fnwJRR751FZIFlzYOjIekf1eNkISy+A4xyz3NIEQWSlXCrOiDNgDhT0YgKUcx5FfHQ==", + "dependencies": { + "@unhead/schema": "1.9.10", + "@unhead/shared": "1.9.10", + "hookable": "^5.5.3", + "unhead": "1.9.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=2.7 || >=3" + } + }, + "node_modules/@unocss/astro": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/astro/-/astro-0.60.2.tgz", + "integrity": "sha512-H8kJHj8aCQXksr0o7OpHqNkzm0RmpOm+qCt8vRcJJVFrdzQyaIQ/vyq3BUTV0Ex6OSzPirTe8fOaWoZdKtKf2Q==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/reset": "0.60.2", + "@unocss/vite": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/@unocss/cli": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/cli/-/cli-0.60.2.tgz", + "integrity": "sha512-zX7eM95UI6LpKRfHTr8T2gSlFFXemPUswBxR5H4vPVlLeeCOhJWfc04vGdtSwoix5qFdnhQWIwzXGXAaB+kwoA==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.60.2", + "@unocss/core": "0.60.2", + "@unocss/preset-uno": "0.60.2", + "cac": "^6.7.14", + "chokidar": "^3.6.0", + "colorette": "^2.0.20", + "consola": "^3.2.3", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.10", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0" + }, + "bin": { + "unocss": "bin/unocss.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/config": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/config/-/config-0.60.2.tgz", + "integrity": "sha512-EEgivE1xEnamAsYMcmjUmLJjOa9dBdV2zygT/blSFyX6rMfA4OuRlZ8hgfeWrHImZGiTXUU0jV2EaRmK9jEImQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "unconfig": "^0.3.13" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/core": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/core/-/core-0.60.2.tgz", + "integrity": "sha512-9i+eAJAqvy9bv0vrQxUU7VtR+wO6Vfk6dqrPHKRV/vlbwRT18v/C++dQ2L6PLM1CKxgNTeld0iTlpo8J3xZlxQ==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/extractor-arbitrary-variants": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/extractor-arbitrary-variants/-/extractor-arbitrary-variants-0.60.2.tgz", + "integrity": "sha512-uO4ZPUcaYvyWshXnqzFnSWeh+Du6xVYwaz3oBKq4n7Ryw2Grc0IhiZe6n9MC8w6nkbopdo6ngr5LnFGp86horQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/inspector/-/inspector-0.60.2.tgz", + "integrity": "sha512-tc+TtTA7yNCS10oT7MfI2rEv1KErwLgEDRvBLCM1vsXmjzsGxkhqnT3vT5pqRkENYh/QhmIfpz1899GvH8WBMQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/rule-utils": "0.60.2", + "gzip-size": "^6.0.0", + "sirv": "^2.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/inspector/node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "peer": true, + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@unocss/postcss": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/postcss/-/postcss-0.60.2.tgz", + "integrity": "sha512-fGXzhx5bh1iYxQ0wThmUsu+KMxCTqZsQQZ/a2kbTNzmOIslX1/cCWaQ62BWsfER7rOnZVG6DzGR+3CzVcDzuXg==", + "peer": true, + "dependencies": { + "@unocss/config": "0.60.2", + "@unocss/core": "0.60.2", + "@unocss/rule-utils": "0.60.2", + "css-tree": "^2.3.1", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/@unocss/preset-attributify": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-attributify/-/preset-attributify-0.60.2.tgz", + "integrity": "sha512-PQDObhVtopL/eEceAHX/pBmPQhm50l4yhTu/pMH31hL13DuRYODngWe00jjgmMRTwIAFpMpDVKk2GjxeD05+cQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-icons": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-icons/-/preset-icons-0.60.2.tgz", + "integrity": "sha512-knE4CKn4tgjvyZQSZTuC5FIO2/jcP1AWBvpWyJTax5kcKAIrL8IU4b7PhiPwPrQpe0LBTtyQKWCXqWXp7DhDwA==", + "peer": true, + "dependencies": { + "@iconify/utils": "^2.1.23", + "@unocss/core": "0.60.2", + "ofetch": "^1.3.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-mini": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-mini/-/preset-mini-0.60.2.tgz", + "integrity": "sha512-Vp5UWzD9FgxeYNhyJIXjMt8HyL7joGJWzmFa2zR8ZAYZ+WIIIJWtxa+9/H8gJgnGTWa2H9oyj9h3IqOYT/lmSg==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/extractor-arbitrary-variants": "0.60.2", + "@unocss/rule-utils": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-tagify": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-tagify/-/preset-tagify-0.60.2.tgz", + "integrity": "sha512-M730DpoPJ8/uG7aKme9EYrzspr0WfKp7z3CTpb2hb4YHuiCXmiTjdxo5xa9vK3ZGQTZlUkG0rz3TLw8tRKqRDg==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-typography": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-typography/-/preset-typography-0.60.2.tgz", + "integrity": "sha512-QKJi1LbC/f8RwwSwV6yQCXu/8wlBcrNyKiUSe7o9I2NYP+mzINlp64pXEP43UtUQo6x8Dil/TuzpRqMFPG/pMA==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/preset-mini": "0.60.2" + } + }, + "node_modules/@unocss/preset-uno": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-uno/-/preset-uno-0.60.2.tgz", + "integrity": "sha512-ggOCehuBm6depGV+79heBlcYlwgcfbIMLnxbywZPIrLwPB/4YaTArBcG4giKILyu4p2PcodAZvfv4uYXrLaE5Q==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/preset-mini": "0.60.2", + "@unocss/preset-wind": "0.60.2", + "@unocss/rule-utils": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-web-fonts": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-web-fonts/-/preset-web-fonts-0.60.2.tgz", + "integrity": "sha512-1lHZVOR6JHkPOvFBQeqZLoAwDk9spUxrX2WfLSVL+sCuBLLeo8voa/LnCxPxKiQwKZGEEoh+qM2MKsLnRd+P6w==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "ofetch": "^1.3.4" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/preset-wind": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/preset-wind/-/preset-wind-0.60.2.tgz", + "integrity": "sha512-9Ml2Wyn7LAcKfqHMJmflT/jdz5eLZtm3SEZKH5Lfk5MOyeVm6NDXjXK140u3zaP5tGKqtO6akJZGtYktWJ6+WQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/preset-mini": "0.60.2", + "@unocss/rule-utils": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/reset": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.60.2.tgz", + "integrity": "sha512-kM0DYAcbmzpAyHefa/W+cifBTScWeZGsNpKagMQ6vci6OlTUiDB1GcmhQZ6dC0Ks59GtPmRbzZLaK1MgG6ayrA==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/rule-utils": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/rule-utils/-/rule-utils-0.60.2.tgz", + "integrity": "sha512-pg3XbU0s0TmmRk0UkSV6wTlca+Zz5xe9V+Mk8a5QqVp0oJ2jNWHO9AfzF4NcvTzM2zV2a/WbpjSBgoK8iAz3zg==", + "peer": true, + "dependencies": { + "@unocss/core": "^0.60.2", + "magic-string": "^0.30.10" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/scope": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/scope/-/scope-0.60.2.tgz", + "integrity": "sha512-pdwNZzQBb6rllgCwirPPrydDZH2XL0DI8/W7iM1RKYiNeDYjoDAWdVD46CrRmxadiHesrhdIwDL6rQz7Q7bl0w==", + "peer": true + }, + "node_modules/@unocss/transformer-attributify-jsx": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.60.2.tgz", + "integrity": "sha512-GZbtuZLz3COMhEqdc33zmn8cKupAzVeLcAV66EL+zj7hfZIvrIEs5RFajtzlkQa7RC5YOOjZfHxMccGBEP1RMQ==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-attributify-jsx-babel": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-attributify-jsx-babel/-/transformer-attributify-jsx-babel-0.60.2.tgz", + "integrity": "sha512-mb66b39qsjyH7+XqC/0ciLdPatVKH5CfMDxUMvzczuFTQ/+V3VAN/Mm6Ru+oxMgbf7qPTALSnLgu6RUhEldTzA==", + "peer": true, + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/preset-typescript": "^7.24.1", + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-compile-class": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-compile-class/-/transformer-compile-class-0.60.2.tgz", + "integrity": "sha512-dZfkGsqd7mdyRRCG8om5lTxQ4CjaaDka8gPbVawbDkK4U53G2vnN3daVlE7UflUXS32hOPj16RfOcb8cH+pypw==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/transformer-directives": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-directives/-/transformer-directives-0.60.2.tgz", + "integrity": "sha512-p4ZtXoz1mZ125WfANFAD6pXwQJdA4lfff5abZfoDiTPLvtvYQFmwGCeBXUnEKAnBnTwwiBD2zsIwGfumWAsqrA==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2", + "@unocss/rule-utils": "0.60.2", + "css-tree": "^2.3.1" + } + }, + "node_modules/@unocss/transformer-variant-group": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/transformer-variant-group/-/transformer-variant-group-0.60.2.tgz", + "integrity": "sha512-2eE2MZhFhNj+3fxO9VE1yC8LddUn9vetNZKrgGlegrBH/jOL9Pn/vygBmMAg1XFLEgC3DtvwdzCKMVttV30Ivw==", + "peer": true, + "dependencies": { + "@unocss/core": "0.60.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@unocss/vite": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@unocss/vite/-/vite-0.60.2.tgz", + "integrity": "sha512-+gBjyT5z/aZgPIZxpUbiXyOt1diY9YQfIJStOhBG0MP6daMdDX78SnDuUq/zKMk9EJuZ3FxhbZF5dYSD4bhJmw==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@rollup/pluginutils": "^5.1.0", + "@unocss/config": "0.60.2", + "@unocss/core": "0.60.2", + "@unocss/inspector": "0.60.2", + "@unocss/scope": "0.60.2", + "@unocss/transformer-directives": "0.60.2", + "chokidar": "^3.6.0", + "fast-glob": "^3.3.2", + "magic-string": "^0.30.10" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/@vercel/nft": { + "version": "0.26.5", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.5.tgz", + "integrity": "sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.5", + "@rollup/pluginutils": "^4.0.0", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.2", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vercel/nft/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@vercel/nft/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@vercel/nft/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/@vercel/nft/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vercel/nft/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vue-macros/common": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.10.3.tgz", + "integrity": "sha512-YSgzcbXrRo8a/TF/YIguqEmTld1KA60VETKJG8iFuaAfj7j+Tbdin3cj7/cYbcCHORSq1v9IThgq7r8keH7LXQ==", + "dependencies": { + "@babel/types": "^7.24.0", + "@rollup/pluginutils": "^5.1.0", + "@vue/compiler-sfc": "^3.4.25", + "ast-kit": "^0.12.1", + "local-pkg": "^0.5.0", + "magic-string-ast": "^0.5.0" + }, + "engines": { + "node": ">=16.14.0" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.2.tgz", + "integrity": "sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.2.tgz", + "integrity": "sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==", + "dependencies": { + "@babel/helper-module-imports": "~7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "@vue/babel-helper-vue-transform-on": "1.2.2", + "@vue/babel-plugin-resolve-type": "1.2.2", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-jsx/node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.2.tgz", + "integrity": "sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/helper-module-imports": "~7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/parser": "^7.23.9", + "@vue/compiler-sfc": "^3.4.15" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz", + "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.27", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-core/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/@vue/compiler-dom": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz", + "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==", + "dependencies": { + "@vue/compiler-core": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz", + "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.27", + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-sfc/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/@vue/compiler-ssr": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz", + "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==", + "dependencies": { + "@vue/compiler-dom": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, + "node_modules/@vue/devtools-applet": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-applet/-/devtools-applet-7.2.0.tgz", + "integrity": "sha512-ohl3uHejqu8v6BoCfsadpo6/QU1o585Im8AbH4bZiQTKdIot7OlBdk7pz9bK3muV6N1xKuiDNwYul0QYClOeSg==", + "dependencies": { + "@vue/devtools-core": "^7.2.0", + "@vue/devtools-kit": "^7.2.0", + "@vue/devtools-shared": "^7.2.0", + "@vue/devtools-ui": "^7.2.0", + "lodash-es": "^4.17.21", + "perfect-debounce": "^1.0.0", + "shiki": "1.5.2", + "splitpanes": "^3.1.5", + "vue-virtual-scroller": "2.0.0-beta.8" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-core": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.2.0.tgz", + "integrity": "sha512-cHSeu70rTtubt2DYia+VDGNTC1m84Xyuk5eNTjmOpMLECaJnWnzCv6kR84EZp7rG+MVZalJG+4ecX2GaTbU3cQ==", + "dependencies": { + "@vue/devtools-kit": "^7.2.0", + "@vue/devtools-shared": "^7.2.0", + "mitt": "^3.0.1", + "nanoid": "^3.3.4", + "pathe": "^1.1.2", + "vite-hot-client": "^0.2.3" + } + }, + "node_modules/@vue/devtools-core/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/@vue/devtools-kit": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.2.0.tgz", + "integrity": "sha512-Kx+U0QiQg/g714euYKfnCdhTcOycSlH1oyTE57D0sAmisdsRCNLfXcnnIwcFY2jdCpuz9DNbuE0VWQuYF5zAZQ==", + "dependencies": { + "@vue/devtools-shared": "^7.2.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.2.0.tgz", + "integrity": "sha512-gVr3IjKjU7axNvclRgICgy1gq/TDnF1hhBAEox+l5mMXZiTIFVIm1zpcIPssc0HxMDgzy+lXqOVsY4DGyZ+ZeA==", + "dependencies": { + "rfdc": "^1.3.1" + } + }, + "node_modules/@vue/devtools-ui": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-ui/-/devtools-ui-7.2.0.tgz", + "integrity": "sha512-5raf2DLgicnT6vr9oO8kgN49ZqdDYtyph4hBH3sg9bvY2UtHgJs6m8uPqai5vKSrrEy/V30Rq/tahQlOiEbi+Q==", + "dependencies": { + "@vue/devtools-shared": "7.2.0", + "@vueuse/components": "^10.9.0", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", + "colord": "^2.9.3", + "focus-trap": "^7.5.4" + }, + "peerDependencies": { + "@unocss/reset": ">=0.50.0-0", + "floating-vue": ">=2.0.0-0", + "unocss": ">=0.50.0-0", + "vue": ">=3.0.0-0" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz", + "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==", + "dependencies": { + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz", + "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==", + "dependencies": { + "@vue/reactivity": "3.4.27", + "@vue/shared": "3.4.27" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz", + "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==", + "dependencies": { + "@vue/runtime-core": "3.4.27", + "@vue/shared": "3.4.27", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz", + "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==", + "dependencies": { + "@vue/compiler-ssr": "3.4.27", + "@vue/shared": "3.4.27" + }, + "peerDependencies": { + "vue": "3.4.27" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz", + "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==" + }, + "node_modules/@vueuse/components": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.9.0.tgz", + "integrity": "sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==", + "dependencies": { + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + } + }, + "node_modules/@vueuse/components/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/core": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.9.0.tgz", + "integrity": "sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==", + "dependencies": { + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "*", + "axios": "*", + "change-case": "*", + "drauu": "*", + "focus-trap": "*", + "fuse.js": "*", + "idb-keyval": "*", + "jwt-decode": "*", + "nprogress": "*", + "qrcode": "*", + "sortablejs": "*", + "universal-cookie": "*" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", + "dependencies": { + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==" + }, + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/ast-kit": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.12.1.tgz", + "integrity": "sha512-O+33g7x6irsESUcd47KdfWUrS2F6aGp9KeVJFGj0YjIznfXpBxVGjA0w+y/1OKqX4mFOfmZ9Xpf1ixPT4n9xxw==", + "dependencies": { + "@babel/parser": "^7.23.9", + "pathe": "^1.1.2" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.5.0.tgz", + "integrity": "sha512-NsyHMxBh4dmdEHjBo1/TBZvCKxffmZxRYhmclfu0PP6Aftre47jOHYaYaNqJcV0bxihxFXhDkzLHUwHc0ocd0Q==", + "dependencies": { + "@babel/parser": "^7.22.7", + "ast-kit": "^0.9.4" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/ast-walker-scope/node_modules/ast-kit": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.9.5.tgz", + "integrity": "sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==", + "dependencies": { + "@babel/parser": "^7.22.7", + "@rollup/pluginutils": "^5.0.2", + "pathe": "^1.1.1" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "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/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/birpc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", + "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "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.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c12": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-1.10.0.tgz", + "integrity": "sha512-0SsG7UDhoRWcuSvKWHaXmu5uNjDCDN3nkQLRL4Q42IlFy+ze58FcCoI3uPwINXinkz7ZinbhEgyzYFw9u9ZV8g==", + "dependencies": { + "chokidar": "^3.6.0", + "confbox": "^0.1.3", + "defu": "^6.1.4", + "dotenv": "^16.4.5", + "giget": "^1.2.1", + "jiti": "^1.21.0", + "mlly": "^1.6.1", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "rc9": "^2.1.1" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", + "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/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/clear": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", + "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", + "engines": { + "node": "*" + } + }, + "node_modules/clipboardy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", + "dependencies": { + "execa": "^8.0.1", + "is-wsl": "^3.1.0", + "is64bit": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/clipboardy/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==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "peer": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.1.0.tgz", + "integrity": "sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==" + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/croner": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/croner/-/croner-8.0.2.tgz", + "integrity": "sha512-HgSdlSUX8mIgDTTiQpWUP4qY4IFRMsduPCYdca34Pelt8MVdxdaDOzreFtCscA6R+cRZd7UbD1CD3uyx6J3X1A==", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/cronstrue": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.50.0.tgz", + "integrity": "sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==", + "bin": { + "cronstrue": "bin/cli.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.2.4.tgz", + "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==", + "peerDependencies": { + "uWebSockets.js": "*" + }, + "peerDependenciesMeta": { + "uWebSockets.js": { + "optional": true + } + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "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==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", + "dependencies": { + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", + "dependencies": { + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, + "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/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/db0": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/db0/-/db0-0.1.4.tgz", + "integrity": "sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==", + "peerDependencies": { + "@libsql/client": "^0.5.2", + "better-sqlite3": "^9.4.3", + "drizzle-orm": "^0.29.4" + }, + "peerDependenciesMeta": { + "@libsql/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "drizzle-orm": { + "optional": true + } + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz", + "integrity": "sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", + "integrity": "sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==", + "dependencies": { + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz", + "integrity": "sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A==" + }, + "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==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", + "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.4.tgz", + "integrity": "sha512-l0uy0kAoo6toCgVOYaAayqtPa2a1L15efxUMEnQebKwLQX2X0OpS6wMMQdc4juJXmxd9i40DuaUHq+mjIya9TQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/externality": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/externality/-/externality-1.0.2.tgz", + "integrity": "sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==", + "dependencies": { + "enhanced-resolve": "^5.14.1", + "mlly": "^1.3.0", + "pathe": "^1.1.1", + "ufo": "^1.1.2" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "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==", + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "node_modules/floating-vue": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-5.2.2.tgz", + "integrity": "sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==", + "peer": true, + "dependencies": { + "@floating-ui/dom": "~1.1.1", + "vue-resize": "^2.0.0-alpha.1" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.0", + "vue": "^3.2.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/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==", + "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==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-port-please": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/giget": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "tar": "^6.2.0" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/git-config-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-2.0.0.tgz", + "integrity": "sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/h3": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.11.1.tgz", + "integrity": "sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==", + "dependencies": { + "cookie-es": "^1.0.0", + "crossws": "^0.2.2", + "defu": "^6.1.4", + "destr": "^2.0.3", + "iron-webcrypto": "^1.0.0", + "ohash": "^1.1.3", + "radix3": "^1.1.0", + "ufo": "^1.4.0", + "uncrypto": "^0.1.3", + "unenv": "^1.9.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/heap": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.5.tgz", + "integrity": "sha512-G7HLD+WKcrOyJP5VQwYZNC3Z6FcQ7YYjEFiFoIj8PfEr73mu421o8B1N5DKUcc8K37EsJ2XXWA8DtrDz/2dReg==" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==" + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-shutdown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/httpxy": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.1.5.tgz", + "integrity": "sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==" + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-meta": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.0.tgz", + "integrity": "sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==" + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "devOptional": true + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ioredis": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", + "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "dependencies": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "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==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "dependencies": { + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==" + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-primitive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", + "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is64bit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", + "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", + "dependencies": { + "system-architecture": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.1.0.tgz", + "integrity": "sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==" + }, + "node_modules/koa": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", + "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==" + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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==" + }, + "node_modules/listhen": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz", + "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "@parcel/watcher-wasm": "^2.4.1", + "citty": "^0.1.6", + "clipboardy": "^4.0.0", + "consola": "^3.2.3", + "crossws": "^0.2.0", + "defu": "^6.1.4", + "get-port-please": "^3.1.2", + "h3": "^1.10.2", + "http-shutdown": "^1.2.2", + "jiti": "^1.21.0", + "mlly": "^1.6.1", + "node-forge": "^1.3.1", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "ufo": "^1.4.0", + "untun": "^0.1.3", + "uqr": "^0.1.2" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "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/magic-string-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.5.0.tgz", + "integrity": "sha512-mxjxZ5zoR4+ybulZ7Z5qdZUTdAfiKJ1Il80kN/I4jWsHTTqNKZ9KsBa3Jepo+3U09I04qiyC2+7MZD8v4rJOoA==", + "dependencies": { + "magic-string": "^0.30.9" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/magicast": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@babel/types": "^7.24.0", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz", + "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.0.tgz", + "integrity": "sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.0", + "ufo": "^1.5.3" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nitropack": { + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.9.6.tgz", + "integrity": "sha512-HP2PE0dREcDIBVkL8Zm6eVyrDd10/GI9hTL00PHvjUM8I9Y/2cv73wRDmxNyInfrx/CJKHATb2U/pQrqpzJyXA==", + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.3.1", + "@netlify/functions": "^2.6.0", + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-terser": "^0.4.4", + "@rollup/pluginutils": "^5.1.0", + "@types/http-proxy": "^1.17.14", + "@vercel/nft": "^0.26.4", + "archiver": "^7.0.1", + "c12": "^1.10.0", + "chalk": "^5.3.0", + "chokidar": "^3.6.0", + "citty": "^0.1.6", + "consola": "^3.2.3", + "cookie-es": "^1.1.0", + "croner": "^8.0.1", + "crossws": "^0.2.4", + "db0": "^0.1.4", + "defu": "^6.1.4", + "destr": "^2.0.3", + "dot-prop": "^8.0.2", + "esbuild": "^0.20.2", + "escape-string-regexp": "^5.0.0", + "etag": "^1.8.1", + "fs-extra": "^11.2.0", + "globby": "^14.0.1", + "gzip-size": "^7.0.0", + "h3": "^1.11.1", + "hookable": "^5.5.3", + "httpxy": "^0.1.5", + "ioredis": "^5.3.2", + "is-primitive": "^3.0.1", + "jiti": "^1.21.0", + "klona": "^2.0.6", + "knitwork": "^1.1.0", + "listhen": "^1.7.2", + "magic-string": "^0.30.8", + "mime": "^4.0.1", + "mlly": "^1.6.1", + "mri": "^1.2.0", + "node-fetch-native": "^1.6.4", + "ofetch": "^1.3.4", + "ohash": "^1.1.3", + "openapi-typescript": "^6.7.5", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "pretty-bytes": "^6.1.1", + "radix3": "^1.1.2", + "rollup": "^4.13.2", + "rollup-plugin-visualizer": "^5.12.0", + "scule": "^1.3.0", + "semver": "^7.6.0", + "serve-placeholder": "^2.0.1", + "serve-static": "^1.15.0", + "std-env": "^3.7.0", + "ufo": "^1.5.3", + "uncrypto": "^0.1.3", + "unctx": "^2.3.1", + "unenv": "^1.9.0", + "unimport": "^3.7.1", + "unstorage": "^1.10.2", + "unwasm": "^0.3.9" + }, + "bin": { + "nitro": "dist/cli/index.mjs", + "nitropack": "dist/cli/index.mjs" + }, + "engines": { + "node": "^16.11.0 || >=17.0.0" + }, + "peerDependencies": { + "xml2js": "^0.6.2" + }, + "peerDependenciesMeta": { + "xml2js": { + "optional": true + } + } + }, + "node_modules/nitropack/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "engines": { + "node": "^16 || ^18 || >= 20" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==" + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.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==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", + "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", + "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.0.1.tgz", + "integrity": "sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA==", + "dependencies": { + "@npmcli/redact": "^2.0.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nuxi": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.11.1.tgz", + "integrity": "sha512-AW71TpxRHNg8MplQVju9tEFvXPvX42e0wPYknutSStDuAjV99vWTWYed4jxr/grk2FtKAuv2KvdJxcn2W59qyg==", + "bin": { + "nuxi": "bin/nuxi.mjs", + "nuxi-ng": "bin/nuxi.mjs", + "nuxt": "bin/nuxi.mjs", + "nuxt-cli": "bin/nuxi.mjs" + }, + "engines": { + "node": "^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/nuxt": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.11.2.tgz", + "integrity": "sha512-Be1d4oyFo60pdF+diBolYDcfNemoMYM3R8PDjhnGrs/w3xJoDH1YMUVWHXXY8WhSmYZI7dyBehx/6kTfGFliVA==", + "dependencies": { + "@nuxt/devalue": "^2.0.2", + "@nuxt/devtools": "^1.1.5", + "@nuxt/kit": "3.11.2", + "@nuxt/schema": "3.11.2", + "@nuxt/telemetry": "^2.5.3", + "@nuxt/ui-templates": "^1.3.2", + "@nuxt/vite-builder": "3.11.2", + "@unhead/dom": "^1.9.4", + "@unhead/ssr": "^1.9.4", + "@unhead/vue": "^1.9.4", + "@vue/shared": "^3.4.21", + "acorn": "8.11.3", + "c12": "^1.10.0", + "chokidar": "^3.6.0", + "cookie-es": "^1.1.0", + "defu": "^6.1.4", + "destr": "^2.0.3", + "devalue": "^4.3.2", + "esbuild": "^0.20.2", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fs-extra": "^11.2.0", + "globby": "^14.0.1", + "h3": "^1.11.1", + "hookable": "^5.5.3", + "jiti": "^1.21.0", + "klona": "^2.0.6", + "knitwork": "^1.1.0", + "magic-string": "^0.30.9", + "mlly": "^1.6.1", + "nitropack": "^2.9.6", + "nuxi": "^3.11.1", + "nypm": "^0.3.8", + "ofetch": "^1.3.4", + "ohash": "^1.1.3", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "radix3": "^1.1.2", + "scule": "^1.3.0", + "std-env": "^3.7.0", + "strip-literal": "^2.1.0", + "ufo": "^1.5.3", + "ultrahtml": "^1.5.3", + "uncrypto": "^0.1.3", + "unctx": "^2.3.1", + "unenv": "^1.9.0", + "unimport": "^3.7.1", + "unplugin": "^1.10.1", + "unplugin-vue-router": "^0.7.0", + "unstorage": "^1.10.2", + "untyped": "^1.4.2", + "vue": "^3.4.21", + "vue-bundle-renderer": "^2.0.0", + "vue-devtools-stub": "^0.1.0", + "vue-router": "^4.3.0" + }, + "bin": { + "nuxi": "bin/nuxt.mjs", + "nuxt": "bin/nuxt.mjs" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + }, + "peerDependencies": { + "@parcel/watcher": "^2.1.0", + "@types/node": "^14.18.0 || >=16.10.0" + }, + "peerDependenciesMeta": { + "@parcel/watcher": { + "optional": true + }, + "@types/node": { + "optional": true + } + } + }, + "node_modules/nuxt-primevue": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/nuxt-primevue/-/nuxt-primevue-0.3.1.tgz", + "integrity": "sha512-wTFvUbniEhntFamnRP4znMqU9a4lYr7eXvA7FW5nGX51YCV3nJzXZlCML4l6kEL0pyJsSV4DTb0Qo61nZnn9JQ==", + "dev": true, + "dependencies": { + "@nuxt/kit": "^3.7.3", + "primevue": "~3.49.1" + } + }, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/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==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/ofetch": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz", + "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.3", + "ufo": "^1.5.3" + } + }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==" + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/openapi-typescript": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.7.5.tgz", + "integrity": "sha512-ZD6dgSZi0u1QCP55g8/2yS5hNJfIpgqsSGHLxxdOjvY7eIrXzj271FJEQw33VwsZ6RCtO/NOuhxa7GBWmEudyA==", + "dependencies": { + "ansi-colors": "^4.1.3", + "fast-glob": "^3.3.2", + "js-yaml": "^4.1.0", + "supports-color": "^9.4.0", + "undici": "^5.28.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "openapi-typescript": "bin/cli.js" + } + }, + "node_modules/openapi-typescript/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/outvariant": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pacote": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/parse-git-config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-3.0.0.tgz", + "integrity": "sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==", + "dependencies": { + "git-config-path": "^2.0.0", + "ini": "^1.3.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-git-config/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "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==", + "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/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/pathfinding": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/pathfinding/-/pathfinding-0.4.18.tgz", + "integrity": "sha512-R0TGEQ9GRcFCDvAWlJAWC+KGJ9SLbW4c0nuZRcioVlXVTlw+F5RvXQ8SQgSqI9KXWC1ew95vgmIiyaWTlCe9Ag==", + "dependencies": { + "heap": "0.2.5" + } + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==" + }, + "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", + "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.0", + "pathe": "^1.1.2" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "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.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "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==", + "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==", + "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==", + "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-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.4.tgz", + "integrity": "sha512-CcHOq94K137E+U4Ommu7pexcpp0Tjm24zl4UcqWs1oSLAr5cLI+jLrqQ5h/bdjhMX6cMbzunyustVNnvrzF8Zg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-resolve-nested": "^1.1.0", + "@csstools/selector-specificity": "^3.1.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "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==" + }, + "node_modules/postcss/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/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==" + }, + "node_modules/primevue": { + "version": "3.49.1", + "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.49.1.tgz", + "integrity": "sha512-OmUTqbKbPB63Zqf7uA49cipDi+Qh+/13AYJPwgvsVsI4QmAKIkeibBwkOgj1CNIFlopfF79YmyBshFUAPqlw9A==", + "dev": true, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "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==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace-in-file": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", + "integrity": "sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==", + "dependencies": { + "chalk": "^4.1.2", + "glob": "^7.2.0", + "yargs": "^17.2.1" + }, + "bin": { + "replace-in-file": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/replace-in-file/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/replace-in-file/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/replace-in-file/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/replace-in-file/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/replace-in-file/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/replace-in-file/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/replace-in-file/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.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==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/resolve-path/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", + "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==", + "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.17.2", + "@rollup/rollup-android-arm64": "4.17.2", + "@rollup/rollup-darwin-arm64": "4.17.2", + "@rollup/rollup-darwin-x64": "4.17.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.17.2", + "@rollup/rollup-linux-arm-musleabihf": "4.17.2", + "@rollup/rollup-linux-arm64-gnu": "4.17.2", + "@rollup/rollup-linux-arm64-musl": "4.17.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2", + "@rollup/rollup-linux-riscv64-gnu": "4.17.2", + "@rollup/rollup-linux-s390x-gnu": "4.17.2", + "@rollup/rollup-linux-x64-gnu": "4.17.2", + "@rollup/rollup-linux-x64-musl": "4.17.2", + "@rollup/rollup-win32-arm64-msvc": "4.17.2", + "@rollup/rollup-win32-ia32-msvc": "4.17.2", + "@rollup/rollup-win32-x64-msvc": "4.17.2", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.77.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.2.tgz", + "integrity": "sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==", + "devOptional": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==" + }, + "node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-placeholder": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.1.tgz", + "integrity": "sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==", + "dependencies": { + "defu": "^6.0.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shiki": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.5.2.tgz", + "integrity": "sha512-fpPbuSaatinmdGijE7VYUD3hxLozR3ZZ+iAx8Iy2X6REmJGyF5hQl94SgmiUNTospq346nXUVZx0035dyGvIVw==", + "dependencies": { + "@shikijs/core": "1.5.2" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sigstore": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", + "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/simple-git": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.24.0.tgz", + "integrity": "sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw==", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/smob": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", + "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==" + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "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/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/splitpanes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-3.1.5.tgz", + "integrity": "sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==", + "funding": { + "url": "https://github.com/sponsors/antoniandre" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" + }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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==", + "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": { + "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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", + "dependencies": { + "js-tokens": "^9.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "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==", + "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/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/system-architecture": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", + "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tailwind-config-viewer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tailwind-config-viewer/-/tailwind-config-viewer-2.0.2.tgz", + "integrity": "sha512-YkMEbWgvTyEp7J5S7qY9KGLHml6SLO8kQg4Q5xNM4tWJ+cFtSO/Rv2UKfYHYnE7UsY4Lb1LkHmNs3YSbU2mT2Q==", + "dependencies": { + "@koa/router": "^12.0.1", + "commander": "^6.0.0", + "fs-extra": "^9.0.1", + "koa": "^2.14.2", + "koa-static": "^5.0.0", + "open": "^7.0.4", + "portfinder": "^1.0.26", + "replace-in-file": "^6.1.0" + }, + "bin": { + "tailwind-config-viewer": "cli/index.js", + "tailwindcss-config-viewer": "cli/index.js" + }, + "engines": { + "node": ">=13" + }, + "peerDependencies": { + "tailwindcss": "1 || 2 || 2.0.1-compat || 3" + } + }, + "node_modules/tailwind-config-viewer/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwind-config-viewer/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tailwind-config-viewer/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-config-viewer/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwind-config-viewer/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "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/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/terser": { + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "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==" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tuf-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ufo": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==" + }, + "node_modules/ultrahtml": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", + "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==" + }, + "node_modules/unconfig": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.3.13.tgz", + "integrity": "sha512-N9Ph5NC4+sqtcOjPfHrRcHekBCadCXWTBzp2VYYbySOHW0PfD9XLCeXshTXjkPYwLrBr9AtSeU0CZmkYECJhng==", + "peer": true, + "dependencies": { + "@antfu/utils": "^0.7.7", + "defu": "^6.1.4", + "jiti": "^1.21.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" + }, + "node_modules/unctx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.3.1.tgz", + "integrity": "sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==", + "dependencies": { + "acorn": "^8.8.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.0", + "unplugin": "^1.3.1" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unenv": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", + "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", + "dependencies": { + "consola": "^3.2.3", + "defu": "^6.1.3", + "mime": "^3.0.0", + "node-fetch-native": "^1.6.1", + "pathe": "^1.1.1" + } + }, + "node_modules/unenv/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/unhead": { + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.9.10.tgz", + "integrity": "sha512-Y3w+j1x1YFig2YuE+W2sER+SciRR7MQktYRHNqvZJ0iUNCCJTS8Z/SdSMUEeuFV28daXeASlR3fy7Ry3O2indg==", + "dependencies": { + "@unhead/dom": "1.9.10", + "@unhead/schema": "1.9.10", + "@unhead/shared": "1.9.10", + "hookable": "^5.5.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz", + "integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==", + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "acorn": "^8.11.2", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.1", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.1" + } + }, + "node_modules/unimport/node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unocss": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/unocss/-/unocss-0.60.2.tgz", + "integrity": "sha512-Cj1IXS+VZuiZtQxHn/ffAAN422gUusUEgF1RS83WyNB0kMsJyIxb9KK9N425QAvQvsKpL5GrZs5KoNtU3zGMog==", + "peer": true, + "dependencies": { + "@unocss/astro": "0.60.2", + "@unocss/cli": "0.60.2", + "@unocss/core": "0.60.2", + "@unocss/extractor-arbitrary-variants": "0.60.2", + "@unocss/postcss": "0.60.2", + "@unocss/preset-attributify": "0.60.2", + "@unocss/preset-icons": "0.60.2", + "@unocss/preset-mini": "0.60.2", + "@unocss/preset-tagify": "0.60.2", + "@unocss/preset-typography": "0.60.2", + "@unocss/preset-uno": "0.60.2", + "@unocss/preset-web-fonts": "0.60.2", + "@unocss/preset-wind": "0.60.2", + "@unocss/reset": "0.60.2", + "@unocss/transformer-attributify-jsx": "0.60.2", + "@unocss/transformer-attributify-jsx-babel": "0.60.2", + "@unocss/transformer-compile-class": "0.60.2", + "@unocss/transformer-directives": "0.60.2", + "@unocss/transformer-variant-group": "0.60.2", + "@unocss/vite": "0.60.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@unocss/webpack": "0.60.2", + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@unocss/webpack": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/unplugin": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", + "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", + "dependencies": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unplugin-vue-router": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz", + "integrity": "sha512-ddRreGq0t5vlSB7OMy4e4cfU1w2AwBQCwmvW3oP/0IHQiokzbx4hd3TpwBu3eIAFVuhX2cwNQwp1U32UybTVCw==", + "dependencies": { + "@babel/types": "^7.22.19", + "@rollup/pluginutils": "^5.0.4", + "@vue-macros/common": "^1.8.0", + "ast-walker-scope": "^0.5.0", + "chokidar": "^3.5.3", + "fast-glob": "^3.3.1", + "json5": "^2.2.3", + "local-pkg": "^0.4.3", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "scule": "^1.0.0", + "unplugin": "^1.5.0", + "yaml": "^2.3.2" + }, + "peerDependencies": { + "vue-router": "^4.1.0" + }, + "peerDependenciesMeta": { + "vue-router": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-router/node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/unstorage": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz", + "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^3.6.0", + "destr": "^2.0.3", + "h3": "^1.11.1", + "listhen": "^1.7.2", + "lru-cache": "^10.2.0", + "mri": "^1.2.0", + "node-fetch-native": "^1.6.2", + "ofetch": "^1.3.3", + "ufo": "^1.4.0" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.5.0", + "@azure/cosmos": "^4.0.0", + "@azure/data-tables": "^13.2.2", + "@azure/identity": "^4.0.1", + "@azure/keyvault-secrets": "^4.8.0", + "@azure/storage-blob": "^12.17.0", + "@capacitor/preferences": "^5.0.7", + "@netlify/blobs": "^6.5.0 || ^7.0.0", + "@planetscale/database": "^1.16.0", + "@upstash/redis": "^1.28.4", + "@vercel/kv": "^1.0.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.3.2" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/untun": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", + "dependencies": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "pathe": "^1.1.1" + }, + "bin": { + "untun": "bin/untun.mjs" + } + }, + "node_modules/untyped": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.4.2.tgz", + "integrity": "sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==", + "dependencies": { + "@babel/core": "^7.23.7", + "@babel/standalone": "^7.23.8", + "@babel/types": "^7.23.6", + "defu": "^6.1.4", + "jiti": "^1.21.0", + "mri": "^1.2.0", + "scule": "^1.2.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/unwasm": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.3.9.tgz", + "integrity": "sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==", + "dependencies": { + "knitwork": "^1.0.0", + "magic-string": "^0.30.8", + "mlly": "^1.6.1", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "unplugin": "^1.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "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/uqr": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", + "integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==" + }, + "node_modules/urlpattern-polyfill": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", + "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==" + }, + "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==" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "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/vite-hot-client": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.3.tgz", + "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/vite-node": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-checker": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.4.tgz", + "integrity": "sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "ansi-escapes": "^4.3.0", + "chalk": "^4.1.1", + "chokidar": "^3.5.1", + "commander": "^8.0.0", + "fast-glob": "^3.2.7", + "fs-extra": "^11.1.0", + "npm-run-path": "^4.0.1", + "semver": "^7.5.0", + "strip-ansi": "^6.0.0", + "tiny-invariant": "^1.1.0", + "vscode-languageclient": "^7.0.0", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-uri": "^3.0.2" + }, + "engines": { + "node": ">=14.16" + }, + "peerDependencies": { + "eslint": ">=7", + "meow": "^9.0.0", + "optionator": "^0.9.1", + "stylelint": ">=13", + "typescript": "*", + "vite": ">=2.0.0", + "vls": "*", + "vti": "*", + "vue-tsc": ">=1.3.9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "meow": { + "optional": true + }, + "optionator": { + "optional": true + }, + "stylelint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vls": { + "optional": true + }, + "vti": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/vite-plugin-checker/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vite-plugin-checker/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vite-plugin-checker/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vite-plugin-checker/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/vite-plugin-checker/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/vite-plugin-checker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-checker/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-checker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.4.tgz", + "integrity": "sha512-G0N3rjfw+AiiwnGw50KlObIHYWfulVwaCBUBLh2xTW9G1eM9ocE5olXkEYUbwyTmX+azM8duubi+9w5awdCz+g==", + "dependencies": { + "@antfu/utils": "^0.7.7", + "@rollup/pluginutils": "^5.1.0", + "debug": "^4.3.4", + "error-stack-parser-es": "^0.1.1", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.0.0", + "sirv": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect/node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.1.0.tgz", + "integrity": "sha512-yIw9dvBz9nQW7DPfbJtUVW6JTnt67hqTPRnTwT2CZWMqDvISyQHRjgKl32nlMh1DRH+92533Sv6t59pWMLUCWA==", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" + }, + "engines": { + "vscode": "^1.52.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + }, + "node_modules/vue": { + "version": "3.4.27", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", + "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==", + "dependencies": { + "@vue/compiler-dom": "3.4.27", + "@vue/compiler-sfc": "3.4.27", + "@vue/runtime-dom": "3.4.27", + "@vue/server-renderer": "3.4.27", + "@vue/shared": "3.4.27" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-bundle-renderer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.1.0.tgz", + "integrity": "sha512-uZ+5ZJdZ/b43gMblWtcpikY6spJd0nERaM/1RtgioXNfWFbjKlUwrS8HlrddN6T2xtptmOouWclxLUkpgcVX3Q==", + "dependencies": { + "ufo": "^1.5.3" + } + }, + "node_modules/vue-devtools-stub": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", + "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==" + }, + "node_modules/vue-observe-visibility": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-2.0.0-alpha.1.tgz", + "integrity": "sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-resize": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", + "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", + "dependencies": { + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-virtual-scroller": { + "version": "2.0.0-beta.8", + "resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-beta.8.tgz", + "integrity": "sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==", + "dependencies": { + "mitt": "^2.1.0", + "vue-observe-visibility": "^2.0.0-alpha.1", + "vue-resize": "^2.0.0-alpha.1" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-virtual-scroller/node_modules/mitt": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz", + "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/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==", + "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": { + "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==", + "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-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ylru": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zhead": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz", + "integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==", + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/admin_front/package.json b/admin_front/package.json new file mode 100644 index 0000000..1822f69 --- /dev/null +++ b/admin_front/package.json @@ -0,0 +1,28 @@ +{ + "name": "nuxt-app", + "private": true, + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare" + }, + "dependencies": { + "@nuxtjs/color-mode": "^3.4.1", + "@nuxtjs/tailwindcss": "^6.12.0", + "d3": "^7.9.0", + "nuxt": "^3.11.2", + "pathfinding": "^0.4.18", + "primeicons": "^7.0.0", + "vue": "^3.4.27", + "vue-router": "^4.3.2" + }, + "devDependencies": { + "@types/d3": "^7.4.3", + "@types/pathfinding": "^0.0.9", + "nuxt-primevue": "^0.3.1", + "sass": "^1.77.2" + } +} diff --git a/admin_front/pages/index.vue b/admin_front/pages/index.vue new file mode 100644 index 0000000..b56082f --- /dev/null +++ b/admin_front/pages/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/admin_front/pages/plan/index.vue b/admin_front/pages/plan/index.vue new file mode 100644 index 0000000..84d46ae --- /dev/null +++ b/admin_front/pages/plan/index.vue @@ -0,0 +1,250 @@ + + diff --git a/admin_front/presets/aura/accordion/index.js b/admin_front/presets/aura/accordion/index.js new file mode 100644 index 0000000..3fe0925 --- /dev/null +++ b/admin_front/presets/aura/accordion/index.js @@ -0,0 +1,73 @@ +export default { + accordiontab: { + root: { + class: ['mb-0', 'border-b border-surface-200 dark:border-surface-700'] + }, + header: ({ props }) => ({ + class: [ + // State + { 'select-none pointer-events-none cursor-default opacity-60': props?.disabled } + ] + }), + headerAction: { + class: [ + //Font + 'font-semibold', + 'leading-none', + + // Alignments + 'flex justify-between items-center', + 'flex-row-reverse', + 'relative', + + // Sizing + 'p-[1.125rem]', + + // Shape + 'rounded-md', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/80', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200', + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', // Focus + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + headerIcon: ({ context }) => ({ + class: ['inline-block ml-2', { 'text-surface-900 dark:text-surface-0': context.active }] + }), + headerTitle: { + class: 'leading-none' + }, + content: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + //Shape + 'border-0 rounded-none', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/70' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } + } +}; diff --git a/admin_front/presets/aura/autocomplete/index.js b/admin_front/presets/aura/autocomplete/index.js new file mode 100644 index 0000000..91ac380 --- /dev/null +++ b/admin_front/presets/aura/autocomplete/index.js @@ -0,0 +1,253 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex + 'inline-flex', + + // Size + { 'w-full': props.multiple }, + + // Color + 'text-surface-900 dark:text-surface-0', + + //States + { + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + container: ({ props, state }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + 'flex items-center flex-wrap', + 'gap-2', + + // Spacing + 'm-0 list-none', + 'p-1', + + // Size + 'w-full', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'hover:border-surface-400 dark:hover:border-surface-700': !props.invalid }, + { 'outline-none outline-offset-0 z-10 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputtoken: { + class: ['py-1 px-0 ml-2', 'inline-flex flex-auto'] + }, + input: ({ props, parent }) => ({ + class: [ + // Font + 'text-base leading-none', + + // Shape + 'appearance-none rounded-md', + { 'rounded-tr-none rounded-br-none': props.dropdown }, + { 'outline-none shadow-none rounded-none': props.multiple }, + + // Size + { 'w-full': props.multiple }, + + // Spacing + 'm-0', + { 'py-2 px-3': !props.multiple, 'p-0': props.multiple }, + + // Colors + 'text-surface-700 dark:text-white/80', + 'border', + { + 'bg-surface-0 dark:bg-surface-950': !props.multiple, + ' border-surface-300 dark:border-surface-700': !props.multiple && !props.invalid, + 'border-0 bg-transparent': props.multiple + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !props.multiple }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== '' }, + + // Transition + 'transition-colors duration-200' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1 px-3 m-0', + + // Shape + 'rounded', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + 'text-surface-700 dark:text-white', + + // Misc + 'cursor-default' + ] + }, + removeTokenIcon: { + class: [ + // Spacing + 'ml-[0.375rem]', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-pointer' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex justify-center text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'py-2 leading-none', + 'w-10', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 ', + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[0.5rem] -mt-2 animate-spin'] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md', + + // Size + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/avatar/index.js b/admin_front/presets/aura/avatar/index.js new file mode 100644 index 0000000..9c77beb --- /dev/null +++ b/admin_front/presets/aura/avatar/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Font + { + 'text-xl': props.size == 'large', + 'text-2xl': props.size == 'xlarge' + }, + + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sizes + { + 'h-8 w-8': props.size == null || props.size == 'normal', + 'w-12 h-12': props.size == 'large', + 'w-16 h-16': props.size == 'xlarge' + }, + { '-ml-4': parent.instance.$style?.name == 'avatargroup' }, + + // Shapes + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + }, + { 'border-2': parent.instance.$style?.name == 'avatargroup' }, + + // Colors + 'bg-surface-300 dark:bg-surface-700', + { 'border-white dark:border-surface-800': parent.instance.$style?.name == 'avatargroup' } + ] + }), + image: ({ props }) => ({ + class: [ + 'h-full w-full', + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + } + ] + }) +}; diff --git a/admin_front/presets/aura/avatargroup/index.js b/admin_front/presets/aura/avatargroup/index.js new file mode 100644 index 0000000..d267e06 --- /dev/null +++ b/admin_front/presets/aura/avatargroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: 'flex items-center' + } +}; diff --git a/admin_front/presets/aura/badge/index.js b/admin_front/presets/aura/badge/index.js new file mode 100644 index 0000000..c9e3505 --- /dev/null +++ b/admin_front/presets/aura/badge/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props }) => ({ + class: [ + // Font + 'font-bold', + + { + 'text-xs leading-[1.5rem]': props.size == null, + 'text-lg leading-[2.25rem]': props.size == 'large', + 'text-2xl leading-[3rem]': props.size == 'xlarge' + }, + + // Alignment + 'text-center inline-block', + + // Size + 'p-0 px-1', + { + 'min-w-[1.5rem] h-[1.5rem]': props.size == null, + 'min-w-[2.25rem] h-[2.25rem]': props.size == 'large', + 'min-w-[3rem] h-[3rem]': props.size == 'xlarge' + }, + + // Shape + { + 'rounded-full': props.value.length == 1, + 'rounded-[0.71rem]': props.value.length !== 1 + }, + + // Color + 'text-primary-inverse', + { + 'bg-primary': props.severity == null || props.severity == 'primary', + 'bg-surface-500 dark:bg-surface-400': props.severity == 'secondary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-purple-500 dark:bg-purple-400': props.severity == 'help', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }) +}; diff --git a/admin_front/presets/aura/badgedirective/index.js b/admin_front/presets/aura/badgedirective/index.js new file mode 100644 index 0000000..6bf293f --- /dev/null +++ b/admin_front/presets/aura/badgedirective/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ context }) => ({ + class: [ + // Font + 'font-bold', + 'text-xs leading-5', + + // Alignment + 'flex items-center justify-center', + 'text-center', + + // Position + 'absolute top-0 right-0 transform translate-x-1/2 -translate-y-1/2 origin-top-right', + + // Size + 'm-0', + { + 'p-0': context.nogutter || context.dot, + 'px-2': !context.nogutter && !context.dot, + 'min-w-[0.5rem] w-2 h-2': context.dot, + 'min-w-[1.5rem] h-6': !context.dot + }, + + // Shape + { + 'rounded-full': context.nogutter || context.dot, + 'rounded-[10px]': !context.nogutter && !context.dot + }, + + // Color + 'text-primary-inverse', + { + 'bg-primary': !context.info && !context.success && !context.warning && !context.danger && !context.help && !context.secondary, + 'bg-surface-500 dark:bg-surface-400': context.secondary, + 'bg-green-500 dark:bg-green-400': context.success, + 'bg-blue-500 dark:bg-blue-400': context.info, + 'bg-orange-500 dark:bg-orange-400': context.warning, + 'bg-purple-500 dark:bg-purple-400': context.help, + 'bg-red-500 dark:bg-red-400': context.danger + } + ] + }) +}; diff --git a/admin_front/presets/aura/blockui/index.js b/admin_front/presets/aura/blockui/index.js new file mode 100644 index 0000000..0c81a0c --- /dev/null +++ b/admin_front/presets/aura/blockui/index.js @@ -0,0 +1,8 @@ +export default { + root: { + class: 'relative' + }, + mask: { + class: 'bg-black/40' + } +}; diff --git a/admin_front/presets/aura/breadcrumb/index.js b/admin_front/presets/aura/breadcrumb/index.js new file mode 100644 index 0000000..d8553c5 --- /dev/null +++ b/admin_front/presets/aura/breadcrumb/index.js @@ -0,0 +1,63 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + + // Misc + 'overflow-x-auto' + ] + }, + menu: { + class: [ + // Flex & Alignment + 'flex items-center flex-nowrap', + + // Spacing + 'm-0 p-0 list-none leading-none' + ] + }, + action: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-600 dark:text-white/70', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow duration-200', + + // Misc + 'text-decoration-none' + ] + }, + icon: { + class: 'text-surface-600 dark:text-white/70' + }, + separator: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Spacing + 'mx-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + } +}; diff --git a/admin_front/presets/aura/button/index.js b/admin_front/presets/aura/button/index.js new file mode 100644 index 0000000..84eb024 --- /dev/null +++ b/admin_front/presets/aura/button/index.js @@ -0,0 +1,237 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-2': props.size === null, + 'text-sm py-1.5 px-3': props.size === 'small', + 'text-xl py-3 px-4': props.size === 'large' + }, + { + 'w-10 px-0 py-2': props.label == null && props.icon !== null + }, + + // Shapes + { 'shadow-lg': props.raised }, + { 'rounded-md': !props.rounded, 'rounded-full': props.rounded }, + { 'rounded-none first:rounded-l-md last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': props.plain && !props.outlined && !props.text }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': props.plain && props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'bg-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'border border-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-surface-900 dark:text-white': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'bg-surface-100 dark:bg-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'border border-surface-100 dark:border-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': props.text && props.severity === 'secondary' && !props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10': props.outlined && props.severity === 'secondary' && !props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'bg-green-500 dark:bg-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'border border-green-500 dark:border-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': props.text && props.severity === 'success' && !props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/10': props.outlined && props.severity === 'success' && !props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'border border-blue-500 dark:border-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': props.text && props.severity === 'info' && !props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ': props.outlined && props.severity === 'info' && !props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'border border-orange-500 dark:border-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': props.text && props.severity === 'warning' && !props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/10': props.outlined && props.severity === 'warning' && !props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'border border-purple-500 dark:border-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': props.text && props.severity === 'help' && !props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/10': props.outlined && props.severity === 'help' && !props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'bg-red-500 dark:bg-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'border border-red-500 dark:border-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': props.text && props.severity === 'danger' && !props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/10': props.outlined && props.severity === 'danger' && !props.plain }, + + // Contrast Button + { + 'text-white dark:text-surface-900': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'border border-surface-900 dark:border-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + + // Link + { 'focus:ring-primary': props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': props.plain && !props.outlined && !props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': props.plain && (props.text || props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-primary': props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/10': (props.text || props.outlined) && props.severity === null && !props.plain }, + + // Secondary + { 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': (props.text || props.outlined) && props.severity === 'secondary' && !props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': props.severity === 'success' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-green-500 dark:focus:ring-green-400': props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/10': (props.text || props.outlined) && props.severity === 'success' && !props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': props.severity === 'info' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/10': (props.text || props.outlined) && props.severity === 'info' && !props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': props.severity === 'warning' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/10': (props.text || props.outlined) && props.severity === 'warning' && !props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': props.severity === 'help' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-purple-500 dark:focus:ring-purple-400': props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/10': (props.text || props.outlined) && props.severity === 'help' && !props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': props.severity === 'danger' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-red-500 dark:focus:ring-red-400': props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/10': (props.text || props.outlined) && props.severity === 'danger' && !props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.text || props.outlined) && props.severity === 'contrast' && !props.plain }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-medium', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [{ 'ml-2 w-4 h-4 leading-none flex items-center justify-center': props.badge }] + }) +}; diff --git a/admin_front/presets/aura/calendar/index.js b/admin_front/presets/aura/calendar/index.js new file mode 100644 index 0000000..b8750b3 --- /dev/null +++ b/admin_front/presets/aura/calendar/index.js @@ -0,0 +1,663 @@ +export default { + root: { + class: [ + // Display and Position + 'inline-flex', + 'max-w-full', + 'relative' + ] + }, + input: ({ props, parent, context }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'leading-none', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Spacing + 'm-0 py-2 px-3', + + // Shape + 'appearance-none', + { 'rounded-md': !props.showIcon || props.iconDisplay == 'input' }, + { 'rounded-l-md flex-1 pr-9': props.showIcon && props.iconDisplay !== 'input' }, + { 'rounded-md flex-1 pr-9': props.showIcon && props.iconDisplay === 'input' }, + + // Transitions + 'transition-colors', + 'duration-200', + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !props.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null } + ] + }), + inputicon: { + class: ['absolute top-[50%] -mt-2', 'text-surface-600 dark:text-surface-200', 'right-[.75rem]'] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Shape + 'rounded-r-md', + + // Size + 'py-2 px-0', + 'w-10', + 'leading-[normal]', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + panel: ({ props }) => ({ + class: [ + // Display & Position + { + absolute: !props.inline, + 'inline-block': props.inline + }, + + // Size + { 'w-auto p-3 ': !props.inline }, + { 'min-w-[80vw] w-auto p-3 ': props.touchUI }, + { 'p-3 min-w-full': props.inline }, + + // Shape + 'border rounded-lg', + { + 'shadow-md': !props.inline + }, + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + //misc + { 'overflow-x-auto': props.inline } + ] + }), + datepickerMask: { + class: ['fixed top-0 left-0 w-full h-full', 'flex items-center justify-center', 'bg-black bg-opacity-90'] + }, + header: { + class: [ + //Font + 'font-medium', + + // Flexbox and Alignment + 'flex items-center justify-between', + + // Spacing + 'p-0 pb-2', + 'm-0', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700' + ] + }, + previousbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-7 h-7', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-500/10 ', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + title: { + class: [ + // Text + 'leading-7', + 'mx-auto my-0' + ] + }, + monthTitle: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-medium', + + //shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-1', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer' + ] + }, + yearTitle: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-medium', + + //shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-1', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer' + ] + }, + nextbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-7 h-7', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-500/10 ', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + table: { + class: [ + // Font + 'text-base leading-[normal]', + // Size & Shape + 'border-collapse', + 'w-full', + + // Spacing + 'm-0 mt-2' + ] + }, + tableheadercell: { + class: [ + // Spacing + 'p-1', + 'font-medium' + ] + }, + weekheader: { + class: ['leading-5', 'text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weeknumber: { + class: ['text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weekday: { + class: [ + // Colors + 'text-surface-500 dark:text-white/60', + 'p-1' + ] + }, + day: { + class: [ + // Spacing + 'p-1' + ] + }, + weeklabelcontainer: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-8 h-8', + 'rounded-full', + 'border-transparent border', + 'leading-[normal]', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-50 dark:hover:bg-surface-500/10': !context.selected && !context.disabled, + 'hover:bg-primary-highlight-hover': context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + daylabel: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-8 h-8', + 'rounded-full', + 'border-transparent border', + 'leading-[normal]', + + // Colors + { + 'bg-surface-100 dark:bg-surface-800 text-surface-600 dark:text-white/70': context.date.today && !context.selected && !context.disabled, + 'bg-transparent text-surface-600 dark:text-white/70': !context.selected && !context.disabled && !context.date.today, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-50 dark:hover:bg-surface-500/10': !context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + monthpicker: { + class: [ + // Spacing + 'mt-2' + ] + }, + month: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-1', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + yearpicker: { + class: [ + // Spacing + 'mt-2' + ] + }, + year: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/2', + 'p-1', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + timepicker: { + class: [ + // Flexbox + 'flex', + 'justify-center items-center', + + // Borders + 'border-t-1', + 'border-solid border-surface-200', + + // Spacing + 'pt-2 mt-2' + ] + }, + separatorcontainer: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + separator: { + class: [ + // Text + 'text-xl' + ] + }, + hourpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + minutepicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + secondPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + ampmpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + incrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-7 h-7', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-500/10 ', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + decrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-7 h-7', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-500/10 ', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + groupcontainer: { + class: [ + // Flexbox + 'flex' + ] + }, + group: { + class: [ + // Flexbox and Sizing + 'flex-1', + + // Borders + 'border-l', + 'border-surface-200', + + // Spacing + 'pr-0.5', + 'pl-0.5', + 'pt-0', + 'pb-0', + + // Pseudo-Classes + 'first:pl-0', + 'first:border-l-0' + ] + }, + buttonbar: { + class: [ + // Flexbox + 'flex justify-between items-center', + + // Spacing + 'pt-2', + + // Shape + 'border-t border-surface-200 dark:border-surface-700' + ] + }, + todaybutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-3 py-1 text-sm leading-[normal]', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + clearbutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-3 py-1 text-sm leading-[normal]', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/card/index.js b/admin_front/presets/aura/card/index.js new file mode 100644 index 0000000..eef7c57 --- /dev/null +++ b/admin_front/presets/aura/card/index.js @@ -0,0 +1,53 @@ +export default { + root: { + class: [ + //Flex + 'flex flex-col', + + //Shape + 'rounded-[12px]', + 'shadow-md', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0' + ] + }, + body: { + class: [ + //Flex + 'flex flex-col', + 'gap-4', + + 'p-6' + ] + }, + caption: { + class: [ + //Flex + 'flex flex-col', + 'gap-2' + ] + }, + title: { + class: 'text-xl font-semibold mb-0' + }, + subtitle: { + class: [ + //Font + 'font-normal', + + //Spacing + 'mb-0', + + //Color + 'text-surface-600 dark:text-surface-0/60' + ] + }, + content: { + class: 'p-0' + }, + footer: { + class: 'p-0' + } +}; diff --git a/admin_front/presets/aura/carousel/index.js b/admin_front/presets/aura/carousel/index.js new file mode 100644 index 0000000..9bd0c16 --- /dev/null +++ b/admin_front/presets/aura/carousel/index.js @@ -0,0 +1,157 @@ +export default { + root: { + class: [ + // Flexbox + 'flex flex-col' + ] + }, + content: { + class: [ + // Flexbox & Overflow + 'flex flex-col overflow-auto' + ] + }, + container: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col': props.orientation == 'vertical' + } + ] + }), + previousbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // States + 'hover:bg-surface-50 dark:hover:bg-surface-800', + 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + nextbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // States + 'hover:bg-surface-50 dark:hover:bg-surface-800', + 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + itemscontent: { + class: [ + // Overflow & Width + 'overflow-hidden w-full' + ] + }, + itemscontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation & Sizing + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col h-full': props.orientation == 'vertical' + } + ] + }), + item: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow ', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + itemcloned: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow', + 'unvisible', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + indicators: { + class: [ + // Flexbox & Alignment + 'flex flex-row justify-center flex-wrap' + ] + }, + indicator: { + class: [ + // Spacing + 'mr-2 mb-2' + ] + }, + indicatorbutton: ({ context }) => ({ + class: [ + // Sizing & Shape + 'w-8 h-2 rounded-md', + + // Transitions + 'transition duration-200', + + // Focus Styles + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Color & Background + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted, + 'bg-primary hover:bg-primary-hover': context.highlighted + } + ] + }) +}; diff --git a/admin_front/presets/aura/cascadeselect/index.js b/admin_front/presets/aura/cascadeselect/index.js new file mode 100644 index 0000000..cc1f99e --- /dev/null +++ b/admin_front/presets/aura/cascadeselect/index.js @@ -0,0 +1,200 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + label: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex & Alignment + 'flex flex-auto', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 px-3', + + //Shape + 'rounded-none', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue, 'text-surface-400 dark:text-surface-500': !props.modelValue }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdownbutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Spacing + 'first:mt-0 mt-[2px]', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + content: { + class: [ + 'relative', + 'leading-[normal]', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + groupicon: { + class: [ + // Alignment + 'ml-auto' + ] + }, + sublist: { + class: [ + // Spacing + 'p-1', + 'm-0', + 'list-none', + 'min-w-[12.5rem]', + + // Shape + 'shadow-none sm:shadow-md', + 'rounded-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/checkbox/index.js b/admin_front/presets/aura/checkbox/index.js new file mode 100644 index 0000000..e02d8c0 --- /dev/null +++ b/admin_front/presets/aura/checkbox/index.js @@ -0,0 +1,101 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +}; diff --git a/admin_front/presets/aura/chip/index.js b/admin_front/presets/aura/chip/index.js new file mode 100644 index 0000000..09f175b --- /dev/null +++ b/admin_front/presets/aura/chip/index.js @@ -0,0 +1,45 @@ +export default { + root: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'px-3 py-1', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white', + 'bg-surface-100 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-6 m-0' + }, + icon: { + class: 'leading-6 mr-2' + }, + image: { + class: ['w-8 h-8 -ml-2 mr-2', 'rounded-full'] + }, + removeIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-[0.375rem]', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/aura/chips/index.js b/admin_front/presets/aura/chips/index.js new file mode 100644 index 0000000..5634307 --- /dev/null +++ b/admin_front/presets/aura/chips/index.js @@ -0,0 +1,111 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + 'flex', + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + container: ({ state, props, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + 'flex items-center flex-wrap', + 'gap-2', + + // Spacing + 'm-0 list-none', + 'p-1', + + // Size + 'w-full', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'hover:border-surface-400 dark:hover:border-surface-700': !props.invalid }, + { 'outline-none outline-offset-0 z-10 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputtoken: { + class: ['py-1 px-0 ml-2', 'inline-flex flex-auto'] + }, + input: { + class: [ + // Font + 'text-base leading-[normal]', + + // Size + 'w-full', + + // Spacing + 'p-0 m-0', + + // Shape + 'appearance-none rounded-none', + 'border-0 outline-none', + 'shadow-none', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-transparent' + ] + }, + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1 px-3 m-0', + + // Shape + 'rounded', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + 'text-surface-700 dark:text-white', + + // Misc + 'cursor-default' + ] + }, + removeTokenIcon: { + class: [ + // Spacing + 'ml-[0.375rem]', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/aura/colorpicker/index.js b/admin_front/presets/aura/colorpicker/index.js new file mode 100644 index 0000000..1ca55c5 --- /dev/null +++ b/admin_front/presets/aura/colorpicker/index.js @@ -0,0 +1,126 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display + 'inline-block', + + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: { + class: [ + // Font + 'text-base leading-none', + + // Spacing + 'm-0', + 'p-0', + + //Size + 'w-6 h-6', + + // Shape + 'rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }, + panel: ({ props }) => ({ + class: [ + // Position & Size + { + 'relative h-[166px] w-[193px]': props.inline, + 'absolute h-[166px] w-[193px]': !props.inline + }, + + // Shape + 'shadow-md border', + + // Colors + 'bg-surface-800 dark:bg-surface-900 border-surface-600 dark:border-surface-700' + ] + }), + selector: { + class: [ + // Position + 'absolute top-[8px] left-[8px]', + + // Size + 'h-[150px] w-[150px]' + ] + }, + color: { + class: [ + // Size + 'h-[150px] w-[150px]' + ], + style: 'background: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), linear-gradient(to right, #fff 0%, rgb(255 255 255 / 0) 100%)' + }, + colorhandle: { + class: [ + 'absolute', + + // Shape + 'rounded-full border border-solid', + + // Size + 'h-[10px] w-[10px]', + + // Spacing + '-ml-[5px] -mt-[5px]', + + // Colors + 'border-white', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + hue: { + class: [ + // Position + 'absolute top-[8px] left-[167px]', + + // Size + 'h-[150px] w-[17px]', + + // Opacity + 'opacity-85' + ], + style: 'background: linear-gradient(0deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)' + }, + huehandle: { + class: [ + // Position + 'absolute left-0 -ml-[2px] -mt-[5px]', + + // Size + 'h-[10px] w-[21px]', + + // Shape + 'border-solid border-2', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/confirmpopup/index.js b/admin_front/presets/aura/confirmpopup/index.js new file mode 100644 index 0000000..4b9897a --- /dev/null +++ b/admin_front/presets/aura/confirmpopup/index.js @@ -0,0 +1,106 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Positioning + 'z-40 transform origin-center', + 'mt-3 absolute left-0 top-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-[calc(var(--overlayArrowLeft,0)+1.25rem)] before:border-x-[10px] before:border-b-[10px] before:border-t-0 before:border-b-surface-200 dark:before:border-b-surface-700', + 'after:absolute after:w-0 after:-top-[0.54rem] after:h-0 after:border-transparent after:border-solid after:ml-[calc(var(--overlayArrowLeft,0)+1.3rem)] after:border-x-[9px] after:border-b-[8px] after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-900' + ] + }, + content: { + class: ['p-4 items-center flex', 'rounded-t-lg', 'border-x border-t last:border-b border-surface-200 dark:border-surface-700'] + }, + icon: { + class: 'text-2xl mr-4' + }, + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-4', + 'pb-4', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'border-x border-b border-surface-200 dark:border-surface-700' + ] + }, + rejectbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-2 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-primary', + + // States + 'hover:bg-primary-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + acceptbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-2 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-500 dark:focus:ring-primary-400' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/contextmenu/index.js b/admin_front/presets/aura/contextmenu/index.js new file mode 100644 index 0000000..3dba7aa --- /dev/null +++ b/admin_front/presets/aura/contextmenu/index.js @@ -0,0 +1,125 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + 'shadow-md', + + // Spacing + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'p-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-md', + 'rounded-md', + 'dark:border dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }), + submenuicon: { + class: ['ml-auto'] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +}; diff --git a/admin_front/presets/aura/datatable/index.js b/admin_front/presets/aura/datatable/index.js new file mode 100644 index 0000000..3c115af --- /dev/null +++ b/admin_front/presets/aura/datatable/index.js @@ -0,0 +1,1155 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + { 'flex flex-col': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-900/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + { relative: props.scrollable, 'flex flex-col grow': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + table: { + class: 'w-full border-spacing-0 border-separate' + }, + thead: ({ context }) => ({ + class: [ + { + 'bg-surface-0 dark:bg-surface-900 top-0 z-40 sticky': context.scrollable + } + ] + }), + tbody: ({ instance, context }) => ({ + class: [ + { + 'sticky z-20': instance.frozenRow && context.scrollable + }, + 'bg-surface-0 dark:bg-surface-900' + ] + }), + tfoot: ({ context }) => ({ + class: [ + { + 'bg-surface-0 bottom-0 z-0': context.scrollable + } + ] + }), + footer: { + class: [ + 'font-bold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-20 border-b': props.frozen || props.frozen === '' }, + + { relative: context.resizable }, + + // Alignment + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-0 text-surface-700 dark:text-white/80 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700 ', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-800/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { 'cursor-pointer': props.sortable === '' || props.sortable }, + { + 'overflow-hidden space-nowrap border-y bg-clip-padding': context.resizable // Resizable + } + ] + }), + headercontent: { + class: 'flex items-center' + }, + sort: ({ context }) => ({ + class: [context.sorted ? 'text-primary-500' : 'text-surface-700', context.sorted ? 'dark:text-primary-400' : 'dark:text-white/80'] + }), + bodycell: ({ props, context, state, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + //Position + { 'sticky box-border border-b': parent.instance.frozenRow }, + { 'sticky box-border border-b z-20': props.frozen || props.frozen === '' }, + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'first:border-l border-r border-b': context?.showGridlines }, + { 'bg-surface-0 dark:bg-surface-900': parent.instance.frozenRow || props.frozen || props.frozen === '' }, + + // Spacing + { 'py-[0.375rem] px-2': context?.size === 'small' && !state['d_editing'] }, + { 'py-[0.9375rem] px-5': context?.size === 'large' && !state['d_editing'] }, + { 'py-3 px-4': context?.size !== 'large' && context?.size !== 'small' && !state['d_editing'] }, + { 'py-[0.6rem] px-2': state['d_editing'] }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + footercell: ({ context }) => ({ + class: [ + // Font + 'font-bold', + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'border-x border-y': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }), + sorticon: ({ context }) => ({ + class: ['ml-2', context.sorted ? 'text-primary-highlight-inverse' : 'text-surface-700 dark:text-white/70'] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-highlight-inverse bg-primary-highlight' + ] + }, + columnfilter: { + class: 'inline-flex items-center ml-auto font-normal' + }, + filteroverlay: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + filtermatchmodedropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'flex', + 'relative', + + // Spacing + 'mb-2 last:mb-0', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary', + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }) + }, + filterrowitems: { + class: 'm-0 p-0 py-3 list-none' + }, + filterrowitem: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context?.highlighted }, + { 'bg-surface-0 dark:bg-surface-900 text-surface-700 dark:text-white/80': !context?.highlighted }, + { 'bg-primary-highlight text-primary-highlight-inverse': context?.highlighted }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context?.highlighted }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': !context?.highlighted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + filteroperator: { + class: [ + // Shape + 'rounded-t-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-700' + ] + }, + filteroperatordropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-950', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400 z-10': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue, 'text-surface-400 dark:text-surface-500': !props.modelValue }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 px-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Color + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + filteraddrulebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-[0.4375rem] px-[0.875rem] w-full', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-primary', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterremovebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-[0.4375rem] px-[0.875rem] w-full mt-2', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-red-500 dark:text-red-400', + 'hover:bg-red-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterbuttonbar: { + class: [ + // Flex & Alignment + 'flex items-center justify-between', + + // Space + 'p-0' + ] + }, + filterclearbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-[0.4375rem] px-[0.875rem]', + + // Shape + 'rounded-md', + + 'text-primary-500 border border-primary', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filterapplybutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-[0.4375rem] px-[0.875rem]', + + // Shape + 'rounded-md', + + 'text-primary-inverse', + 'bg-primary', + 'hover:bg-primary-hover hover:border-primary-hover', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filtermenubutton: ({ context }) => ({ + class: [ + 'relative', + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing + 'ml-2', + + // Shape + 'rounded-full', + + // Color + { 'bg-primary-highlight text-primary-highliht-inverse': context.active }, + 'dark:text-white/70 dark:hover:text-white/80 dark:bg-surface-900', + + // States + 'hover:text-surface-700 hover:bg-surface-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer no-underline overflow-hidden' + ] + }), + headerfilterclearbutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Shape + 'border-none', + + // Spacing + 'm-0 p-0 ml-2', + + // Color + 'bg-transparent', + + // Misc + 'cursor-pointer no-underline overflow-hidden select-none', + { + invisible: !context.hidden + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowreordericon: { + class: 'cursor-move' + }, + roweditorinitbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-7 h-7', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-50 dark:hover:bg-surface-800/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorsavebutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorcancelbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowRadiobutton: { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5 h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-5 h-5', + + // Shape + 'border', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + + { + 'text-surface-700 dark:text-white/80': props.value !== props.modelValue && props.value !== undefined, + 'border-surface-300 dark:border-surface-700': props.value !== props.modelValue && props.value !== undefined && !props.invalid, + 'border-primary': props.value == props.modelValue && props.value !== undefined && !props.disabled + }, + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-400': !props.disabled && !props.invalid && props.value !== props.modelValue, + 'peer-hover:border-primary-hover': !props.disabled && props.value == props.modelValue && props.value !== undefined, + 'peer-hover:[&>*:first-child]:bg-primary-600 dark:peer-hover:[&>*:first-child]:bg-primary-300': !props.disabled && props.value == props.modelValue && props.value !== undefined, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 [&>*:first-child]:bg-surface-600 dark:bg-surface-700 dark:[&>*:first-child]:bg-surface-400 border-surface-300 dark:border-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-1 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-3 h-3', + + // Conditions + { + 'bg-surface-0 dark:bg-surface-900 backface-hidden invisible scale-[0.1]': !props.modelValue, + 'bg-primary transform visible translate-z-0 scale-[1.1]': props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) + }, + headercheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + rowCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + transition: { + class: 'p-3 flex flex-col gap-2', + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + bodyrow: ({ context, props }) => ({ + class: [ + // Color + 'dark:text-white/80', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-900': !context.selected }, + { 'font-bold bg-surface-0 dark:bg-surface-900 z-20': props.frozenRow }, + { 'odd:bg-surface-0 odd:text-surface-600 dark:odd:bg-surface-900 even:bg-surface-50 even:text-surface-600 dark:even:bg-surface-800/50': context.stripedRows }, + + // State + { 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 ring-inset dark:focus:ring-primary-400': context.selectable }, + { 'hover:bg-surface-300/20 dark:hover:bg-surface-800/50 hover:text-surface-600': props.selectionMode && !context.selected }, + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover }, + + // Misc + { 'cursor-pointer': props.selectionMode } + ] + }), + rowexpansion: { + class: 'bg-surface-0 dark:bg-surface-900 text-surface-600 dark:text-white/80' + }, + rowgroupheader: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-900'] + }, + rowgroupfooter: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-900'] + }, + rowgrouptoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowgrouptogglericon: { + class: 'inline-block w-4 h-4' + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/admin_front/presets/aura/dataview/index.js b/admin_front/presets/aura/dataview/index.js new file mode 100644 index 0000000..d8b012e --- /dev/null +++ b/admin_front/presets/aura/dataview/index.js @@ -0,0 +1,40 @@ +export default { + content: { + class: [ + // Spacing + 'p-0', + + // Shape + 'border-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + grid: { + class: [ + // flex + 'flex flex-wrap', + + // Spacing + 'ml-0 mr-0 mt-0', + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }, + header: { + class: [ + 'font-semibold', + + // Spacing + 'py-3 px-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-00 dark:bg-surface-900', + 'border-b border-surface-200 dark:border-surface-700' + ] + } +}; diff --git a/admin_front/presets/aura/dataviewlayoutoptions/index.js b/admin_front/presets/aura/dataviewlayoutoptions/index.js new file mode 100644 index 0000000..b8b5be9 --- /dev/null +++ b/admin_front/presets/aura/dataviewlayoutoptions/index.js @@ -0,0 +1,58 @@ +export default { + listbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-r-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'list' ? 'bg-primary border-primary text-primary-inverse' : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + props.modelValue === 'list' ? 'hover:bg-primary-hover' : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + gridbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-l-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'grid' ? 'bg-primary border-primary text-primary-inverse' : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + props.modelValue === 'grid' ? 'hover:bg-primary-hover' : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }) +}; diff --git a/admin_front/presets/aura/deferred/index.js b/admin_front/presets/aura/deferred/index.js new file mode 100644 index 0000000..2064371 --- /dev/null +++ b/admin_front/presets/aura/deferred/index.js @@ -0,0 +1,3 @@ +export default { + root: {} +}; diff --git a/admin_front/presets/aura/dialog/index.js b/admin_front/presets/aura/dialog/index.js new file mode 100644 index 0000000..aca50e7 --- /dev/null +++ b/admin_front/presets/aura/dialog/index.js @@ -0,0 +1,239 @@ +export default { + root: ({ state }) => ({ + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Size + 'max-h-[90vh]', + 'w-[50vw]', + 'm-0', + + // Color + 'bg-surface-0 dark:bg-surface-900', + '[&:last-child]:border-b', + 'border-surface-200 dark:border-surface-700', + + // Transitions + 'transform', + 'scale-100', + + // Maximized State + { + 'transition-none': state.maximized, + 'transform-none': state.maximized, + '!w-screen': state.maximized, + '!h-screen': state.maximized, + '!max-h-full': state.maximized, + '!top-0': state.maximized, + '!left-0': state.maximized + } + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-6', + + // Shape + 'rounded-tl-lg', + 'rounded-tr-lg', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'border border-b-0', + 'border-surface-200 dark:border-surface-700' + ] + }, + title: { + class: ['font-semibold text-xl leading-[normal]'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-7 h-7', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + maximizablebutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-7 h-7', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + maximizableicon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: ({ state, instance }) => ({ + class: [ + // Spacing + 'px-6', + 'pb-6', + 'pt-0', + + // Shape + { + grow: state.maximized, + 'rounded-bl-lg': !instance.$slots.footer, + 'rounded-br-lg': !instance.$slots.footer + }, + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'border border-t-0 border-b-0', + 'border-surface-200 dark:border-surface-700', + + // Misc + 'overflow-y-auto' + ] + }), + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'border border-t-0 border-b-0', + 'border-surface-200 dark:border-surface-700' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'opacity-0 scale-75 translate-y-full mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' || props.position === 'topleft' || props.position === 'bottomleft' + ? { + enterFromClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' || props.position === 'topright' || props.position === 'bottomright' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 scale-75 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 mask-active' + }; + } +}; diff --git a/admin_front/presets/aura/divider/index.js b/admin_front/presets/aura/divider/index.js new file mode 100644 index 0000000..b440697 --- /dev/null +++ b/admin_front/presets/aura/divider/index.js @@ -0,0 +1,67 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex and Position + 'flex relative', + { 'justify-center': props.layout == 'vertical' }, + { 'items-center': props.layout == 'vertical' }, + { + 'justify-start': props?.align == 'left' && props.layout == 'horizontal', + 'justify-center': props?.align == 'center' && props.layout == 'horizontal', + 'justify-end': props?.align == 'right' && props.layout == 'horizontal', + 'items-center': props?.align == 'top' && props.layout == 'vertical', + 'items-start': props?.align == 'center' && props.layout == 'vertical', + 'items-end': props?.align == 'bottom' && props.layout == 'vertical' + }, + + // Spacing + { + 'my-5 mx-0 py-0 px-5': props.layout == 'horizontal', + 'mx-4 md:mx-5 py-5': props.layout == 'vertical' + }, + + // Size + { + 'w-full': props.layout == 'horizontal', + 'min-h-full': props.layout == 'vertical' + }, + + // Before: Line + 'before:block', + + // Position + { + 'before:absolute before:left-0 before:top-1/2': props.layout == 'horizontal', + 'before:absolute before:left-1/2 before:top-0 before:transform before:-translate-x-1/2': props.layout == 'vertical' + }, + + // Size + { + 'before:w-full': props.layout == 'horizontal', + 'before:min-h-full': props.layout == 'vertical' + }, + + // Shape + { + 'before:border-solid': props.type == 'solid', + 'before:border-dotted': props.type == 'dotted', + 'before:border-dashed': props.type == 'dashed' + }, + + // Color + { + 'before:border-t before:border-surface-200 before:dark:border-surface-600': props.layout == 'horizontal', + 'before:border-l before:border-surface-200 before:dark:border-surface-600': props.layout == 'vertical' + } + ] + }), + content: { + class: [ + // Space and Position + 'px-1 z-10', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + } +}; diff --git a/admin_front/presets/aura/dock/index.js b/admin_front/presets/aura/dock/index.js new file mode 100644 index 0000000..5a33ade --- /dev/null +++ b/admin_front/presets/aura/dock/index.js @@ -0,0 +1,93 @@ +export default { + root: ({ props }) => ({ + class: [ + // Positioning + 'absolute z-1', + { + 'left-0 bottom-0 w-full': props.position == 'bottom', + 'left-0 top-0 w-full': props.position == 'top', + 'left-0 top-0 h-full': props.position == 'left', + 'right-0 top-0 h-full': props.position == 'right' + }, + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Interactivity + 'pointer-events-none' + ] + }), + container: { + class: [ + // Flexbox + 'flex', + + // Shape & Border + 'rounded-md', + + // Color + 'bg-surface-0/10 dark:bg-surface-900/20 border border-surface-0/20', + 'backdrop-blur-sm', + + // Spacing + 'p-2', + + // Misc + 'pointer-events-auto' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + { + 'flex-col': props.position == 'left' || props.position == 'right' + }, + + // List Style + 'm-0 p-0 list-none', + + // Shape + 'outline-none' + ] + }), + menuitem: ({ props, context, instance }) => ({ + class: [ + // Spacing & Shape + 'p-2 rounded-md', + + // Conditional Scaling + { + 'hover:scale-150': instance.currentIndex === context.index, + 'scale-125': instance.currentIndex - 1 === context.index || instance.currentIndex + 1 === context.index, + 'scale-110': instance.currentIndex - 2 === context.index || instance.currentIndex + 2 === context.index + }, + + // Positioning & Hover States + { + 'origin-bottom hover:mx-6': props.position == 'bottom', + 'origin-top hover:mx-6': props.position == 'top', + 'origin-left hover:my-6': props.position == 'left', + 'origin-right hover:my-6': props.position == 'right' + }, + + // Transitions & Transform + 'transition-all duration-200 ease-cubic-bezier-will-change-transform transform' + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex flex-col items-center justify-center', + + // Position + 'relative', + + // Size + 'w-16 h-16', + + // Misc + 'cursor-default overflow-hidden' + ] + } +}; diff --git a/admin_front/presets/aura/dropdown/index.js b/admin_front/presets/aura/dropdown/index.js new file mode 100644 index 0000000..9a8a9bd --- /dev/null +++ b/admin_front/presets/aura/dropdown/index.js @@ -0,0 +1,263 @@ +export default { + root: ({ props, state, parent }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 ml-[-1px]': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + + 'border', + { 'dark:border-surface-700': parent.instance.$name != 'InputGroup' }, + { 'dark:border-surface-600': parent.instance.$name == 'InputGroup' }, + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400 z-10': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: ({ props, parent }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue != undefined, 'text-surface-400 dark:text-surface-500': props.modelValue == undefined }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 px-3', + { 'pr-7': props.showClear }, + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null }, + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'pt-2 px-2 pb-0', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'leading-[normal]', + + // Sizing + 'py-2 pl-3 pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-950', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-400 dark:text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + loadingicon: { + class: 'text-surface-400 dark:text-surface-500 animate-spin' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/fieldset/index.js b/admin_front/presets/aura/fieldset/index.js new file mode 100644 index 0000000..88c0503 --- /dev/null +++ b/admin_front/presets/aura/fieldset/index.js @@ -0,0 +1,81 @@ +export default { + root: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'rounded-md', + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + legend: ({ props }) => ({ + class: [ + // Font + 'font-semibold', + 'leading-none', + + //Spacing + 'p-0 mb-[0.375rem]', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + + // Transition + 'transition-none', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-800': props.toggleable } + ] + }), + toggler: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-center', + 'relative', + + //Spacing + { 'py-2 px-3': props.toggleable }, + + // Shape + { 'rounded-md': props.toggleable }, + + // Color + { 'text-surface-700 dark:text-surface-200 hover:text-surface-900': props.toggleable }, + + // States + { 'hover:text-surface-900 dark:hover:text-surface-100': props.toggleable }, + { 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300': props.toggleable }, + + // Misc + { + 'transition-none cursor-pointer overflow-hidden select-none': props.toggleable + } + ] + }), + togglerIcon: { + class: 'mr-2 inline-block' + }, + legendTitle: ({ props }) => ({ + class: ['flex items-center justify-center leading-none', { 'py-2 px-3': !props.toggleable }] + }), + content: { + class: 'p-0' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/aura/fileupload/index.js b/admin_front/presets/aura/fileupload/index.js new file mode 100644 index 0000000..310d03b --- /dev/null +++ b/admin_front/presets/aura/fileupload/index.js @@ -0,0 +1,175 @@ +export default { + input: { + class: 'hidden' + }, + buttonbar: { + class: [ + // Flexbox + 'flex', + 'flex-wrap', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-[1.125rem]', + 'gap-2', + + // Borders + 'border', + 'border-solid', + 'border-surface-200', + 'dark:border-surface-700', + 'border-b-0', + + // Shape + 'rounded-tr-lg', + 'rounded-tl-lg' + ] + }, + chooseButton: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Spacing + 'px-4 py-2', + + // Shape + 'rounded-md', + + // Font + 'leading-[normal]', + 'font-medium', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border-primary', + + // States + 'hover:bg-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary', + + // Misc + 'overflow-hidden', + 'cursor-pointer' + ] + }, + chooseIcon: { + class: ['mr-2', 'inline-block'] + }, + chooseButtonLabel: { + class: ['flex-1', 'font-bold'] + }, + uploadbutton: { + icon: { + class: 'mr-2' + } + }, + cancelbutton: { + icon: { + class: 'mr-2' + } + }, + content: { + class: [ + // Position + 'relative', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-[1.125rem]', + + // Borders + 'border border-t-0', + 'border-surface-200', + 'dark:border-surface-700', + + // Shape + 'rounded-b-lg' + ] + }, + file: { + class: [ + // Flexbox + 'flex', + 'items-center', + 'flex-wrap', + + // Spacing + 'p-4', + 'mb-2', + 'last:mb-0', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + 'gap-2', + + // Shape + 'rounded' + ] + }, + thumbnail: { + class: 'shrink-0' + }, + fileName: { + class: 'mb-2 break-all' + }, + fileSize: { + class: 'mr-2' + }, + uploadicon: { + class: 'mr-2' + }, + progressbar: { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'absolute top-0 left-0', + + // Shape and Size + 'border-0', + 'h-2', + 'rounded-md', + 'w-full', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: { + class: [ + // Flexbox & Overflow & Position + 'absolute flex items-center justify-center overflow-hidden', + + // Colors + 'bg-primary', + + // Spacing & Sizing + 'm-0', + 'h-full w-0', + + // Shape + 'border-0', + + // Transitions + 'transition-width duration-1000 ease-in-out' + ] + } + } +}; diff --git a/admin_front/presets/aura/floatlabel/index.js b/admin_front/presets/aura/floatlabel/index.js new file mode 100644 index 0000000..557808f --- /dev/null +++ b/admin_front/presets/aura/floatlabel/index.js @@ -0,0 +1,26 @@ +export default { + root: { + class: [ + 'block relative', + + // Base Label Appearance + '[&>*:last-child]:text-surface-900/60 dark:[&>*:last-child]:text-white/60', + '[&>*:last-child]:absolute', + '[&>*:last-child]:top-1/2', + '[&>*:last-child]:-translate-y-1/2', + '[&>*:last-child]:left-3', + '[&>*:last-child]:pointer-events-none', + '[&>*:last-child]:transition-all', + '[&>*:last-child]:duration-200', + '[&>*:last-child]:ease', + + // Focus Label Appearance + '[&>*:last-child]:has-[:focus]:-top-3', + '[&>*:last-child]:has-[:focus]:text-sm', + + // Filled Input Label Appearance + '[&>*:last-child]:has-[.filled]:-top-3', + '[&>*:last-child]:has-[.filled]:text-sm' + ] + } +}; diff --git a/admin_front/presets/aura/galleria/index.js b/admin_front/presets/aura/galleria/index.js new file mode 100644 index 0000000..9f4d37e --- /dev/null +++ b/admin_front/presets/aura/galleria/index.js @@ -0,0 +1,308 @@ +export default { + content: ({ parent, props }) => ({ + class: [ + 'flex', + { + 'flex-col': props.fullScreen + }, + { + 'flex-col': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-row': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + itemwrapper: ({ parent, props }) => ({ + class: [ + 'group', + 'flex relative', + { + 'grow shrink w-0 justify-center': props.fullScreen + }, + { + 'flex-col': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'top', + 'flex-row items-center': parent.props.indicatorsPosition === 'left' || parent.props.indicatorsPosition === 'right' + }, + { + 'order-2': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left', + 'flex-row': parent.props.thumbnailsPosition === 'right' + } + ] + }), + + itemcontainer: ({ parent }) => ({ + class: [ + 'flex h-full relative', + { + 'order-1': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'right', + 'order-2': parent.props.indicatorsPosition === 'top' || parent.props.indicatorsPosition === 'left' + } + ] + }), + item: { + class: [ + // Flex + 'flex justify-center items-center h-full w-full', + + // Sizing + 'h-full w-full' + ] + }, + thumbnailwrapper: ({ parent }) => ({ + class: [ + // Flex + 'flex flex-col shrink-0', + + { + 'order-1': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left' + }, + + // Misc + 'overflow-auto' + ] + }), + thumbnailcontainer: ({ parent }) => ({ + class: [ + // Flex + 'flex', + + // Spacing + 'p-4', + + // Colors + 'bg-black/90', + + { + 'flex-row': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-col grow': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + previousthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + thumbnailitemscontainer: { + class: 'overflow-hidden w-full' + }, + thumbnailitems: ({ parent }) => ({ + class: [ + 'flex', + { + 'flex-col h-full': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailitem: ({ parent }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + 'grow shrink-0', + + // Sizing + { + 'w-full md:w-[25%] lg:w-[20%]': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom' + }, + + // Misc + 'overflow-auto', + 'cursor-pointer', + 'opacity-50', + + // States + '[&[data-p-active="true"]]:opacity-100', + 'hover:opacity-100', + + // Transitions + 'transition-opacity duration-300' + ] + }), + nextthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + indicators: ({ parent }) => ({ + class: [ + // flex + 'flex items-center justify-center', + + // Spacing + 'p-4', + + // Indicators Position + { + 'order-2': parent.props.indicatorsPosition == 'bottom', + 'order-1': parent.props.indicatorsPosition == 'top', + 'order-1 flex-col': parent.props.indicatorsPosition == 'left', + 'flex-col order-2': parent.props.indicatorsPosition == 'right' + }, + { + 'absolute z-10 bg-black/50': parent.props.showIndicatorsOnItem + }, + + { + 'bottom-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'bottom' && parent.props.showIndicatorsOnItem, + 'top-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'top' && parent.props.showIndicatorsOnItem, + 'left-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'left' && parent.props.showIndicatorsOnItem, + 'right-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'right' && parent.props.showIndicatorsOnItem + } + ] + }), + indicator: ({ parent }) => ({ + class: [ + { + 'mr-2': parent.props.indicatorsPosition == 'bottom' || parent.props.indicatorsPosition == 'top', + 'mb-2': parent.props.indicatorsPosition == 'left' || parent.props.indicatorsPosition == 'right' + } + ] + }), + indicatorbutton: ({ context }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full transition duration-200', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Conditional Appearance: Not Highlighted + { 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted }, + + // Conditional Appearance: Highlighted + { 'bg-primary hover:bg-primary-hover': context.highlighted } + ] + }), + mask: { + class: ['fixed top-0 left-0 w-full h-full', 'flex items-center justify-center', 'bg-black/90'] + }, + closebutton: { + class: [ + // Positioning + '!absolute top-0 right-0', + + // Display & Flexbox + 'flex justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'text-white bg-transparent w-12 h-12 rounded-full transition duration-200 ease-in-out', + + // Hover Effect + 'hover:text-white hover:bg-surface-0/10', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + previousitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] left-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }), + nextitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] right-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400' + ] + }), + caption: { + class: [ + // Positioning + 'absolute bottom-0 left-0 w-full', + + // Appearance + 'bg-black/50 text-white p-4' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/admin_front/presets/aura/global.js b/admin_front/presets/aura/global.js new file mode 100644 index 0000000..42552db --- /dev/null +++ b/admin_front/presets/aura/global.js @@ -0,0 +1,90 @@ +export default { + css: ` + *[data-pd-ripple="true"]{ + overflow: hidden; + position: relative; + } + span[data-p-ink-active="true"]{ + animation: ripple 0.4s linear; + } + @keyframes ripple { + 100% { + opacity: 0; + transform: scale(2.5); + } + } + + .progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-dash{ + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #ff5757; + } + 40% { + stroke: #696cff; + } + 66% { + stroke: #1ea97c; + } + 80%, 90% { + stroke: #cc8925; + } + } + + .progressbar-value-animate::after { + will-change: left, right; + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + } + .progressbar-value-animate::before { + will-change: left, right; + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + @keyframes p-progressbar-indeterminate-anim { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } + } + + .p-fadein { + animation: p-fadein 250ms linear; + } + + @keyframes p-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } +` +}; diff --git a/admin_front/presets/aura/iconfield/index.js b/admin_front/presets/aura/iconfield/index.js new file mode 100644 index 0000000..7121611 --- /dev/null +++ b/admin_front/presets/aura/iconfield/index.js @@ -0,0 +1,22 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + '[&>input]:w-full', + + '[&>*:first-child]:absolute', + '[&>*:first-child]:top-1/2', + '[&>*:first-child]:-mt-2', + '[&>*:first-child]:leading-none', + '[&>*:first-child]:text-surface-900/60 dark:[&>*:first-child]:text-white/60', + { + '[&>*:first-child]:right-3': props.iconPosition === 'right', + '[&>*:first-child]:left-3': props.iconPosition === 'left' + }, + { + '[&>*:last-child]:pr-10': props.iconPosition === 'right', + '[&>*:last-child]:pl-10': props.iconPosition === 'left' + } + ] + }) +}; diff --git a/admin_front/presets/aura/image/index.js b/admin_front/presets/aura/image/index.js new file mode 100644 index 0000000..8faaaa1 --- /dev/null +++ b/admin_front/presets/aura/image/index.js @@ -0,0 +1,206 @@ +export default { + root: { + class: 'relative inline-block' + }, + button: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'absolute', + + // Shape + 'inset-0 opacity-0 transition-opacity duration-300', + + // Color + 'bg-transparent text-surface-100', + + // States + 'hover:opacity-100 hover:cursor-pointer hover:bg-black/50 hover:bg-opacity-50' + ] + }, + mask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'fixed top-0 left-0', + + // Sizing + 'w-full h-full', + + // Color + 'bg-black/90' + ] + }, + toolbar: { + class: [ + // Flexbox + 'flex', + + // Positioning + 'absolute top-0 right-0', + + // Spacing + 'p-4' + ] + }, + rotaterightbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotaterighticon: { + class: 'w-6 h-6' + }, + rotateleftbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotatelefticon: { + class: 'w-6 h-6' + }, + zoomoutbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomouticon: { + class: 'w-6 h-6' + }, + zoominbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoominicon: { + class: 'w-6 h-6' + }, + closebutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/admin_front/presets/aura/index.js b/admin_front/presets/aura/index.js new file mode 100644 index 0000000..49eb5e7 --- /dev/null +++ b/admin_front/presets/aura/index.js @@ -0,0 +1,207 @@ +import accordion from './accordion'; +import autocomplete from './autocomplete'; +import avatar from './avatar'; +import avatargroup from './avatargroup'; +import badge from './badge'; +import badgedirective from './badgedirective'; +import blockui from './blockui'; +import breadcrumb from './breadcrumb'; +import button from './button'; +import calendar from './calendar'; +import card from './card'; +import carousel from './carousel'; +import cascadeselect from './cascadeselect'; +import checkbox from './checkbox'; +import chip from './chip'; +import chips from './chips'; +import colorpicker from './colorpicker'; +import confirmpopup from './confirmpopup'; +import contextmenu from './contextmenu'; +import datatable from './datatable'; +import dataview from './dataview'; +import dataviewlayoutoptions from './dataviewlayoutoptions'; +import deferred from './deferred'; +import dialog from './dialog'; +import divider from './divider'; +import dock from './dock'; +import dropdown from './dropdown'; +import fieldset from './fieldset'; +import fileupload from './fileupload'; +import floatlabel from './floatlabel'; +import galleria from './galleria'; +import global from './global'; +import iconfield from './iconfield'; +import image from './image'; +import inlinemessage from './inlinemessage'; +import inplace from './inplace'; +import inputgroup from './inputgroup'; +import inputgroupaddon from './inputgroupaddon'; +import inputmask from './inputmask'; +import inputnumber from './inputnumber'; +import inputotp from './inputotp'; +import inputswitch from './inputswitch'; +import inputtext from './inputtext'; +import knob from './knob'; +import listbox from './listbox'; +import megamenu from './megamenu'; +import menu from './menu'; +import menubar from './menubar'; +import message from './message'; +import metergroup from './metergroup'; +import multiselect from './multiselect'; +import orderlist from './orderlist'; +import organizationchart from './organizationchart'; +import overlaypanel from './overlaypanel'; +import paginator from './paginator'; +import panel from './panel'; +import panelmenu from './panelmenu'; +import password from './password'; +import picklist from './picklist'; +import progressbar from './progressbar'; +import progressspinner from './progressspinner'; +import radiobutton from './radiobutton'; +import rating from './rating'; +import ripple from './ripple'; +import scrollpanel from './scrollpanel'; +import scrolltop from './scrolltop'; +import selectbutton from './selectbutton'; +import sidebar from './sidebar'; +import skeleton from './skeleton'; +import slider from './slider'; +import speeddial from './speeddial'; +import splitbutton from './splitbutton'; +import splitter from './splitter'; +import splitterpanel from './splitterpanel'; +import stepper from './stepper'; +import steps from './steps'; +import tabmenu from './tabmenu'; +import tabview from './tabview'; +import tag from './tag'; +import terminal from './terminal'; +import textarea from './textarea'; +import tieredmenu from './tieredmenu'; +import timeline from './timeline'; +import toast from './toast'; +import togglebutton from './togglebutton'; +import toolbar from './toolbar'; +import tooltip from './tooltip'; +import tree from './tree'; +import treeselect from './treeselect'; +import treetable from './treetable'; +import tristatecheckbox from './tristatecheckbox'; + +export default { + global, + directives: { + badge: badgedirective, + ripple, + tooltip + }, + + //forms + autocomplete, + dropdown, + inputnumber, + inputtext, + calendar, + checkbox, + radiobutton, + inputswitch, + selectbutton, + slider, + chips, + rating, + multiselect, + togglebutton, + cascadeselect, + listbox, + colorpicker, + inputgroup, + inputgroupaddon, + inputmask, + knob, + treeselect, + tristatecheckbox, + textarea, + password, + iconfield, + floatlabel, + inputotp, + + //buttons + button, + splitbutton, + speeddial, + + //data + paginator, + datatable, + tree, + dataview, + dataviewlayoutoptions, + organizationchart, + orderlist, + picklist, + treetable, + timeline, + + //panels + accordion, + panel, + fieldset, + card, + tabview, + divider, + toolbar, + scrollpanel, + splitter, + splitterpanel, + stepper, + deferred, + + //file + fileupload, + + //menu + contextmenu, + menu, + menubar, + steps, + tieredmenu, + breadcrumb, + panelmenu, + megamenu, + dock, + tabmenu, + + //overlays + dialog, + overlaypanel, + sidebar, + confirmpopup, + + //messages + message, + inlinemessage, + toast, + + //media + carousel, + galleria, + image, + + //misc + badge, + avatar, + avatargroup, + tag, + chip, + progressbar, + skeleton, + scrolltop, + terminal, + blockui, + metergroup, + inplace, + progressspinner +}; diff --git a/admin_front/presets/aura/inlinemessage/index.js b/admin_front/presets/aura/inlinemessage/index.js new file mode 100644 index 0000000..9eb0187 --- /dev/null +++ b/admin_front/presets/aura/inlinemessage/index.js @@ -0,0 +1,42 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex items-center justify-center align-top gap-2', + 'p-3 m-0 rounded-md border', + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-surface-100/70 dark:bg-surface-500/20': props.severity == 'secondary', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error', + 'bg-surface-950 dark:bg-surface-0': props.severity == 'contrast' + }, + { + 'border-blue-200 dark:border-blue-500/20': props.severity == 'info', + 'border-green-200 dark:border-green-500/20': props.severity == 'success', + 'border-surface-200 dark:border-surface-500/20': props.severity == 'secondary', + 'border-orange-200 dark:border-orange-500/20': props.severity == 'warn', + 'border-red-200 dark:border-red-500/20': props.severity == 'error', + 'border-surface-950 dark:border-surface-0': props.severity == 'contrast' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-surface-700 dark:text-surface-300': props.severity == 'secondary', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error', + 'text-surface-0 dark:text-surface-950': props.severity == 'contrast' + } + ] + }), + icon: { + class: 'text-base' + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'font-medium' + ] + } +}; diff --git a/admin_front/presets/aura/inplace/index.js b/admin_front/presets/aura/inplace/index.js new file mode 100644 index 0000000..691230b --- /dev/null +++ b/admin_front/presets/aura/inplace/index.js @@ -0,0 +1,27 @@ +export default { + display: { + class: [ + // Display + 'inline', + + // Spacing + 'px-3 py-2', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 hover:text-surface-700 dark:hover:bg-surface-800 dark:hover:text-white/80', + + // Transitions + 'transition', + 'duration-200', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/aura/inputgroup/index.js b/admin_front/presets/aura/inputgroup/index.js new file mode 100644 index 0000000..cce7111 --- /dev/null +++ b/admin_front/presets/aura/inputgroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: ['flex items-stretch', 'w-full'] + } +}; diff --git a/admin_front/presets/aura/inputgroupaddon/index.js b/admin_front/presets/aura/inputgroupaddon/index.js new file mode 100644 index 0000000..888b311 --- /dev/null +++ b/admin_front/presets/aura/inputgroupaddon/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex + 'flex items-center justify-center', + + // Shape + 'first:rounded-l-md', + 'last:rounded-r-md', + 'border-y', + + 'last:border-r', + 'border-l', + 'border-r-0', + + // Space + 'p-2', + + // Size + 'min-w-[2.5rem]', + + // Color + 'bg-transparent dark:bg-surface-900', + 'text-surface-800 dark:text-white/80', + 'border-surface-300 dark:border-surface-700' + ] + } +}; diff --git a/admin_front/presets/aura/inputmask/index.js b/admin_front/presets/aura/inputmask/index.js new file mode 100644 index 0000000..9607680 --- /dev/null +++ b/admin_front/presets/aura/inputmask/index.js @@ -0,0 +1,39 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'rounded-md', + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/aura/inputnumber/index.js b/admin_front/presets/aura/inputnumber/index.js new file mode 100644 index 0000000..de76e68 --- /dev/null +++ b/admin_front/presets/aura/inputnumber/index.js @@ -0,0 +1,172 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Flex + 'inline-flex', + 'relative', + { 'flex-col': props.showButtons && props.buttonLayout == 'vertical' }, + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Shape + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' && !props.showButtons }, + { 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-700': parent.instance.$name == 'InputGroup' && !props.showButtons }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + //Sizing + { '!w-16': props.showButtons && props.buttonLayout == 'vertical' } + ] + }), + input: { + root: ({ parent, context }) => ({ + class: [ + // Font + 'leading-none', + + // Display + 'flex flex-auto', + + //Text + { 'text-center': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Spacing + 'py-2 px-3', + 'm-0', + + // Shape + 'rounded-md', + { 'rounded-l-none rounded-r-none': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-none': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + { 'border-0': parent.instance.$parentInstance?.$name == 'InputGroup' && !parent.props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !parent.props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { 'hover:border-primary': !parent.props.invalid }, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$parentInstance?.$name == 'FloatLabel' && parent.state.d_modelValue !== null }, + + //Position + { 'order-2': parent.props.buttonLayout == 'horizontal' || parent.props.buttonLayout == 'vertical' } + ] + }) + }, + buttongroup: ({ props }) => ({ + class: [ + // Flex + 'flex', + 'flex-col', + { 'absolute top-px right-px h-[calc(100%-2px)] z-20': props.showButtons && props.buttonLayout == 'stacked' } + ] + }), + + incrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-3': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'order-1': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //Color + 'text-surface-800 dark:text-surface-0', + 'bg-transparent', + { 'dark:bg-surface-900': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + 'border border-surface-300 dark:border-surface-700', + { 'border-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'border-l-0': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' && parent.props.buttonLayout == 'horizontal' }, + { 'border-b-0': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' && parent.props.buttonLayout == 'vertical' }, + + // Sizing + 'w-[3rem]', + { 'px-4 py-3': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + { 'p-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'w-full': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-md': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'rounded-bl-none rounded-tl-none': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-bl-none rounded-br-none': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + }, + decrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-1': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'order-3': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //Color + 'text-surface-800 dark:text-surface-0', + 'bg-transparent', + { 'dark:bg-surface-900': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + 'border border-surface-300 dark:border-surface-700', + { 'border-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'border-r-0': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' && parent.props.buttonLayout == 'horizontal' }, + { 'border-t-0': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' && parent.props.buttonLayout == 'vertical' }, + + // Sizing + 'w-[3rem]', + { 'px-4 py-3': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + { 'p-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'w-full': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-tr-none rounded-tl-none rounded-bl-none': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'rounded-tr-none rounded-br-none ': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-tr-none rounded-tl-none ': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + } +}; diff --git a/admin_front/presets/aura/inputotp/index.js b/admin_front/presets/aura/inputotp/index.js new file mode 100644 index 0000000..f3e8640 --- /dev/null +++ b/admin_front/presets/aura/inputotp/index.js @@ -0,0 +1,57 @@ +export default { + root: { + class: [ + // Alignment + 'flex items-center', + 'gap-2' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Flex & Alignment + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + 'text-center', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Size + 'w-10', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 ml-[-1px]': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + } +}; diff --git a/admin_front/presets/aura/inputswitch/index.js b/admin_front/presets/aura/inputswitch/index.js new file mode 100644 index 0000000..b3cdd9a --- /dev/null +++ b/admin_front/presets/aura/inputswitch/index.js @@ -0,0 +1,79 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-block relative', + 'w-10 h-6', + 'rounded-2xl', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + { 'before:transform before:translate-x-4': props.modelValue == props.trueValue }, + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2 before:left-1', + 'before:-mt-2', + 'before:h-4 before:w-4', + 'before:rounded-full', + 'before:duration-200', + 'before:bg-surface-0 before:dark:bg-surface-500', + + // Colors + { + 'bg-surface-300 dark:bg-surface-800': !(props.modelValue == props.trueValue) && !props.invalid, + 'bg-primary': props.modelValue == props.trueValue && !props.invalid, + 'before:dark:bg-surface-950': props.modelValue == props.trueValue + }, + + // Invalid State + { 'bg-red-400 dark:bg-red-300': props.invalid }, + { 'peer-hover:bg-red-500 dark:peer-hover:bg-red-200': props.invalid }, + + // States + { 'peer-hover:bg-surface-400 dark:peer-hover:bg-surface-700': !(props.modelValue == props.trueValue) && !props.disabled && !props.invalid }, + { 'peer-hover:bg-primary-hover': props.modelValue == props.trueValue && !props.disabled && !props.invalid }, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-2xl', + 'outline-none', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/aura/inputtext/index.js b/admin_front/presets/aura/inputtext/index.js new file mode 100644 index 0000000..323f429 --- /dev/null +++ b/admin_front/presets/aura/inputtext/index.js @@ -0,0 +1,51 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'py-3 px-3.5': props.size == 'large', + 'py-1.5 px-2': props.size == 'small', + 'py-2 px-3': props.size == null + }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/aura/knob/index.js b/admin_front/presets/aura/knob/index.js new file mode 100644 index 0000000..21d2c61 --- /dev/null +++ b/admin_front/presets/aura/knob/index.js @@ -0,0 +1,44 @@ +export default { + root: ({ props }) => ({ + class: [ + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: { + class: [ + // Stroke + 'stroke-current', + + // Color + 'stroke-surface-200 dark:stroke-surface-700', + + // Fill + 'fill-none', + + // Transition + 'transition duration-100 ease-in' + ] + }, + value: { + class: [ + // Animation + 'animate-dash-frame', + + // Color + 'stroke-primary', + + // Fill + 'fill-none' + ] + }, + label: { + class: [ + // Text Style + 'text-center text-xl', + + // Color + 'fill-surface-600 dark:fill-surface-200' + ] + } +}; diff --git a/admin_front/presets/aura/listbox/index.js b/admin_front/presets/aura/listbox/index.js new file mode 100644 index 0000000..40da9be --- /dev/null +++ b/admin_front/presets/aura/listbox/index.js @@ -0,0 +1,146 @@ +export default { + root: ({ props }) => ({ + class: [ + 'rounded-md', + + // Colors + { 'bg-surface-0 dark:bg-surface-900': !props.disabled }, + 'text-surface-700 dark:text-white/80', + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Disabled State + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid } + ] + }), + wrapper: { + class: [ + // Overflow + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0 outline-none' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'pt-2 px-2 pb-0', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'leading-[normal]', + + // Sizing + 'py-2 pl-3 pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-950', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + } +}; diff --git a/admin_front/presets/aura/megamenu/index.js b/admin_front/presets/aura/megamenu/index.js new file mode 100644 index 0000000..a9fca09 --- /dev/null +++ b/admin_front/presets/aura/megamenu/index.js @@ -0,0 +1,196 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + + // Shape & Size + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + { 'p-2 items-center': props.orientation == 'horizontal', 'flex-col sm:w-48 p-1': props.orientation !== 'horizontal' } + ] + }), + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'p-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: ({ props }) => ({ + class: [ + 'sm:relative static my-[2px] [&:first-child]:mt-0', + { + 'sm:w-auto w-full': props.horizontal, + 'w-full': !props.horizontal + } + ] + }), + content: ({ context }) => ({ + class: [ + 'rounded-[4px]', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Size + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }, + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.horizontal, + 'ml-auto': !props.horizontal + } + ] + }), + panel: ({ props }) => ({ + class: [ + // Size + 'w-auto', + + // Spacing + 'm-0', + + // Shape + 'shadow-none sm:shadow-md', + + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + + // Position + 'static sm:absolute', + 'z-10', + { + 'sm:left-full top-0': !props.horizontal + } + ] + }), + grid: { + class: 'flex flex-wrap sm:flex-nowrap' + }, + column: { + class: 'w-full sm:w-1/2' + }, + submenu: { + class: ['m-0 list-none', 'p-1 px-2 w-full sm:min-w-[14rem]'] + }, + submenuheader: { + class: [ + 'font-semibold', + + // Spacing + 'py-2 px-3', + 'm-0', + + // Color + 'text-surface-400 dark:text-surface-500', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + menubutton: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-7', + 'h-7', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/admin_front/presets/aura/menu/index.js b/admin_front/presets/aura/menu/index.js new file mode 100644 index 0000000..0dabd5b --- /dev/null +++ b/admin_front/presets/aura/menu/index.js @@ -0,0 +1,114 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + + // Spacing + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-[normal]'] + }, + submenuheader: { + class: [ + // Font + 'font-bold', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-400 dark:text-surface-600' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/menubar/index.js b/admin_front/presets/aura/menubar/index.js new file mode 100644 index 0000000..0ce24db --- /dev/null +++ b/admin_front/presets/aura/menubar/index.js @@ -0,0 +1,177 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'p-2', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'p-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-900 sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: { + class: 'sm:relative sm:w-auto w-full static my-[2px] [&:first-child]:mt-0' + }, + content: ({ props, context }) => ({ + class: [ + // Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: ({ context }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Size + { + 'pl-9 sm:pl-5': context.level === 1, + 'pl-14 sm:pl-5': context.level === 2 + }, + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.root, + 'ml-auto': !props.root + } + ] + }), + submenu: ({ props }) => ({ + class: [ + // Size + 'rounded-md', + 'min-w-[12.5rem]', + + // Spacing + 'p-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }), + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-[2px]' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-7', + 'h-7', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/admin_front/presets/aura/message/index.js b/admin_front/presets/aura/message/index.js new file mode 100644 index 0000000..3e6b13f --- /dev/null +++ b/admin_front/presets/aura/message/index.js @@ -0,0 +1,102 @@ +export default { + root: ({ props }) => ({ + class: [ + // Spacing and Shape + 'my-4 mx-0', + 'rounded-md', + 'border', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-surface-100/70 dark:bg-surface-500/20': props.severity == 'secondary', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error', + 'bg-surface-950 dark:bg-surface-0': props.severity == 'contrast' + }, + { + 'border-blue-200 dark:border-blue-500/20': props.severity == 'info', + 'border-green-200 dark:border-green-500/20': props.severity == 'success', + 'border-surface-200 dark:border-surface-500/20': props.severity == 'secondary', + 'border-orange-200 dark:border-orange-500/20': props.severity == 'warn', + 'border-red-200 dark:border-red-500/20': props.severity == 'error', + 'border-surface-950 dark:border-surface-0': props.severity == 'contrast' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-surface-700 dark:text-surface-300': props.severity == 'secondary', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error', + 'text-surface-0 dark:text-surface-950': props.severity == 'contrast' + } + ] + }), + wrapper: { + class: [ + // Flexbox + 'flex items-center', + + // Spacing + 'py-2 px-3' + ] + }, + icon: { + class: [ + // Sizing and Spacing + 'w-4 h-4', + 'leading-[normal] mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-[normal]', + 'font-medium' + ] + }, + button: ({ props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-7 h-7', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/30 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity == 'info', + 'focus:ring-green-500 dark:focus:ring-green-400': props.severity == 'success', + 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity == 'secondary', + 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity == 'warn', + 'focus:ring-red-500 dark:focus:ring-red-4000': props.severity == 'error', + 'focus:ring-surface-0 dark:focus:ring-surface-950': props.severity == 'contrast' + }, + + // Misc + 'overflow-hidden' + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-300', + leaveFromClass: 'max-h-40', + leaveActiveClass: 'overflow-hidden transition-all duration-300 ease-in', + leaveToClass: 'max-h-0 opacity-0 !m-0' + } +}; diff --git a/admin_front/presets/aura/metergroup/index.js b/admin_front/presets/aura/metergroup/index.js new file mode 100644 index 0000000..2269682 --- /dev/null +++ b/admin_front/presets/aura/metergroup/index.js @@ -0,0 +1,97 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex gap-4', + + { 'flex-col': props.orientation == 'horizontal', 'flex-row': props.orientation == 'vertical' } + ] + }), + metercontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + { 'flex-col': props.orientation === 'vertical' }, + + // Sizing + { 'w-2 h-full': props.orientation === 'vertical' }, + { 'h-2': props.orientation === 'horizontal' }, + + // Colors + 'bg-gray-200 dark:bg-gray-700', + + // Border Radius + 'rounded-lg' + ] + }), + meter: ({ props }) => ({ + class: [ + // Shape + 'border-0', + + // Rounded Corners - Horizontal + { + 'first:rounded-l-lg last:rounded-r-lg': props.orientation === 'horizontal' + }, + + // Rounded Corners - Vertical + { + 'first:rounded-t-lg last:rounded-b-lg': props.orientation === 'vertical' + }, + + // Colors + 'bg-primary' + ] + }), + labellist: ({ props }) => ({ + class: [ + // Display & Flexbox + 'flex flex-wrap', + + { 'gap-4': props.labelOrientation === 'horizontal' }, + + { 'gap-2': props.labelOrientation === 'vertical' }, + + { 'flex-col': props.labelOrientation === 'vertical' }, + + // Conditional Alignment - Horizontal + { + 'align-end': props.labelOrientation === 'horizontal' && props.labelPosition === 'end', + 'align-start': props.labelOrientation === 'horizontal' && props.labelPosition === 'start' + }, + + // Conditional Alignment - Vertical + { + 'justify-end': props.labelOrientation === 'vertical' && props.labelPosition === 'end', + 'justify-start': props.labelOrientation === 'vertical' && props.labelPosition === 'start' + }, + + // List Styling + 'm-0 p-0 list-none' + ] + }), + labellistitem: { + class: [ + // Flexbox + 'inline-flex', + 'items-center', + 'gap-2' + ] + }, + labellisttype: { + class: [ + // Display + 'inline-flex', + + // Background Color + 'bg-primary', + + // Size + 'w-2 h-2', + + // Rounded Shape + 'rounded-full' + ] + } +}; diff --git a/admin_front/presets/aura/multiselect/index.js b/admin_front/presets/aura/multiselect/index.js new file mode 100644 index 0000000..f4c40bf --- /dev/null +++ b/admin_front/presets/aura/multiselect/index.js @@ -0,0 +1,543 @@ +export default { + root: ({ props, state, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-700': !props.invalid }, + { 'outline-none outline-offset-0 z-10 ring-1 ring-primary-500 dark:ring-primary-400': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + labelContainer: { + class: 'overflow-hidden flex flex-auto cursor-pointer ' + }, + label: ({ props }) => ({ + class: [ + 'leading-none', + 'block', + + // Spacing + { + 'py-2 px-3': props.display === 'comma' || (props.display === 'chip' && !props?.modelValue?.length), + 'py-1 px-1': props.display === 'chip' && props?.modelValue?.length > 0 + }, + + // Color + { 'text-surface-800 dark:text-white/80': props.modelValue?.length, 'text-surface-400 dark:text-surface-500': !props.modelValue?.length }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1 px-3 m-0 mr-1', + + // Shape + 'rounded', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + 'text-surface-700 dark:text-white', + + // Misc + 'cursor-default' + ] + }, + removeTokenIcon: { + class: [ + // Spacing + 'ml-[0.375rem]', + + // Size + 'w-4 h-4', + + // Misc + 'cursor-pointer' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + header: { + class: [ + //Flex + 'flex items-center justify-between', + + // Spacing + 'pt-2 px-4 pb-0', + 'm-0', + + //Shape + 'border-b-0', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-300 dark:border-surface-700' + ] + }, + headerCheckboxContainer: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + headerCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + itemCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'ml-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: 'w-4 h-4 inline-block' + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-semibold', + + // Spacing + 'm-0 py-2 px-3', + + // Colors + 'text-surface-400 dark:text-surface-500', + + // Misc + 'cursor-auto' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'leading-[normal]', + + // Sizing + 'py-2 pl-3 pr-7', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-950', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-400 dark:text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + loadingicon: { + class: 'text-surface-400 dark:text-surface-500 animate-spin' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/orderlist/index.js b/admin_front/presets/aura/orderlist/index.js new file mode 100644 index 0000000..24db269 --- /dev/null +++ b/admin_front/presets/aura/orderlist/index.js @@ -0,0 +1,277 @@ +export default { + root: { + class: [ + // Flexbox + 'flex xl:flex-row flex-col' + ] + }, + controls: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + moveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + container: { + class: [ + 'flex-auto', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + }, + header: { + class: [ + 'font-semibold', + + // Shape + 'border-0 rounded-t-md', + + // Spacing + 'pt-3 px-4 pb-2', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + list: { + class: [ + // Spacing + 'list-none m-0', + 'p-1', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-2 px-3 m-0 my-[2px] first:mt-0 last:mb-0', + + // Shape + 'border-none', + 'rounded-md', + + // Transition + 'transition duration-200', + + // Color + { 'text-surface-700 dark:text-white/80 bg-surface-0 dark:bg-surface-900': !context.active }, + { 'text-primary-highlight-inverse bg-primary-highlight': context.active }, + + // State + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover': context.active + }, + + // Misc + 'cursor-pointer overflow-hidden' + ] + }) +}; diff --git a/admin_front/presets/aura/organizationchart/index.js b/admin_front/presets/aura/organizationchart/index.js new file mode 100644 index 0000000..47b78c9 --- /dev/null +++ b/admin_front/presets/aura/organizationchart/index.js @@ -0,0 +1,138 @@ +export default { + table: { + class: [ + // Spacing & Position + 'mx-auto my-0', + + // Table Style + 'border-spacing-0 border-separate' + ] + }, + cell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + node: ({ context }) => ({ + class: [ + 'relative inline-block', + + // Spacing + 'py-3 px-4', + + // Shape + 'border', + 'rounded-md', + 'border-surface-200 dark:border-surface-700', + // Color + { + 'text-surface-600 dark:text-white/80': !context?.selected, + 'bg-surface-0 dark:bg-surface-900': !context?.selected, + 'text-primary-highlight-inverse': context?.selected, + 'bg-primary-highlight': context?.selected + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-800': context?.selectable && !context?.selected, + 'hover:bg-primary-highlight-hover': context?.selectable && context?.selected + }, + + { 'cursor-pointer': context?.selectable } + ] + }), + linecell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + linedown: { + class: [ + // Spacing + 'mx-auto my-0', + + // Size + 'w-px h-[20px]', + + // Color + 'bg-surface-200 dark:bg-surface-700' + ] + }, + lineleft: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none border-r', + { 'border-t': context.lineTop }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + lineright: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none', + + // Color + { 'border-t border-surface-200 dark:border-surface-700': context.lineTop } + ] + }), + nodecell: { + class: 'text-center align-top py-0 px-3' + }, + nodetoggler: { + class: [ + // Position + 'absolute bottom-[-0.75rem] left-2/4 -ml-3', + 'z-20', + + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Shape + 'rounded-full', + 'border border-surface-200 dark:border-surface-700', + + // Color + 'bg-inherit text-inherit', + + // Focus + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + nodetogglericon: { + class: [ + // Position + 'static inline-block', + + // Size + 'w-4 h-4' + ] + } +}; diff --git a/admin_front/presets/aura/overlaypanel/index.js b/admin_front/presets/aura/overlaypanel/index.js new file mode 100644 index 0000000..f4208cf --- /dev/null +++ b/admin_front/presets/aura/overlaypanel/index.js @@ -0,0 +1,29 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md shadow-lg', + + // Position + 'absolute left-0 top-0 mt-2', + 'z-40 transform origin-center', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-[calc(var(--overlayArrowLeft,0)+1.25rem)] before:border-x-[10px] before:border-b-[10px] before:border-t-0 before:border-b-surface-200 dark:before:border-b-surface-700', + 'after:absolute after:w-0 after:-top-[0.54rem] after:h-0 after:border-transparent after:border-solid after:ml-[calc(var(--overlayArrowLeft,0)+1.3rem)] after:border-x-[9px] after:border-b-[8px] after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-900' + ] + }, + content: { + class: ['p-5 items-center flex', 'rounded-lg', 'border border-surface-200 dark:border-surface-700'] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/paginator/index.js b/admin_front/presets/aura/paginator/index.js new file mode 100644 index 0000000..1aa9713 --- /dev/null +++ b/admin_front/presets/aura/paginator/index.js @@ -0,0 +1,526 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center flex-wrap', + + // Spacing + 'px-4 py-2', + + // Shape + 'border-0 rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-500 dark:text-white/60' + ] + }, + firstpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + previouspagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + nextpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + lastpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + pagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'min-w-[2.5rem] h-10 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + rowperpagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-10', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-surface-0 dark:bg-surface-950', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + { 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: { + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 pl-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-10', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + jumptopageinput: { + root: { + class: 'inline-flex mx-2' + }, + input: { + root: { + class: [ + 'relative', + + //Font + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-950', + 'border border-surface-300 dark:border-surface-700', + + // Sizing and Spacing + 'w-[1%] max-w-[3rem]', + 'py-2 px-3 m-0', + + //Shape + 'rounded-md', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + 'focus:outline-none focus:shadow-none', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + } + } + }, + jumptopagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-10', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-surface-0 dark:bg-surface-950', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-surface-400 dark:hover:border-surface-600', + { 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400': !state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: { + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'py-2 pl-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-10', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'p-1 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0 px-3 py-2', + 'first:mt-0 mt-[2px]', + + // Shape + 'border-0 rounded', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-[rgba(255,255,255,0.03)]': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + start: { + class: 'mr-auto' + }, + end: { + class: 'ml-auto' + } +}; diff --git a/admin_front/presets/aura/panel/index.js b/admin_front/presets/aura/panel/index.js new file mode 100644 index 0000000..9bd92d2 --- /dev/null +++ b/admin_front/presets/aura/panel/index.js @@ -0,0 +1,97 @@ +export default { + root: { + class: [ + //Shape + 'rounded-md', + + //Colors + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + header: ({ props }) => ({ + class: [ + // Flex + 'flex items-center justify-between', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-transparent', + + //Shape + 'rounded-tl-md rounded-tr-md', + 'border-0', + + // Conditional Spacing + { 'p-[1.125rem]': !props.toggleable, 'py-3 px-[1.125rem]': props.toggleable } + ] + }), + title: { + class: 'leading-none font-semibold' + }, + toggler: { + class: [ + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sized + 'w-7 h-7', + 'm-0 p-0', + + //Shape + 'border-0 rounded-full', + + //Color + 'bg-transparent', + 'text-surface-600 dark:text-surface-0/80', + + // States + 'hover:text-surface-800 dark:hover:text-surface-0', + 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + + // Transitions + 'transition-all duration-200 ease-in-out', + + // Misc + 'overflow-hidden no-underline', + 'cursor-pointer' + ] + }, + togglerIcon: { + class: 'inline-block w-4 h-4' + }, + content: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'border-0 border-t-0 last:rounded-br-md last:rounded-bl-md', + + //Color + 'text-surface-700 dark:text-surface-0/80' + ] + }, + footer: { + class: [ + // Spacing + 'p-[1.125rem] pt-0', + + // Shape + 'border-0 border-t-0 rounded-br-lg rounded-bl-lg', + + //Color + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/aura/panelmenu/index.js b/admin_front/presets/aura/panelmenu/index.js new file mode 100644 index 0000000..ecb412e --- /dev/null +++ b/admin_front/presets/aura/panelmenu/index.js @@ -0,0 +1,126 @@ +export default { + panel: { + class: 'p-1 overflow-hidden mb-3 border border-surface-200 dark:border-surface-700 rounded-md' + }, + header: { + class: ['rounded-[4px]', 'outline-none'] + }, + headercontent: ({ context, instance }) => ({ + class: [ + // Shape + 'rounded-[4px]', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'hover:text-surface-900', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200' + ] + }), + headeraction: { + class: [ + 'relative', + + // Font + 'font-semibold', + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-2 px-3', + + // Misc + 'select-none cursor-pointer no-underline' + ] + }, + headerlabel: { + class: 'leading-none' + }, + headerIcon: { + class: 'mr-2' + }, + submenuicon: { + class: 'mr-2' + }, + menucontent: { + class: [ + // Spacing + 'pl-4', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + menu: { + class: ['outline-none', 'm-0 p-0 list-none'] + }, + menuitem: { + class: 'relative my-[2px]' + }, + content: { + class: [ + // Shape + 'border-none rounded-[4px]', + + // Color + 'text-surface-700 dark:text-white/80', + + // Transition + 'transition-shadow duration-200' + ] + }, + action: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-2 px-3', + + // Shape + 'rounded-[4px]', + + // Color + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)] hover:text-surface-700 dark:hover:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:text-white/80 dark:bg-surface-0/10': context.focused + }, + + // Misc + 'cursor-pointer no-underline', + 'select-none overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenu: { + class: 'p-0 pl-4 m-0 list-none' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/aura/password/index.js b/admin_front/presets/aura/password/index.js new file mode 100644 index 0000000..cfc3dda --- /dev/null +++ b/admin_front/presets/aura/password/index.js @@ -0,0 +1,117 @@ +export default { + root: ({ props }) => ({ + class: ['inline-flex relative', { '[&>input]:pr-10': props.toggleMask }] + }), + panel: { + class: [ + // Spacing + 'p-3', + + // Shape + 'border', + 'shadow-md rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-700' + ] + }, + meter: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-[10px]', + 'rounded-md', + + // Spacing + 'mb-3', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + meterlabel: ({ instance }) => ({ + class: [ + // Size + 'h-full', + + // Colors + { + 'bg-red-500 dark:bg-red-400/50': instance?.meter?.strength == 'weak', + 'bg-orange-500 dark:bg-orange-400/50': instance?.meter?.strength == 'medium', + 'bg-green-500 dark:bg-green-400/50': instance?.meter?.strength == 'strong' + }, + + // Transitions + 'transition-all duration-1000 ease-in-out' + ] + }), + showicon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + hideicon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'py-3 px-3.5': props.size == 'large', + 'py-1.5 px-2': props.size == 'small', + 'py-2 px-3': props.size == null + }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$parentInstance?.$name == 'FloatLabel' && parent.props.modelValue !== null && parent.props.modelValue?.length !== 0 }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/picklist/index.js b/admin_front/presets/aura/picklist/index.js new file mode 100644 index 0000000..cc9b48e --- /dev/null +++ b/admin_front/presets/aura/picklist/index.js @@ -0,0 +1,714 @@ +export default { + root: { + class: [ + // Flexbox + 'flex xl:flex-row flex-col' + ] + }, + sourcecontrols: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + sourcemoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcewrapper: { + class: [ + // Flexbox + 'grow shrink basis-2/4', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + }, + sourceheader: { + class: [ + 'font-semibold', + + // Shape + 'border-0 rounded-t-md', + + // Spacing + 'pt-3 px-4 pb-2', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + sourcelist: { + class: [ + // Spacing + 'list-none m-0', + 'p-1', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-2 px-3 m-0 my-[2px] first:mt-0 last:mb-0', + + // Shape + 'border-none', + 'rounded-md', + + // Transition + 'transition duration-200', + + // Color + { 'text-surface-700 dark:text-white/80 bg-surface-0 dark:bg-surface-900': !context.active }, + { 'text-primary-highlight-inverse bg-primary-highlight': context.active }, + + // State + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover': context.active + }, + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + buttons: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + movetotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetcontrols: { + class: [ + // Flexbox & Alignment + 'flex xl:flex-col justify-center gap-2', + + // Spacing + 'p-[1.125rem]' + ] + }, + targetmoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0', + 'bg-surface-100 dark:bg-surface-800', + 'border border-surface-100 dark:border-surface-800', + + // Spacing & Size + 'w-10', + 'm-0', + 'px-0 py-2', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-surface-200 dark:hover:bg-[rgba(255,255,255,0.03)] hover:border-surface-200 dark:hover:border-surface-700', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + //Font + 'leading-[normal]', + + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetwrapper: { + class: [ + // Flexbox + 'grow shrink basis-2/4', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + 'outline-none' + ] + }, + targetheader: { + class: [ + 'font-semibold', + + // Shape + 'border-0 rounded-t-md', + + // Spacing + 'pt-3 px-4 pb-2', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900' + ] + }, + targetlist: { + class: [ + // Spacing + 'list-none m-0', + 'p-1', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + transition: { + enterFromClass: '!transition-none', + enterActiveClass: '!transition-none', + leaveActiveClass: '!transition-none', + leaveToClass: '!transition-none' + } +}; diff --git a/admin_front/presets/aura/progressbar/index.js b/admin_front/presets/aura/progressbar/index.js new file mode 100644 index 0000000..7cc565a --- /dev/null +++ b/admin_front/presets/aura/progressbar/index.js @@ -0,0 +1,58 @@ +export default { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-5', + 'rounded-md', + + // Colors + 'bg-surface-100 dark:bg-surface-800' + ] + }, + value: ({ props }) => ({ + class: [ + // Flexbox & Overflow & Position + { 'absolute flex items-center justify-center overflow-hidden': props.mode !== 'indeterminate' }, + + // Colors + 'bg-primary', + + // Spacing & Sizing + 'm-0', + { 'h-full w-0': props.mode !== 'indeterminate' }, + + // Shape + 'border-0', + + // Transitions + { + 'transition-width duration-1000 ease-in-out': props.mode !== 'indeterminate', + 'progressbar-value-animate': props.mode == 'indeterminate' + }, + + // Before & After (indeterminate) + { + 'before:absolute before:top-0 before:left-0 before:bottom-0 before:bg-inherit ': props.mode == 'indeterminate', + 'after:absolute after:top-0 after:left-0 after:bottom-0 after:bg-inherit after:delay-1000': props.mode == 'indeterminate' + } + ] + }), + label: { + class: [ + //Font + 'text-xs font-semibold', + + // Flexbox + 'inline-flex', + + // Font and Text + 'text-white dark:text-surface-900', + 'leading-5' + ] + } +}; diff --git a/admin_front/presets/aura/progressspinner/index.js b/admin_front/presets/aura/progressspinner/index.js new file mode 100644 index 0000000..4e1faec --- /dev/null +++ b/admin_front/presets/aura/progressspinner/index.js @@ -0,0 +1,51 @@ +export default { + root: { + class: [ + // Position + 'relative', + 'mx-auto', + + // Sizing + 'w-28', + 'h-28', + + // Flexbox + 'inline-block', + + // Pseudo-Elements + 'before:block', + 'before:pt-full' + ] + }, + spinner: { + class: [ + // Position + 'absolute', + 'top-0', + 'bottom-0', + 'left-0', + 'right-0', + 'm-auto', + + // Sizing + 'w-full', + 'h-full', + + // Transformations + 'transform', + 'origin-center', + + // Animations + 'animate-spin' + ] + }, + circle: { + class: [ + // Colors + 'text-red-500', + + // Misc + 'progress-spinner-circle' + ] + } +}; diff --git a/admin_front/presets/aura/radiobutton/index.js b/admin_front/presets/aura/radiobutton/index.js new file mode 100644 index 0000000..9fa627c --- /dev/null +++ b/admin_front/presets/aura/radiobutton/index.js @@ -0,0 +1,103 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5 h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-5 h-5', + + // Shape + 'border', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + { + 'text-surface-700 dark:text-white/80': props.value !== props.modelValue && props.value !== undefined, + 'border-surface-300 dark:border-surface-700': props.value !== props.modelValue && props.value !== undefined && !props.invalid, + 'border-primary': props.value == props.modelValue && props.value !== undefined && !props.disabled + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-400': !props.disabled && !props.invalid && props.value !== props.modelValue, + 'peer-hover:border-primary-hover': !props.disabled && props.value == props.modelValue && props.value !== undefined, + 'peer-hover:[&>*:first-child]:bg-primary-600 dark:peer-hover:[&>*:first-child]:bg-primary-300': !props.disabled && props.value == props.modelValue && props.value !== undefined, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 [&>*:first-child]:bg-surface-600 dark:bg-surface-700 dark:[&>*:first-child]:bg-surface-400 border-surface-300 dark:border-surface-700 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-1 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-3 h-3', + + // Conditions + { + 'bg-surface-0 dark:bg-surface-900': props.value !== props.modelValue, + 'bg-primary': props.value == props.modelValue, + 'backface-hidden invisible scale-[0.1]': props.value !== props.modelValue, + 'transform visible translate-z-0 scale-[1,1]': props.value == props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) +}; diff --git a/admin_front/presets/aura/rating/index.js b/admin_front/presets/aura/rating/index.js new file mode 100644 index 0000000..348cc3d --- /dev/null +++ b/admin_front/presets/aura/rating/index.js @@ -0,0 +1,92 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'flex items-center', + 'gap-1', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + cancelitem: ({ context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + //State + { + 'outline-none ring-1 ring-primary-500/50 dark:ring-primary-500': context.focused + }, + + // Misc + 'cursor-pointer' + ] + }), + cancelicon: { + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-red-500 dark:text-red-400', + + // State + 'hover:text-red-600 dark:hover:text-red-300', + + // Transition + 'transition duration-200 ease-in' + ] + }, + item: ({ props, context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + // State + { + 'outline-none ring-1 ring-primary-500/50 dark:ring-primary-500': context.focused + }, + + // Misc + { + 'cursor-pointer': !props.readonly, + 'cursor-default': props.readonly + } + ] + }), + officon: ({ props }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-surface-700 dark:text-surface-0/80', + + // State + { 'hover:text-primary-500 dark:hover:text-primary-400': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }), + onicon: ({ props }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Color + 'text-primary', + + // State + { 'hover:text-primary-600 dark:hover:text-primary-300': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }) +}; diff --git a/admin_front/presets/aura/ripple/index.js b/admin_front/presets/aura/ripple/index.js new file mode 100644 index 0000000..429c249 --- /dev/null +++ b/admin_front/presets/aura/ripple/index.js @@ -0,0 +1,6 @@ +export default { + root: { + class: ['block absolute bg-surface-0/50 rounded-full pointer-events-none'], + style: 'transform: scale(0)' + } +}; diff --git a/admin_front/presets/aura/scrollpanel/index.js b/admin_front/presets/aura/scrollpanel/index.js new file mode 100644 index 0000000..d41e690 --- /dev/null +++ b/admin_front/presets/aura/scrollpanel/index.js @@ -0,0 +1,77 @@ +export default { + wrapper: { + class: [ + // Size & Position + 'h-full w-full', + + // Layering + 'z-[1]', + + // Spacing + 'overflow-hidden', + + // Misc + 'relative float-left' + ] + }, + content: { + class: [ + // Size & Spacing + 'h-[calc(100%+18px)] w-[calc(100%+18px)] pr-[18px] pb-[18px] pl-0 pt-0', + + // Overflow & Scrollbar + 'overflow-scroll scrollbar-none', + + // Box Model + 'box-border', + + // Position + 'relative', + + // Webkit Specific + '[&::-webkit-scrollbar]:hidden' + ] + }, + barX: { + class: [ + // Size & Position + 'h-[9px] bottom-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'invisible z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + }, + barY: { + class: [ + // Size & Position + 'w-[9px] top-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + } +}; diff --git a/admin_front/presets/aura/scrolltop/index.js b/admin_front/presets/aura/scrolltop/index.js new file mode 100644 index 0000000..7b29dbd --- /dev/null +++ b/admin_front/presets/aura/scrolltop/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex & Alignment + 'flex items-center justify-center', + + // Positioning + { + sticky: props.target === 'parent', + fixed: props.target === 'window' + }, + 'bottom-[20px] right-[20px]', + 'ml-auto', + + // Shape & Size + { + 'rounded-md h-8 w-8': props.target === 'parent', + 'h-12 w-12 rounded-full shadow-md': props.target === 'window' + }, + + // Color + + { + 'text-white dark:text-surface-900': props.target === 'parent', + 'text-surface-0': props.target === 'window', + 'bg-primary': props.target === 'parent', + 'bg-surface-600 dark:bg-surface-700 hover:bg-surface-700 dark:hover:bg-surface-600': props.target === 'window' + }, + + // States + { + 'hover:bg-primary-hover': props.target === 'parent', + 'hover:bg-surface-600 dark:hover:bg-surface-300': props.target === 'window' + } + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-150', + leaveActiveClass: 'transition-opacity duration-150', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/selectbutton/index.js b/admin_front/presets/aura/selectbutton/index.js new file mode 100644 index 0000000..04a522b --- /dev/null +++ b/admin_front/presets/aura/selectbutton/index.js @@ -0,0 +1,52 @@ +export default { + root: ({ props }) => ({ + class: [{ 'opacity-60 select-none pointer-events-none cursor-default': props.disabled }] + }), + button: ({ context, props }) => ({ + class: [ + 'relative', + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Spacing + 'px-4 py-2', + + // Shape + 'first:rounded-l-md first:rounded-tr-none first:rounded-br-none', + 'last:rounded-tl-none last:rounded-bl-none last:rounded-r-md', + + // Before + 'before:absolute before:left-1 before:top-1 before:w-[calc(100%-0.5rem)] before:h-[calc(100%-0.5rem)] before:rounded-[4px] before:z-0', + '[&>*]:z-10', + + // Color + 'bg-surface-100 dark:bg-surface-950', + { + 'text-surface-600 dark:text-white/60 before:bg-transparent': !context.active, + 'text-surface-800 dark:text-white/80 before:bg-surface-0 dark:before:bg-surface-800': context.active + }, + + // Invalid State + { 'border first:border-r-0 last:border-l-0 border-red-500 dark:border-red-400': props.invalid }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400 focus:z-10', + { + 'hover:text-surface-800 dark:hover:text-white/80': !context.active && !props.invalid + }, + { 'opacity-60 select-none pointer-events-none cursor-default': context.disabled }, + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + label: { + class: 'font-medium leading-[normal] text-center w-full z-10 relative' + } +}; diff --git a/admin_front/presets/aura/sidebar/index.js b/admin_front/presets/aura/sidebar/index.js new file mode 100644 index 0000000..3e3ee48 --- /dev/null +++ b/admin_front/presets/aura/sidebar/index.js @@ -0,0 +1,149 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex flex-col', + + // Position + 'relative', + { '!transition-none !transform-none !w-screen !h-screen !max-h-full !top-0 !left-0': props.position == 'full' }, + + // Size + { + 'h-full w-80': props.position == 'left' || props.position == 'right', + 'h-auto w-full': props.position == 'top' || props.position == 'bottom' + }, + + // Shape + 'border-0 dark:border', + 'shadow-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700', + + // Transitions + 'transition-transform', + 'duration-300', + + // Misc + 'pointer-events-auto' + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-[1.125rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-semibold text-xl'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-7 h-7', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: { + class: [ + // Spacing and Size + 'p-[1.125rem]', + 'pt-0', + 'h-full', + 'w-full', + + // Growth and Overflow + 'grow', + 'overflow-y-auto' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'translate-x-0 translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' + ? { + enterFromClass: '-translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: '-translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' + ? { + enterFromClass: 'translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: 'translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 mask-active', + enterActiveClass: 'transition-opacity duration-400 ease-in', + leaveActiveClass: 'transition-opacity duration-400 ease-in', + leaveToClass: 'opacity-0 mask-active' + }; + } +}; diff --git a/admin_front/presets/aura/skeleton/index.js b/admin_front/presets/aura/skeleton/index.js new file mode 100644 index 0000000..d459aaa --- /dev/null +++ b/admin_front/presets/aura/skeleton/index.js @@ -0,0 +1,16 @@ +export default { + root: ({ props }) => ({ + class: [ + 'overflow-hidden', + { + 'animate-pulse': props.animation !== 'none' + }, + + // Round + { 'rounded-full': props.shape === 'circle', 'rounded-md': props.shape !== 'circle' }, + + // Colors + 'bg-surface-200 dark:bg-surface-700' + ] + }) +}; diff --git a/admin_front/presets/aura/slider/index.js b/admin_front/presets/aura/slider/index.js new file mode 100644 index 0000000..0bce0ce --- /dev/null +++ b/admin_front/presets/aura/slider/index.js @@ -0,0 +1,138 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Size + { 'h-[3px]': props.orientation == 'horizontal', 'w-[3px]': props.orientation == 'vertical' }, + + // Shape + 'border-0', + 'rounded-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: ({ props }) => ({ + class: [ + // Position + 'block absolute', + { + 'top-0 left-0': props.orientation == 'horizontal', + 'bottom-0 left-0': props.orientation == 'vertical' + }, + + //Size + { + 'h-full': props.orientation == 'horizontal', + 'w-full': props.orientation == 'vertical' + }, + + // Shape + 'rounded-md', + + // Colors + 'bg-primary' + ] + }), + handle: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + starthandler: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + endhandler: ({ props }) => ({ + class: [ + 'flex items-center justify-center', + + // Size + 'h-[20px]', + 'w-[20px]', + { + 'top-[50%] -mt-[10px] -ml-[10px]': props.orientation == 'horizontal', + 'left-[50%] -mb-[10px] -ml-[10px]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + + 'before:block before:w-[16px] before:h-[16px] before:rounded-full before:bg-surface-0 dark:before:bg-surface-950 before:shadow-md', + + // Colors + 'bg-surface-200 dark:bg-surface-800', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1', + 'ring-primary-500 dark:ring-primary-400', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }) +}; diff --git a/admin_front/presets/aura/speeddial/index.js b/admin_front/presets/aura/speeddial/index.js new file mode 100644 index 0000000..84a782e --- /dev/null +++ b/admin_front/presets/aura/speeddial/index.js @@ -0,0 +1,302 @@ +export default { + root: { + class: 'absolute flex' + }, + button: { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + 'z-20', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + 'w-10 h-10 p-0 py-2', + + // Shapes + 'rounded-full', + 'shadow-md', + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': props.plain && !props.outlined && !props.text }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': props.plain && props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'bg-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'border border-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-surface-900 dark:text-white': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'bg-surface-100 dark:bg-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'border border-surface-100 dark:border-surface-700': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': props.text && props.severity === 'secondary' && !props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10': props.outlined && props.severity === 'secondary' && !props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'bg-green-500 dark:bg-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'border border-green-500 dark:border-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': props.text && props.severity === 'success' && !props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/10': props.outlined && props.severity === 'success' && !props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'border border-blue-500 dark:border-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': props.text && props.severity === 'info' && !props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ': props.outlined && props.severity === 'info' && !props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'border border-orange-500 dark:border-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': props.text && props.severity === 'warning' && !props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/10': props.outlined && props.severity === 'warning' && !props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'border border-purple-500 dark:border-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': props.text && props.severity === 'help' && !props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/10': props.outlined && props.severity === 'help' && !props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'bg-red-500 dark:bg-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'border border-red-500 dark:border-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': props.text && props.severity === 'danger' && !props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/10': props.outlined && props.severity === 'danger' && !props.plain }, + + // Contrast Button + { + 'text-white dark:text-surface-900': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'border border-surface-900 dark:border-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + + // Link + { 'focus:ring-primary': props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': props.plain && !props.outlined && !props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': props.plain && (props.text || props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-primary': props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/10': (props.text || props.outlined) && props.severity === null && !props.plain }, + + // Secondary + { 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': (props.text || props.outlined) && props.severity === 'secondary' && !props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': props.severity === 'success' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-green-500 dark:focus:ring-green-400': props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/10': (props.text || props.outlined) && props.severity === 'success' && !props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': props.severity === 'info' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/10': (props.text || props.outlined) && props.severity === 'info' && !props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': props.severity === 'warning' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/10': (props.text || props.outlined) && props.severity === 'warning' && !props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': props.severity === 'help' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-purple-500 dark:focus:ring-purple-400': props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/10': (props.text || props.outlined) && props.severity === 'help' && !props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': props.severity === 'danger' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-red-500 dark:focus:ring-red-400': props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/10': (props.text || props.outlined) && props.severity === 'danger' && !props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.text || props.outlined) && props.severity === 'contrast' && !props.plain }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + parent.state.d_visible ? 'rotate-45' : 'rotate-0', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-medium', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [{ 'ml-2 w-4 h-4 leading-none flex items-center justify-center': props.badge }] + }) + }, + menu: { + class: [ + // Spacing + 'm-0 p-0', + + // Layout & Flexbox + 'list-none flex items-center justify-center', + + // Transitions + 'transition delay-200', + + // Z-Index (Positioning) + 'z-20' + ] + }, + menuitem: ({ props, context }) => ({ + class: [ + 'transform transition-transform duration-200 ease-out transition-opacity duration-800', + + // Conditional Appearance + context.hidden ? 'opacity-0 scale-0' : 'opacity-100 scale-100', + + // Conditional Spacing + { + 'my-1 first:mb-2': props.direction == 'up' && props.type == 'linear', + 'my-1 first:mt-2': props.direction == 'down' && props.type == 'linear', + 'mx-1 first:mr-2': props.direction == 'left' && props.type == 'linear', + 'mx-1 first:ml-2': props.direction == 'right' && props.type == 'linear' + }, + + // Conditional Positioning + { absolute: props.type !== 'linear' } + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Size + 'w-10 h-10', + + // Shape + 'rounded-full relative overflow-hidden', + + // Appearance + 'bg-surface-100 dark:bg-surface-800 text-surface-700 dark:text-surface-0/80', + + // Hover Effects + 'hover:bg-surface-200 dark:hover:bg-surface-800 dark:hover:text-surface-0', + + // Transitions + 'transition duration-200' + ] + }, + mask: ({ state }) => ({ + class: [ + // Base Styles + 'absolute left-0 top-0 w-full h-full transition-opacity duration-250 ease-in-out bg-black/40 z-0', + + // Conditional Appearance + { + 'opacity-0 pointer-events-none': !state.d_visible, + 'opacity-100 transition-opacity duration-400 ease-in-out': state.d_visible + } + ] + }) +}; diff --git a/admin_front/presets/aura/splitbutton/index.js b/admin_front/presets/aura/splitbutton/index.js new file mode 100644 index 0000000..bef60ae --- /dev/null +++ b/admin_front/presets/aura/splitbutton/index.js @@ -0,0 +1,553 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + { 'shadow-lg': props.raised } + ] + }), + button: { + root: ({ parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-2': parent.props.size === null, + 'text-sm py-1.5 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'px-0 py-2': parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-r-none', + 'border-r-0', + { 'rounded-l-full': parent.props.rounded }, + { 'rounded-md': !parent.props.rounded, 'rounded-full': parent.props.rounded }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': parent.props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': parent.props.plain && parent.props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': parent.props.text && !parent.props.plain }, + + // Outlined Button + { 'bg-transparent border': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Primary Text Button + { 'text-primary': parent.props.text && parent.props.severity === null && !parent.props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': parent.props.outlined && parent.props.severity === null && !parent.props.plain }, + + // Secondary Button + { + 'text-surface-900 dark:text-white': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-100 dark:bg-surface-700': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-100 dark:border-surface-700': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10': parent.props.outlined && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-green-500 dark:bg-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-green-500 dark:border-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': parent.props.text && parent.props.severity === 'success' && !parent.props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/10': parent.props.outlined && parent.props.severity === 'success' && !parent.props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': parent.props.text && parent.props.severity === 'info' && !parent.props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ': parent.props.outlined && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': parent.props.text && parent.props.severity === 'warning' && !parent.props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/10': parent.props.outlined && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': parent.props.text && parent.props.severity === 'help' && !parent.props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/10': parent.props.outlined && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-red-500 dark:bg-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-red-500 dark:border-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': parent.props.text && parent.props.severity === 'danger' && !parent.props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/10': parent.props.outlined && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-900 dark:bg-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-900 dark:border-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': parent.props.text && parent.props.severity === 'contrast' && !parent.props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': parent.props.outlined && parent.props.severity === 'contrast' && !parent.props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + + // Link + { 'focus:ring-primary': parent.props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': parent.props.plain && (parent.props.text || parent.props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-primary': parent.props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === null && !parent.props.plain }, + + // Secondary + { 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-green-500 dark:focus:ring-green-400': parent.props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'success' && !parent.props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-blue-500 dark:focus:ring-blue-400': parent.props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-orange-500 dark:focus:ring-orange-400': parent.props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-purple-500 dark:focus:ring-purple-400': parent.props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-red-500 dark:focus:ring-red-400': parent.props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (parent.props.text || parent.props.outlined) && parent.props.severity === 'contrast' && !parent.props.plain }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + icon: { + class: [ + // Margins + 'mr-2' + ] + } + }, + menubutton: { + root: ({ parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-2': parent.props.size === null, + 'text-sm py-1.5 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'min-w-10 px-0 py-2': parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-l-none', + { 'rounded-l-full': parent.props.rounded }, + { 'rounded-md': !parent.props.rounded, 'rounded-full': parent.props.rounded }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': parent.props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': parent.props.plain && parent.props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': parent.props.text && !parent.props.plain }, + + // Outlined Button + { 'bg-transparent border': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Primary Text Button + { 'text-primary': parent.props.text && parent.props.severity === null && !parent.props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': parent.props.outlined && parent.props.severity === null && !parent.props.plain }, + + // Secondary Button + { + 'text-surface-900 dark:text-white': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-100 dark:bg-surface-700': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-100 dark:border-surface-700': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10': parent.props.outlined && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-green-500 dark:bg-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-green-500 dark:border-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': parent.props.text && parent.props.severity === 'success' && !parent.props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/10': parent.props.outlined && parent.props.severity === 'success' && !parent.props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': parent.props.text && parent.props.severity === 'info' && !parent.props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ': parent.props.outlined && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': parent.props.text && parent.props.severity === 'warning' && !parent.props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/10': parent.props.outlined && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': parent.props.text && parent.props.severity === 'help' && !parent.props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/10': parent.props.outlined && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-red-500 dark:bg-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-red-500 dark:border-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': parent.props.text && parent.props.severity === 'danger' && !parent.props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/10': parent.props.outlined && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-900 dark:bg-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-900 dark:border-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': parent.props.text && parent.props.severity === 'contrast' && !parent.props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': parent.props.outlined && parent.props.severity === 'contrast' && !parent.props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + + // Link + { 'focus:ring-primary': parent.props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': parent.props.plain && (parent.props.text || parent.props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-primary': parent.props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === null && !parent.props.plain }, + + // Secondary + { 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-green-500 dark:focus:ring-green-400': parent.props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'success' && !parent.props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-blue-500 dark:focus:ring-blue-400': parent.props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-orange-500 dark:focus:ring-orange-400': parent.props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-purple-500 dark:focus:ring-purple-400': parent.props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-red-500 dark:focus:ring-red-400': parent.props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/10': (parent.props.text || parent.props.outlined) && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (parent.props.text || parent.props.outlined) && parent.props.severity === 'contrast' && !parent.props.plain }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: ['hidden'] + } + }, + menu: { + root: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + + // Spacing + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-[normal]'] + }, + submenuheader: { + class: [ + // Font + 'font-bold', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-400 dark:text-surface-600' + ] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Sizing and Shape + 'min-w-[12.5rem]', + 'rounded-md', + + // Spacing + 'p-1', + + // Position + 'static sm:absolute', + 'z-10', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ], + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } + } + } +}; diff --git a/admin_front/presets/aura/splitter/index.js b/admin_front/presets/aura/splitter/index.js new file mode 100644 index 0000000..412d03f --- /dev/null +++ b/admin_front/presets/aura/splitter/index.js @@ -0,0 +1,68 @@ +export default { + root: ({ context }) => ({ + class: [ + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-surface-0/80', + + // Shape + 'rounded-md', + + // Borders (Conditional) + { 'border border-solid border-surface-200 dark:border-surface-700': !context.nested }, + + // Nested + { 'flex grow border-0': context.nested } + ] + }), + + gutter: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + 'shrink-0', + + // Colors + 'bg-surface-100', + 'dark:bg-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // Misc + { + 'cursor-col-resize': props.layout == 'horizontal', + 'cursor-row-resize': props.layout !== 'horizontal' + } + ] + }), + gutterhandler: ({ props }) => ({ + class: [ + 'z-20', + // Colors + 'bg-surface-100', + 'dark:bg-surface-700', + + // Shape + 'rounded-md', + + //States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + + // Transitions + 'transition-all', + 'duration-200', + + // Sizing (Conditional) + { + 'h-[1.70rem]': props.layout == 'horizontal', + 'w-[1.70rem] h-2': props.layout !== 'horizontal' + } + ] + }) +}; diff --git a/admin_front/presets/aura/splitterpanel/index.js b/admin_front/presets/aura/splitterpanel/index.js new file mode 100644 index 0000000..6a21cd3 --- /dev/null +++ b/admin_front/presets/aura/splitterpanel/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ context }) => ({ + class: ['grow', { flex: context.nested }] + }) +}; diff --git a/admin_front/presets/aura/stepper/index.js b/admin_front/presets/aura/stepper/index.js new file mode 100644 index 0000000..93026b0 --- /dev/null +++ b/admin_front/presets/aura/stepper/index.js @@ -0,0 +1,161 @@ +export default { + root: ({ props }) => ({ + class: ['flex-1', props.orientation === 'vertical' ? 'flex-col' : 'flex-row'] + }), + nav: { + class: [ + // Flexbox + 'flex', + 'justify-between', + 'items-center', + + // Spacing + 'm-0', + 'p-0', + + // Positioning + 'relative', + + // Lists + 'list-none', + + // Overflow + 'overflow-x-auto' + ] + }, + stepperpanel: { + panel: ({ context, parent }) => ({ + class: [context.active ? 'flex-1' : '', parent.props.orientation === 'vertical' ? 'flex flex-col flex-initial' : ''] + }), + header: ({ parent, context }) => ({ + class: [ + // Position + 'relative', + + // Flexbox + 'flex', + 'items-center', + context.last ? 'flex-initial' : 'flex-1', + parent.props.orientation === 'vertical' ? 'flex-initial' : '', + + // Spacing + 'p-2' + ] + }), + action: { + class: [ + // Borders + 'border-0', + 'border-none', + + // Flexbox + 'inline-flex', + 'items-center', + + // Text + 'text-decoration-none', + + // Transitions + 'transition', + 'transition-shadow', + 'duration-200', + + // Shape + 'rounded-md', + + // Backgrounds + 'bg-transparent', + + // Focus + 'outline-none' + ] + }, + number: ({ context }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + + //Colors + 'border-solid border-2 border-surface-200 dark:border-surface-700', + + // Colors (Conditional) + context.active ? 'text-primary' : 'text-surface-900 dark:text-surface-0', // Adjust colors as needed + + // Size and Shape + 'min-w-[2rem]', + 'h-[2rem]', + 'line-height-[2rem]', + 'rounded-full', + + // Text + 'text-lg', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + title: ({ context }) => ({ + class: [ + // Layout + 'block', + 'whitespace-nowrap', + 'overflow-hidden', + 'text-ellipsis', + 'max-w-full', + + // Spacing + 'ml-2', + + // Text + context.active ? 'text-primary' : 'text-surface-700 dark:text-surface-0/80', + 'font-medium', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + separator: ({ context, state, parent }) => ({ + class: [ + // Colors (Conditional for active step) + state.d_activeStep <= context.index ? 'bg-surface-200 dark:bg-surface-700' : 'bg-primary', + + // Conditional for Vertical Orientation + parent.props.orientation === 'vertical' ? ['flex-none', 'w-[2px]', 'h-auto', 'ml-[calc(1.29rem+2px)]'] : ['flex-1', 'w-full', 'h-[2px]', 'ml-4'], + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + transition: { + class: ['flex flex-1', 'bg-surface-0 dark:bg-surface-900', 'text-surface-900 dark:text-surface-0'], + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + }, + content: ({ parent }) => ({ + class: [parent.props.orientation === 'vertical' ? 'w-full pl-4' : ''] + }) + }, + panelcontainer: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-900 dark:text-surface-0', + + // Spacing + 'p-4' + ] + } +}; diff --git a/admin_front/presets/aura/steps/index.js b/admin_front/presets/aura/steps/index.js new file mode 100644 index 0000000..a279109 --- /dev/null +++ b/admin_front/presets/aura/steps/index.js @@ -0,0 +1,113 @@ +export default { + root: { + class: 'relative' + }, + menu: { + class: 'p-0 m-0 list-none flex' + }, + menuitem: { + class: [ + // Flexbox and Position + 'relative', + 'flex', + 'justify-center', + 'flex-1', + 'overflow-hidden', + + // Before + 'before:border-t-2', + 'before:border-surface-200', + 'before:dark:border-surface-700', + 'before:w-full', + '[&:first-child]:before:w-[calc(50%+1rem)]', + '[&:last-child]:before:w-1/2', + 'before:absolute', + 'before:top-1/2', + 'before:left-0', + 'before:transform', + 'before:mt-[calc(-1rem+1px)]', + '[&:first-child]:before:translate-x-[100%]' + ] + }, + action: ({ props }) => ({ + class: [ + // Flexbox + 'inline-flex items-center', + 'flex-col', + + // Transitions and Shape + 'transition-shadow', + 'rounded-md', + + // Colors + 'bg-surface-0', + 'dark:bg-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-500 dark:focus:ring-primary-400', + + // Misc + 'overflow-hidden', + { 'cursor-pointer': !props.readonly } + ] + }), + step: ({ context, props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Position + 'z-20', + + // Shape + 'rounded-full', + 'border-2', + + // Size + 'w-8', + 'h-8', + 'text-sm', + 'leading-[2rem]', + 'font-medium', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-100 dark:border-surface-700', + { + 'text-surface-400 dark:text-white/60': !context.active, + 'text-primary': context.active + }, + + // States + { + 'hover:border-surface-300 dark:hover:border-surface-500': !context.active && !props.readonly + }, + + // Transition + 'transition-colors duration-200 ease-in-out' + ] + }), + label: ({ context }) => ({ + class: [ + // Font + 'leading-[normal]', + 'font-medium', + + // Display + 'block', + + // Spacing + 'mt-2', + + // Colors + { 'text-surface-700 dark:text-white/70': !context.active, 'text-primary': context.active }, + + // Text and Overflow + 'whitespace-nowrap', + 'overflow-hidden', + 'overflow-ellipsis', + 'max-w-full' + ] + }) +}; diff --git a/admin_front/presets/aura/tabmenu/index.js b/admin_front/presets/aura/tabmenu/index.js new file mode 100644 index 0000000..43c15e6 --- /dev/null +++ b/admin_front/presets/aura/tabmenu/index.js @@ -0,0 +1,70 @@ +export default { + root: { + class: 'overflow-x-auto' + }, + menu: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + menuitem: { + class: 'mr-0' + }, + action: ({ context, state }) => ({ + class: [ + 'relative', + + // Font + 'font-semibold leading-none', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-[1.125rem]', + '-mb-px', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-900': state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-900': state.d_activeIndex === context.index, + 'border-primary': state.d_activeIndex === context.index, + 'text-primary': state.d_activeIndex === context.index + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + { + 'hover:text-surface-900 dark:hover:text-surface-0': state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + icon: { + class: 'mr-2' + } +}; diff --git a/admin_front/presets/aura/tabview/index.js b/admin_front/presets/aura/tabview/index.js new file mode 100644 index 0000000..d7a0b4c --- /dev/null +++ b/admin_front/presets/aura/tabview/index.js @@ -0,0 +1,155 @@ +export default { + navContainer: ({ props }) => ({ + class: [ + // Position + 'relative', + + // Misc + { 'overflow-hidden': props.scrollable } + ] + }), + navContent: ({ instance }) => ({ + class: [ + // Overflow and Scrolling + 'overflow-y-hidden overscroll-contain', + 'overscroll-auto', + 'scroll-smooth', + '[&::-webkit-scrollbar]:hidden' + ] + }), + previousButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 left-0', + 'z-20', + + // Size and Shape + 'h-full w-10', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80', + 'shadow-sm' + ] + }, + nextButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 right-0', + 'z-20', + + // Size and Shape + 'h-full w-10', + 'rounded-none', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-0 dark:bg-surface-900', + 'shadow-sm' + ] + }, + nav: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border-b border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + tabpanel: { + header: ({ props }) => ({ + class: [ + // Spacing + 'mr-0', + + // Misc + 'outline-none', + { + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': props?.disabled + } + ] + }), + headerAction: ({ parent, context }) => ({ + class: [ + 'relative', + + // Font + 'font-semibold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'py-4 px-[1.125rem]', + '-mb-px', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': parent.state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-900': parent.state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': parent.state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-900': parent.state.d_activeIndex === context.index, + 'border-primary': parent.state.d_activeIndex === context.index, + 'text-primary': parent.state.d_activeIndex === context.index + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus-visible:ring-1 ring-inset focus-visible:ring-primary-400 dark:focus-visible:ring-primary-300', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': parent.state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': parent.state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + headerTitle: { + class: [ + // Text + 'leading-none', + 'whitespace-nowrap' + ] + } + }, + panelcontainer: { + class: [ + // Spacing + 'p-[1.125rem] pt-[0.875rem]', + + // Shape + 'border-0 rounded-none', + 'border-br-md border-bl-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-900 dark:text-surface-0/80' + ] + } +}; diff --git a/admin_front/presets/aura/tag/index.js b/admin_front/presets/aura/tag/index.js new file mode 100644 index 0000000..79f659e --- /dev/null +++ b/admin_front/presets/aura/tag/index.js @@ -0,0 +1,37 @@ +export default { + root: ({ props }) => ({ + class: [ + //Font + 'text-xs font-bold', + + //Alignments + 'inline-flex items-center justify-center', + + //Spacing + 'px-[0.4rem] py-1', + + //Shape + { + 'rounded-md': !props.rounded, + 'rounded-full': props.rounded + }, + + //Colors + { + 'text-primary-highlight-inverse bg-primary-highlight': props.severity == null || props.severity == 'primary', + 'text-green-700 dark:text-green-300 bg-green-100 dark:bg-green-500/20': props.severity == 'success', + 'text-surface-700 dark:text-surface-300 bg-surface-100 dark:bg-surface-500/20': props.severity == 'secondary', + 'text-blue-700 dark:text-blue-300 bg-blue-100 dark:bg-blue-500/20': props.severity == 'info', + 'text-orange-700 dark:text-orange-300 bg-orange-100 dark:bg-orange-500/20': props.severity == 'warning', + 'text-red-700 dark:text-red-300 bg-red-100 dark:bg-red-500/20': props.severity == 'danger', + 'text-surface-0 dark:text-surface-900 bg-surface-900 dark:bg-surface-0': props.severity == 'contrast' + } + ] + }), + value: { + class: 'leading-normal' + }, + icon: { + class: 'mr-1 text-sm' + } +}; diff --git a/admin_front/presets/aura/terminal/index.js b/admin_front/presets/aura/terminal/index.js new file mode 100644 index 0000000..d714566 --- /dev/null +++ b/admin_front/presets/aura/terminal/index.js @@ -0,0 +1,60 @@ +export default { + root: { + class: [ + // Spacing + 'py-2 px-3', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-950 text-surface-700 dark:text-surface-0', + 'border border-surface-200 dark:border-surface-700', + + // Sizing & Overflow + 'h-72 overflow-auto' + ] + }, + container: { + class: [ + // Flexbox + 'flex items-center' + ] + }, + prompt: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + response: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + command: { + class: [ + // Color + 'text-surface-700 dark:text-surface-0' + ] + }, + commandtext: { + class: [ + // Flexbox + 'flex-1 shrink grow-0', + + // Shape + 'border-0', + + // Spacing + 'p-0', + + // Color + 'bg-transparent text-inherit', + + // Outline + 'outline-none' + ] + } +}; diff --git a/admin_front/presets/aura/textarea/index.js b/admin_front/presets/aura/textarea/index.js new file mode 100644 index 0000000..b12bdbe --- /dev/null +++ b/admin_front/presets/aura/textarea/index.js @@ -0,0 +1,41 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-none', + + // Spacing + 'm-0', + 'py-2 px-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !context.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !context.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/aura/tieredmenu/index.js b/admin_front/presets/aura/tieredmenu/index.js new file mode 100644 index 0000000..73af80c --- /dev/null +++ b/admin_front/presets/aura/tieredmenu/index.js @@ -0,0 +1,118 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'p-1', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative my-[2px] [&:first-child]:mt-0' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-[4px]', + + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-2', + 'px-3', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Spacing + 'p-1', + 'm-0', + 'list-none', + 'min-w-[12.5rem]', + + // Shape + 'shadow-none sm:shadow-md', + 'border border-surface-200 dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-900' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-[2px]' + } +}; diff --git a/admin_front/presets/aura/timeline/index.js b/admin_front/presets/aura/timeline/index.js new file mode 100644 index 0000000..29db67f --- /dev/null +++ b/admin_front/presets/aura/timeline/index.js @@ -0,0 +1,88 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex grow', + { + 'flex-col': props.layout === 'vertical', + 'flex-row flex-1': props.layout === 'horizontal' + } + ] + }), + event: ({ props, context }) => ({ + class: [ + 'flex relative min-h-[70px]', + { + 'flex-row-reverse': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1), + 'flex-col flex-1': props.layout === 'horizontal', + 'flex-col-reverse ': props.align === 'bottom' || (props.layout === 'horizontal' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + opposite: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-right': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-left': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + separator: ({ props }) => ({ + class: [ + 'flex items-center flex-initial', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + marker: { + class: [ + 'relative', + + // Display & Flexbox + 'inline-flex items-center justify-center', + + // Size + 'w-[1.125rem] h-[1.125rem]', + + // Appearance + 'rounded-full border-2 border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-950', + + // Before + 'before:rounded-full before:w-[0.375rem] before:h-[0.375rem] before:bg-primary', + // After + 'after:absolute after:rounded-full after:w-full after:h-full after:shadow-sm' + ] + }, + connector: ({ props }) => ({ + class: [ + 'grow bg-surface-300 dark:bg-surface-700', + { + 'w-[2px]': props.layout === 'vertical', + 'w-full h-[2px]': props.layout === 'horizontal' + } + ] + }), + content: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-left': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-right': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + }, + { + 'min-h-0': props.layout === 'vertical' && context.index === context.count - 1, + 'grow-0': props.layout === 'horizontal' && context.index === context.count - 1 + } + ] + }) +}; diff --git a/admin_front/presets/aura/toast/index.js b/admin_front/presets/aura/toast/index.js new file mode 100644 index 0000000..80edb8e --- /dev/null +++ b/admin_front/presets/aura/toast/index.js @@ -0,0 +1,117 @@ +export default { + root: ({ props }) => ({ + class: [ + //Size and Shape + 'w-96 rounded-md', + + // Positioning + { '-translate-x-2/4': props.position == 'top-center' || props.position == 'bottom-center' } + ] + }), + container: ({ props }) => ({ + class: [ + 'mb-4 rounded-md w-full', + 'border border-transparent', + 'backdrop-blur-[10px] shadow-md', + + // Colors + { + 'bg-blue-50/90 dark:bg-blue-500/20': props.message.severity == 'info', + 'bg-green-50/90 dark:bg-green-500/20': props.message.severity == 'success', + 'bg-surface-50 dark:bg-surface-800': props.message.severity == 'secondary', + 'bg-orange-50/90 dark:bg-orange-500/20': props.message.severity == 'warn', + 'bg-red-50/90 dark:bg-red-500/20': props.message.severity == 'error', + 'bg-surface-950 dark:bg-surface-0': props.message.severity == 'contrast' + }, + { + 'border-blue-200 dark:border-blue-500/20': props.message.severity == 'info', + 'border-green-200 dark:border-green-500/20': props.message.severity == 'success', + 'border-surface-300 dark:border-surface-500/20': props.message.severity == 'secondary', + 'border-orange-200 dark:border-orange-500/20': props.message.severity == 'warn', + 'border-red-200 dark:border-red-500/20': props.message.severity == 'error', + 'border-surface-950 dark:border-surface-0': props.message.severity == 'contrast' + }, + { + 'text-blue-700 dark:text-blue-300': props.message.severity == 'info', + 'text-green-700 dark:text-green-300': props.message.severity == 'success', + 'text-surface-700 dark:text-surface-300': props.message.severity == 'secondary', + 'text-orange-700 dark:text-orange-300': props.message.severity == 'warn', + 'text-red-700 dark:text-red-300': props.message.severity == 'error', + 'text-surface-0 dark:text-surface-950': props.message.severity == 'contrast' + } + ] + }), + content: ({ props }) => ({ + class: [ + 'flex p-3', + { + 'items-start': props.message.summary, + 'items-center': !props.message.summary + } + ] + }), + icon: ({ props }) => ({ + class: [ + // Sizing and Spacing + props.message.severity === 'contrast' || props.message.severity === 'secondary' ? 'w-0' : 'w-[1.125rem] h-[1.125rem] mr-2', + 'text-lg leading-[normal]' + ] + }), + text: { + class: [ + // Font and Text + 'text-base leading-[normal]', + 'ml-2', + 'flex-1' + ] + }, + summary: { + class: 'font-medium block' + }, + detail: ({ props }) => ({ + class: ['block', 'text-sm', props.message.severity === 'contrast' ? 'text-surface-0 dark:text-surface-950' : 'text-surface-700 dark:text-surface-0', { 'mt-2': props.message.summary }] + }), + closebutton: ({ props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-7 h-7', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/30 dark:hover:bg-[rgba(255,255,255,0.03)]', + 'focus:outline-none focus:outline-offset-0 focus:ring-1', + { + 'focus:ring-blue-500 dark:focus:ring-blue-400': props.severity == 'info', + 'focus:ring-green-500 dark:focus:ring-green-400': props.severity == 'success', + 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity == 'secondary', + 'focus:ring-orange-500 dark:focus:ring-orange-400': props.severity == 'warn', + 'focus:ring-red-500 dark:focus:ring-red-4000': props.severity == 'error', + 'focus:ring-surface-0 dark:focus:ring-surface-950': props.severity == 'contrast' + }, + + // Misc + 'overflow-hidden' + ] + }), + transition: { + enterFromClass: 'opacity-0 translate-y-2/4', + enterActiveClass: 'transition-[transform,opacity] duration-300', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: '!transition-[max-height_.45s_cubic-bezier(0,1,0,1),opacity_.3s,margin-bottom_.3s] overflow-hidden', + leaveToClass: 'max-h-0 opacity-0 mb-0' + } +}; diff --git a/admin_front/presets/aura/togglebutton/index.js b/admin_front/presets/aura/togglebutton/index.js new file mode 100644 index 0000000..83c72c1 --- /dev/null +++ b/admin_front/presets/aura/togglebutton/index.js @@ -0,0 +1,90 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex flex-1 text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-2 leading-none', + + // Shapes + 'rounded-md', + 'border', + { 'border-transparent': !props.invalid }, + + // Colors + 'bg-surface-100 dark:bg-surface-950', + { + 'text-surface-600 dark:text-white/60 before:bg-transparent': !props.modelValue, + 'text-surface-800 dark:text-white/80 before:bg-surface-0 dark:before:bg-surface-800': props.modelValue + }, + + // Before + 'before:absolute before:left-1 before:top-1 before:w-[calc(100%-0.5rem)] before:h-[calc(100%-0.5rem)] before:rounded-[4px] before:z-0', + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:text-surface-800 dark:peer-hover:text-white/80': !props.disabled && !props.modelValue, + 'peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled + }, + + // Transitions + 'transition-all duration-200', + + // Misc + { 'cursor-pointer': !props.disabled, 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + label: { + class: 'font-medium leading-[normal] text-center w-full z-10 relative' + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: ['relative z-10', 'mr-2'] + } +}; diff --git a/admin_front/presets/aura/toolbar/index.js b/admin_front/presets/aura/toolbar/index.js new file mode 100644 index 0000000..6a825fe --- /dev/null +++ b/admin_front/presets/aura/toolbar/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-between flex-wrap', + 'gap-2', + + // Spacing + 'p-3', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700' + ] + }, + start: { + class: 'flex items-center' + }, + center: { + class: 'flex items-center' + }, + end: { + class: 'flex items-center' + } +}; diff --git a/admin_front/presets/aura/tooltip/index.js b/admin_front/presets/aura/tooltip/index.js new file mode 100644 index 0000000..212f767 --- /dev/null +++ b/admin_front/presets/aura/tooltip/index.js @@ -0,0 +1,45 @@ +export default { + root: ({ context }) => ({ + class: [ + // Position and Shadows + 'absolute', + 'shadow-md', + 'p-fadein', + // Spacing + { + 'py-0 px-1': context?.right || context?.left || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'py-1 px-0': context?.top || context?.bottom + } + ] + }), + arrow: ({ context }) => ({ + class: [ + // Position + + 'absolute', + + // Size + 'w-0', + 'h-0', + + // Shape + 'border-transparent', + 'border-solid', + { + 'border-y-[10px] border-r-[10px] border-l-0 border-r-surface-700': context?.right || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'border-y-[10px] border-l-[10px] border-r-0 border-l-surface-700': context?.left, + 'border-x-[10px] border-t-[10px] border-b-0 border-t-surface-700': context?.top, + 'border-x-[10px] border-b-[10px] border-t-0 border-b-surface-700': context?.bottom + }, + + // Spacing + { + '-mt-[10px] top-1/2': context?.right || context?.left || (!context?.right && !context?.left && !context?.top && !context?.bottom), + '-ml-[10px] left-1/2': context?.top || context?.bottom + } + ] + }), + text: { + class: ['p-3', 'bg-surface-700', 'text-white', 'leading-none', 'rounded-md', 'whitespace-pre-line', 'break-words'] + } +}; diff --git a/admin_front/presets/aura/tree/index.js b/admin_front/presets/aura/tree/index.js new file mode 100644 index 0000000..3283916 --- /dev/null +++ b/admin_front/presets/aura/tree/index.js @@ -0,0 +1,268 @@ +export default { + root: { + class: [ + // Space + 'p-4', + + // Shape + 'rounded-md', + 'border-none', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: ['p-0 my-[2px] mx-0 first:mt-0', 'rounded-md', 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10'] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'py-1 px-2', + + // Colors + context.selected ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-transparent text-surface-600 dark:text-white/70', + + // States + { 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.selectionMode == 'single' || props.selectionMode == 'multiple') && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + { 'cursor-pointer select-none': props.selectionMode == 'single' || props.selectionMode == 'multiple' } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-7 h-7', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-600 dark:text-white/70': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + { + 'text-white dark:text-surface-950': !instance.partialChecked, + 'text-surface-700 dark:text-surface-0/80': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-4 [&:not(ul)]:pl-0 [&:not(ul)]:my-[2px]'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: ({ props }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0', + 'py-2 px-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + 'border', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !props.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }), + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin'] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3 z-20', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } +}; diff --git a/admin_front/presets/aura/treeselect/index.js b/admin_front/presets/aura/treeselect/index.js new file mode 100644 index 0000000..35e02bc --- /dev/null +++ b/admin_front/presets/aura/treeselect/index.js @@ -0,0 +1,367 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + 'border', + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-surface-400 dark:hover:border-surface-600': !props.invalid }, + { 'outline-none outline-offset-0 ring-1 ring-primary-500 dark:ring-primary-400 z-10': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + labelContainer: { + class: ['overflow-hidden flex flex-auto cursor-pointer'] + }, + label: { + class: [ + 'block leading-[normal]', + + // Space + 'py-2 px-3', + + // Color + 'text-surface-800 dark:text-white/80', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-r-md' + ] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border border-surface-300 dark:border-surface-700', + 'rounded-md', + 'shadow-md' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + tree: { + root: { + class: [ + // Space + 'p-1', + + // Shape + 'rounded-md', + 'border-none', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: ['p-0 my-[2px] mx-0 first:mt-0', 'rounded-md', 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-inset focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10'] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'py-1 px-2', + + // Colors + context.selected ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-transparent text-surface-600 dark:text-white/70', + + // States + { 'hover:bg-surface-50 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.selectionMode == 'single' || props.selectionMode == 'multiple') && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + { 'cursor-pointer select-none': props.selectionMode == 'single' || props.selectionMode == 'multiple' } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-7 h-7', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-600 dark:text-white/70': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + { + 'text-white dark:text-surface-950': !instance.partialChecked, + 'text-surface-700 dark:text-surface-0/80': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-4 [&:not(ul)]:pl-0 [&:not(ul)]:my-[2px]'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: ({ props }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Spacing + 'm-0', + 'py-2 px-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + 'border', + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + { 'bg-surface-0 dark:bg-surface-950': !props.disabled }, + { 'border-surface-300 dark:border-surface-700': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-surface-400 dark:hover:border-surface-600': !props.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400 focus:z-10': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }), + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin'] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3 z-20', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/aura/treetable/index.js b/admin_front/presets/aura/treetable/index.js new file mode 100644 index 0000000..b961474 --- /dev/null +++ b/admin_front/presets/aura/treetable/index.js @@ -0,0 +1,442 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + { + 'flex flex-col h-full': props.scrollHeight === 'flex' + } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + // Overflow + { + 'relative overflow-auto': props.scrollable, + 'overflow-x-auto': props.resizableColumns + } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-semibold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + footer: { + class: [ + 'font-semibold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + table: { + class: [ + // Table & Width + 'border-collapse table-fixed w-full ' + ] + }, + thead: ({ props }) => ({ + class: [ + // Position & Z-index + { + 'top-0 z-40 sticky': props.scrollable + } + ] + }), + tbody: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + tfoot: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + headerrow: ({ props }) => ({ + class: [ + // Flexbox & Width + { + 'flex flex-nowrap w-full': props.scrollable + } + ] + }), + row: ({ context, props }) => ({ + class: [ + // Flex + { 'flex flex-nowrap w-full': context.scrollable }, + + // Color + 'text-surface-700 dark:text-white/80', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-900': !context.selected }, + + // Hover & Flexbox + { + 'hover:bg-surface-100 dark:bg-surface-800/50': context.selectable && !context.selected + }, + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 ring-inset dark:focus:ring-primary-400', + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover } + ] + }), + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-0 text-surface-700 dark:text-white/80 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-80/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-semibold', + 'leading-[normal]', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-0 text-surface-700 dark:text-white/80 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-80/50': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + bodycell: ({ context }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Position + { + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + 'border-0 border-b border-solid', + 'border-surface-200 dark:border-surface-700', + { + 'border-x-0 border-l-0': !context.showGridlines + }, + { 'first:border-l border-r border-b': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'py-[0.375rem] px-2' : context?.size === 'large' ? 'py-[0.9375rem] px-5' : 'py-3 px-4', + + // Misc + { + 'cursor-pointer': context.selectable, + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen, + 'border-x-0 border-l-0': !context.showGridlines + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left align-middle', + + // Spacing + 'm-0 mr-2 p-0', + + // Size + 'w-7 h-7', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring-1 focus:ring-primary-500 dark:focus:ring-primary-400', + 'hover:text-surface-700 hover:bg-surface-50 dark:hover:bg-surface-800/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + sorticon: ({ context }) => ({ + class: ['ml-2 inline-block', context.sorted ? 'fill-primary-highlight-inverse' : 'fill-surface-700 dark:fill-white/70'] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'inline-flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-highlight-inverse bg-primary-highlight' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-middle', + + // Size + 'w-5', + 'h-5', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-950': !context.checked && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-1 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + { + 'text-white dark:text-surface-950': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/admin_front/presets/aura/tristatecheckbox/index.js b/admin_front/presets/aura/tristatecheckbox/index.js new file mode 100644 index 0000000..a4a8b94 --- /dev/null +++ b/admin_front/presets/aura/tristatecheckbox/index.js @@ -0,0 +1,115 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-5', + 'h-5', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-5', + 'h-5', + + // Shape + 'rounded', + 'border', + + // Colors + { + 'border-surface-300 dark:border-surface-700': !context.checked && !props.invalid, + 'bg-surface-0 dark:bg-surface-900': !context.active && !props.invalid && !props.disabled, + 'border-primary bg-primary': context.active + }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-surface-400 dark:peer-hover:border-surface-600': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:z-10 peer-focus-visible:outline-none peer-focus-visible:outline-offset-0 peer-focus-visible:ring-1 peer-focus-visible:ring-primary-500 dark:peer-focus-visible:ring-primary-400': !props.disabled, + 'bg-surface-200 dark:bg-surface-700 select-none pointer-events-none cursor-default': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded', + 'outline-none', + 'border border-surface-300 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + checkicon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + }, + uncheckicon: { + class: [ + // Size + 'w-[0.875rem]', + 'h-[0.875rem]', + + // Colors + 'text-white dark:text-surface-950', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +}; diff --git a/admin_front/presets/lara/accordion/index.js b/admin_front/presets/lara/accordion/index.js new file mode 100644 index 0000000..386d598 --- /dev/null +++ b/admin_front/presets/lara/accordion/index.js @@ -0,0 +1,78 @@ +export default { + accordiontab: { + root: { + class: 'mb-1' + }, + header: ({ props }) => ({ + class: [ + // State + { 'select-none pointer-events-none cursor-default opacity-60': props?.disabled } + ] + }), + headerAction: ({ context }) => ({ + class: [ + //Font + 'font-bold', + 'leading-none', + + // Alignments + 'flex items-center', + 'relative', + + // Sizing + 'p-5', + + // Shape + 'rounded-t-md', + { 'rounded-br-md rounded-bl-md': !context.active, 'rounded-br-0 rounded-bl-0': context.active }, + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/40', + 'hover:text-surface-900', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 ring-inset dark:focus-visible:ring-primary-300/50', // Focus + + // Misc + 'cursor-pointer no-underline select-none' + ] + }), + headerIcon: { + class: 'inline-block mr-2' + }, + headerTitle: { + class: 'leading-none' + }, + content: { + class: [ + // Spacing + 'p-5', + + //Shape + 'rounded-tl-none rounded-tr-none rounded-br-lg rounded-bl-lg', + 'border-t-0', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } + } +}; diff --git a/admin_front/presets/lara/autocomplete/index.js b/admin_front/presets/lara/autocomplete/index.js new file mode 100644 index 0000000..229ef09 --- /dev/null +++ b/admin_front/presets/lara/autocomplete/index.js @@ -0,0 +1,261 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex + 'inline-flex', + + // Size + { 'w-full': props.multiple }, + + // Color + 'text-surface-900 dark:text-surface-0', + + //States + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + container: ({ props, state }) => ({ + class: [ + // Font + 'text-base leading-[normal]', + + // Flex + 'flex items-center flex-wrap', + 'gap-2', + + // Spacing + 'm-0 list-none', + 'px-3 py-1.5', + + // Size + 'w-full', + 'min-h-[2.877rem]', + + // Shape + 'appearance-none rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'hover:border-primary': !props.invalid }, + 'focus:outline-none focus:outline-offset-0', + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.hovered }, + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-text overflow-hidden' + ] + }), + inputtoken: { + class: ['py-1.5 px-0', 'inline-flex flex-auto'] + }, + input: ({ props, parent }) => ({ + class: [ + // Font + 'text-base leading-[normal]', + + // Shape + 'appearance-none rounded-md', + { 'rounded-tr-none rounded-br-none': props.dropdown }, + { 'outline-none shadow-none rounded-none': props.multiple }, + + // Size + { 'w-full': props.multiple }, + + // Spacing + 'm-0', + { 'p-3': !props.multiple, 'p-0': props.multiple }, + + // Colors + 'text-surface-700 dark:text-white/80', + 'border', + { + 'bg-surface-0 dark:bg-surface-900': !props.multiple, + ' border-surface-300 dark:border-surface-700': !props.multiple && !props.invalid, + 'border-0 bg-transparent': props.multiple + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !props.multiple }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== '' }, + + // Transition + 'transition-colors duration-200' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'bg-surface-200 dark:bg-surface-700', + 'text-surface-700 dark:text-white/70', + + // Misc + 'cursor-default' + ] + }, + label: { + class: 'leading-[normal]' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-4 py-3 leading-[normal]', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[0.5rem] -mt-2 animate-spin'] + }, + panel: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + + // Shape + 'border-0', + 'rounded-md', + 'shadow-md', + + // Size + 'max-h-[200px] overflow-auto' + ] + }, + list: { + class: 'py-3 px-0 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'font-normal text-base leading-[normal]', + + // Spacing + 'm-0 px-5 py-3', + + // Shape + 'border-0 rounded-none', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition-shadow duration-200', + + // Misc + 'cursor-pointer overflow-hidden whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + 'font-bold', + + // Spacing + 'm-0 p-3', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-800 dark:text-white/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-[normal]', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/avatar/index.js b/admin_front/presets/lara/avatar/index.js new file mode 100644 index 0000000..4f32037 --- /dev/null +++ b/admin_front/presets/lara/avatar/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Font + { + 'text-xl': props.size == 'large', + 'text-2xl': props.size == 'xlarge' + }, + + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sizes + { + 'h-8 w-8': props.size == null || props.size == 'normal', + 'w-12 h-12': props.size == 'large', + 'w-16 h-16': props.size == 'xlarge' + }, + { '-ml-4': parent.instance.$style?.name == 'avatargroup' }, + + // Shapes + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + }, + { 'border-2': parent.instance.$style?.name == 'avatargroup' }, + + // Colors + 'bg-surface-300 dark:bg-surface-700', + { 'border-white dark:border-surface-800': parent.instance.$style?.name == 'avatargroup' } + ] + }), + image: ({ props }) => ({ + class: [ + 'h-full w-full', + { + 'rounded-lg': props.shape == 'square', + 'rounded-full': props.shape == 'circle' + } + ] + }) +}; diff --git a/admin_front/presets/lara/avatargroup/index.js b/admin_front/presets/lara/avatargroup/index.js new file mode 100644 index 0000000..516393d --- /dev/null +++ b/admin_front/presets/lara/avatargroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: 'flex items-center' + } +}; diff --git a/admin_front/presets/lara/badge/index.js b/admin_front/presets/lara/badge/index.js new file mode 100644 index 0000000..3c4a713 --- /dev/null +++ b/admin_front/presets/lara/badge/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ props }) => ({ + class: [ + // Font + 'font-bold', + + { + 'text-xs leading-[1.5rem]': props.size == null, + 'text-lg leading-[2.25rem]': props.size == 'large', + 'text-2xl leading-[3rem]': props.size == 'xlarge' + }, + + // Alignment + 'text-center inline-block', + + // Size + 'p-0 px-1', + { + 'min-w-[1.5rem] h-[1.5rem]': props.size == null, + 'min-w-[2.25rem] h-[2.25rem]': props.size == 'large', + 'min-w-[3rem] h-[3rem]': props.size == 'xlarge' + }, + + // Shape + { + 'rounded-full': props.value.length == 1, + 'rounded-[0.71rem]': props.value.length !== 1 + }, + + // Color + 'text-primary-inverse', + { + 'bg-primary': props.severity == null || props.severity == 'primary', + 'bg-surface-500 dark:bg-surface-400': props.severity == 'secondary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-purple-500 dark:bg-purple-400': props.severity == 'help', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }) +}; diff --git a/admin_front/presets/lara/badgedirective/index.js b/admin_front/presets/lara/badgedirective/index.js new file mode 100644 index 0000000..19b6e2e --- /dev/null +++ b/admin_front/presets/lara/badgedirective/index.js @@ -0,0 +1,43 @@ +export default { + root: ({ context }) => ({ + class: [ + // Font + 'font-bold', + 'text-xs leading-[normal]', + + // Alignment + 'flex items-center justify-center', + 'text-center', + + // Position + 'absolute top-0 right-0 transform translate-x-1/2 -translate-y-1/2 origin-top-right', + + // Size + 'm-0', + { + 'p-0': context.nogutter || context.dot, + 'px-2': !context.nogutter && !context.dot, + 'min-w-[0.5rem] w-2 h-2': context.dot, + 'min-w-[1.5rem] h-6': !context.dot + }, + + // Shape + { + 'rounded-full': context.nogutter || context.dot, + 'rounded-[10px]': !context.nogutter && !context.dot + }, + + // Color + 'text-primary-inverse', + { + 'bg-primary': !context.info && !context.success && !context.warning && !context.danger && !context.help && !context.secondary, + 'bg-surface-500 dark:bg-surface-400': context.secondary, + 'bg-green-500 dark:bg-green-400': context.success, + 'bg-blue-500 dark:bg-blue-400': context.info, + 'bg-orange-500 dark:bg-orange-400': context.warning, + 'bg-purple-500 dark:bg-purple-400': context.help, + 'bg-red-500 dark:bg-red-400': context.danger + } + ] + }) +}; diff --git a/admin_front/presets/lara/blockui/index.js b/admin_front/presets/lara/blockui/index.js new file mode 100644 index 0000000..649e2c4 --- /dev/null +++ b/admin_front/presets/lara/blockui/index.js @@ -0,0 +1,8 @@ +export default { + root: { + class: 'relative' + }, + mask: { + class: 'bg-black/40' + } +}; diff --git a/admin_front/presets/lara/breadcrumb/index.js b/admin_front/presets/lara/breadcrumb/index.js new file mode 100644 index 0000000..ff51416 --- /dev/null +++ b/admin_front/presets/lara/breadcrumb/index.js @@ -0,0 +1,64 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Spacing + 'p-4', + + // Color + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'overflow-x-auto' + ] + }, + menu: { + class: [ + // Flex & Alignment + 'flex items-center flex-nowrap', + + // Spacing + 'm-0 p-0 list-none leading-none' + ] + }, + action: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Color + 'text-surface-600 dark:text-white/70', + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow duration-200', + + // Misc + 'text-decoration-none' + ] + }, + icon: { + class: 'text-surface-600 dark:text-white/70' + }, + separator: { + class: [ + // Flex & Alignment + 'flex items-center', + + // Spacing + ' mx-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + } +}; diff --git a/admin_front/presets/lara/button/index.js b/admin_front/presets/lara/button/index.js new file mode 100644 index 0000000..9fdc03e --- /dev/null +++ b/admin_front/presets/lara/button/index.js @@ -0,0 +1,234 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': props.size === null, + 'text-sm py-2 px-3': props.size === 'small', + 'text-xl py-3 px-4': props.size === 'large' + }, + { + 'w-12 p-0 py-3': props.label == null && props.icon !== null + }, + + // Shapes + { 'shadow-lg': props.raised }, + { 'rounded-md': !props.rounded, 'rounded-full': props.rounded }, + { 'rounded-none first:rounded-l-md last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': props.plain && !props.outlined && !props.text }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': props.plain && props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'bg-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'border border-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-white dark:text-surface-900': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'bg-surface-500 dark:bg-surface-400': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'border border-surface-500 dark:border-surface-400': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': props.text && props.severity === 'secondary' && !props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/20': props.outlined && props.severity === 'secondary' && !props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'bg-green-500 dark:bg-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'border border-green-500 dark:border-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': props.text && props.severity === 'success' && !props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/20': props.outlined && props.severity === 'success' && !props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'border border-blue-500 dark:border-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': props.text && props.severity === 'info' && !props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': props.outlined && props.severity === 'info' && !props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'border border-orange-500 dark:border-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': props.text && props.severity === 'warning' && !props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': props.outlined && props.severity === 'warning' && !props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'border border-purple-500 dark:border-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': props.text && props.severity === 'help' && !props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': props.outlined && props.severity === 'help' && !props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'bg-red-500 dark:bg-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'border border-red-500 dark:border-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': props.text && props.severity === 'danger' && !props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/20': props.outlined && props.severity === 'danger' && !props.plain }, + // Contrast Button + { + 'text-white dark:text-surface-900': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'border border-surface-900 dark:border-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { 'focus:ring-primary': props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': props.plain && !props.outlined && !props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': props.plain && (props.text || props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-primary': props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/20': (props.text || props.outlined) && props.severity === null && !props.plain }, + + // Secondary + { 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': (props.text || props.outlined) && props.severity === 'secondary' && !props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': props.severity === 'success' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-green-400/50 dark:focus:ring-green-300/50': props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/20': (props.text || props.outlined) && props.severity === 'success' && !props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': props.severity === 'info' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/20': (props.text || props.outlined) && props.severity === 'info' && !props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': props.severity === 'warning' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/20': (props.text || props.outlined) && props.severity === 'warning' && !props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': props.severity === 'help' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/20': (props.text || props.outlined) && props.severity === 'help' && !props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': props.severity === 'danger' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-red-400/50 dark:focus:ring-red-300/50': props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/20': (props.text || props.outlined) && props.severity === 'danger' && !props.plain }, + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.text || props.outlined) && props.severity === 'contrast' && !props.plain }, + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-bold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [{ 'ml-2 w-4 h-4 leading-none flex items-center justify-center': props.badge }] + }) +}; diff --git a/admin_front/presets/lara/calendar/index.js b/admin_front/presets/lara/calendar/index.js new file mode 100644 index 0000000..ad0b156 --- /dev/null +++ b/admin_front/presets/lara/calendar/index.js @@ -0,0 +1,646 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'max-w-full', + 'relative', + + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: ({ props, parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'leading-none', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Spacing + 'm-0 p-3', + + // Shape + 'appearance-none', + { 'rounded-md': !props.showIcon || props.iconDisplay == 'input' }, + { 'rounded-l-md flex-1 pr-9': props.showIcon && props.iconDisplay !== 'input' }, + { 'rounded-md flex-1 pr-9': props.showIcon && props.iconDisplay === 'input' }, + + // Transitions + 'transition-colors', + 'duration-200', + + // States + { 'hover:border-primary-hover': !props.invalid }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null } + ] + }), + inputicon: { + class: ['absolute top-[50%] -mt-2', 'text-surface-600 dark:text-surface-200', 'right-[.75rem]'] + }, + dropdownbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom', + + // Shape + 'rounded-r-md', + + // Size + 'px-4 py-3 leading-none', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + panel: ({ props }) => ({ + class: [ + // Display & Position + { + absolute: !props.inline, + 'inline-block': props.inline + }, + + // Size + { 'w-auto p-2 ': !props.inline }, + { 'min-w-[80vw] w-auto p-2 ': props.touchUI }, + { 'p-2 min-w-full': props.inline }, + + // Shape + 'border rounded-lg', + { + 'shadow-md': !props.inline + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + //misc + { 'overflow-x-auto': props.inline } + ] + }), + datepickerMask: { + class: ['fixed top-0 left-0 w-full h-full', 'flex items-center justify-center', 'bg-black bg-opacity-90'] + }, + header: { + class: [ + //Font + 'font-semibold', + + // Flexbox and Alignment + 'flex items-center justify-between', + + // Spacing + 'p-2', + 'm-0', + + // Shape + 'border-b', + 'rounded-t-md', + + // Colors + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + previousbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + title: { + class: [ + // Text + 'leading-8', + 'mx-auto my-0' + ] + }, + monthTitle: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-2', + 'm-0 mr-2', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + yearTitle: { + class: [ + // Font + 'text-base leading-[normal]', + 'font-semibold', + + // Colors + 'text-surface-700 dark:text-white/80', + + // Transitions + 'transition duration-200', + + // Spacing + 'p-2', + 'm-0', + + // States + 'hover:text-primary-500 dark:hover:text-primary-400', + + // Misc + 'cursor-pointer' + ] + }, + nextbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + table: { + class: [ + // Font + 'text-base leading-none', + // Size & Shape + 'border-collapse', + 'w-full', + + // Spacing + 'm-0 my-2' + ] + }, + tableheadercell: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + weekheader: { + class: ['leading-[normal]', 'text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weeknumber: { + class: ['text-surface-600 dark:text-white/70', 'opacity-60 cursor-default'] + }, + weekday: { + class: [ + // Colors + 'text-surface-500 dark:text-white/60' + ] + }, + day: { + class: [ + // Spacing + 'p-0 md:p-2' + ] + }, + weeklabelcontainer: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-10 h-10', + 'rounded-full', + 'border-transparent border', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-800/80': !context.selected && !context.disabled, + 'hover:bg-primary-highlight-hover': context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + daylabel: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + 'mx-auto', + + // Shape & Size + 'w-10 h-10', + 'rounded-full', + 'border-transparent border', + + // Colors + { + 'text-primary': context.date.today, + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled && !context.date.today, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.selected && !context.disabled, + 'hover:bg-primary-highlight-hover': context.selected && !context.disabled + }, + { + 'opacity-60 cursor-default': context.disabled, + 'cursor-pointer': !context.disabled + } + ] + }), + monthpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + month: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-2', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.selected && !context.disabled, + 'hover:bg-primary-highlight-hover': context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + yearpicker: { + class: [ + // Spacing + 'my-2' + ] + }, + year: ({ context }) => ({ + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-1/3', + 'p-2', + + // Shape + 'rounded-md', + + // Colors + { + 'text-surface-600 dark:text-white/70 bg-transparent': !context.selected && !context.disabled, + 'text-primary-highlight-inverse bg-primary-highlight': context.selected && !context.disabled + }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.selected && !context.disabled, + 'hover:bg-primary-highlight-hover': context.selected && !context.disabled + }, + + // Misc + 'cursor-pointer' + ] + }), + timepicker: { + class: [ + // Flexbox + 'flex', + 'justify-center items-center', + + // Borders + 'border-t-1', + 'border-solid border-surface-200', + + // Spacing + 'p-2' + ] + }, + separatorcontainer: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + separator: { + class: [ + // Text + 'text-xl' + ] + }, + hourpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + minutepicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + secondPicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + ampmpicker: { + class: [ + // Flexbox and Alignment + 'flex', + 'items-center', + 'flex-col', + + // Spacing + 'px-2' + ] + }, + incrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + decrementbutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + 'p-0 m-0', + + // Shape + 'rounded-full', + + // Colors + 'text-surface-600 dark:text-white/70', + 'border-0', + 'bg-transparent', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + + // Misc + 'cursor-pointer overflow-hidden' + ] + }, + groupcontainer: { + class: [ + // Flexbox + 'flex' + ] + }, + group: { + class: [ + // Flexbox and Sizing + 'flex-1', + + // Borders + 'border-l', + 'border-surface-200', + + // Spacing + 'pr-0.5', + 'pl-0.5', + 'pt-0', + 'pb-0', + + // Pseudo-Classes + 'first:pl-0', + 'first:border-l-0' + ] + }, + buttonbar: { + class: [ + // Flexbox + 'flex justify-between items-center', + + // Spacing + 'py-3 px-0', + + // Shape + 'border-t border-surface-200 dark:border-surface-700' + ] + }, + todaybutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + clearbutton: { + root: { + class: [ + // Flexbox and Alignment + 'inline-flex items-center justify-center', + + // Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Colors + 'bg-transparent border-transparent', + 'text-primary', + + // Transitions + 'transition-colors duration-200 ease-in-out', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-300/20', + + // Misc + 'cursor-pointer' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/card/index.js b/admin_front/presets/lara/card/index.js new file mode 100644 index 0000000..849a738 --- /dev/null +++ b/admin_front/presets/lara/card/index.js @@ -0,0 +1,37 @@ +export default { + root: { + class: [ + //Shape + 'rounded-md', + 'shadow-md', + + //Color + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0' + ] + }, + body: { + class: 'p-5' + }, + title: { + class: 'text-2xl font-bold mb-2' + }, + subtitle: { + class: [ + //Font + 'font-normal', + + //Spacing + 'mb-2', + + //Color + 'text-surface-600 dark:text-surface-0/60' + ] + }, + content: { + class: 'py-5' // Vertical padding. + }, + footer: { + class: 'pt-5' // Top padding. + } +}; diff --git a/admin_front/presets/lara/carousel/index.js b/admin_front/presets/lara/carousel/index.js new file mode 100644 index 0000000..c4ac897 --- /dev/null +++ b/admin_front/presets/lara/carousel/index.js @@ -0,0 +1,149 @@ +export default { + root: { + class: [ + // Flexbox + 'flex flex-col' + ] + }, + content: { + class: [ + // Flexbox & Overflow + 'flex flex-col overflow-auto' + ] + }, + container: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col': props.orientation == 'vertical' + } + ] + }), + previousbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + nextbutton: { + class: [ + // Flexbox & Alignment + 'flex justify-center items-center self-center', + + // Sizing & Overflow + 'overflow-hidden w-8 h-8', + + // Spacing + 'mx-2', + + // Shape + 'rounded-full', + + // Border & Background + 'border-0 bg-transparent', + + // Color + 'text-surface-600', + + // Transitions + 'transition duration-200 ease-in-out' + ] + }, + itemscontent: { + class: [ + // Overflow & Width + 'overflow-hidden w-full' + ] + }, + itemscontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + // Orientation & Sizing + { + 'flex-row': props.orientation !== 'vertical', + 'flex-col h-full': props.orientation == 'vertical' + } + ] + }), + item: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow ', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + itemcloned: ({ props }) => ({ + class: [ + // Flexbox + 'flex shrink-0 grow', + 'unvisible', + + // Size + { + 'w-full sm:w-[50%] md:w-[33.333333333333336%]': props.orientation !== 'vertical', + + 'w-full h-full': props.orientation == 'vertical' + } + ] + }), + indicators: { + class: [ + // Flexbox & Alignment + 'flex flex-row justify-center flex-wrap' + ] + }, + indicator: { + class: [ + // Spacing + 'mr-2 mb-2' + ] + }, + indicatorbutton: ({ context }) => ({ + class: [ + // Sizing & Shape + 'w-8 h-2 rounded-0', + + // Transitions + 'transition duration-200', + + // Focus Styles + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Color & Background + { + 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted, + 'bg-primary hover:bg-primary-hover': context.highlighted + } + ] + }) +}; diff --git a/admin_front/presets/lara/cascadeselect/index.js b/admin_front/presets/lara/cascadeselect/index.js new file mode 100644 index 0000000..c599884 --- /dev/null +++ b/admin_front/presets/lara/cascadeselect/index.js @@ -0,0 +1,207 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-primary': !props.invalid }, + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + label: ({ props }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Flex & Alignment + ' flex flex-auto', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue, 'text-surface-400 dark:text-surface-500': !props.modelValue }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + dropdownbutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + content: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + groupicon: { + class: [ + // Alignment + 'ml-auto' + ] + }, + sublist: { + class: [ + // Size + 'w-full', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/checkbox/index.js b/admin_front/presets/lara/checkbox/index.js new file mode 100644 index 0000000..7db60b1 --- /dev/null +++ b/admin_front/presets/lara/checkbox/index.js @@ -0,0 +1,101 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked && !props.invalid, + 'border-primary bg-primary': context.checked + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +}; diff --git a/admin_front/presets/lara/chip/index.js b/admin_front/presets/lara/chip/index.js new file mode 100644 index 0000000..fbb0040 --- /dev/null +++ b/admin_front/presets/lara/chip/index.js @@ -0,0 +1,45 @@ +export default { + root: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-6 my-1.5 mx-0' + }, + icon: { + class: 'leading-6 mr-2' + }, + image: { + class: ['w-9 h-9 -ml-3 mr-2', 'rounded-full'] + }, + removeIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/lara/chips/index.js b/admin_front/presets/lara/chips/index.js new file mode 100644 index 0000000..b14f4a1 --- /dev/null +++ b/admin_front/presets/lara/chips/index.js @@ -0,0 +1,117 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + container: ({ state, props, parent }) => ({ + class: [ + // Font + 'text-base leading-none', + + // Flex + 'flex items-center flex-wrap gap-2', + + // Spacing + 'm-0 py-[0.375rem] px-3', + + // Size + 'w-full', + 'min-h-[2.877rem]', + + // Shape + 'list-none', + 'rounded-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'hover:border-primary': !props.invalid }, + 'focus:outline-none focus:outline-offset-0', + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + { 'ring ring-primary-400/50 dark:ring-primary-300/50': state.hovered }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-text overflow-hidden', + 'appearance-none' + ] + }), + + inputtoken: { + class: ['py-1.5 px-0', 'inline-flex flex-auto'] + }, + input: { + class: [ + // Font + 'text-base leading-[normal]', + + // Size + 'w-full', + + // Spacing + 'p-0 m-0', + + // Shape + 'appearance-none rounded-none', + 'border-0 outline-none', + 'shadow-none', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-transparent' + ] + }, + token: { + class: [ + // Flexbox + 'inline-flex items-center', + + // Spacing + 'py-1.5 px-3', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'text-surface-700 dark:text-white/70', + 'bg-surface-200 dark:bg-surface-700' + ] + }, + label: { + class: 'leading-[normal]' + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/lara/colorpicker/index.js b/admin_front/presets/lara/colorpicker/index.js new file mode 100644 index 0000000..1b45468 --- /dev/null +++ b/admin_front/presets/lara/colorpicker/index.js @@ -0,0 +1,123 @@ +export default { + root: ({ props }) => ({ + class: [ + // Display + 'inline-block', + + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + input: { + class: [ + // Font + 'text-base ', + + // Spacing + 'm-0', + 'p-3', + + // Size & Shape + 'rounded-lg w-8 h-8', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // States + 'hover:border-primary', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }, + panel: ({ props }) => ({ + class: [ + // Position & Size + { + 'relative h-[166px] w-[193px]': props.inline, + 'absolute h-[166px] w-[193px]': !props.inline + }, + + // Shape + 'shadow-md border', + + // Colors + 'bg-surface-800 border-surface-900 dark:border-surface-600' + ] + }), + selector: { + class: [ + // Position + 'absolute top-[8px] left-[8px]', + + // Size + 'h-[150px] w-[150px]' + ] + }, + color: { + class: [ + // Size + 'h-[150px] w-[150px]' + ], + style: 'background: linear-gradient(to top, #000 0%, rgb(0 0 0 / 0) 100%), linear-gradient(to right, #fff 0%, rgb(255 255 255 / 0) 100%)' + }, + colorhandle: { + class: [ + 'absolute', + + // Shape + 'rounded-full border border-solid', + + // Size + 'h-[10px] w-[10px]', + + // Spacing + '-ml-[5px] -mt-[5px]', + + // Colors + 'border-white', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + hue: { + class: [ + // Position + 'absolute top-[8px] left-[167px]', + + // Size + 'h-[150px] w-[17px]', + + // Opacity + 'opacity-85' + ], + style: 'background: linear-gradient(0deg, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red)' + }, + huehandle: { + class: [ + // Position + 'absolute left-0 -ml-[2px] -mt-[5px]', + + // Size + 'h-[10px] w-[21px]', + + // Shape + 'border-solid border-2', + + // Misc + 'cursor-pointer opacity-85' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/confirmpopup/index.js b/admin_front/presets/lara/confirmpopup/index.js new file mode 100644 index 0000000..b0f21c2 --- /dev/null +++ b/admin_front/presets/lara/confirmpopup/index.js @@ -0,0 +1,106 @@ +export default { + root: { + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Positioning + 'z-40 transform origin-center', + 'mt-3 absolute left-0 top-0', + + // Color + 'dark:border', + 'dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + + // Before: Arrow + 'before:absolute before:w-0 before:-top-3 before:h-0 before:border-transparent before:border-solid before:ml-6 before:border-x-[0.75rem] before:border-b-[0.75rem] before:border-t-0 before:border-b-surface-0 dark:before:border-b-surface-800' + ] + }, + content: { + class: 'p-5 items-center flex' + }, + icon: { + class: 'text-2xl mr-4' + }, + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + rejectbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-primary', + + // States + 'hover:bg-primary-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + acceptbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // States + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/contextmenu/index.js b/admin_front/presets/lara/contextmenu/index.js new file mode 100644 index 0000000..ce8adb3 --- /dev/null +++ b/admin_front/presets/lara/contextmenu/index.js @@ -0,0 +1,124 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + 'shadow-md', + + // Spacing + 'py-2', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'dark:border dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: 'relative' + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + // Colors + 'text-surface-700 dark:text-white/80', + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled } + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-md', + 'rounded-md', + 'dark:border dark:border-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }), + submenuicon: { + class: ['ml-auto'] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-250' + } +}; diff --git a/admin_front/presets/lara/datatable/index.js b/admin_front/presets/lara/datatable/index.js new file mode 100644 index 0000000..aab5914 --- /dev/null +++ b/admin_front/presets/lara/datatable/index.js @@ -0,0 +1,1166 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + { 'flex flex-col': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + { relative: props.scrollable, 'flex flex-col grow': props.scrollable && props.scrollHeight === 'flex' }, + + // Size + { 'h-full': props.scrollable && props.scrollHeight === 'flex' } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + table: { + class: 'w-full border-spacing-0 border-separate' + }, + thead: ({ context }) => ({ + class: [ + { + 'bg-surface-50 dark:bg-surface-800 top-0 z-40 sticky': context.scrollable + } + ] + }), + tbody: ({ instance, context }) => ({ + class: [ + { + 'sticky z-20': instance.frozenRow && context.scrollable + }, + 'bg-surface-50 dark:bg-surface-800' + ] + }), + tfoot: ({ context }) => ({ + class: [ + { + 'bg-surface-50 bottom-0 z-0': context.scrollable + } + ] + }), + footer: { + class: [ + 'font-bold', + + // Shape + 'border-t-0 border-b border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }, + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { 'sticky z-20 border-b': props.frozen || props.frozen === '' }, + + { relative: context.resizable }, + + // Alignment + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-50 text-surface-700 dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 ', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-400/30': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { 'cursor-pointer': props.sortable === '' || props.sortable }, + { + 'overflow-hidden space-nowrap border-y bg-clip-padding': context.resizable // Resizable + } + ] + }), + headercontent: { + class: 'flex items-center' + }, + sort: ({ context }) => ({ + class: [context.sorted ? 'text-primary-500' : 'text-surface-700', context.sorted ? 'dark:text-primary-400' : 'dark:text-white/80'] + }), + bodycell: ({ props, context, state, parent }) => ({ + class: [ + //Position + { 'sticky box-border border-b': parent.instance.frozenRow }, + { 'sticky box-border border-b z-20': props.frozen || props.frozen === '' }, + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'first:border-l border-r border-b': context?.showGridlines }, + { 'bg-surface-0 dark:bg-surface-800': parent.instance.frozenRow || props.frozen || props.frozen === '' }, + + // Spacing + { 'p-2': context?.size === 'small' && !state['d_editing'] }, + { 'p-5': context?.size === 'large' && !state['d_editing'] }, + { 'p-4': context?.size !== 'large' && context?.size !== 'small' && !state['d_editing'] }, + { 'py-[0.6rem] px-2': state['d_editing'] }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + footercell: ({ context }) => ({ + class: [ + // Font + 'font-bold', + + // Alignment + 'text-left', + + // Shape + 'border-0 border-b border-solid', + { 'border-x border-y': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800' + ] + }), + sorticon: ({ context }) => ({ + class: ['ml-2', context.sorted ? 'text-primary-highlight-inverse' : 'text-surface-700 dark:text-white/70'] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-highlight-inverse', + 'bg-primary-highlight' + ] + }, + columnfilter: { + class: 'inline-flex items-center ml-auto' + }, + filteroverlay: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Size + 'min-w-[12.5rem]', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + filtermatchmodedropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'flex', + 'relative', + + // Spacing + 'my-2', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary', + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }) + }, + filterrowitems: { + class: 'm-0 p-0 py-3 list-none' + }, + filterrowitem: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'bg-surface-0 dark:bg-surface-800 text-surface-700 dark:text-white/80': !context?.highlighted }, + { 'bg-primary-highlight text-primary-highlight-inverse': context?.highlighted }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context?.highlighted }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': !context?.highlighted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + filteroperator: { + class: [ + // Spacing + 'px-5 py-3', + + // Shape + 'border-b border-solid', + 'rounded-t-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'border-surface-200 dark:border-surface-800', + 'bg-surface-0 dark:bg-surface-700' + ] + }, + filteroperatordropdown: { + root: ({ state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'w-full', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary', + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none' + ] + }), + input: ({ props }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue, 'text-surface-400 dark:text-surface-500': !props.modelValue }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context.focused && !context.selected }, + { 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': context.focused && !context.selected }, + { 'bg-primary-highlight text-primary-highlight-inverse': !context.focused && context.selected }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + filterconstraint: { + class: [ + // Spacing + 'py-3 px-5', + + // Shape + 'border-b border-solid', + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }, + filteraddrule: { + class: 'py-3 px-5' + }, + filteraddrulebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3 w-full', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-primary', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterremovebutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3 w-full mt-2', + + // Shape + 'rounded-md', + + 'bg-transparent border-transparent', + 'text-red-500 dark:text-red-400', + 'hover:bg-red-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }, + label: { + class: 'flex-auto grow-0' + }, + icon: { + class: 'mr-2' + } + }, + filterbuttonbar: { + class: [ + // Flex & Alignment + 'flex items-center justify-between', + + // Space + 'py-3 px-5' + ] + }, + filterclearbutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3', + + // Shape + 'rounded-md', + + 'text-primary-500 border border-primary', + 'hover:bg-primary-300/20', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filterapplybutton: { + root: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'text-sm py-2 px-3', + + // Shape + 'rounded-md', + + 'text-primary-inverse', + 'bg-primary', + 'hover:bg-primary-hover hover:border-primary-hover', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + } + }, + filtermenubutton: ({ context }) => ({ + class: [ + 'relative', + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing + 'ml-2', + + // Shape + 'rounded-full', + + // Color + { 'bg-primary-highlight text-highlight-inverse': context.active }, + 'dark:text-white/70 dark:hover:text-white/80 dark:bg-surface-800', + + // States + 'hover:text-surface-700 hover:bg-surface-300/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer no-underline overflow-hidden' + ] + }), + headerfilterclearbutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Shape + 'border-none', + + // Spacing + 'm-0 p-0 ml-2', + + // Color + 'bg-transparent', + + // Misc + 'cursor-pointer no-underline overflow-hidden select-none', + { + invisible: !context.hidden + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowreordericon: { + class: 'cursor-move' + }, + roweditorinitbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorsavebutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + roweditorcancelbutton: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-700 dark:text-white/70', + 'border-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + 'hover:text-surface-700 hover:bg-surface-300/20', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowRadiobutton: { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': !props.modelValue, + 'bg-surface-0 dark:bg-surface-900': !props.modelValue, + 'border-surface-300 dark:border-surface-700': !props.modelValue, + 'border-primary dark:border-primary': props.modelValue, + 'bg-primary dark:bg-primary': props.modelValue + }, + + // States + { + 'peer-hover:border-primary': !props.disabled, + 'peer-hover:border-primary-hover peer-hover:bg-primary-hover': !props.disabled && props.modelValue, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-[0.857rem] h-[0.857rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + + // Conditions + { + 'backface-hidden scale-10 invisible': !props.modelValue, + 'transform visible scale-[1.1]': props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) + }, + headercheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + rowCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + bodyrow: ({ context, props }) => ({ + class: [ + // Color + 'dark:text-white/80', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected }, + { 'font-bold bg-surface-0 dark:bg-surface-800 z-20': props.frozenRow }, + { 'odd:bg-surface-0 odd:text-surface-600 dark:odd:bg-surface-800 even:bg-surface-50 even:text-surface-600 dark:even:bg-surface-900/50': context.stripedRows }, + + // State + { 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 ring-inset dark:focus:ring-primary-300/50': context.selectable }, + { 'hover:bg-surface-300/20 hover:text-surface-600': props.selectionMode && !context.selected }, + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover }, + + // Misc + { 'cursor-pointer': props.selectionMode } + ] + }), + rowexpansion: { + class: 'bg-surface-0 dark:bg-surface-800 text-surface-600 dark:text-white/80' + }, + rowgroupheader: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-800'] + }, + rowgroupfooter: { + class: ['sticky z-20', 'bg-surface-0 text-surface-600 dark:text-white/70', 'dark:bg-surface-800'] + }, + rowgrouptoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left', + + // Spacing + 'm-0 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + rowgrouptogglericon: { + class: 'inline-block w-4 h-4' + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/admin_front/presets/lara/dataview/index.js b/admin_front/presets/lara/dataview/index.js new file mode 100644 index 0000000..0a24942 --- /dev/null +++ b/admin_front/presets/lara/dataview/index.js @@ -0,0 +1,40 @@ +export default { + content: { + class: [ + // Spacing + 'p-0', + + // Shape + 'border-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800' + ] + }, + grid: { + class: [ + // flex + 'flex flex-wrap', + + // Spacing + 'ml-0 mr-0 mt-0', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + }, + header: { + class: [ + 'font-bold', + + // Spacing + 'p-4', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700 border-y' + ] + } +}; diff --git a/admin_front/presets/lara/dataviewlayoutoptions/index.js b/admin_front/presets/lara/dataviewlayoutoptions/index.js new file mode 100644 index 0000000..18584ae --- /dev/null +++ b/admin_front/presets/lara/dataviewlayoutoptions/index.js @@ -0,0 +1,58 @@ +export default { + listbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-r-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'list' ? 'bg-primary border-primary text-primary-inverse' : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + props.modelValue === 'list' ? 'hover:bg-primary-hover' : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + gridbutton: ({ props }) => ({ + class: [ + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Shape + 'border rounded-md rounded-l-none', + + // Spacing + 'px-4 py-3', + + // Color + props.modelValue === 'grid' ? 'bg-primary border-primary text-primary-inverse' : 'bg-surface-0 dark:bg-surface-900 border-surface-200 dark:border-surface-700 text-surface-700 dark:text-white/80', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + props.modelValue === 'grid' ? 'hover:bg-primary-hover' : 'hover:bg-surface-50 dark:hover:bg-surface-800/80', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }) +}; diff --git a/admin_front/presets/lara/deferred/index.js b/admin_front/presets/lara/deferred/index.js new file mode 100644 index 0000000..6ce21d7 --- /dev/null +++ b/admin_front/presets/lara/deferred/index.js @@ -0,0 +1,3 @@ +export default { + root: {} +}; diff --git a/admin_front/presets/lara/dialog/index.js b/admin_front/presets/lara/dialog/index.js new file mode 100644 index 0000000..88fa485 --- /dev/null +++ b/admin_front/presets/lara/dialog/index.js @@ -0,0 +1,235 @@ +export default { + root: ({ state }) => ({ + class: [ + // Shape + 'rounded-lg', + 'shadow-lg', + 'border-0', + + // Size + 'max-h-[90vh]', + 'w-[50vw]', + 'm-0', + + // Color + 'dark:border', + 'dark:border-surface-700', + + // Transitions + 'transform', + 'scale-100', + + // Maximized State + { + 'transition-none': state.maximized, + 'transform-none': state.maximized, + '!w-screen': state.maximized, + '!h-screen': state.maximized, + '!max-h-full': state.maximized, + '!top-0': state.maximized, + '!left-0': state.maximized + } + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-6', + + // Shape + 'border-t-0', + 'rounded-tl-lg', + 'rounded-tr-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-bold text-lg'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + maximizablebutton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + maximizableicon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: ({ state, instance }) => ({ + class: [ + // Spacing + 'px-6', + 'pb-8', + 'pt-0', + + // Shape + { + grow: state.maximized, + 'rounded-bl-lg': !instance.$slots.footer, + 'rounded-br-lg': !instance.$slots.footer + }, + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + + // Misc + 'overflow-y-auto' + ] + }), + footer: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-end', + 'shrink-0', + 'text-right', + 'gap-2', + + // Spacing + 'px-6', + 'pb-6', + + // Shape + 'border-t-0', + 'rounded-b-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal, 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'opacity-0 scale-75 translate-y-full mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' || props.position === 'topleft' || props.position === 'bottomleft' + ? { + enterFromClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 -translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' || props.position === 'topright' || props.position === 'bottomright' + ? { + enterFromClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 scale-75 mask-active', + enterActiveClass: 'transition-all duration-200 ease-out', + leaveActiveClass: 'transition-all duration-200 ease-out', + leaveToClass: 'opacity-0 scale-75 mask-active' + }; + } +}; diff --git a/admin_front/presets/lara/divider/index.js b/admin_front/presets/lara/divider/index.js new file mode 100644 index 0000000..ec637ff --- /dev/null +++ b/admin_front/presets/lara/divider/index.js @@ -0,0 +1,67 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex and Position + 'flex relative', + { 'justify-center': props.layout == 'vertical' }, + { 'items-center': props.layout == 'vertical' }, + { + 'justify-start': props?.align == 'left' && props.layout == 'horizontal', + 'justify-center': props?.align == 'center' && props.layout == 'horizontal', + 'justify-end': props?.align == 'right' && props.layout == 'horizontal', + 'items-center': props?.align == 'top' && props.layout == 'vertical', + 'items-start': props?.align == 'center' && props.layout == 'vertical', + 'items-end': props?.align == 'bottom' && props.layout == 'vertical' + }, + + // Spacing + { + 'my-5 mx-0 py-0 px-5': props.layout == 'horizontal', + 'mx-4 md:mx-5 py-5': props.layout == 'vertical' + }, + + // Size + { + 'w-full': props.layout == 'horizontal', + 'min-h-full': props.layout == 'vertical' + }, + + // Before: Line + 'before:block', + + // Position + { + 'before:absolute before:left-0 before:top-1/2': props.layout == 'horizontal', + 'before:absolute before:left-1/2 before:top-0 before:transform before:-translate-x-1/2': props.layout == 'vertical' + }, + + // Size + { + 'before:w-full': props.layout == 'horizontal', + 'before:min-h-full': props.layout == 'vertical' + }, + + // Shape + { + 'before:border-solid': props.type == 'solid', + 'before:border-dotted': props.type == 'dotted', + 'before:border-dashed': props.type == 'dashed' + }, + + // Color + { + 'before:border-t before:border-surface-200 before:dark:border-surface-600': props.layout == 'horizontal', + 'before:border-l before:border-surface-200 before:dark:border-surface-600': props.layout == 'vertical' + } + ] + }), + content: { + class: [ + // Space and Position + 'px-1 z-10', + + // Color + 'bg-surface-0 dark:bg-surface-800' + ] + } +}; diff --git a/admin_front/presets/lara/dock/index.js b/admin_front/presets/lara/dock/index.js new file mode 100644 index 0000000..2a26aaa --- /dev/null +++ b/admin_front/presets/lara/dock/index.js @@ -0,0 +1,93 @@ +export default { + root: ({ props }) => ({ + class: [ + // Positioning + 'absolute z-1', + { + 'left-0 bottom-0 w-full': props.position == 'bottom', + 'left-0 top-0 w-full': props.position == 'top', + 'left-0 top-0 h-full': props.position == 'left', + 'right-0 top-0 h-full': props.position == 'right' + }, + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Interactivity + 'pointer-events-none' + ] + }), + container: { + class: [ + // Flexbox + 'flex', + + // Shape & Border + 'rounded-md', + + // Color + 'bg-surface-0/10 dark:bg-surface-900/20 border border-surface-0/20', + 'backdrop-blur-sm', + + // Spacing + 'p-2', + + // Misc + 'pointer-events-auto' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + { + 'flex-col': props.position == 'left' || props.position == 'right' + }, + + // List Style + 'm-0 p-0 list-none', + + // Shape + 'outline-none' + ] + }), + menuitem: ({ props, context, instance }) => ({ + class: [ + // Spacing & Shape + 'p-2 rounded-md', + + // Conditional Scaling + { + 'hover:scale-150': instance.currentIndex === context.index, + 'scale-125': instance.currentIndex - 1 === context.index || instance.currentIndex + 1 === context.index, + 'scale-110': instance.currentIndex - 2 === context.index || instance.currentIndex + 2 === context.index + }, + + // Positioning & Hover States + { + 'origin-bottom hover:mx-6': props.position == 'bottom', + 'origin-top hover:mx-6': props.position == 'top', + 'origin-left hover:my-6': props.position == 'left', + 'origin-right hover:my-6': props.position == 'right' + }, + + // Transitions & Transform + 'transition-all duration-200 ease-cubic-bezier-will-change-transform transform' + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex flex-col items-center justify-center', + + // Position + 'relative', + + // Size + 'w-16 h-16', + + // Misc + 'cursor-default overflow-hidden' + ] + } +}; diff --git a/admin_front/presets/lara/dropdown/index.js b/admin_front/presets/lara/dropdown/index.js new file mode 100644 index 0000000..3455193 --- /dev/null +++ b/admin_front/presets/lara/dropdown/index.js @@ -0,0 +1,278 @@ +export default { + root: ({ props, state, parent }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 ml-[-1px]': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + + 'border border-surface-300', + { 'dark:border-surface-700': parent.instance.$name != 'InputGroup' }, + { 'dark:border-surface-600': parent.instance.$name == 'InputGroup' }, + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-primary': !props.invalid }, + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + input: ({ props, parent }) => ({ + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + { 'text-surface-800 dark:text-white/80': props.modelValue != undefined, 'text-surface-400 dark:text-surface-500': props.modelValue == undefined }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + { 'pr-7': props.showClear }, + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null }, + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }), + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + { 'pointer-events-none cursor-default': context.disabled }, + { 'cursor-pointer': !context.disabled }, + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + header: { + class: [ + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-700' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'leading-[normal]', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + loadingicon: { + class: 'text-surface-400 dark:text-surface-500 animate-spin' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/fieldset/index.js b/admin_front/presets/lara/fieldset/index.js new file mode 100644 index 0000000..dde28a0 --- /dev/null +++ b/admin_front/presets/lara/fieldset/index.js @@ -0,0 +1,84 @@ +export default { + root: { + class: [ + 'block', + + // Spacing + 'px-4 pt-2 py-3', + 'inline-size-min', + + // Shape + 'rounded-md', + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + legend: ({ props }) => ({ + class: [ + // Font + 'font-bold', + 'leading-none', + + //Spacing + { 'p-0': props.toggleable, 'p-5': !props.toggleable }, + + // Shape + 'rounded-md', + + // Color + 'text-surface-700 dark:text-surface-0/80', + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-900', + + // Transition + 'transition-none', + + // States + { 'hover:bg-surface-100 hover:border-surface-200 hover:text-surface-900 dark:hover:text-surface-0/80 dark:hover:bg-surface-800/80': props.toggleable } + ] + }), + toggler: ({ props }) => ({ + class: [ + // Alignments + 'flex items-center justify-center', + 'relative', + + //Spacing + { 'p-5': props.toggleable }, + + // Shape + { 'rounded-md': props.toggleable }, + + // Color + { 'text-surface-700 dark:text-surface-200 hover:text-surface-900': props.toggleable }, + + // States + { 'hover:text-surface-900 dark:hover:text-surface-100': props.toggleable }, + { 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50': props.toggleable }, + + // Misc + { + 'transition-none cursor-pointer overflow-hidden select-none': props.toggleable + } + ] + }), + togglerIcon: { + class: 'mr-2 inline-block' + }, + legendTitle: { + class: 'flex items-center justify-center leading-none' + }, + content: { + class: 'p-5' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/lara/fileupload/index.js b/admin_front/presets/lara/fileupload/index.js new file mode 100644 index 0000000..097ee48 --- /dev/null +++ b/admin_front/presets/lara/fileupload/index.js @@ -0,0 +1,173 @@ +export default { + input: { + class: 'hidden' + }, + buttonbar: { + class: [ + // Flexbox + 'flex', + 'flex-wrap', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-5', + 'gap-2', + + // Borders + 'border', + 'border-solid', + 'border-surface-200', + 'dark:border-surface-700', + 'border-b-0', + + // Shape + 'rounded-tr-lg', + 'rounded-tl-lg' + ] + }, + chooseButton: { + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Spacing + 'px-4 py-3', + + // Shape + 'rounded-md', + + // Font + 'leading-[normal]', + 'font-bold', + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border-primary', + + // States + 'hover:bg-primary-hover', + + // Misc + 'overflow-hidden', + 'cursor-pointer' + ] + }, + chooseIcon: { + class: ['mr-2', 'inline-block'] + }, + chooseButtonLabel: { + class: ['flex-1', 'font-bold'] + }, + uploadbutton: { + icon: { + class: 'mr-2' + } + }, + cancelbutton: { + icon: { + class: 'mr-2' + } + }, + content: { + class: [ + // Position + 'relative', + + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-white/80', + + // Spacing + 'p-8', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + + // Shape + 'rounded-b-lg' + ] + }, + file: { + class: [ + // Flexbox + 'flex', + 'items-center', + 'flex-wrap', + + // Spacing + 'p-4', + 'mb-2', + 'last:mb-0', + + // Borders + 'border', + 'border-surface-200', + 'dark:border-surface-700', + 'gap-2', + + // Shape + 'rounded' + ] + }, + thumbnail: { + class: 'shrink-0' + }, + fileName: { + class: 'mb-2 break-all' + }, + fileSize: { + class: 'mr-2' + }, + uploadicon: { + class: 'mr-2' + }, + progressbar: { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'absolute top-0 left-0', + + // Shape and Size + 'border-0', + 'h-2', + 'rounded-md', + 'w-full', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: { + class: [ + // Flexbox & Overflow & Position + 'absolute flex items-center justify-center overflow-hidden', + + // Colors + 'bg-primary', + + // Spacing & Sizing + 'm-0', + 'h-full w-0', + + // Shape + 'border-0', + + // Transitions + 'transition-width duration-1000 ease-in-out' + ] + } + } +}; diff --git a/admin_front/presets/lara/floatlabel/index.js b/admin_front/presets/lara/floatlabel/index.js new file mode 100644 index 0000000..8bc5657 --- /dev/null +++ b/admin_front/presets/lara/floatlabel/index.js @@ -0,0 +1,26 @@ +export default { + root: { + class: [ + 'block relative', + + // Base Label Appearance + '[&>*:last-child]:text-surface-900/60 dark:[&>*:last-child]:text-white/60', + '[&>*:last-child]:absolute', + '[&>*:last-child]:top-1/2', + '[&>*:last-child]:-translate-y-1/2', + '[&>*:last-child]:left-3', + '[&>*:last-child]:pointer-events-none', + '[&>*:last-child]:transition-all', + '[&>*:last-child]:duration-200', + '[&>*:last-child]:ease', + + // Focus Label Appearance + '[&>*:last-child]:has-[:focus]:-top-3', + '[&>*:last-child]:has-[:focus]:text-sm', + + // Filled Input Label Appearance + '[&>*:last-child]:has-[.filled]:-top-3', + '[&>*:last-child]:has-[.filled]:text-sm' + ] + } +}; diff --git a/admin_front/presets/lara/galleria/index.js b/admin_front/presets/lara/galleria/index.js new file mode 100644 index 0000000..fe7f785 --- /dev/null +++ b/admin_front/presets/lara/galleria/index.js @@ -0,0 +1,308 @@ +export default { + content: ({ parent, props }) => ({ + class: [ + 'flex', + { + 'flex-col': props.fullScreen + }, + { + 'flex-col': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-row': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + itemwrapper: ({ parent, props }) => ({ + class: [ + 'group', + 'flex relative', + { + 'grow shrink w-0 justify-center': props.fullScreen + }, + { + 'flex-col': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'top', + 'flex-row items-center': parent.props.indicatorsPosition === 'left' || parent.props.indicatorsPosition === 'right' + }, + { + 'order-2': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left', + 'flex-row': parent.props.thumbnailsPosition === 'right' + } + ] + }), + + itemcontainer: ({ parent }) => ({ + class: [ + 'flex h-full relative', + { + 'order-1': parent.props.indicatorsPosition === 'bottom' || parent.props.indicatorsPosition === 'right', + 'order-2': parent.props.indicatorsPosition === 'top' || parent.props.indicatorsPosition === 'left' + } + ] + }), + item: { + class: [ + // Flex + 'flex justify-center items-center h-full w-full', + + // Sizing + 'h-full w-full' + ] + }, + thumbnailwrapper: ({ parent }) => ({ + class: [ + // Flex + 'flex flex-col shrink-0', + + { + 'order-1': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'left' + }, + + // Misc + 'overflow-auto' + ] + }), + thumbnailcontainer: ({ parent }) => ({ + class: [ + // Flex + 'flex', + + // Spacing + 'p-4', + + // Colors + 'bg-black/90', + + { + 'flex-row': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom', + 'flex-col grow': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + previousthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + thumbnailitemscontainer: { + class: 'overflow-hidden w-full' + }, + thumbnailitems: ({ parent }) => ({ + class: [ + 'flex', + { + 'flex-col h-full': parent.props.thumbnailsPosition === 'right' || parent.props.thumbnailsPosition === 'left' + } + ] + }), + thumbnailitem: ({ parent }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + 'grow shrink-0', + + // Sizing + { + 'w-full md:w-[25%] lg:w-[20%]': parent.props.thumbnailsPosition === 'top' || parent.props.thumbnailsPosition === 'bottom' + }, + + // Misc + 'overflow-auto', + 'cursor-pointer', + 'opacity-50', + + // States + '[&[data-p-active="true"]]:opacity-100', + 'hover:opacity-100', + + // Transitions + 'transition-opacity duration-300' + ] + }), + nextthumbnailbutton: { + class: [ + // Positioning + 'self-center relative', + + // Display & Flexbox + 'flex shrink-0 justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'bg-transparent text-white w-8 h-8 rounded-full transition duration-200 ease-in-out', + + // Hover Effects + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + indicators: ({ parent }) => ({ + class: [ + // flex + 'flex items-center justify-center', + + // Spacing + 'p-4', + + // Indicators Position + { + 'order-2': parent.props.indicatorsPosition == 'bottom', + 'order-1': parent.props.indicatorsPosition == 'top', + 'order-1 flex-col': parent.props.indicatorsPosition == 'left', + 'flex-col order-2': parent.props.indicatorsPosition == 'right' + }, + { + 'absolute z-10 bg-black/50': parent.props.showIndicatorsOnItem + }, + + { + 'bottom-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'bottom' && parent.props.showIndicatorsOnItem, + 'top-0 left-0 w-full items-start': parent.props.indicatorsPosition == 'top' && parent.props.showIndicatorsOnItem, + 'left-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'left' && parent.props.showIndicatorsOnItem, + 'right-0 top-0 h-full items-start': parent.props.indicatorsPosition == 'right' && parent.props.showIndicatorsOnItem + } + ] + }), + indicator: ({ parent }) => ({ + class: [ + { + 'mr-2': parent.props.indicatorsPosition == 'bottom' || parent.props.indicatorsPosition == 'top', + 'mb-2': parent.props.indicatorsPosition == 'left' || parent.props.indicatorsPosition == 'right' + } + ] + }), + indicatorbutton: ({ context }) => ({ + class: [ + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full transition duration-200', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Conditional Appearance: Not Highlighted + { 'bg-surface-200 hover:bg-surface-300 dark:bg-surface-700 dark:hover:bg-surface-600': !context.highlighted }, + + // Conditional Appearance: Highlighted + { 'bg-primary hover:bg-primary-hover': context.highlighted } + ] + }), + mask: { + class: ['fixed top-0 left-0 w-full h-full', 'flex items-center justify-center', 'bg-black/90'] + }, + closebutton: { + class: [ + // Positioning + '!absolute top-0 right-0', + + // Display & Flexbox + 'flex justify-center items-center overflow-hidden', + + // Spacing + 'm-2', + + // Appearance + 'text-white bg-transparent w-12 h-12 rounded-full transition duration-200 ease-in-out', + + // Hover Effect + 'hover:text-white hover:bg-surface-0/10', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + previousitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] left-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + nextitembutton: ({ parent }) => ({ + class: [ + // Display & Flexbox + 'inline-flex justify-center items-center overflow-hidden', + + // Appearance + 'bg-transparent text-white w-16 h-16 transition duration-200 ease-in-out rounded-md', + { + 'opacity-0 group-hover:opacity-100': parent.props.showItemNavigatorsOnHover + }, + + // Spacing + 'mx-2', + + // Positioning + 'top-1/2 mt-[-0.5rem] right-0', + { + '!absolute': parent.props.showItemNavigators, + '!fixed': !parent.props.showItemNavigators + }, + + // Hover Effect + 'hover:bg-surface-0/10 hover:text-white', + + // Focus Effects + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50' + ] + }), + caption: { + class: [ + // Positioning + 'absolute bottom-0 left-0 w-full', + + // Appearance + 'bg-black/50 text-white p-4' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/admin_front/presets/lara/global.js b/admin_front/presets/lara/global.js new file mode 100644 index 0000000..e3b6789 --- /dev/null +++ b/admin_front/presets/lara/global.js @@ -0,0 +1,90 @@ +export default { + css: ` + *[data-pd-ripple="true"]{ + overflow: hidden; + position: relative; + } + span[data-p-ink-active="true"]{ + animation: ripple 0.4s linear; + } + @keyframes ripple { + 100% { + opacity: 0; + transform: scale(2.5); + } + } + + .progress-spinner-circle { + stroke-dasharray: 89, 200; + stroke-dashoffset: 0; + animation: p-progress-spinner-dash 1.5s ease-in-out infinite, p-progress-spinner-color 6s ease-in-out infinite; + stroke-linecap: round; + } + + @keyframes p-progress-spinner-dash{ + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } + } + @keyframes p-progress-spinner-color { + 100%, 0% { + stroke: #ff5757; + } + 40% { + stroke: #696cff; + } + 66% { + stroke: #1ea97c; + } + 80%, 90% { + stroke: #cc8925; + } + } + + .progressbar-value-animate::after { + will-change: left, right; + animation: p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + } + .progressbar-value-animate::before { + will-change: left, right; + animation: p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + } + @keyframes p-progressbar-indeterminate-anim { + 0% { + left: -35%; + right: 100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } + } + + .p-fadein { + animation: p-fadein 250ms linear; + } + + @keyframes p-fadein { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } +` +}; diff --git a/admin_front/presets/lara/iconfield/index.js b/admin_front/presets/lara/iconfield/index.js new file mode 100644 index 0000000..554c02e --- /dev/null +++ b/admin_front/presets/lara/iconfield/index.js @@ -0,0 +1,22 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + '[&>input]:w-full', + + '[&>*:first-child]:absolute', + '[&>*:first-child]:top-1/2', + '[&>*:first-child]:-mt-2', + '[&>*:first-child]:leading-[normal]', + '[&>*:first-child]:text-surface-900/60 dark:[&>*:first-child]:text-white/60', + { + '[&>*:first-child]:right-3': props.iconPosition === 'right', + '[&>*:first-child]:left-3': props.iconPosition === 'left' + }, + { + '[&>*:last-child]:pr-10': props.iconPosition === 'right', + '[&>*:last-child]:pl-10': props.iconPosition === 'left' + } + ] + }) +}; diff --git a/admin_front/presets/lara/image/index.js b/admin_front/presets/lara/image/index.js new file mode 100644 index 0000000..5f840b9 --- /dev/null +++ b/admin_front/presets/lara/image/index.js @@ -0,0 +1,206 @@ +export default { + root: { + class: 'relative inline-block' + }, + button: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'absolute', + + // Shape + 'inset-0 opacity-0 transition-opacity duration-300', + + // Color + 'bg-transparent text-surface-100', + + // States + 'hover:opacity-100 hover:cursor-pointer hover:bg-black/50 hover:bg-opacity-50' + ] + }, + mask: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Positioning + 'fixed top-0 left-0', + + // Sizing + 'w-full h-full', + + // Color + 'bg-black/90' + ] + }, + toolbar: { + class: [ + // Flexbox + 'flex', + + // Positioning + 'absolute top-0 right-0', + + // Spacing + 'p-4' + ] + }, + rotaterightbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotaterighticon: { + class: 'w-6 h-6' + }, + rotateleftbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + rotatelefticon: { + class: 'w-6 h-6' + }, + zoomoutbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoomouticon: { + class: 'w-6 h-6' + }, + zoominbutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + zoominicon: { + class: 'w-6 h-6' + }, + closebutton: { + class: [ + 'z-20', + + // Flexbox & Alignment + 'flex justify-center items-center', + + // Size + 'w-12 h-12', + + // Spacing + 'mr-2', + + // Shape + 'rounded-full', + + // Color + 'text-white bg-transparent', + + // States + 'hover:text-white hover:bg-surface-0/10', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200 ease-in-out' + ] + }, + closeicon: { + class: 'w-6 h-6' + }, + transition: { + enterFromClass: 'opacity-0 scale-75', + enterActiveClass: 'transition-all duration-150 ease-in-out', + leaveActiveClass: 'transition-all duration-150 ease-in', + leaveToClass: 'opacity-0 scale-75' + } +}; diff --git a/admin_front/presets/lara/index.js b/admin_front/presets/lara/index.js new file mode 100644 index 0000000..c29c323 --- /dev/null +++ b/admin_front/presets/lara/index.js @@ -0,0 +1,207 @@ +import accordion from './accordion'; +import autocomplete from './autocomplete'; +import avatar from './avatar'; +import avatargroup from './avatargroup'; +import badge from './badge'; +import badgedirective from './badgedirective'; +import blockui from './blockui'; +import breadcrumb from './breadcrumb'; +import button from './button'; +import calendar from './calendar'; +import card from './card'; +import carousel from './carousel'; +import cascadeselect from './cascadeselect'; +import checkbox from './checkbox'; +import chip from './chip'; +import chips from './chips'; +import colorpicker from './colorpicker'; +import confirmpopup from './confirmpopup'; +import contextmenu from './contextmenu'; +import datatable from './datatable'; +import dataview from './dataview'; +import dataviewlayoutoptions from './dataviewlayoutoptions'; +import deferred from './deferred'; +import dialog from './dialog'; +import divider from './divider'; +import dock from './dock'; +import dropdown from './dropdown'; +import fieldset from './fieldset'; +import fileupload from './fileupload'; +import floatlabel from './floatlabel'; +import galleria from './galleria'; +import global from './global'; +import iconfield from './iconfield'; +import image from './image'; +import inlinemessage from './inlinemessage'; +import inplace from './inplace'; +import inputgroup from './inputgroup'; +import inputgroupaddon from './inputgroupaddon'; +import inputmask from './inputmask'; +import inputnumber from './inputnumber'; +import inputotp from './inputotp'; +import inputswitch from './inputswitch'; +import inputtext from './inputtext'; +import knob from './knob'; +import listbox from './listbox'; +import megamenu from './megamenu'; +import menu from './menu'; +import menubar from './menubar'; +import message from './message'; +import metergroup from './metergroup'; +import multiselect from './multiselect'; +import orderlist from './orderlist'; +import organizationchart from './organizationchart'; +import overlaypanel from './overlaypanel'; +import paginator from './paginator'; +import panel from './panel'; +import panelmenu from './panelmenu'; +import password from './password'; +import picklist from './picklist'; +import progressbar from './progressbar'; +import progressspinner from './progressspinner'; +import radiobutton from './radiobutton'; +import rating from './rating'; +import ripple from './ripple'; +import scrollpanel from './scrollpanel'; +import scrolltop from './scrolltop'; +import selectbutton from './selectbutton'; +import sidebar from './sidebar'; +import skeleton from './skeleton'; +import slider from './slider'; +import speeddial from './speeddial'; +import splitbutton from './splitbutton'; +import splitter from './splitter'; +import splitterpanel from './splitterpanel'; +import stepper from './stepper'; +import steps from './steps'; +import tabmenu from './tabmenu'; +import tabview from './tabview'; +import tag from './tag'; +import terminal from './terminal'; +import textarea from './textarea'; +import tieredmenu from './tieredmenu'; +import timeline from './timeline'; +import toast from './toast'; +import togglebutton from './togglebutton'; +import toolbar from './toolbar'; +import tooltip from './tooltip'; +import tree from './tree'; +import treeselect from './treeselect'; +import treetable from './treetable'; +import tristatecheckbox from './tristatecheckbox'; + +export default { + global, + directives: { + badge: badgedirective, + ripple, + tooltip + }, + + //forms + autocomplete, + dropdown, + inputnumber, + inputtext, + calendar, + checkbox, + radiobutton, + inputswitch, + selectbutton, + slider, + chips, + rating, + multiselect, + togglebutton, + cascadeselect, + listbox, + colorpicker, + inputgroup, + inputgroupaddon, + inputmask, + knob, + treeselect, + tristatecheckbox, + textarea, + password, + iconfield, + floatlabel, + inputotp, + + //buttons + button, + splitbutton, + speeddial, + + //data + paginator, + datatable, + tree, + dataview, + dataviewlayoutoptions, + organizationchart, + orderlist, + picklist, + treetable, + timeline, + + //panels + accordion, + panel, + fieldset, + card, + tabview, + divider, + toolbar, + scrollpanel, + splitter, + splitterpanel, + stepper, + deferred, + + //file + fileupload, + + //menu + contextmenu, + menu, + menubar, + steps, + tieredmenu, + breadcrumb, + panelmenu, + megamenu, + dock, + tabmenu, + + //overlays + dialog, + overlaypanel, + sidebar, + confirmpopup, + + //messages + message, + inlinemessage, + toast, + + //media + carousel, + galleria, + image, + + //misc + badge, + avatar, + avatargroup, + tag, + chip, + progressbar, + skeleton, + scrolltop, + terminal, + blockui, + metergroup, + inplace, + progressspinner +}; diff --git a/admin_front/presets/lara/inlinemessage/index.js b/admin_front/presets/lara/inlinemessage/index.js new file mode 100644 index 0000000..f5e7c83 --- /dev/null +++ b/admin_front/presets/lara/inlinemessage/index.js @@ -0,0 +1,36 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex items-center justify-center align-top gap-2', + 'p-3 m-0 rounded-md dark:border', + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error' + }, + { + 'dark:border-blue-400': props.severity == 'info', + 'dark:border-green-400': props.severity == 'success', + 'dark:border-orange-400': props.severity == 'warn', + 'dark:border-red-400': props.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error' + } + ] + }), + icon: { + class: 'text-base' + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'font-medium' + ] + } +}; diff --git a/admin_front/presets/lara/inplace/index.js b/admin_front/presets/lara/inplace/index.js new file mode 100644 index 0000000..14ee3ba --- /dev/null +++ b/admin_front/presets/lara/inplace/index.js @@ -0,0 +1,27 @@ +export default { + display: { + class: [ + // Display + 'inline', + + // Spacing + 'p-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 hover:text-surface-700 dark:hover:bg-surface-700/80 dark:hover:text-white/80', + + // Transitions + 'transition', + 'duration-200', + + // Misc + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/lara/inputgroup/index.js b/admin_front/presets/lara/inputgroup/index.js new file mode 100644 index 0000000..046c9dc --- /dev/null +++ b/admin_front/presets/lara/inputgroup/index.js @@ -0,0 +1,5 @@ +export default { + root: { + class: ['flex items-stretch', 'w-full'] + } +}; diff --git a/admin_front/presets/lara/inputgroupaddon/index.js b/admin_front/presets/lara/inputgroupaddon/index.js new file mode 100644 index 0000000..e926aee --- /dev/null +++ b/admin_front/presets/lara/inputgroupaddon/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex + 'flex items-center justify-center', + + // Shape + 'first:rounded-l-md', + 'last:rounded-r-md', + 'border-y', + + 'last:border-r', + 'border-l', + 'border-r-0', + + // Space + 'p-3', + + // Size + 'min-w-[3rem]', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-400', + 'border-surface-300 dark:border-surface-600' + ] + } +}; diff --git a/admin_front/presets/lara/inputmask/index.js b/admin_front/presets/lara/inputmask/index.js new file mode 100644 index 0000000..6885ec5 --- /dev/null +++ b/admin_front/presets/lara/inputmask/index.js @@ -0,0 +1,39 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Spacing + 'm-0 p-3', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50': !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'rounded-md', + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/lara/inputnumber/index.js b/admin_front/presets/lara/inputnumber/index.js new file mode 100644 index 0000000..1fd5ecd --- /dev/null +++ b/admin_front/presets/lara/inputnumber/index.js @@ -0,0 +1,165 @@ +export default { + root: ({ props, parent }) => ({ + class: [ + // Flex + 'inline-flex', + { 'flex-col': props.showButtons && props.buttonLayout == 'vertical' }, + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Shape + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' && !props.showButtons }, + { 'border-0 border-y border-l last:border-r border-surface-300 dark:border-surface-600': parent.instance.$name == 'InputGroup' && !props.showButtons }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + //Sizing + { '!w-16': props.showButtons && props.buttonLayout == 'vertical' } + ] + }), + input: { + root: ({ parent, context }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Font + 'leading-[normal]', + + //Text + { 'text-center': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Spacing + 'p-3', + 'm-0', + + // Shape + 'rounded-lg', + { 'rounded-tr-none rounded-br-none': parent.props.showButtons }, + { 'rounded-tl-none rounded-bl-none': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-none': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + { 'border-0': parent.instance.$parentInstance?.$name == 'InputGroup' && !parent.props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !parent.props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { 'hover:border-primary': !parent.props.invalid }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10', + { 'opacity-60 select-none pointer-events-none cursor-default': context.disabled }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$parentInstance?.$name == 'FloatLabel' && parent.state.d_modelValue !== null }, + + //Position + { 'order-2': parent.props.buttonLayout == 'horizontal' || parent.props.buttonLayout == 'vertical' } + ] + }) + }, + buttongroup: ({ props }) => ({ + class: [ + // Flex + 'flex', + 'flex-col' + ] + }), + + incrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-3': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'order-1': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border-primary', + + // Sizing + 'w-[3rem]', + { 'px-4 py-3': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + { 'p-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'w-full': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-tl-none rounded-br-none rounded-bl-none': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'rounded-bl-none rounded-tl-none': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-bl-none rounded-br-none': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-hover hover:border-primary-hover', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + }, + decrementbutton: { + root: ({ parent }) => ({ + class: [ + // Display + 'flex flex-auto', + + // Alignment + 'items-center', + 'justify-center', + 'text-center align-bottom', + + //Position + 'relative', + { 'order-1': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'order-3': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Colors + 'text-primary-inverse', + 'bg-primary', + 'border-primary', + + // Sizing + 'w-[3rem]', + { 'px-4 py-3': parent.props.showButtons && parent.props.buttonLayout !== 'stacked' }, + { 'p-0': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'w-full': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + // Shape + 'rounded-md', + { 'rounded-tr-none rounded-tl-none rounded-bl-none': parent.props.showButtons && parent.props.buttonLayout == 'stacked' }, + { 'rounded-tr-none rounded-br-none ': parent.props.showButtons && parent.props.buttonLayout == 'horizontal' }, + { 'rounded-tr-none rounded-tl-none ': parent.props.showButtons && parent.props.buttonLayout == 'vertical' }, + + //States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'hover:bg-primary-hover hover:border-primary-hover', + + //Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: 'h-0 w-0' + } + } +}; diff --git a/admin_front/presets/lara/inputotp/index.js b/admin_front/presets/lara/inputotp/index.js new file mode 100644 index 0000000..706f57c --- /dev/null +++ b/admin_front/presets/lara/inputotp/index.js @@ -0,0 +1,62 @@ +export default { + root: { + class: [ + // Alignment + 'flex items-center', + 'gap-2' + ] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Flex & Alignment + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + 'text-center', + + // Spacing + 'm-0', + { + 'p-3': props.size == null + }, + + // Size + 'w-10', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 ml-[-1px]': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + } +}; diff --git a/admin_front/presets/lara/inputswitch/index.js b/admin_front/presets/lara/inputswitch/index.js new file mode 100644 index 0000000..14003bf --- /dev/null +++ b/admin_front/presets/lara/inputswitch/index.js @@ -0,0 +1,80 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-block relative', + 'w-12 h-7', + 'rounded-2xl', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + slider: ({ props }) => ({ + class: [ + // Position + 'absolute top-0 left-0 right-0 bottom-0', + { 'before:transform before:translate-x-5': props.modelValue == props.trueValue }, + + // Shape + 'rounded-2xl', + + // Before: + 'before:absolute before:top-1/2 before:left-1', + 'before:-mt-2.5', + 'before:h-5 before:w-5', + 'before:rounded-full', + 'before:duration-200', + 'before:bg-surface-0 before:dark:bg-surface-900', + + // Colors + 'border', + { + 'bg-surface-200 dark:bg-surface-700': !(props.modelValue == props.trueValue), + 'bg-primary': props.modelValue == props.trueValue + }, + + { 'border-transparent': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { 'peer-hover:bg-surface-300 dark:peer-hover:bg-surface-600 ': !(props.modelValue == props.trueValue) && !props.disabled }, + { 'peer-hover:bg-primary-hover ': props.modelValue == props.trueValue && !props.disabled }, + 'peer-focus-visible:ring peer-focus-visible:ring-primary-400/50 dark:peer-focus-visible:ring-primary-300/50', + + // Transition + 'transition-colors duration-200', + + // Misc + 'cursor-pointer' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-[2.5rem]', + 'outline-none', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + } +}; diff --git a/admin_front/presets/lara/inputtext/index.js b/admin_front/presets/lara/inputtext/index.js new file mode 100644 index 0000000..45f5940 --- /dev/null +++ b/admin_front/presets/lara/inputtext/index.js @@ -0,0 +1,51 @@ +export default { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'px-4 py-4': props.size == 'large', + 'px-2 py-2': props.size == 'small', + 'p-3': props.size == null + }, + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-800 dark:text-white/80', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + 'invalid:focus:ring-red-200', + 'invalid:hover:border-red-500', + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && context.filled }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/lara/knob/index.js b/admin_front/presets/lara/knob/index.js new file mode 100644 index 0000000..1d32002 --- /dev/null +++ b/admin_front/presets/lara/knob/index.js @@ -0,0 +1,44 @@ +export default { + root: ({ props }) => ({ + class: [ + // Misc + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: { + class: [ + // Stroke + 'stroke-current', + + // Color + 'stroke-surface-200 dark:stroke-surface-700', + + // Fill + 'fill-none', + + // Transition + 'transition duration-100 ease-in' + ] + }, + value: { + class: [ + // Animation + 'animate-dash-frame', + + // Color + 'stroke-primary', + + // Fill + 'fill-none' + ] + }, + label: { + class: [ + // Text Style + 'text-center text-xl', + + // Color + 'fill-surface-600 dark:fill-surface-200' + ] + } +}; diff --git a/admin_front/presets/lara/listbox/index.js b/admin_front/presets/lara/listbox/index.js new file mode 100644 index 0000000..244a338 --- /dev/null +++ b/admin_front/presets/lara/listbox/index.js @@ -0,0 +1,155 @@ +export default { + root: ({ props }) => ({ + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid } + ] + }), + wrapper: { + class: [ + // Overflow + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0 outline-none' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Colors + { + 'text-surface-700 dark:text-white/80': !context.focused && !context.selected, + 'bg-surface-200 dark:bg-surface-600/60': context.focused && !context.selected, + 'text-surface-700 dark:text-white/80': context.focused && !context.selected, + + 'text-primary-highlight-inverse': context.selected, + 'bg-primary-highlight': context.selected + }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:bg-primary-highlight-hover': context.selected }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + header: { + class: [ + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-600' + ] + }, + filtercontainer: { + class: 'relative' + }, + filterinput: { + class: [ + // Font + 'leading-none', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + } +}; diff --git a/admin_front/presets/lara/megamenu/index.js b/admin_front/presets/lara/megamenu/index.js new file mode 100644 index 0000000..2a0d5d0 --- /dev/null +++ b/admin_front/presets/lara/megamenu/index.js @@ -0,0 +1,198 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + + // Shape & Size + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700', + { 'p-2 items-center': props.orientation == 'horizontal', 'flex-col sm:w-48 p-0 py-1': props.orientation !== 'horizontal' } + ] + }), + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'py-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700 sm:bg-transparent dark:sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: ({ props }) => ({ + class: [ + 'sm:relative static', + { + 'sm:w-auto w-full': props.horizontal, + 'w-full': !props.horizontal + } + ] + }), + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.level < 1 && props.horizontal }, + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Size + 'py-3 pr-5 pl-9 sm:pl-5', + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }, + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.horizontal, + 'ml-auto': !props.horizontal + } + ] + }), + panel: ({ props }) => ({ + class: [ + // Size + 'w-auto', + + // Spacing + 'py-1', + 'm-0', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700', + + // Position + 'static sm:absolute', + 'z-10', + { + 'sm:left-full top-0': !props.horizontal + } + ] + }), + grid: { + class: 'flex flex-wrap sm:flex-nowrap' + }, + column: { + class: 'w-full sm:w-1/2' + }, + submenu: { + class: ['m-0 list-none', 'py-1 px-2 w-full sm:min-w-[14rem]'] + }, + submenuheader: { + class: [ + 'font-semibold', + + // Spacing + 'py-3 px-5', + 'm-0', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + menubutton: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/admin_front/presets/lara/menu/index.js b/admin_front/presets/lara/menu/index.js new file mode 100644 index 0000000..e1ed68d --- /dev/null +++ b/admin_front/presets/lara/menu/index.js @@ -0,0 +1,96 @@ +export default { + root: { + class: [ + // Sizing and Shape + 'min-w-[12rem]', + 'rounded-md', + // Spacing + 'py-2', + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white/80', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + // Colors + 'text-surface-700 dark:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:bg-surface-300/10 dark:text-white': context.focused + }, + // Transitions + 'transition-shadow', + 'duration-200', + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:bg-surface-700 dark:hover:bg-surface-400/10' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuheader: { + class: [ + // Font + 'font-bold', + // Spacing + 'm-0', + 'py-3 px-5', + // Shape + 'rounded-tl-none', + 'rounded-tr-none', + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'text-surface-700 dark:text-white' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/menubar/index.js b/admin_front/presets/lara/menubar/index.js new file mode 100644 index 0000000..afcffa4 --- /dev/null +++ b/admin_front/presets/lara/menubar/index.js @@ -0,0 +1,175 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'p-2', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: ({ props }) => ({ + class: [ + // Flexbox + 'sm:flex', + 'items-center', + 'flex-wrap', + 'flex-col sm:flex-row', + { hidden: !props?.mobileActive, flex: props?.mobileActive }, + + // Position + 'absolute sm:relative', + 'top-full left-0', + 'sm:top-auto sm:left-auto', + + // Size + 'w-full sm:w-auto', + + // Spacing + 'm-0', + 'py-1 sm:py-0 sm:p-0', + 'list-none', + + // Shape + 'shadow-md sm:shadow-none', + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-700 sm:bg-transparent', + + // Misc + 'outline-none' + ] + }), + menuitem: { + class: 'sm:relative sm:w-auto w-full static' + }, + content: ({ props, context }) => ({ + class: [ + // Shape + { 'rounded-md': props.root }, + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + }), + action: ({ context }) => ({ + class: [ + 'relative', + + // Flexbox + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Size + { + 'pl-9 sm:pl-5': context.level === 1, + 'pl-14 sm:pl-5': context.level === 2 + }, + 'leading-none', + + // Misc + 'select-none', + 'cursor-pointer', + 'no-underline ', + 'overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenuicon: ({ props }) => ({ + class: [ + { + 'ml-auto sm:ml-2': props.root, + 'ml-auto': !props.root + } + ] + }), + submenu: ({ props }) => ({ + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + { 'sm:absolute sm:left-full sm:top-0': props.level > 1 }, + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }), + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + }, + button: { + class: [ + // Flexbox + 'flex sm:hidden', + 'items-center justify-center', + + // Size + 'w-8', + 'h-8', + + // Shape + 'rounded-full', + // Color + 'text-surface-500 dark:text-white/80', + + // States + 'hover:text-surface-600 dark:hover:text-white/60', + 'hover:bg-surface-100 dark:hover:bg-surface-600/80', + 'focus:outline-none focus:outline-offset-0', + 'focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer', + 'no-underline' + ] + }, + end: { + class: 'ml-auto self-center' + } +}; diff --git a/admin_front/presets/lara/message/index.js b/admin_front/presets/lara/message/index.js new file mode 100644 index 0000000..c71e630 --- /dev/null +++ b/admin_front/presets/lara/message/index.js @@ -0,0 +1,87 @@ +export default { + root: ({ props }) => ({ + class: [ + // Spacing and Shape + 'my-4 mx-0', + 'rounded-md', + 'border-solid border-0 border-l-[6px]', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': props.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.severity == 'error' + }, + { + 'border-blue-500 dark:border-blue-400': props.severity == 'info', + 'border-green-500 dark:border-green-400': props.severity == 'success', + 'border-orange-500 dark:border-orange-400': props.severity == 'warn', + 'border-red-500 dark:border-red-400': props.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.severity == 'info', + 'text-green-700 dark:text-green-300': props.severity == 'success', + 'text-orange-700 dark:text-orange-300': props.severity == 'warn', + 'text-red-700 dark:text-red-300': props.severity == 'error' + } + ] + }), + wrapper: { + class: [ + // Flexbox + 'flex items-center', + + // Spacing + 'py-5 px-7' + ] + }, + icon: { + class: [ + // Sizing and Spacing + 'w-6 h-6', + 'text-lg leading-none mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'font-medium' + ] + }, + button: { + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/50 dark:hover:bg-surface-0/10', + + // Misc + 'overflow-hidden' + ] + }, + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-300', + leaveFromClass: 'max-h-40', + leaveActiveClass: 'overflow-hidden transition-all duration-300 ease-in', + leaveToClass: 'max-h-0 opacity-0 !m-0' + } +}; diff --git a/admin_front/presets/lara/metergroup/index.js b/admin_front/presets/lara/metergroup/index.js new file mode 100644 index 0000000..135c100 --- /dev/null +++ b/admin_front/presets/lara/metergroup/index.js @@ -0,0 +1,97 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex gap-4', + + { 'flex-col': props.orientation == 'horizontal', 'flex-row': props.orientation == 'vertical' } + ] + }), + metercontainer: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + + { 'flex-col': props.orientation === 'vertical' }, + + // Sizing + { 'w-2 h-full': props.orientation === 'vertical' }, + { 'h-2': props.orientation === 'horizontal' }, + + // Colors + 'bg-gray-200 dark:bg-gray-700', + + // Border Radius + 'rounded-lg' + ] + }), + meter: ({ props }) => ({ + class: [ + // Shape + 'border-0', + + // Rounded Corners - Horizontal + { + 'first:rounded-l-lg last:rounded-r-lg': props.orientation === 'horizontal' + }, + + // Rounded Corners - Vertical + { + 'first:rounded-t-lg last:rounded-b-lg': props.orientation === 'vertical' + }, + + // Colors + 'bg-primary' + ] + }), + labellist: ({ props }) => ({ + class: [ + // Display & Flexbox + 'flex flex-wrap', + + { 'gap-4': props.labelOrientation === 'horizontal' }, + + { 'gap-2': props.labelOrientation === 'vertical' }, + + { 'flex-col': props.labelOrientation === 'vertical' }, + + // Conditional Alignment - Horizontal + { + 'align-end': props.labelOrientation === 'horizontal' && props.labelPosition === 'end', + 'align-start': props.labelOrientation === 'horizontal' && props.labelPosition === 'start' + }, + + // Conditional Alignment - Vertical + { + 'justify-end': props.labelOrientation === 'vertical' && props.labelPosition === 'end', + 'justify-start': props.labelOrientation === 'vertical' && props.labelPosition === 'start' + }, + + // List Styling + 'm-0 p-0 list-none' + ] + }), + labellistitem: { + class: [ + // Flexbox + 'inline-flex', + 'items-center', + 'gap-2' + ] + }, + labellisttype: { + class: [ + // Display + 'inline-flex', + + // Background Color + 'bg-primary', + + // Size + 'w-2 h-2', + + // Rounded Shape + 'rounded-full' + ] + } +}; diff --git a/admin_front/presets/lara/multiselect/index.js b/admin_front/presets/lara/multiselect/index.js new file mode 100644 index 0000000..284a043 --- /dev/null +++ b/admin_front/presets/lara/multiselect/index.js @@ -0,0 +1,544 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-primary': !props.invalid }, + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + labelContainer: { + class: 'overflow-hidden flex flex-auto cursor-pointer ' + }, + label: ({ props }) => ({ + class: [ + 'leading-[normal]', + 'block ', + + // Spacing + { + 'p-3': props.display !== 'chip', + 'py-3 px-3': props.display === 'chip' && !props?.modelValue?.length, + 'py-[0.375rem] px-3': props.display === 'chip' && props?.modelValue?.length > 0 + }, + + // Color + { 'text-surface-800 dark:text-white/80': props.modelValue?.length, 'text-surface-400 dark:text-surface-500': !props.modelValue?.length }, + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Transitions + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }), + token: { + class: [ + // Flex + 'inline-flex items-center', + + // Spacings + 'py-1.5 px-3 mr-2', + + // Shape + 'rounded-[1.14rem]', + + // Colors + 'bg-surface-200 dark:bg-surface-700', + 'text-surface-700 dark:text-white/70', + + // Misc + 'cursor-default' + ] + }, + removeTokenIcon: { + class: [ + // Shape + 'rounded-md leading-6', + + // Spacing + 'ml-2', + + // Size + 'w-4 h-4', + + // Transition + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + header: { + class: [ + 'flex items-center justify-between', + // Spacing + 'py-3 px-5', + 'm-0', + + //Shape + 'border-b', + 'rounded-tl-md', + 'rounded-tr-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-100 dark:bg-surface-800', + 'border-surface-300 dark:border-surface-700' + ] + }, + headerCheckboxContainer: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + headerCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + itemCheckbox: { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: 'w-4 h-4 inline-block' + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Flexbox + 'flex items-center', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context.focused && !context.selected }, + { 'bg-surface-200 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': context.focused && !context.selected }, + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }), + itemgroup: { + class: [ + //Font + 'font-bold', + + // Spacing + 'm-0', + 'p-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-600/80', + + // Misc + 'cursor-auto' + ] + }, + filtercontainer: { + class: 'relative w-full mx-2' + }, + filterinput: { + class: [ + // Font + 'leading-[normal]', + + // Sizing + 'pr-7 py-3 px-3', + '-mr-7', + 'w-full', + + //Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-900', + 'border-surface-200 dark:border-surface-700', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + + // Shape + 'border', + 'rounded-lg', + 'appearance-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary', + 'focus:ring focus:outline-none focus:outline-offset-0', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'appearance-none' + ] + }, + filtericon: { + class: ['absolute', 'top-1/2 right-3', '-mt-2'] + }, + clearicon: { + class: [ + // Color + 'text-surface-500', + + // Position + 'absolute', + 'top-1/2', + 'right-12', + + // Spacing + '-mt-2' + ] + }, + emptymessage: { + class: [ + // Font + 'leading-none', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-800 dark:text-white/80', + 'bg-transparent' + ] + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/orderlist/index.js b/admin_front/presets/lara/orderlist/index.js new file mode 100644 index 0000000..99111d0 --- /dev/null +++ b/admin_front/presets/lara/orderlist/index.js @@ -0,0 +1,258 @@ +export default { + root: { + class: [ + // Flexbox + 'flex' + ] + }, + controls: { + class: [ + // Flexbox & Alignment + 'flex flex-col justify-center gap-2', + + // Spacing + 'p-5' + ] + }, + moveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + container: { + class: ['flex-auto'] + }, + header: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + list: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3 px-5 m-0', + + // Shape + 'border-none', + + // Transition + 'transition duration-200', + + // Color + { 'text-surface-700 dark:text-white/80 bg-surface-0 dark:bg-surface-900': !context.active }, + { 'text-primary-highlight-inverse bg-primary-highlight': context.active }, + + // State + { + 'hover:bg-surface-100 dark:hover:bg-surface-700': !context.active, + 'hover:bg-primary-highlight-hover': context.active + }, + + // Misc + 'cursor-pointer overflow-hidden' + ] + }) +}; diff --git a/admin_front/presets/lara/organizationchart/index.js b/admin_front/presets/lara/organizationchart/index.js new file mode 100644 index 0000000..93368ad --- /dev/null +++ b/admin_front/presets/lara/organizationchart/index.js @@ -0,0 +1,138 @@ +export default { + table: { + class: [ + // Spacing & Position + 'mx-auto my-0', + + // Table Style + 'border-spacing-0 border-separate' + ] + }, + cell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + node: ({ props, context }) => ({ + class: [ + 'relative inline-block', + + // Spacing + 'p-5', + + // Shape + 'border', + + // Color + { + 'text-surface-600 dark:text-white/80': !context?.selected, + 'bg-surface-0 dark:bg-surface-800': !context?.selected, + 'border-surface-200 dark:border-surface-700': !context?.selected, + 'text-primary-highlight-inverse': context?.selected, + 'bg-primary-highlight': context?.selected, + 'border-primary-200 dark:border-primary-600': context?.selected + }, + + // States + { + 'hover:bg-surface-100 dark:hover:bg-surface-700': context?.selectable && !context?.selected, + 'hover:bg-primary-highlight-hover': context?.selectable && context?.selected + }, + + { 'cursor-pointer': context?.selectable } + ] + }), + linecell: { + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3' + ] + }, + linedown: { + class: [ + // Spacing + 'mx-auto my-0', + + // Size + 'w-px h-[20px]', + + // Color + 'bg-surface-200 dark:bg-surface-700' + ] + }, + lineleft: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none border-r', + { 'border-t': context.lineTop }, + + // Color + 'border-surface-200 dark:border-surface-700' + ] + }), + lineright: ({ context }) => ({ + class: [ + // Alignment + 'text-center align-top', + + // Spacing + 'py-0 px-3', + + // Shape + 'rounded-none', + + // Color + { 'border-t border-surface-200 dark:border-surface-700': context.lineTop } + ] + }), + nodecell: { + class: 'text-center align-top py-0 px-3' + }, + nodetoggler: { + class: [ + // Position + 'absolute bottom-[-0.75rem] left-2/4 -ml-3', + 'z-20', + + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-6 h-6', + + // Shape + 'rounded-full', + + // Color + 'bg-inherit text-inherit', + + // Focus + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'cursor-pointer no-underline select-none' + ] + }, + nodetogglericon: { + class: [ + // Position + 'relative inline-block', + + // Size + 'w-4 h-4' + ] + } +}; diff --git a/admin_front/presets/lara/overlaypanel/index.js b/admin_front/presets/lara/overlaypanel/index.js new file mode 100644 index 0000000..3b17e33 --- /dev/null +++ b/admin_front/presets/lara/overlaypanel/index.js @@ -0,0 +1,40 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md shadow-lg', + 'border-0 dark:border', + + // Position + 'absolute left-0 top-0 mt-2', + 'z-40 transform origin-center', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'dark:border-surface-700', + + // Before: Triangle + 'before:absolute before:-top-[9px] before:-ml-[9px] before:left-[calc(var(--overlayArrowLeft,0)+1.25rem)] z-0', + 'before:w-0 before:h-0', + 'before:border-transparent before:border-solid', + 'before:border-x-[8px] before:border-[8px]', + 'before:border-t-0 before:border-b-surface-300/10 dark:before:border-b-surface-700', + + 'after:absolute after:-top-2 after:-ml-[8px] after:left-[calc(var(--overlayArrowLeft,0)+1.25rem)]', + 'after:w-0 after:h-0', + 'after:border-transparent after:border-solid', + 'after:border-x-[0.5rem] after:border-[0.5rem]', + 'after:border-t-0 after:border-b-surface-0 dark:after:border-b-surface-800' + ] + }, + content: { + class: 'p-5 items-center flex' + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/paginator/index.js b/admin_front/presets/lara/paginator/index.js new file mode 100644 index 0000000..5b5b790 --- /dev/null +++ b/admin_front/presets/lara/paginator/index.js @@ -0,0 +1,528 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-center flex-wrap', + + // Spacing + 'px-4 py-2', + + // Shape + 'border-0', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-500 dark:text-white/60' + ] + }, + firstpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + previouspagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + nextpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + lastpagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/60', + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + pagebutton: ({ context }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full dark:rounded-md', + + // Size + 'min-w-[3rem] h-12 m-[0.143rem]', + 'leading-none', + + // Color + 'text-surface-500 dark:text-white/80', + { + 'bg-primary-highlight border-primary-highlight text-primary-highlight-inverse': context.active + }, + + // State + { + 'hover:bg-surface-50 dark:hover:bg-surface-700/70': !context.disabled && !context.active, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !context.disabled + }, + + // Transition + 'transition duration-200', + + // Misc + 'user-none overflow-hidden', + { 'cursor-default pointer-events-none opacity-60': context.disabled } + ] + }), + rowperpagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-12', + 'rounded-md', + + // Spacing + 'mx-2', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary', + { 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + input: { + class: [ + //Font + 'leading-[normal]', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'p-3 pr-0', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context.focused && !context.selected }, + { 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': context.focused && !context.selected }, + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + jumptopageinput: { + root: { + class: 'inline-flex mx-2' + }, + input: { + root: { + class: [ + 'relative', + + //Font + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // Sizing and Spacing + 'w-[1%] max-w-[3rem]', + 'p-3 m-0', + + //Shape + 'rounded-md', + + // Transitions + 'transition', + 'duration-200', + + // States + 'hover:border-primary', + 'focus:outline-none focus:shadow-none', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Misc + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + } + } + }, + jumptopagedropdown: { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'h-12', + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-700', + + // Transitions + 'transition-all', + 'duration-200', + + // States + 'hover:border-primary', + { 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50': !state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + input: { + class: [ + //Font + 'leading-none', + + // Display + 'block', + 'flex-auto', + + // Color and Background + 'bg-transparent', + 'border-0', + 'text-surface-800 dark:text-white/80', + + // Sizing and Spacing + 'w-[1%]', + 'p-3', + + //Shape + 'rounded-none', + + // Transitions + 'transition', + 'duration-200', + + // States + 'focus:outline-none focus:shadow-none', + + // Misc + 'relative', + 'cursor-pointer', + 'overflow-hidden overflow-ellipsis', + 'whitespace-nowrap', + 'appearance-none' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + list: { + class: 'py-3 list-none m-0' + }, + item: ({ context }) => ({ + class: [ + // Font + 'font-normal', + 'leading-none', + + // Position + 'relative', + + // Shape + 'border-0', + 'rounded-none', + + // Spacing + 'm-0', + 'py-3 px-5', + + // Color + { 'text-surface-700 dark:text-white/80': !context.focused && !context.selected }, + { 'bg-surface-50 dark:bg-surface-600/60 text-surface-700 dark:text-white/80': context.focused && !context.selected }, + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + + //States + { 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.focused && !context.selected }, + { 'hover:text-surface-700 hover:bg-surface-100 dark:hover:text-white dark:hover:bg-surface-600/80': context.focused && !context.selected }, + + // Transitions + 'transition-shadow', + 'duration-200', + + // Misc + 'cursor-pointer', + 'overflow-hidden', + 'whitespace-nowrap' + ] + }) + }, + start: { + class: 'mr-auto' + }, + end: { + class: 'ml-auto' + } +}; diff --git a/admin_front/presets/lara/panel/index.js b/admin_front/presets/lara/panel/index.js new file mode 100644 index 0000000..c24ad8d --- /dev/null +++ b/admin_front/presets/lara/panel/index.js @@ -0,0 +1,91 @@ +export default { + header: ({ props }) => ({ + class: [ + // Flex + 'flex items-center justify-between', + + // Colors + 'text-surface-700 dark:text-surface-0/80', + 'bg-surface-50 dark:bg-surface-900', + 'border border-surface-200 dark:border-surface-700', + + //Shape + 'rounded-tl-lg rounded-tr-lg', + + // Conditional Spacing + { 'p-5': !props.toggleable, 'py-3 px-5': props.toggleable } + ] + }), + title: { + class: 'leading-none font-bold' + }, + toggler: { + class: [ + // Alignments + 'inline-flex items-center justify-center', + 'relative', + + // Sized + 'w-8 h-8', + 'm-0 p-0', + + //Shape + 'border-0 rounded-full', + + //Color + 'bg-transparent', + 'text-surface-600 dark:text-surface-0/80', + + // States + 'hover:text-surface-800 dark:hover:text-surface-0/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 focus-visible:ring-inset dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition-all duration-200 ease-in-out', + + // Misc + 'overflow-hidden no-underline', + 'cursor-pointer' + ] + }, + togglerIcon: { + class: 'inline-block' + }, + content: { + class: [ + // Spacing + 'p-5', + + // Shape + 'border border-t-0 last:rounded-br-lg last:rounded-bl-lg', + + //Color + 'border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + footer: { + class: [ + // Spacing + 'py-3 p-5', + + // Shape + 'border border-t-0 rounded-br-lg rounded-bl-lg', + + //Color + 'border-surface-200 dark:border-surface-700', + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/lara/panelmenu/index.js b/admin_front/presets/lara/panelmenu/index.js new file mode 100644 index 0000000..2ea61e5 --- /dev/null +++ b/admin_front/presets/lara/panelmenu/index.js @@ -0,0 +1,127 @@ +export default { + panel: { + class: 'mb-1' + }, + header: { + class: ['rounded-md', 'outline-none', 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50'] + }, + headercontent: ({ context, instance }) => ({ + class: [ + // Shape + 'rounded-t-md', + { 'rounded-br-md rounded-bl-md': !context.active || instance.activeItem?.items === undefined, 'rounded-br-0 rounded-bl-0': context.active && instance.activeItem?.items !== undefined }, + + // Color + 'border border-surface-200 dark:border-surface-700', + 'bg-surface-50 dark:bg-surface-800', + 'text-surface-600 dark:text-surface-0/80', + { 'text-surface-900': context.active }, + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/80', + 'hover:text-surface-900', + + // Transition + 'transition duration-200 ease-in-out', + 'transition-shadow duration-200' + ] + }), + headeraction: { + class: [ + 'relative', + + // Font + 'font-bold', + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'p-5', + + // Misc + 'select-none cursor-pointer no-underline' + ] + }, + headerlabel: { + class: 'leading-none' + }, + headerIcon: { + class: 'mr-2' + }, + submenuicon: { + class: 'mr-2' + }, + menucontent: { + class: [ + // Spacing + 'py-2', + + // Shape + 'border border-t-0', + 'rounded-t-none rounded-br-md rounded-bl-md', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: ['outline-none', 'm-0 p-0 list-none'] + }, + content: { + class: [ + // Shape + 'border-none rounded-none', + + // Color + 'text-surface-700 dark:text-white/80', + + // Transition + 'transition-shadow duration-200' + ] + }, + action: ({ context }) => ({ + class: [ + 'relative', + + // Font + 'leading-none', + + // Flex & Alignments + 'flex items-center', + + // Spacing + 'py-3 px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // States + 'hover:bg-surface-100 dark:hover:bg-surface-700/80 hover:text-surface-700 dark:hover:text-white/80', + { + 'bg-surface-200 text-surface-700 dark:text-white/80 dark:bg-surface-600/90': context.focused + }, + + // Misc + 'cursor-pointer no-underline', + 'select-none overflow-hidden' + ] + }), + icon: { + class: 'mr-2' + }, + submenu: { + class: 'p-0 pl-4 m-0 list-none' + }, + transition: { + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + } +}; diff --git a/admin_front/presets/lara/password/index.js b/admin_front/presets/lara/password/index.js new file mode 100644 index 0000000..e294b87 --- /dev/null +++ b/admin_front/presets/lara/password/index.js @@ -0,0 +1,121 @@ +export default { + root: ({ props }) => ({ + class: [ + 'inline-flex relative', + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + }, + { '[&>input]:pr-10': props.toggleMask } + ] + }), + panel: { + class: [ + // Spacing + 'p-5', + + // Shape + 'border-0 dark:border', + 'shadow-md rounded-md', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + meter: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-3', + + // Spacing + 'mb-2', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + meterlabel: ({ instance }) => ({ + class: [ + // Size + 'h-full', + + // Colors + { + 'bg-red-500 dark:bg-red-400/50': instance?.meter?.strength == 'weak', + 'bg-orange-500 dark:bg-orange-400/50': instance?.meter?.strength == 'medium', + 'bg-green-500 dark:bg-green-400/50': instance?.meter?.strength == 'strong' + }, + + // Transitions + 'transition-all duration-1000 ease-in-out' + ] + }), + showicon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + hideicon: { + class: ['absolute top-1/2 right-3 -mt-2 z-10', 'text-surface-600 dark:text-white/70'] + }, + input: { + root: ({ props, context, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Flex + { 'flex-1 w-[1%]': parent.instance.$name == 'InputGroup' }, + + // Spacing + 'm-0', + { + 'px-4 py-4': props.size == 'large', + 'px-2 py-2': props.size == 'small', + 'p-3': props.size == null + }, + 'w-full', + + // Shape + { 'rounded-md': parent.instance.$name !== 'InputGroup' }, + { 'first:rounded-l-md rounded-none last:rounded-r-md': parent.instance.$name == 'InputGroup' }, + { 'border-0 border-y border-l last:border-r': parent.instance.$name == 'InputGroup' }, + { 'first:ml-0 -ml-px': parent.instance.$name == 'InputGroup' && !props.showButtons }, + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !parent.props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': parent.props.invalid }, + + // States + { + 'hover:border-primary': !context.disabled && !parent.props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50 focus:z-10': !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$parentInstance?.$name == 'FloatLabel' && parent.props.modelValue !== null && parent.props.modelValue?.length !== 0 }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/picklist/index.js b/admin_front/presets/lara/picklist/index.js new file mode 100644 index 0000000..c5cd1fe --- /dev/null +++ b/admin_front/presets/lara/picklist/index.js @@ -0,0 +1,651 @@ +export default { + root: { + class: [ + // Flexbox + 'flex lg:flex-row flex-col' + ] + }, + sourcecontrols: { + class: [ + // Flexbox & Alignment + 'flex lg:flex-col justify-center gap-2', + + // Spacing + 'p-5' + ] + }, + sourcemoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcemovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + sourcewrapper: { + class: 'grow shrink basis-2/4' + }, + sourceheader: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + sourcelist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + item: ({ context }) => ({ + class: [ + // Position + 'relative', + + // Spacing + 'py-3 px-5 m-0', + + // Shape + 'border-none', + + // Transition + 'transition duration-200', + + // Color + { 'text-surface-700 dark:text-white/80 bg-surface-0 dark:bg-surface-900': !context.active }, + { 'text-primary-highlight-inverse bg-primary-highlight': context.active }, + + // State + { + 'hover:bg-surface-100 dark:hover:bg-surface-700': !context.active, + 'hover:bg-primary-highlight-hover': context.active + }, + + // Misc + 'cursor-pointer overflow-hidden' + ] + }), + buttons: { + class: 'flex lg:flex-col justify-center gap-2 p-5' + }, + movetotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltotargetbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movetosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + movealltosourcebutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetcontrols: { + class: 'flex lg:flex-col justify-center gap-2 p-5' + }, + targetmoveupbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovetopbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovedownbutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetmovebottombutton: { + root: ({ context }) => ({ + class: [ + // Flexbox & Alignment + 'relative inline-flex items-center justify-center', + + // Shape + 'rounded-md', + + // Color + 'text-primary-inverse', + 'bg-primary', + 'border border-primary', + + // Spacing & Size + 'w-12', + 'm-0', + 'px-0 py-3', + + // Transitions + 'transition duration-200 ease-in-out', + + // State + 'hover:bg-primary-hover hover:border-primary-hover', + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary/50', + { 'cursor-default pointer-events-none opacity-60': context.disabled }, + + // Interactivity + 'cursor-pointer user-select-none' + ] + }), + label: { + class: [ + // Flexbox + 'flex-initial', + + // Size + 'w-0' + ] + } + }, + targetwrapper: { + class: 'grow shrink basis-2/4' + }, + targetheader: { + class: [ + 'font-bold', + + // Shape + 'border-b-0 rounded-t-md', + + // Spacing + 'p-5', + + // Color + 'text-surface-700 dark:text-white/80', + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + targetlist: { + class: [ + // Spacing + 'list-none m-0 p-0', + + // Size + 'min-h-[12rem] max-h-[24rem]', + + // Shape + 'rounded-b-md', + + // Color + 'text-surface-600 dark:text-white/80', + 'bg-surface-0 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700', + + // Spacing + 'py-3 px-0', + + // Focus & Outline + 'outline-none', + + // Misc + 'overflow-auto' + ] + }, + transition: { + enterFromClass: '!transition-none', + enterActiveClass: '!transition-none', + leaveActiveClass: '!transition-none', + leaveToClass: '!transition-none' + } +}; diff --git a/admin_front/presets/lara/progressbar/index.js b/admin_front/presets/lara/progressbar/index.js new file mode 100644 index 0000000..fe251b9 --- /dev/null +++ b/admin_front/presets/lara/progressbar/index.js @@ -0,0 +1,55 @@ +export default { + root: { + class: [ + // Position and Overflow + 'overflow-hidden', + 'relative', + + // Shape and Size + 'border-0', + 'h-6', + 'rounded-md', + + // Colors + 'bg-surface-100 dark:bg-surface-700' + ] + }, + value: ({ props }) => ({ + class: [ + // Flexbox & Overflow & Position + { 'absolute flex items-center justify-center overflow-hidden': props.mode !== 'indeterminate' }, + + // Colors + 'bg-primary', + + // Spacing & Sizing + 'm-0', + { 'h-full w-0': props.mode !== 'indeterminate' }, + + // Shape + 'border-0', + + // Transitions + { + 'transition-width duration-1000 ease-in-out': props.mode !== 'indeterminate', + 'progressbar-value-animate': props.mode == 'indeterminate' + }, + + // Before & After (indeterminate) + { + 'before:absolute before:top-0 before:left-0 before:bottom-0 before:bg-inherit ': props.mode == 'indeterminate', + 'after:absolute after:top-0 after:left-0 after:bottom-0 after:bg-inherit after:delay-1000': props.mode == 'indeterminate' + } + ] + }), + label: { + class: [ + // Flexbox + 'inline-flex', + + // Font and Text + 'text-white dark:text-surface-900', + 'leading-6' + ] + } +}; diff --git a/admin_front/presets/lara/progressspinner/index.js b/admin_front/presets/lara/progressspinner/index.js new file mode 100644 index 0000000..12ef4f8 --- /dev/null +++ b/admin_front/presets/lara/progressspinner/index.js @@ -0,0 +1,51 @@ +export default { + root: { + class: [ + // Position + 'relative', + 'mx-auto', + + // Sizing + 'w-28', + 'h-28', + + // Flexbox + 'inline-block', + + // Pseudo-Elements + 'before:block', + 'before:pt-full' + ] + }, + spinner: { + class: [ + // Position + 'absolute', + 'top-0', + 'bottom-0', + 'left-0', + 'right-0', + 'm-auto', + + // Sizing + 'w-full', + 'h-full', + + // Transformations + 'transform', + 'origin-center', + + // Animations + 'animate-spin' + ] + }, + circle: { + class: [ + // Colors + 'text-red-500', + + // Misc + 'progress-spinner-circle' + ] + } +}; diff --git a/admin_front/presets/lara/radiobutton/index.js b/admin_front/presets/lara/radiobutton/index.js new file mode 100644 index 0000000..06cbd8f --- /dev/null +++ b/admin_front/presets/lara/radiobutton/index.js @@ -0,0 +1,104 @@ +export default { + root: { + class: [ + 'relative', + + // Flexbox & Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Flexbox + 'flex justify-center items-center', + + // Size + 'w-[1.571rem] h-[1.571rem]', + + // Shape + 'border-2', + 'rounded-full', + + // Transition + 'transition duration-200 ease-in-out', + + // Colors + { + 'text-surface-700 dark:text-white/80': props.value !== props.modelValue && props.value !== undefined, + 'bg-surface-0 dark:bg-surface-900': props.value !== props.modelValue && props.value !== undefined, + 'border-surface-300 dark:border-surface-700': props.value !== props.modelValue && props.value !== undefined && !props.invalid, + 'border-primary': props.value == props.modelValue && props.value !== undefined, + 'bg-primary': props.value == props.modelValue && props.value !== undefined + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:border-primary dark:peer-hover:border-primary': !props.disabled && !props.invalid, + 'peer-hover:border-primary-hover peer-hover:bg-primary-hover': !props.disabled && props.value == props.modelValue && props.value !== undefined, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'opacity-60 cursor-default': props.disabled + } + ] + }), + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + 'block', + + // Shape + 'rounded-full', + + // Size + 'w-[0.857rem] h-[0.857rem]', + + // Colors + 'bg-surface-0 dark:bg-surface-900', + + // Conditions + { + 'backface-hidden scale-10 invisible': props.value !== props.modelValue, + 'transform visible scale-[1.1]': props.value == props.modelValue + }, + + // Transition + 'transition duration-200' + ] + }) +}; diff --git a/admin_front/presets/lara/rating/index.js b/admin_front/presets/lara/rating/index.js new file mode 100644 index 0000000..371f7e2 --- /dev/null +++ b/admin_front/presets/lara/rating/index.js @@ -0,0 +1,92 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Flex & Alignment + 'flex items-center', + 'gap-2', + + // Misc + { + 'opacity-60 select-none pointer-events-none cursor-default': props.disabled + } + ] + }), + cancelitem: ({ context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + //State + { + 'outline-none ring ring-primary-500/50 dark:ring-primary-400/50': context.focused + }, + + // Misc + 'cursor-pointer' + ] + }), + cancelicon: { + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-red-500 dark:text-red-400', + + // State + 'hover:text-red-600 dark:hover:text-red-300', + + // Transition + 'transition duration-200 ease-in' + ] + }, + item: ({ props, context }) => ({ + class: [ + // Flex & Alignment + 'inline-flex items-center', + + // State + { + 'outline-none ring ring-primary-500/50 dark:ring-primary-400/50': context.focused + }, + + // Misc + { + 'cursor-pointer': !props.readonly, + 'cursor-default': props.readonly + } + ] + }), + officon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-surface-700 dark:text-surface-0/80', + + // State + { 'hover:text-primary-500 dark:hover:text-primary-400': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }), + onicon: ({ props }) => ({ + class: [ + // Size + 'w-5 h-5', + + // Color + 'text-primary', + + // State + { 'hover:text-primary-600 dark:hover:text-primary-300': !props.readonly }, + + // Transition + 'transition duration-200 ease-in' + ] + }) +}; diff --git a/admin_front/presets/lara/ripple/index.js b/admin_front/presets/lara/ripple/index.js new file mode 100644 index 0000000..c3533d7 --- /dev/null +++ b/admin_front/presets/lara/ripple/index.js @@ -0,0 +1,6 @@ +export default { + root: { + class: ['block absolute bg-surface-0/50 rounded-full pointer-events-none'], + style: 'transform: scale(0)' + } +}; diff --git a/admin_front/presets/lara/scrollpanel/index.js b/admin_front/presets/lara/scrollpanel/index.js new file mode 100644 index 0000000..baa4046 --- /dev/null +++ b/admin_front/presets/lara/scrollpanel/index.js @@ -0,0 +1,77 @@ +export default { + wrapper: { + class: [ + // Size & Position + 'h-full w-full', + + // Layering + 'z-[1]', + + // Spacing + 'overflow-hidden', + + // Misc + 'relative float-left' + ] + }, + content: { + class: [ + // Size & Spacing + 'h-[calc(100%+18px)] w-[calc(100%+18px)] pr-[18px] pb-[18px] pl-0 pt-0', + + // Overflow & Scrollbar + 'overflow-scroll scrollbar-none', + + // Box Model + 'box-border', + + // Position + 'relative', + + // Webkit Specific + '[&::-webkit-scrollbar]:hidden' + ] + }, + barX: { + class: [ + // Size & Position + 'h-[9px] bottom-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'invisible z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + }, + barY: { + class: [ + // Size & Position + 'w-[9px] top-0', + + // Appearance + 'bg-surface-50 dark:bg-surface-700 rounded', + + // Interactivity + 'cursor-pointer', + + // Visibility & Layering + 'z-20', + + // Transition + 'transition duration-[250ms] ease-linear', + + // Misc + 'relative' + ] + } +}; diff --git a/admin_front/presets/lara/scrolltop/index.js b/admin_front/presets/lara/scrolltop/index.js new file mode 100644 index 0000000..c091419 --- /dev/null +++ b/admin_front/presets/lara/scrolltop/index.js @@ -0,0 +1,40 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flex & Alignment + 'flex items-center justify-center', + + // Positioning + { + sticky: props.target === 'parent', + fixed: props.target === 'window' + }, + 'bottom-[20px] right-[20px]', + 'ml-auto', + + // Shape & Size + { + 'rounded-md h-8 w-8': props.target === 'parent', + 'h-12 w-12 rounded-full shadow-md': props.target === 'window' + }, + + // Color + { + 'text-primary-inverse bg-primary': props.target === 'parent', + 'text-white dark:text-surface-900 bg-surface-500 dark:bg-surface-400': props.target === 'window' + }, + + // States + { + 'hover:bg-primary-hover': props.target === 'parent', + 'hover:bg-surface-600 dark:hover:bg-surface-300': props.target === 'window' + } + ] + }), + transition: { + enterFromClass: 'opacity-0', + enterActiveClass: 'transition-opacity duration-150', + leaveActiveClass: 'transition-opacity duration-150', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/selectbutton/index.js b/admin_front/presets/lara/selectbutton/index.js new file mode 100644 index 0000000..2a62c9b --- /dev/null +++ b/admin_front/presets/lara/selectbutton/index.js @@ -0,0 +1,49 @@ +export default { + root: ({ props }) => ({ + class: [{ 'opacity-60 select-none pointer-events-none cursor-default': props.disabled }] + }), + button: ({ context, props }) => ({ + class: [ + 'relative', + // Font + 'leading-none', + + // Flex Alignment + 'inline-flex items-center align-bottom text-center', + + // Spacing + 'px-4 py-3', + + // Shape + 'border border-r-0', + 'first:rounded-l-md first:rounded-tr-none first:rounded-br-none', + 'last:border-r last:rounded-tl-none last:rounded-bl-none last:rounded-r-md', + + // Color + { + 'bg-surface-0 dark:bg-surface-900': !context.active, + 'text-surface-700 dark:text-white/80': !context.active, + 'border-surface-200 dark:border-surface-700': !context.active && !props.invalid, + 'bg-primary border-primary text-primary-inverse': context.active + }, + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50 focus:z-10', + { + 'hover:bg-surface-50 dark:hover:bg-surface-800/80': !context.active && !props.invalid, + 'hover:bg-primary-hover': context.active + }, + { 'opacity-60 select-none pointer-events-none cursor-default': context.disabled }, + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none overflow-hidden' + ] + }), + label: { + class: 'font-bold' + } +}; diff --git a/admin_front/presets/lara/sidebar/index.js b/admin_front/presets/lara/sidebar/index.js new file mode 100644 index 0000000..61b57d8 --- /dev/null +++ b/admin_front/presets/lara/sidebar/index.js @@ -0,0 +1,149 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox + 'flex flex-col', + + // Position + 'relative', + { '!transition-none !transform-none !w-screen !h-screen !max-h-full !top-0 !left-0': props.position == 'full' }, + + // Size + { + 'h-full w-80': props.position == 'left' || props.position == 'right', + 'h-auto w-full': props.position == 'top' || props.position == 'bottom' + }, + + // Shape + 'border-0 dark:border', + 'shadow-lg', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'dark:border-surface-700', + + // Transitions + 'transition-transform', + 'duration-300', + + // Misc + 'pointer-events-auto' + ] + }), + header: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-between', + 'shrink-0', + + // Spacing + 'p-5', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80' + ] + }, + title: { + class: ['font-bold text-lg'] + }, + icons: { + class: ['flex items-center'] + }, + closeButton: { + class: [ + 'relative', + + // Flexbox and Alignment + 'flex items-center justify-center', + + // Size and Spacing + 'mr-2', + 'last:mr-0', + 'w-8 h-8', + + // Shape + 'border-0', + 'rounded-full', + + // Colors + 'text-surface-500', + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:text-surface-700 dark:hover:text-white/80', + 'hover:bg-surface-100 dark:hover:bg-surface-800/80', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden' + ] + }, + closeButtonIcon: { + class: [ + // Display + 'inline-block', + + // Size + 'w-4', + 'h-4' + ] + }, + content: { + class: [ + // Spacing and Size + 'p-5', + 'pt-0', + 'h-full', + 'w-full', + + // Growth and Overflow + 'grow', + 'overflow-y-auto' + ] + }, + mask: ({ props }) => ({ + class: [ + // Transitions + 'transition-all', + 'duration-300', + { 'p-5': !props.position == 'full' }, + + // Background and Effects + { 'has-[.mask-active]:bg-transparent bg-black/40': props.modal, 'has-[.mask-active]:backdrop-blur-none backdrop-blur-sm': props.modal } + ] + }), + transition: ({ props }) => { + return props.position === 'top' + ? { + enterFromClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 -translate-y-full translate-z-0 mask-active' + } + : props.position === 'bottom' + ? { + enterFromClass: 'translate-x-0 translate-y-full translate-z-0 mask-active', + leaveToClass: 'translate-x-0 translate-y-full translate-z-0 mask-active' + } + : props.position === 'left' + ? { + enterFromClass: '-translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: '-translate-x-full translate-y-0 translate-z-0 mask-active' + } + : props.position === 'right' + ? { + enterFromClass: 'translate-x-full translate-y-0 translate-z-0 mask-active', + leaveToClass: 'translate-x-full translate-y-0 translate-z-0 mask-active' + } + : { + enterFromClass: 'opacity-0 mask-active', + enterActiveClass: 'transition-opacity duration-400 ease-in', + leaveActiveClass: 'transition-opacity duration-400 ease-in', + leaveToClass: 'opacity-0 mask-active' + }; + } +}; diff --git a/admin_front/presets/lara/skeleton/index.js b/admin_front/presets/lara/skeleton/index.js new file mode 100644 index 0000000..658ea16 --- /dev/null +++ b/admin_front/presets/lara/skeleton/index.js @@ -0,0 +1,16 @@ +export default { + root: ({ props }) => ({ + class: [ + 'overflow-hidden', + { + 'animate-pulse': props.animation !== 'none' + }, + + // Round + { 'rounded-full': props.shape === 'circle', 'rounded-md': props.shape !== 'circle' }, + + // Colors + 'bg-surface-200 dark:bg-surface-700' + ] + }) +}; diff --git a/admin_front/presets/lara/slider/index.js b/admin_front/presets/lara/slider/index.js new file mode 100644 index 0000000..00105c9 --- /dev/null +++ b/admin_front/presets/lara/slider/index.js @@ -0,0 +1,137 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + + // Size + { 'h-1 w-60': props.orientation == 'horizontal', 'w-1 h-56': props.orientation == 'vertical' }, + + // Shape + 'border-0', + + // Colors + 'bg-surface-100 dark:bg-surface-700', + + // States + { 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + range: ({ props }) => ({ + class: [ + // Position + 'block absolute', + { + 'top-0 left-0': props.orientation == 'horizontal', + 'bottom-0 left-0': props.orientation == 'vertical' + }, + + //Size + { + 'h-full': props.orientation == 'horizontal', + 'w-full': props.orientation == 'vertical' + }, + + // Colors + 'bg-primary' + ] + }), + handle: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.5715rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary', + + // States + 'hover:bg-primary-hover', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'ring-primary-400/50 dark:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + starthandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.4715rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary', + + // States + 'hover:bg-primary-hover', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }), + endhandler: ({ props }) => ({ + class: [ + 'block', + + // Size + 'h-[1.143rem]', + 'w-[1.143rem]', + { + 'top-[50%] mt-[-0.5715rem] ml-[-0.5715rem]': props.orientation == 'horizontal', + 'left-[50%] mb-[-0.5715rem] ml-[-0.4715rem]': props.orientation == 'vertical' + }, + + // Shape + 'rounded-full', + 'border-2', + + // Colors + 'bg-surface-0 dark:bg-surface-600', + 'border-primary', + + // States + 'hover:bg-primary-hover', + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transitions + 'transition duration-200', + + // Misc + 'cursor-grab', + 'touch-action-none' + ] + }) +}; diff --git a/admin_front/presets/lara/speeddial/index.js b/admin_front/presets/lara/speeddial/index.js new file mode 100644 index 0000000..43680e0 --- /dev/null +++ b/admin_front/presets/lara/speeddial/index.js @@ -0,0 +1,297 @@ +export default { + root: { + class: 'absolute flex' + }, + button: { + root: ({ props, context, parent }) => ({ + class: [ + 'relative', + 'z-20', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + 'w-16 h-16 p-0 py-3', + + // Shapes + 'rounded-full', + 'shadow-md', + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': props.plain && !props.outlined && !props.text }, + // Plain Text Button + { 'text-surface-500': props.plain && props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': props.plain && props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': props.text && !props.plain }, + + // Outlined Button + { 'bg-transparent border': props.outlined && !props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'bg-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain, + 'border border-primary': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-white dark:text-surface-900': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'bg-surface-500 dark:bg-surface-400': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain, + 'border border-surface-500 dark:border-surface-400': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-300': props.text && props.severity === 'secondary' && !props.plain }, + // Secondary Outlined Button + { 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/20': props.outlined && props.severity === 'secondary' && !props.plain }, + + // Success Button + { + 'text-white dark:text-green-900': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'bg-green-500 dark:bg-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain, + 'border border-green-500 dark:border-green-400': props.severity === 'success' && !props.text && !props.outlined && !props.plain + }, + // Success Text Button + { 'text-green-500 dark:text-green-400': props.text && props.severity === 'success' && !props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/20': props.outlined && props.severity === 'success' && !props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'bg-blue-500 dark:bg-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain, + 'border border-blue-500 dark:border-blue-400': props.severity === 'info' && !props.text && !props.outlined && !props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': props.text && props.severity === 'info' && !props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': props.outlined && props.severity === 'info' && !props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'bg-orange-500 dark:bg-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain, + 'border border-orange-500 dark:border-orange-400': props.severity === 'warning' && !props.text && !props.outlined && !props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': props.text && props.severity === 'warning' && !props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': props.outlined && props.severity === 'warning' && !props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'bg-purple-500 dark:bg-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain, + 'border border-purple-500 dark:border-purple-400': props.severity === 'help' && !props.text && !props.outlined && !props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': props.text && props.severity === 'help' && !props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': props.outlined && props.severity === 'help' && !props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'bg-red-500 dark:bg-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain, + 'border border-red-500 dark:border-red-400': props.severity === 'danger' && !props.text && !props.outlined && !props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': props.text && props.severity === 'danger' && !props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/20': props.outlined && props.severity === 'danger' && !props.plain }, + // Contrast Button + { + 'text-white dark:text-surface-900': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'bg-surface-900 dark:bg-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain, + 'border border-surface-900 dark:border-surface-0': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { 'focus:ring-primary': props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': props.plain && !props.outlined && !props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': props.plain && (props.text || props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !props.link && props.severity === null && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-primary': props.severity === null }, + // Text & Outlined Button + { 'hover:bg-primary-300/20': (props.text || props.outlined) && props.severity === null && !props.plain }, + + // Secondary + { 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': props.severity === 'secondary' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': (props.text || props.outlined) && props.severity === 'secondary' && !props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': props.severity === 'success' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-green-400/50 dark:focus:ring-green-300/50': props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/20': (props.text || props.outlined) && props.severity === 'success' && !props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': props.severity === 'info' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/20': (props.text || props.outlined) && props.severity === 'info' && !props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': props.severity === 'warning' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/20': (props.text || props.outlined) && props.severity === 'warning' && !props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': props.severity === 'help' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/20': (props.text || props.outlined) && props.severity === 'help' && !props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': props.severity === 'danger' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-red-400/50 dark:focus:ring-red-300/50': props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/20': (props.text || props.outlined) && props.severity === 'danger' && !props.plain }, + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': props.severity === 'contrast' && !props.text && !props.outlined && !props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (props.text || props.outlined) && props.severity === 'contrast' && !props.plain }, + // Disabled + { 'opacity-60 pointer-events-none cursor-default': context.disabled }, + + // Transitions + 'transition duration-200 ease-in-out', + parent.state.d_visible ? 'rotate-45' : 'rotate-0', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: ({ props }) => ({ + class: [ + 'duration-200', + 'font-bold', + { + 'hover:underline': props.link + }, + { 'flex-1': props.label !== null, 'invisible w-0': props.label == null } + ] + }), + icon: ({ props }) => ({ + class: [ + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + } + ] + }), + loadingicon: ({ props }) => ({ + class: [ + 'h-4 w-4', + 'mx-0', + { + 'mr-2': props.iconPos == 'left' && props.label != null, + 'ml-2 order-1': props.iconPos == 'right' && props.label != null, + 'mb-2': props.iconPos == 'top' && props.label != null, + 'mt-2': props.iconPos == 'bottom' && props.label != null + }, + 'animate-spin' + ] + }), + badge: ({ props }) => ({ + class: [{ 'ml-2 w-4 h-4 leading-none flex items-center justify-center': props.badge }] + }) + }, + menu: { + class: [ + // Spacing + 'm-0 p-0', + + // Layout & Flexbox + 'list-none flex items-center justify-center', + + // Transitions + 'transition delay-200', + + // Z-Index (Positioning) + 'z-20' + ] + }, + menuitem: ({ props, context }) => ({ + class: [ + 'transform transition-transform duration-200 ease-out transition-opacity duration-800', + + // Conditional Appearance + context.hidden ? 'opacity-0 scale-0' : 'opacity-100 scale-100', + + // Conditional Spacing + { + 'my-1 first:mb-2': props.direction == 'up' && props.type == 'linear', + 'my-1 first:mt-2': props.direction == 'down' && props.type == 'linear', + 'mx-1 first:mr-2': props.direction == 'left' && props.type == 'linear', + 'mx-1 first:ml-2': props.direction == 'right' && props.type == 'linear' + }, + + // Conditional Positioning + { absolute: props.type !== 'linear' } + ] + }), + action: { + class: [ + // Flexbox & Alignment + 'flex items-center justify-center', + + // Size + 'w-12 h-12', + + // Shape + 'rounded-full relative overflow-hidden', + + // Appearance + 'bg-surface-600 dark:bg-surface-0/80 text-white dark:text-surface-900/80', + + // Hover Effects + 'hover:bg-surface-700 dark:hover:bg-surface-200/80' + ] + }, + mask: ({ state }) => ({ + class: [ + // Base Styles + 'absolute left-0 top-0 w-full h-full transition-opacity duration-250 ease-in-out bg-black/40 z-0', + + // Conditional Appearance + { + 'opacity-0 pointer-events-none': !state.d_visible, + 'opacity-100 transition-opacity duration-400 ease-in-out': state.d_visible + } + ] + }) +}; diff --git a/admin_front/presets/lara/splitbutton/index.js b/admin_front/presets/lara/splitbutton/index.js new file mode 100644 index 0000000..c8df462 --- /dev/null +++ b/admin_front/presets/lara/splitbutton/index.js @@ -0,0 +1,530 @@ +export default { + root: ({ props }) => ({ + class: [ + // Flexbox and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + { 'shadow-lg': props.raised } + ] + }), + button: { + root: ({ parent, props }) => ({ + class: [ + 'relative', + + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': parent.props.size === null, + 'text-sm py-2 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'min-w-12 p-0 py-3': parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-r-none', + 'border-r-0', + { 'rounded-l-full': parent.props.rounded }, + { 'rounded-md': !parent.props.rounded, 'rounded-full': parent.props.rounded }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': parent.props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': parent.props.plain && parent.props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': parent.props.text && !parent.props.plain }, + + // Outlined Button + { 'bg-transparent border': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-500 dark:border-surface-400': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-400': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Secondary Outlined Button + { 'text-surface-500 border border-surface-500 hover:bg-surface-300/20': parent.props.outlined && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-green-500 dark:bg-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-green-500 dark:border-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Success Text Button + { 'text-surface-500 dark:text-surface-400': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/20': parent.props.outlined && parent.props.severity === 'success' && !parent.props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': parent.props.text && parent.props.severity === 'info' && !parent.props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': parent.props.outlined && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': parent.props.text && parent.props.severity === 'warning' && !parent.props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': parent.props.outlined && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': parent.props.text && parent.props.severity === 'help' && !parent.props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': parent.props.outlined && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-red-500 dark:bg-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-red-500 dark:border-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': parent.props.text && parent.props.severity === 'danger' && !parent.props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/20': parent.props.outlined && parent.props.severity === 'danger' && !parent.props.plain }, + // Contrast Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-900 dark:bg-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-900 dark:border-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { 'focus:ring-primary/50': parent.props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': parent.props.plain && (parent.props.text || parent.props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-primary/50': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + // Text & Outlined Button + { 'hover:bg-primary-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === null && !parent.props.plain }, + + // Secondary + { 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': parent.props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-green-400/50 dark:focus:ring-green-300/50': parent.props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'success' && !parent.props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': parent.props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': parent.props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': parent.props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-red-400/50 dark:focus:ring-red-300/50': parent.props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (parent.props.text || parent.props.outlined) && parent.props.severity === 'contrast' && !parent.props.plain }, + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + icon: { + class: [ + // Margins + 'mr-2' + ] + } + }, + menubutton: { + root: ({ parent, props }) => ({ + class: [ + 'relative', + // Alignments + 'items-center inline-flex text-center align-bottom justify-center', + + // Sizes & Spacing + 'leading-[normal]', + { + 'px-4 py-3': parent.props.size === null, + 'text-sm py-2 px-3': parent.props.size === 'small', + 'text-xl py-3 px-4': parent.props.size === 'large' + }, + { + 'min-w-12 p-0 py-3': parent.props.label == null && parent.props.icon !== null + }, + + // Shape + 'rounded-l-none', + { 'rounded-l-full': parent.props.rounded }, + { 'rounded-md': !parent.props.rounded, 'rounded-full': parent.props.rounded }, + + // Link Button + { 'text-primary-600 bg-transparent border-transparent': parent.props.link }, + + // Plain Button + { 'text-white bg-gray-500 border border-gray-500': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Plain Text Button + { 'text-surface-500': parent.props.plain && parent.props.text }, + // Plain Outlined Button + { 'text-surface-500 border border-gray-500': parent.props.plain && parent.props.outlined }, + + // Text Button + { 'bg-transparent border-transparent': parent.props.text && !parent.props.plain }, + + // Outlined Button + { 'bg-transparent border': parent.props.outlined && !parent.props.plain }, + + // --- Severity Buttons --- + + // Primary Button + { + 'text-primary-inverse': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-primary': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Primary Text Button + { 'text-primary': props.text && props.severity === null && !props.plain }, + // Primary Outlined Button + { 'text-primary border border-primary': props.outlined && props.severity === null && !props.plain }, + + // Secondary Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-500 dark:bg-surface-400': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-500 dark:border-surface-400': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Secondary Text Button + { 'text-surface-500 dark:text-surface-400': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Secondary Outlined Button + { 'text-surface-500 border border-surface-500 hover:bg-surface-300/20': parent.props.outlined && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-green-500 dark:bg-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-green-500 dark:border-green-400': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Success Text Button + { 'text-surface-500 dark:text-surface-400': parent.props.text && parent.props.severity === 'secondary' && !parent.props.plain }, + // Success Outlined Button + { 'text-green-500 border border-green-500 hover:bg-green-300/20': parent.props.outlined && parent.props.severity === 'success' && !parent.props.plain }, + + // Info Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-blue-500 dark:bg-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-blue-500 dark:border-blue-400': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Info Text Button + { 'text-blue-500 dark:text-blue-400': parent.props.text && parent.props.severity === 'info' && !parent.props.plain }, + // Info Outlined Button + { 'text-blue-500 border border-blue-500 hover:bg-blue-300/20 ': parent.props.outlined && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-orange-500 dark:bg-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-orange-500 dark:border-orange-400': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Warning Text Button + { 'text-orange-500 dark:text-orange-400': parent.props.text && parent.props.severity === 'warning' && !parent.props.plain }, + // Warning Outlined Button + { 'text-orange-500 border border-orange-500 hover:bg-orange-300/20': parent.props.outlined && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-purple-500 dark:bg-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-purple-500 dark:border-purple-400': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Help Text Button + { 'text-purple-500 dark:text-purple-400': parent.props.text && parent.props.severity === 'help' && !parent.props.plain }, + // Help Outlined Button + { 'text-purple-500 border border-purple-500 hover:bg-purple-300/20': parent.props.outlined && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-red-500 dark:bg-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-red-500 dark:border-red-400': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Danger Text Button + { 'text-red-500 dark:text-red-400': parent.props.text && parent.props.severity === 'danger' && !parent.props.plain }, + // Danger Outlined Button + { 'text-red-500 border border-red-500 hover:bg-red-300/20': parent.props.outlined && parent.props.severity === 'danger' && !parent.props.plain }, + // Contrast Button + { + 'text-white dark:text-surface-900': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'bg-surface-900 dark:bg-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain, + 'border border-surface-900 dark:border-surface-0': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain + }, + // Contrast Text Button + { 'text-surface-900 dark:text-surface-0': props.text && props.severity === 'contrast' && !props.plain }, + // Contrast Outlined Button + { 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0': props.outlined && props.severity === 'contrast' && !props.plain }, + // --- Severity Button States --- + 'focus:outline-none focus:outline-offset-0 focus:ring', + + // Link + { 'focus:ring-primary/50': parent.props.link }, + + // Plain + { 'hover:bg-gray-600 hover:border-gray-600': parent.props.plain && !parent.props.outlined && !parent.props.text }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': parent.props.plain && (parent.props.text || parent.props.outlined) }, + + // Primary + { 'hover:bg-primary-hover hover:border-primary-hover': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-primary/50': !parent.props.link && parent.props.severity === null && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + // Text & Outlined Button + { 'hover:bg-primary-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === null && !parent.props.plain }, + + // Secondary + { 'hover:bg-surface-600 dark:hover:bg-surface-300 hover:border-surface-600 dark:hover:border-surface-300': parent.props.severity === 'secondary' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-400/50 dark:focus:ring-surface-300/50': parent.props.severity === 'secondary' }, + // Text & Outlined Button + { 'hover:bg-surface-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'secondary' && !parent.props.plain }, + + // Success + { 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300': parent.props.severity === 'success' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-green-400/50 dark:focus:ring-green-300/50': parent.props.severity === 'success' }, + // Text & Outlined Button + { 'hover:bg-green-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'success' && !parent.props.plain }, + + // Info + { 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300': parent.props.severity === 'info' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-blue-400/50 dark:focus:ring-blue-300/50': parent.props.severity === 'info' }, + // Text & Outlined Button + { 'hover:bg-blue-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'info' && !parent.props.plain }, + + // Warning + { 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300': parent.props.severity === 'warning' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-orange-400/50 dark:focus:ring-orange-300/50': parent.props.severity === 'warning' }, + // Text & Outlined Button + { 'hover:bg-orange-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'warning' && !parent.props.plain }, + + // Help + { 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300': parent.props.severity === 'help' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-purple-400/50 dark:focus:ring-purple-300/50': parent.props.severity === 'help' }, + // Text & Outlined Button + { 'hover:bg-purple-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'help' && !parent.props.plain }, + + // Danger + { 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300': parent.props.severity === 'danger' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-red-400/50 dark:focus:ring-red-300/50': parent.props.severity === 'danger' }, + // Text & Outlined Button + { 'hover:bg-red-300/20': (parent.props.text || parent.props.outlined) && parent.props.severity === 'danger' && !parent.props.plain }, + + // Contrast + { 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100': parent.props.severity === 'contrast' && !parent.props.text && !parent.props.outlined && !parent.props.plain }, + { 'focus:ring-surface-500 dark:focus:ring-surface-400': parent.props.severity === 'contrast' }, + // Text & Outlined Button + { 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]': (parent.props.text || parent.props.outlined) && parent.props.severity === 'contrast' && !parent.props.plain }, + + // Transitions + 'transition duration-200 ease-in-out', + + // Misc + 'cursor-pointer overflow-hidden select-none' + ] + }), + label: { + class: ['hidden'] + } + }, + menu: { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'py-1', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: [ + // Position + 'relative' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } + } +}; diff --git a/admin_front/presets/lara/splitter/index.js b/admin_front/presets/lara/splitter/index.js new file mode 100644 index 0000000..32b1675 --- /dev/null +++ b/admin_front/presets/lara/splitter/index.js @@ -0,0 +1,61 @@ +export default { + root: ({ context }) => ({ + class: [ + // Colors + 'bg-surface-0', + 'dark:bg-surface-900', + 'text-surface-700', + 'dark:text-surface-0/80', + + // Shape + 'rounded-lg', + + // Borders (Conditional) + { 'border border-solid border-surface-50 dark:border-surface-700': !context.nested }, + + // Nested + { 'flex grow border-0': context.nested } + ] + }), + + gutter: ({ props }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + 'shrink-0', + + // Colors + 'bg-surface-50', + 'dark:bg-surface-800', + + // Transitions + 'transition-all', + 'duration-200', + + // Misc + { + 'cursor-col-resize': props.layout == 'horizontal', + 'cursor-row-resize': props.layout !== 'horizontal' + } + ] + }), + gutterhandler: ({ props }) => ({ + class: [ + // Colors + 'bg-surface-100', + 'dark:bg-surface-600', + + // Transitions + 'transition-all', + 'duration-200', + + // Sizing (Conditional) + { + 'h-7': props.layout == 'horizontal', + 'w-7 h-2': props.layout !== 'horizontal' + } + ] + }) +}; diff --git a/admin_front/presets/lara/splitterpanel/index.js b/admin_front/presets/lara/splitterpanel/index.js new file mode 100644 index 0000000..faa67ba --- /dev/null +++ b/admin_front/presets/lara/splitterpanel/index.js @@ -0,0 +1,5 @@ +export default { + root: ({ context }) => ({ + class: ['grow', { flex: context.nested }] + }) +}; diff --git a/admin_front/presets/lara/stepper/index.js b/admin_front/presets/lara/stepper/index.js new file mode 100644 index 0000000..6bbd54e --- /dev/null +++ b/admin_front/presets/lara/stepper/index.js @@ -0,0 +1,161 @@ +export default { + root: ({ props }) => ({ + class: ['flex-1', props.orientation === 'vertical' ? 'flex-col' : 'flex-row'] + }), + nav: { + class: [ + // Flexbox + 'flex', + 'justify-between', + 'items-center', + + // Spacing + 'm-0', + 'p-0', + + // Positioning + 'relative', + + // Lists + 'list-none', + + // Overflow + 'overflow-x-auto' + ] + }, + stepperpanel: { + panel: ({ context, parent }) => ({ + class: [context.active ? 'flex-1' : '', parent.props.orientation === 'vertical' ? 'flex flex-col flex-initial' : ''] + }), + header: ({ parent, context }) => ({ + class: [ + // Position + 'relative', + + // Flexbox + 'flex', + 'items-center', + context.last ? 'flex-initial' : 'flex-1', + parent.props.orientation === 'vertical' ? 'flex-initial' : '', + + // Spacing + 'p-2' + ] + }), + action: { + class: [ + // Borders + 'border-0', + 'border-none', + + // Flexbox + 'inline-flex', + 'items-center', + + // Text + 'text-decoration-none', + + // Transitions + 'transition', + 'transition-shadow', + 'duration-200', + + // Shape + 'rounded-md', + + // Backgrounds + 'bg-transparent', + + // Focus + 'outline-none' + ] + }, + number: ({ context }) => ({ + class: [ + // Flexbox + 'flex', + 'items-center', + 'justify-center', + + // Colors (Conditional) + context.active ? 'bg-primary text-primary-inverse' : 'border border-surface-200 dark:border-surface-700 text-surface-900 dark:text-surface-0', // Adjust colors as needed + + // Size and Shape + 'min-w-[2rem]', + 'h-[2rem]', + 'line-height-[2rem]', + 'rounded-full', + + // Text + 'text-lg', + + // Borders + context.active ? 'border-0 border-none' : 'border-solid border-2', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + title: ({ context }) => ({ + class: [ + // Layout + 'block', + 'whitespace-nowrap', + 'overflow-hidden', + 'text-ellipsis', + 'max-w-full', + + // Spacing + 'ml-2', + + // Text + context.active ? 'text-surface-900 dark:text-surface-0' : 'text-surface-700 dark:text-surface-0/80', + 'font-bold', + + // Transitions + 'transition', + 'transition-colors', + 'transition-shadow', + 'duration-200' + ] + }), + separator: ({ context, state, parent }) => ({ + class: [ + // Colors (Conditional for active step) + state.d_activeStep <= context.index ? 'bg-surface-200 dark:bg-surface-700' : 'bg-primary', + + // Conditional for Vertical Orientation + parent.props.orientation === 'vertical' ? ['flex-none', 'w-[2px]', 'h-auto', 'ml-[calc(1.29rem+2px)]'] : ['flex-1', 'w-full', 'h-[2px]', 'ml-4'], + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + transition: { + class: ['flex flex-1', 'bg-surface-0 dark:bg-surface-800', 'text-surface-900 dark:text-surface-0'], + enterFromClass: 'max-h-0', + enterActiveClass: 'overflow-hidden transition-[max-height] duration-1000 ease-[cubic-bezier(0.42,0,0.58,1)]', + enterToClass: 'max-h-[1000px]', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: 'overflow-hidden transition-[max-height] duration-[450ms] ease-[cubic-bezier(0,1,0,1)]', + leaveToClass: 'max-h-0' + }, + content: ({ parent }) => ({ + class: [parent.props.orientation === 'vertical' ? 'w-full pl-4' : ''] + }) + }, + panelcontainer: { + class: [ + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-900 dark:text-surface-0', + + // Spacing + 'p-4' + ] + } +}; diff --git a/admin_front/presets/lara/steps/index.js b/admin_front/presets/lara/steps/index.js new file mode 100644 index 0000000..7cf6221 --- /dev/null +++ b/admin_front/presets/lara/steps/index.js @@ -0,0 +1,111 @@ +export default { + root: { + class: 'relative' + }, + menu: { + class: 'p-0 m-0 list-none flex' + }, + menuitem: { + class: [ + // Flexbox and Position + 'relative', + 'flex', + 'justify-center', + 'flex-1', + 'overflow-hidden', + + // Before + 'before:border-t', + 'before:border-surface-200', + 'before:dark:border-surface-700', + 'before:w-full', + 'before:absolute', + 'before:top-1/2', + 'before:left-0', + 'before:transform', + 'before:-mt-4' + ] + }, + action: ({ props }) => ({ + class: [ + // Flexbox + 'inline-flex items-center', + 'flex-col', + + // Transitions and Shape + 'transition-shadow', + 'rounded-md', + + // Colors + 'bg-surface-0', + 'dark:bg-transparent', + + // States + 'focus:outline-none focus:outline-offset-0 focus:ring', + 'focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Misc + 'overflow-hidden', + { 'cursor-pointer': !props.readonly } + ] + }), + step: ({ context, props }) => ({ + class: [ + // Flexbox + 'flex items-center justify-center', + + // Position + 'z-20', + + // Shape + 'rounded-full', + 'border', + + // Size + 'w-[2rem]', + 'h-[2rem]', + 'text-sm', + 'leading-[2rem]', + + // Colors + { + 'text-surface-400 dark:text-white/60': !context.active, + 'border-surface-100 dark:border-surface-700': !context.active, + 'bg-surface-0 dark:bg-surface-800': !context.active, + 'bg-primary': context.active, + 'border-primary': context.active, + 'text-primary-inverse': context.active + }, + + // States + { + 'hover:border-surface-300 dark:hover:border-surface-500': !context.active && !props.readonly + }, + + // Transition + 'transition-colors duration-200 ease-in-out' + ] + }), + label: ({ context }) => ({ + class: [ + // Font + 'leading-[normal]', + { 'font-bold': context.active }, + + // Display + 'block', + + // Spacing + 'mt-2', + + // Colors + { 'text-surface-400 dark:text-white/60': !context.active, 'text-surface-800 dark:text-white/80': context.active }, + + // Text and Overflow + 'whitespace-nowrap', + 'overflow-hidden', + 'overflow-ellipsis', + 'max-w-full' + ] + }) +}; diff --git a/admin_front/presets/lara/tabmenu/index.js b/admin_front/presets/lara/tabmenu/index.js new file mode 100644 index 0000000..e3b8bb3 --- /dev/null +++ b/admin_front/presets/lara/tabmenu/index.js @@ -0,0 +1,73 @@ +export default { + root: { + class: 'overflow-x-auto' + }, + menu: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + menuitem: { + class: 'mr-0' + }, + action: ({ context, state }) => ({ + class: [ + 'relative', + + // Font + 'font-bold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'p-5', + '-mb-[2px]', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': state.d_activeIndex === context.index, + 'border-primary': state.d_activeIndex === context.index, + 'text-primary': state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-primary-400': state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + icon: { + class: 'mr-2' + } +}; diff --git a/admin_front/presets/lara/tabview/index.js b/admin_front/presets/lara/tabview/index.js new file mode 100644 index 0000000..1f06544 --- /dev/null +++ b/admin_front/presets/lara/tabview/index.js @@ -0,0 +1,156 @@ +export default { + navContainer: ({ props }) => ({ + class: [ + // Position + 'relative', + + // Misc + { 'overflow-hidden': props.scrollable } + ] + }), + navContent: { + class: [ + // Overflow and Scrolling + 'overflow-y-hidden overscroll-contain', + 'overscroll-auto', + 'scroll-smooth', + '[&::-webkit-scrollbar]:hidden' + ] + }, + previousButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 left-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary', + 'shadow-md' + ] + }, + nextButton: { + class: [ + // Flexbox and Alignment + 'flex items-center justify-center', + + // Position + '!absolute', + 'top-0 right-0', + 'z-20', + + // Size and Shape + 'h-full w-12', + 'rounded-none', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-primary', + 'shadow-md' + ] + }, + nav: { + class: [ + // Flexbox + 'flex flex-1', + + // Spacing + 'list-none', + 'p-0 m-0', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'border-b-2 border-surface-200 dark:border-surface-700', + 'text-surface-900 dark:text-surface-0/80' + ] + }, + tabpanel: { + header: ({ props }) => ({ + class: [ + // Spacing + 'mr-0', + + // Misc + { + 'opacity-60 cursor-default user-select-none select-none pointer-events-none': props?.disabled + } + ] + }), + headerAction: ({ parent, context }) => ({ + class: [ + 'relative', + + // Font + 'font-bold', + + // Flexbox and Alignment + 'flex items-center', + + // Spacing + 'p-5', + '-mb-[2px]', + + // Shape + 'border-b-2', + 'rounded-t-md', + + // Colors and Conditions + { + 'border-surface-200 dark:border-surface-700': parent.state.d_activeIndex !== context.index, + 'bg-surface-0 dark:bg-surface-800': parent.state.d_activeIndex !== context.index, + 'text-surface-700 dark:text-surface-0/80': parent.state.d_activeIndex !== context.index, + + 'bg-surface-0 dark:bg-surface-800': parent.state.d_activeIndex === context.index, + 'border-primary': parent.state.d_activeIndex === context.index, + 'text-primary': parent.state.d_activeIndex === context.index + }, + + // States + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset', + 'focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + { + 'hover:bg-surface-0 dark:hover:bg-surface-800/80': parent.state.d_activeIndex !== context.index, + 'hover:border-surface-400 dark:hover:border-primary-400': parent.state.d_activeIndex !== context.index, + 'hover:text-surface-900 dark:hover:text-surface-0': parent.state.d_activeIndex !== context.index + }, + + // Transitions + 'transition-all duration-200', + + // Misc + 'cursor-pointer select-none text-decoration-none', + 'overflow-hidden', + 'user-select-none' + ] + }), + headerTitle: { + class: [ + // Text + 'leading-none', + 'whitespace-nowrap' + ] + }, + content: { + class: [ + // Spacing + 'p-5', + + // Shape + 'rounded-b-md', + + // Colors + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-surface-0/80', + 'border-0' + ] + } + } +}; diff --git a/admin_front/presets/lara/tag/index.js b/admin_front/presets/lara/tag/index.js new file mode 100644 index 0000000..cbb5bc7 --- /dev/null +++ b/admin_front/presets/lara/tag/index.js @@ -0,0 +1,36 @@ +export default { + root: ({ props }) => ({ + class: [ + //Font + 'text-xs font-bold', + + //Alignments + 'inline-flex items-center justify-center', + + //Spacing + 'px-2 py-1', + + //Shape + { + 'rounded-md': !props.rounded, + 'rounded-full': props.rounded + }, + + //Colors + 'text-primary-inverse', + { + 'bg-primary dark:bg-primary': props.severity == null || props.severity == 'primary', + 'bg-green-500 dark:bg-green-400': props.severity == 'success', + 'bg-blue-500 dark:bg-blue-400': props.severity == 'info', + 'bg-orange-500 dark:bg-orange-400': props.severity == 'warning', + 'bg-red-500 dark:bg-red-400': props.severity == 'danger' + } + ] + }), + value: { + class: 'leading-normal' + }, + icon: { + class: 'mr-1 text-sm' + } +}; diff --git a/admin_front/presets/lara/terminal/index.js b/admin_front/presets/lara/terminal/index.js new file mode 100644 index 0000000..a544a1e --- /dev/null +++ b/admin_front/presets/lara/terminal/index.js @@ -0,0 +1,60 @@ +export default { + root: { + class: [ + // Spacing + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-900 text-white', + 'border border-surface-700', + + // Sizing & Overflow + 'h-72 overflow-auto' + ] + }, + container: { + class: [ + // Flexbox + 'flex items-center' + ] + }, + prompt: { + class: [ + // Color + 'text-surface-400' + ] + }, + response: { + class: [ + // Color + 'text-primary-400' + ] + }, + command: { + class: [ + // Color + 'text-primary-400' + ] + }, + commandtext: { + class: [ + // Flexbox + 'flex-1 shrink grow-0', + + // Shape + 'border-0', + + // Spacing + 'p-0', + + // Color + 'bg-transparent text-inherit', + + // Outline + 'outline-none' + ] + } +}; diff --git a/admin_front/presets/lara/textarea/index.js b/admin_front/presets/lara/textarea/index.js new file mode 100644 index 0000000..c449cc2 --- /dev/null +++ b/admin_front/presets/lara/textarea/index.js @@ -0,0 +1,39 @@ +export default { + root: ({ context, props, parent }) => ({ + class: [ + // Font + 'leading-[normal]', + + // Spacing + 'm-0', + 'p-3', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'hover:border-primary': !context.disabled && !props.invalid, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50': !context.disabled, + 'opacity-60 select-none pointer-events-none cursor-default': context.disabled + }, + + // Filled State *for FloatLabel + { filled: parent.instance?.$name == 'FloatLabel' && props.modelValue !== null && props.modelValue?.length !== 0 }, + + // Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }) +}; diff --git a/admin_front/presets/lara/tieredmenu/index.js b/admin_front/presets/lara/tieredmenu/index.js new file mode 100644 index 0000000..17fb00b --- /dev/null +++ b/admin_front/presets/lara/tieredmenu/index.js @@ -0,0 +1,119 @@ +export default { + root: { + class: [ + // Shape + 'rounded-md', + + // Size + 'min-w-[12rem]', + 'py-1', + + // Colors + 'bg-surface-0 dark:bg-surface-700', + 'border border-surface-200 dark:border-surface-700' + ] + }, + menu: { + class: [ + // Spacings and Shape + 'list-none', + 'm-0', + 'p-0', + 'outline-none' + ] + }, + menuitem: { + class: [ + // Position + 'relative' + ] + }, + content: ({ context }) => ({ + class: [ + //Shape + 'rounded-none', + + // Colors + { + 'text-surface-500 dark:text-white/70': !context.focused && !context.active, + 'text-surface-500 dark:text-white/70 bg-surface-200 dark:bg-surface-600/90': context.focused && !context.active, + 'text-primary-highlight-inverse bg-primary-highlight': (context.focused && context.active) || context.active || (!context.focused && context.active) + }, + + // Hover States + { + 'hover:bg-surface-100 dark:hover:bg-surface-600/80': !context.active, + 'hover:bg-primary-highlight-hover text-primary-highlight-inverse': context.active + }, + + // Transitions + 'transition-shadow', + 'duration-200' + ] + }), + action: { + class: [ + 'relative', + // Flexbox + + 'flex', + 'items-center', + + // Spacing + 'py-3', + 'px-5', + + // Color + 'text-surface-700 dark:text-white/80', + + // Misc + 'no-underline', + 'overflow-hidden', + 'cursor-pointer', + 'select-none' + ] + }, + icon: { + class: [ + // Spacing + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + label: { + class: ['leading-none'] + }, + submenuicon: { + class: [ + // Position + 'ml-auto' + ] + }, + submenu: { + class: [ + // Size + 'w-full sm:w-48', + + // Spacing + 'py-1', + 'm-0', + 'list-none', + + // Shape + 'shadow-none sm:shadow-md', + 'border-0', + + // Position + 'static sm:absolute', + 'z-10', + + // Color + 'bg-surface-0 dark:bg-surface-700' + ] + }, + separator: { + class: 'border-t border-surface-200 dark:border-surface-600 my-1' + } +}; diff --git a/admin_front/presets/lara/timeline/index.js b/admin_front/presets/lara/timeline/index.js new file mode 100644 index 0000000..6fde2a5 --- /dev/null +++ b/admin_front/presets/lara/timeline/index.js @@ -0,0 +1,81 @@ +export default { + root: ({ props }) => ({ + class: [ + 'flex grow', + { + 'flex-col': props.layout === 'vertical', + 'flex-row flex-1': props.layout === 'horizontal' + } + ] + }), + event: ({ props, context }) => ({ + class: [ + 'flex relative min-h-[70px]', + { + 'flex-row-reverse': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1), + 'flex-col flex-1': props.layout === 'horizontal', + 'flex-col-reverse ': props.align === 'bottom' || (props.layout === 'horizontal' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + opposite: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-right': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-left': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + } + ] + }), + separator: ({ props }) => ({ + class: [ + 'flex items-center flex-initial', + { + 'flex-col': props.layout === 'vertical', + 'flex-row': props.layout === 'horizontal' + } + ] + }), + marker: { + class: [ + // Display & Flexbox + 'flex self-baseline', + + // Size + 'w-4 h-4', + + // Appearance + 'rounded-full border-2 border-primary bg-surface-0 dark:bg-surface-900/40' + ] + }, + connector: ({ props }) => ({ + class: [ + 'grow bg-surface-300 dark:bg-surface-700', + { + 'w-[2px]': props.layout === 'vertical', + 'w-full h-[2px]': props.layout === 'horizontal' + } + ] + }), + content: ({ props, context }) => ({ + class: [ + 'flex-1', + { + 'px-4': props.layout === 'vertical', + 'py-4': props.layout === 'horizontal' + }, + { + 'text-left': props.align === 'left' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 0), + 'text-right': props.align === 'right' || (props.layout === 'vertical' && props.align === 'alternate' && context.index % 2 === 1) + }, + { + 'min-h-0': props.layout === 'vertical' && context.index === context.count - 1, + 'grow-0': props.layout === 'horizontal' && context.index === context.count - 1 + } + ] + }) +}; diff --git a/admin_front/presets/lara/toast/index.js b/admin_front/presets/lara/toast/index.js new file mode 100644 index 0000000..541ad2b --- /dev/null +++ b/admin_front/presets/lara/toast/index.js @@ -0,0 +1,102 @@ +export default { + root: ({ props }) => ({ + class: [ + //Size and Shape + 'w-96 rounded-md', + + // Positioning + { '-translate-x-2/4': props.position == 'top-center' || props.position == 'bottom-center' } + ] + }), + container: ({ props }) => ({ + class: [ + 'my-4 rounded-md w-full', + 'border-solid border-0 border-l-[6px]', + 'backdrop-blur-[10px] shadow-md', + + // Colors + { + 'bg-blue-100/70 dark:bg-blue-500/20': props.message.severity == 'info', + 'bg-green-100/70 dark:bg-green-500/20': props.message.severity == 'success', + 'bg-orange-100/70 dark:bg-orange-500/20': props.message.severity == 'warn', + 'bg-red-100/70 dark:bg-red-500/20': props.message.severity == 'error' + }, + { + 'border-blue-500 dark:border-blue-400': props.message.severity == 'info', + 'border-green-500 dark:border-green-400': props.message.severity == 'success', + 'border-orange-500 dark:border-orange-400': props.message.severity == 'warn', + 'border-red-500 dark:border-red-400': props.message.severity == 'error' + }, + { + 'text-blue-700 dark:text-blue-300': props.message.severity == 'info', + 'text-green-700 dark:text-green-300': props.message.severity == 'success', + 'text-orange-700 dark:text-orange-300': props.message.severity == 'warn', + 'text-red-700 dark:text-red-300': props.message.severity == 'error' + } + ] + }), + content: ({ props }) => ({ + class: [ + 'flex p-4', + { + 'items-start': props.message.summary, + 'items-center': !props.message.summary, + }, + ], + }), + icon: { + class: [ + // Sizing and Spacing + 'w-6 h-6', + 'text-lg leading-none mr-2 shrink-0' + ] + }, + text: { + class: [ + // Font and Text + 'text-base leading-none', + 'ml-2', + 'flex-1' + ] + }, + summary: { + class: 'font-bold block' + }, + detail: ({ props }) => ({ + class: ['block', { 'mt-2': props.message.summary }], + }), + closebutton: { + class: [ + // Flexbox + 'flex items-center justify-center', + + // Size + 'w-8 h-8', + + // Spacing and Misc + 'ml-auto relative', + + // Shape + 'rounded-full', + + // Colors + 'bg-transparent', + + // Transitions + 'transition duration-200 ease-in-out', + + // States + 'hover:bg-surface-0/50 dark:hover:bg-surface-0/10', + + // Misc + 'overflow-hidden' + ] + }, + transition: { + enterFromClass: 'opacity-0 translate-y-2/4', + enterActiveClass: 'transition-[transform,opacity] duration-300', + leaveFromClass: 'max-h-[1000px]', + leaveActiveClass: '!transition-[max-height_.45s_cubic-bezier(0,1,0,1),opacity_.3s,margin-bottom_.3s] overflow-hidden', + leaveToClass: 'max-h-0 opacity-0 mb-0' + } +}; diff --git a/admin_front/presets/lara/togglebutton/index.js b/admin_front/presets/lara/togglebutton/index.js new file mode 100644 index 0000000..25277f5 --- /dev/null +++ b/admin_front/presets/lara/togglebutton/index.js @@ -0,0 +1,91 @@ +export default { + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: ({ props }) => ({ + class: [ + // Alignments + 'items-center inline-flex flex-1 text-center align-bottom justify-center', + + // Sizes & Spacing + 'px-4 py-3 leading-none', + + // Shapes + 'rounded-md border', + + // Colors + { + 'bg-surface-0 dark:bg-surface-900 ': !props.modelValue, + 'border-surface-200 dark:border-surface-700 ': !props.modelValue && !props.invalid, + 'text-surface-700 dark:text-white/80': !props.modelValue, + 'bg-primary border-primary text-primary-inverse': props.modelValue + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // States + { + 'peer-hover:bg-surface-50 dark:peer-hover:bg-surface-800/80 peer-hover:border-surface-200 dark:peer-hover:bg-surface-700 peer-hover:text-surface-700 dark:peer-hover:text-white/80': !props.modelValue && !props.invalid, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': props.modelValue, + 'peer-focus-visible:ring peer-focus-visible:ring-primary-400/50 dark:peer-focus-visible:ring-primary-300/50': !props.disabled + }, + + // Transitions + 'transition-all duration-200', + + // Misc + { 'cursor-pointer': !props.disabled, 'opacity-60 select-none pointer-events-none cursor-default': props.disabled } + ] + }), + label: { + class: 'font-bold text-center w-full' + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: ({ props }) => ({ + class: [ + ' mr-2', + { + 'text-surface-600 dark:text-white/70': !props.modelValue, + 'text-white dark:text-surface-900': props.modelValue + } + ] + }) +}; diff --git a/admin_front/presets/lara/toolbar/index.js b/admin_front/presets/lara/toolbar/index.js new file mode 100644 index 0000000..886b0ce --- /dev/null +++ b/admin_front/presets/lara/toolbar/index.js @@ -0,0 +1,28 @@ +export default { + root: { + class: [ + // Flex & Alignment + 'flex items-center justify-between flex-wrap', + 'gap-2', + + // Spacing + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border border-surface-200 dark:border-surface-700' + ] + }, + start: { + class: 'flex items-center' + }, + center: { + class: 'flex items-center' + }, + end: { + class: 'flex items-center' + } +}; diff --git a/admin_front/presets/lara/tooltip/index.js b/admin_front/presets/lara/tooltip/index.js new file mode 100644 index 0000000..8e9b31b --- /dev/null +++ b/admin_front/presets/lara/tooltip/index.js @@ -0,0 +1,46 @@ +export default { + root: ({ context, props }) => ({ + class: [ + // Position and Shadows + 'absolute', + 'shadow-md', + 'p-fadein', + // Spacing + { + 'py-0 px-1': context?.right || context?.left || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'py-1 px-0': context?.top || context?.bottom + } + ] + }), + arrow: ({ context, props }) => ({ + class: [ + // Position + + 'absolute', + + // Size + 'w-0', + 'h-0', + + // Shape + 'border-transparent', + 'border-solid', + { + 'border-y-[0.25rem] border-r-[0.25rem] border-l-0 border-r-surface-600': context?.right || (!context?.right && !context?.left && !context?.top && !context?.bottom), + 'border-y-[0.25rem] border-l-[0.25rem] border-r-0 border-l-surface-600': context?.left, + 'border-x-[0.25rem] border-t-[0.25rem] border-b-0 border-t-surface-600': context?.top, + 'border-x-[0.25rem] border-b-[0.25rem] border-t-0 border-b-surface-600': context?.bottom + }, + + // Spacing + { + '-mt-1 ': context?.right || (!context?.right && !context?.left && !context?.top && !context?.bottom), + '-mt-1': context?.left, + '-ml-1': context?.top || context?.bottom + } + ] + }), + text: { + class: ['p-3', 'bg-surface-600 dark:bg-surface-700', 'text-white', 'leading-none', 'rounded-md', 'whitespace-pre-line', 'break-words'] + } +}; diff --git a/admin_front/presets/lara/tree/index.js b/admin_front/presets/lara/tree/index.js new file mode 100644 index 0000000..75ff429 --- /dev/null +++ b/admin_front/presets/lara/tree/index.js @@ -0,0 +1,258 @@ +export default { + root: { + class: [ + // Space + 'p-5', + + // Shape + 'rounded-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-700 dark:text-white/80', + 'border border-solid border-surface-200 dark:border-surface-700' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: ['p-1', 'rounded-md', 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset focus:ring-primary-400/50 dark:focus:ring-primary-300/50'] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-600 dark:text-white/70', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + + // States + { 'hover:bg-surface-50 dark:hover:bg-surface-700/40': (props.selectionMode == 'single' || props.selectionMode == 'multiple') && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + { 'cursor-pointer select-none': props.selectionMode == 'single' || props.selectionMode == 'multiple' } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-8 h-8', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-500 dark:text-white': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + // Font + 'leading-none', + + // Spacing + 'm-0', + 'p-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // States + 'hover:border-primary', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin'] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } +}; diff --git a/admin_front/presets/lara/treeselect/index.js b/admin_front/presets/lara/treeselect/index.js new file mode 100644 index 0000000..fb5e974 --- /dev/null +++ b/admin_front/presets/lara/treeselect/index.js @@ -0,0 +1,352 @@ +export default { + root: ({ props, state }) => ({ + class: [ + // Display and Position + 'inline-flex', + 'relative', + + // Shape + 'rounded-md', + + // Color and Background + 'bg-surface-0 dark:bg-surface-900', + 'border', + { 'border-surface-300 dark:border-surface-600': !props.invalid }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-all', + 'duration-200', + + // States + { 'hover:border-primary': !props.invalid }, + { 'outline-none outline-offset-0 ring ring-primary-400/50 dark:ring-primary-300/50': state.focused }, + + // Misc + 'cursor-pointer', + 'select-none', + { 'opacity-60': props.disabled, 'pointer-events-none': props.disabled, 'cursor-default': props.disabled } + ] + }), + labelContainer: { + class: ['overflow-hidden flex flex-auto cursor-pointer'] + }, + label: { + class: [ + 'block leading-[normal]', + + // Space + 'p-3', + + // Color + 'text-surface-800 dark:text-white/80', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden whitespace-nowrap cursor-pointer overflow-ellipsis' + ] + }, + trigger: { + class: [ + // Flexbox + 'flex items-center justify-center', + 'shrink-0', + + // Color and Background + 'bg-transparent', + 'text-surface-500', + + // Size + 'w-12', + + // Shape + 'rounded-tr-md', + 'rounded-br-md' + ] + }, + panel: { + class: [ + // Position + 'absolute top-0 left-0', + + // Shape + 'border-0 dark:border', + 'rounded-md', + 'shadow-md', + + // Color + 'bg-surface-0 dark:bg-surface-800', + 'text-surface-800 dark:text-white/80', + 'dark:border-surface-700' + ] + }, + wrapper: { + class: [ + // Sizing + 'max-h-[200px]', + + // Misc + 'overflow-auto' + ] + }, + tree: { + root: { + class: [ + // Space + 'p-5' + ] + }, + wrapper: { + class: ['overflow-auto'] + }, + container: { + class: [ + // Spacing + 'm-0 p-0', + + // Misc + 'list-none overflow-auto' + ] + }, + node: { + class: ['p-1', 'rounded-md', 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-inset focus:ring-primary-400/50 dark:focus:ring-primary-300/50'] + }, + content: ({ context, props }) => ({ + class: [ + // Flex and Alignment + 'flex items-center', + + // Shape + 'rounded-md', + + // Spacing + 'p-2', + + // Colors + 'text-surface-600 dark:text-white/70', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + + // States + { 'hover:bg-surface-50 dark:hover:bg-surface-700/40': (props.selectionMode == 'single' || props.selectionMode == 'multiple') && !context.selected }, + + // Transition + 'transition-shadow duration-200', + + { 'cursor-pointer select-none': props.selectionMode == 'single' || props.selectionMode == 'multiple' } + ] + }), + toggler: ({ context }) => ({ + class: [ + // Flex and Alignment + 'inline-flex items-center justify-center', + + // Shape + 'border-0 rounded-full', + + // Size + 'w-8 h-8', + + // Spacing + 'mr-2', + + // Colors + 'bg-transparent', + { + 'text-surface-500 dark:text-white': !context.selected, + 'text-primary-600 dark:text-white': context.selected, + invisible: context.leaf + }, + + // States + 'hover:bg-surface-200/20 dark:hover:bg-surface-500/20', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 dark:focus:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'cursor-pointer select-none' + ] + }), + nodeCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-bottom', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + nodeicon: { + class: [ + // Space + 'mr-2', + + // Color + 'text-surface-600 dark:text-white/70' + ] + }, + subgroup: { + class: ['m-0 list-none p-0 pl-2 mt-1'] + }, + filtercontainer: { + class: [ + 'relative block', + + // Space + 'mb-2', + + // Size + 'w-full' + ] + }, + input: { + class: [ + 'relative', + // Font + 'leading-none', + + // Spacing + 'm-0', + 'p-3 pr-10', + + // Size + 'w-full', + + // Shape + 'rounded-md', + + // Colors + 'text-surface-600 dark:text-surface-200', + 'placeholder:text-surface-400 dark:placeholder:text-surface-500', + 'bg-surface-0 dark:bg-surface-900', + 'border border-surface-300 dark:border-surface-600', + + // States + 'hover:border-primary', + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-500/50 dark:focus:ring-primary-400/50', + + // Transition & Misc + 'appearance-none', + 'transition-colors duration-200' + ] + }, + loadingicon: { + class: ['text-surface-500 dark:text-surface-0/70', 'absolute top-[50%] right-[50%] -mt-2 -mr-2 animate-spin'] + }, + searchicon: { + class: [ + // Position + 'absolute top-1/2 -mt-2 right-3', + + // Color + 'text-surface-600 dark:hover:text-white/70' + ] + } + }, + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } +}; diff --git a/admin_front/presets/lara/treetable/index.js b/admin_front/presets/lara/treetable/index.js new file mode 100644 index 0000000..9098dd3 --- /dev/null +++ b/admin_front/presets/lara/treetable/index.js @@ -0,0 +1,427 @@ +export default { + root: ({ props }) => ({ + class: [ + 'relative', + { + 'flex flex-col h-full': props.scrollHeight === 'flex' + } + ] + }), + loadingoverlay: { + class: [ + // Position + 'absolute', + 'top-0 left-0', + 'z-20', + + // Flex & Alignment + 'flex items-center justify-center', + + // Size + 'w-full h-full', + + // Color + 'bg-surface-100/40 dark:bg-surface-800/40', + + // Transition + 'transition duration-200' + ] + }, + loadingicon: { + class: 'w-8 h-8 animate-spin' + }, + wrapper: ({ props }) => ({ + class: [ + // Overflow + { + 'relative overflow-auto': props.scrollable, + 'overflow-x-auto': props.resizableColumns + } + ] + }), + header: ({ props }) => ({ + class: [ + 'font-bold', + + // Shape + props.showGridlines ? 'border-x border-t border-b-0' : 'border-y border-x-0', + + // Spacing + 'p-4', + + // Color + 'bg-surface-50 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + 'text-surface-700 dark:text-white/80' + ] + }), + footer: { + class: [ + // Background, Border & Text + 'bg-slate-50 text-slate-700', + 'border border-x-0 border-t-0 border-surface-50', + // Padding & Font + 'p-4 font-bold', + // Dark Mode + 'dark:bg-surface-900 dark:text-white/70 dark:border-surface-700' + ] + }, + table: { + class: [ + // Table & Width + 'border-collapse table-fixed w-full ' + ] + }, + thead: ({ props }) => ({ + class: [ + // Position & Z-index + { + 'top-0 z-40 sticky': props.scrollable + } + ] + }), + tbody: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + tfoot: ({ props }) => ({ + class: [ + // Block Display + { + block: props.scrollable + } + ] + }), + headerrow: ({ props }) => ({ + class: [ + // Flexbox & Width + { + 'flex flex-nowrap w-full': props.scrollable + } + ] + }), + row: ({ context, props }) => ({ + class: [ + // Flex + { 'flex flex-nowrap w-full': context.scrollable }, + + // Color + 'dark:text-white/80', + { 'bg-primary-highlight text-primary-highlight-inverse': context.selected }, + { 'bg-surface-0 text-surface-600 dark:bg-surface-800': !context.selected }, + + // Hover & Flexbox + { + 'hover:bg-surface-300/20 hover:text-surface-600': context.selectable && !context.selected + }, + 'focus:outline-none focus:outline-offset-0 focus:ring focus:ring-primary-400/50 ring-inset dark:focus:ring-primary-300/50', + + // Transition + { 'transition duration-200': (props.selectionMode && !context.selected) || props.rowHover } + ] + }), + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-50 text-surface-700 dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-400/30': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + column: { + headercell: ({ context, props }) => ({ + class: [ + 'font-bold', + + // Position + { 'sticky z-40': context.scrollable && context.scrollDirection === 'both' && context.frozen }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + { 'first:border-l border-y border-r': context?.showGridlines }, + 'border-0 border-b border-solid', + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Color + (props.sortable === '' || props.sortable) && context.sorted ? 'bg-primary-highlight text-primary-highlight-inverse' : 'bg-surface-50 text-surface-700 dark:text-white/80 dark:bg-surface-800', + 'border-surface-200 dark:border-surface-700', + + // States + { 'hover:bg-surface-100 dark:hover:bg-surface-400/30': (props.sortable === '' || props.sortable) && !context?.sorted }, + 'focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:ring focus-visible:ring-inset focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + { 'transition duration-200': props.sortable === '' || props.sortable }, + + // Misc + { + 'overflow-hidden relative bg-clip-padding': context.resizable && !context.frozen + } + ] + }), + bodycell: ({ context }) => ({ + class: [ + // Position + { + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen + }, + + // Flex & Alignment + { + 'flex flex-1 items-center': context.scrollable, + 'flex-initial shrink-0': context.scrollable && context.scrollDirection === 'both' && !context.frozen + }, + 'text-left', + + // Shape + 'border-0 border-b border-solid', + 'border-surface-200 dark:border-surface-700', + { + 'border-x-0 border-l-0': !context.showGridlines + }, + { 'first:border-l border-r border-b': context?.showGridlines }, + + // Spacing + context?.size === 'small' ? 'p-2' : context?.size === 'large' ? 'p-5' : 'p-4', + + // Misc + { + 'cursor-pointer': context.selectable, + sticky: context.scrollable && context.scrollDirection === 'both' && context.frozen, + 'border-x-0 border-l-0': !context.showGridlines + } + ] + }), + rowtoggler: { + class: [ + 'relative', + + // Flex & Alignment + 'inline-flex items-center justify-center', + 'text-left align-middle', + + // Spacing + 'm-0 mr-2 p-0', + + // Size + 'w-8 h-8', + + // Shape + 'border-0 rounded-full', + + // Color + 'text-surface-500 dark:text-white/70', + 'bg-transparent', + + // States + 'hover:bg-surface-50 dark:hover:bg-surface-700', + 'focus-visible:outline-none focus-visible:outline-offset-0', + 'focus-visible:ring focus-visible:ring-primary-400/50 dark:focus-visible:ring-primary-300/50', + + // Transition + 'transition duration-200', + + // Misc + 'overflow-hidden', + 'cursor-pointer select-none' + ] + }, + sorticon: ({ context }) => ({ + class: ['ml-2 inline-block', context.sorted ? 'fill-primary-highlight-inverse' : 'fill-surface-700 dark:fill-white/70'] + }), + sortbadge: { + class: [ + // Flex & Alignment + 'inline-flex items-center justify-center align-middle', + + // Shape + 'rounded-full', + + // Size + 'w-[1.143rem] leading-[1.143rem]', + + // Spacing + 'ml-2', + + // Color + 'text-primary-highlight-inverse bg-primary-highlight' + ] + }, + columnresizer: { + class: [ + 'block', + + // Position + 'absolute top-0 right-0', + + // Sizing + 'w-2 h-full', + + // Spacing + 'm-0 p-0', + + // Color + 'border border-transparent', + + // Misc + 'cursor-col-resize' + ] + }, + rowCheckbox: ({ props, context, instance }) => ({ + root: { + class: [ + 'relative', + + // Alignment + 'inline-flex', + 'align-middle', + + // Size + 'w-6', + 'h-6', + + // Spacing + 'mr-2', + + // Misc + 'cursor-pointer', + 'select-none' + ] + }, + box: { + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + icon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + { + 'text-white dark:text-surface-900': !instance.partialChecked, + 'text-gray dark:text-white': instance.partialChecked + }, + + // Transitions + 'transition-all', + 'duration-200' + ] + } + }), + + transition: { + enterFromClass: 'opacity-0 scale-y-[0.8]', + enterActiveClass: 'transition-[transform,opacity] duration-[120ms] ease-[cubic-bezier(0,0,0.2,1)]', + leaveActiveClass: 'transition-opacity duration-100 ease-linear', + leaveToClass: 'opacity-0' + } + }, + resizehelper: { + class: 'absolute hidden w-[2px] z-20 bg-primary' + } +}; diff --git a/admin_front/presets/lara/tristatecheckbox/index.js b/admin_front/presets/lara/tristatecheckbox/index.js new file mode 100644 index 0000000..cbc3e68 --- /dev/null +++ b/admin_front/presets/lara/tristatecheckbox/index.js @@ -0,0 +1,104 @@ +export default { + root: { + class: ['cursor-pointer inline-flex relative select-none align-bottom', 'w-6 h-6'] + }, + input: { + class: [ + 'peer', + + // Size + 'w-full ', + 'h-full', + + // Position + 'absolute', + 'top-0 left-0', + 'z-10', + + // Spacing + 'p-0', + 'm-0', + + // Shape + 'opacity-0', + 'rounded-md', + 'outline-none', + 'border-2 border-surface-200 dark:border-surface-700', + + // Misc + 'appearance-none', + 'cursor-pointer' + ] + }, + box: ({ props, context }) => ({ + class: [ + // Alignment + 'flex', + 'items-center', + 'justify-center', + + // Size + 'w-6', + 'h-6', + + // Shape + 'rounded-md', + 'border-2', + + // Colors + { + 'border-surface-200 bg-surface-0 dark:border-surface-700 dark:bg-surface-900': !context.checked, + 'border-primary bg-primary': context.checked + }, + + // States + { + 'peer-hover:border-primary': !props.disabled && !context.checked, + 'peer-hover:bg-primary-hover peer-hover:border-primary-hover': !props.disabled && context.checked, + 'peer-focus-visible:border-primary-500 dark:peer-focus-visible:border-primary-400 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-400/20 dark:peer-focus-visible:ring-primary-300/20': !props.disabled, + 'cursor-default opacity-60': props.disabled + }, + + // Invalid State + { 'border-red-500 dark:border-red-400': props.invalid }, + + // Transitions + 'transition-colors', + 'duration-200' + ] + }), + checkicon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + }, + uncheckicon: { + class: [ + // Font + 'text-base leading-none', + + // Size + 'w-4', + 'h-4', + + // Colors + 'text-white dark:text-surface-900', + + // Transitions + 'transition-all', + 'duration-200' + ] + } +}; diff --git a/admin_front/public/favicon.ico b/admin_front/public/favicon.ico new file mode 100644 index 0000000..18993ad Binary files /dev/null and b/admin_front/public/favicon.ico differ diff --git a/admin_front/server/tsconfig.json b/admin_front/server/tsconfig.json new file mode 100644 index 0000000..b9ed69c --- /dev/null +++ b/admin_front/server/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../.nuxt/tsconfig.server.json" +} diff --git a/admin_front/tailwind.config.js b/admin_front/tailwind.config.js new file mode 100644 index 0000000..aac3792 --- /dev/null +++ b/admin_front/tailwind.config.js @@ -0,0 +1,31 @@ +const colors = require('tailwindcss/colors') +delete colors.inherit +delete colors.current +delete colors.transparent +delete colors.black +delete colors.white +delete colors.lightBlue +delete colors.warmGray +delete colors.trueGray +delete colors.coolGray +delete colors.blueGray + +const randomPrimary = Object.values(colors)[Math.floor(Math.random()*Object.values(colors).length)]; +const randomSurface = Object.values(colors)[Math.floor(Math.random()*Object.values(colors).length)]; +export default { + darkMode: 'class', // This enables dark mode based on the presence of the "dark" class in the HTML tag + content: [ + "presets/**/*.{js,vue,ts}" // this is optional if you are using @nuxtjs/tailwindcss + ], + theme: { + extend: { + colors: { + primary: { + ...randomPrimary, + DEFAULT: randomPrimary[100] + }, + surface: randomSurface + } + } + } +} \ No newline at end of file diff --git a/admin_front/tsconfig.json b/admin_front/tsconfig.json new file mode 100644 index 0000000..a746f2a --- /dev/null +++ b/admin_front/tsconfig.json @@ -0,0 +1,4 @@ +{ + // https://nuxt.com/docs/guide/concepts/typescript + "extends": "./.nuxt/tsconfig.json" +} diff --git a/back/.gitignore b/back/.gitignore index 94ac916..50f576c 100644 --- a/back/.gitignore +++ b/back/.gitignore @@ -89,6 +89,10 @@ local_settings.py .env db.sqlite3 +<<<<<<< HEAD /**/migrations/00* +======= +api/migrations/00* +>>>>>>> bx-596-makepromo files/* \ No newline at end of file diff --git a/back/Dockerfile b/back/Dockerfile index 5a28038..f54aec0 100644 --- a/back/Dockerfile +++ b/back/Dockerfile @@ -1,5 +1,5 @@ # Use the official Python image with version 3.11 -FROM python:3.11 +FROM dockerhub.timeweb.cloud/python:3.11 # Set environment variables for Python and unbuffered mode ENV PYTHONUNBUFFERED 1 @@ -12,7 +12,7 @@ ENV APP_HOME=/app WORKDIR $APP_HOME # Install deb pkgs for usb RUN apt-get update - +RUN apt-get install ffmpeg libsm6 libxext6 -y # Install dependencies COPY requirements.txt /app/ RUN pip install --upgrade pip && pip install -r requirements.txt diff --git a/back/api/admin.py b/back/api/admin.py index c2981f8..e17f43a 100644 --- a/back/api/admin.py +++ b/back/api/admin.py @@ -1,5 +1,13 @@ from django.contrib import admin +<<<<<<< HEAD from .models import Product # Register your models here. -admin.site.register(Product) \ No newline at end of file +admin.site.register(Product) +======= +from .models import Product, Floorplan + +# Register your models here. +admin.site.register(Product) +admin.site.register(Floorplan) +>>>>>>> bx-596-makepromo diff --git a/back/api/migrations/0001_initial.py b/back/api/migrations/0001_initial.py deleted file mode 100644 index 1dc2830..0000000 --- a/back/api/migrations/0001_initial.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-26 10:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Task', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=100)), - ], - ), - ] diff --git a/back/api/migrations/0002_rename_task_product.py b/back/api/migrations/0002_rename_task_product.py deleted file mode 100644 index 31c1020..0000000 --- a/back/api/migrations/0002_rename_task_product.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-26 11:26 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('api', '0001_initial'), - ] - - operations = [ - migrations.RenameModel( - old_name='Task', - new_name='Product', - ), - ] diff --git a/back/api/migrations/0003_product_model3d.py b/back/api/migrations/0003_product_model3d.py deleted file mode 100644 index a6f5732..0000000 --- a/back/api/migrations/0003_product_model3d.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-26 12:45 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('api', '0002_rename_task_product'), - ] - - operations = [ - migrations.AddField( - model_name='product', - name='model3d', - field=models.FileField(default=None, null=True, upload_to=''), - ), - ] diff --git a/back/api/migrations/0004_product_description.py b/back/api/migrations/0004_product_description.py deleted file mode 100644 index 4b755d0..0000000 --- a/back/api/migrations/0004_product_description.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-26 12:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('api', '0003_product_model3d'), - ] - - operations = [ - migrations.AddField( - model_name='product', - name='description', - field=models.TextField(default=None, null=True), - ), - ] diff --git a/back/api/migrations/0005_product_image1_alter_product_model3d.py b/back/api/migrations/0005_product_image1_alter_product_model3d.py deleted file mode 100644 index c37929e..0000000 --- a/back/api/migrations/0005_product_image1_alter_product_model3d.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-27 06:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('api', '0004_product_description'), - ] - - operations = [ - migrations.AddField( - model_name='product', - name='image1', - field=models.ImageField(blank=True, default=None, null=True, upload_to='back/files'), - ), - migrations.AlterField( - model_name='product', - name='model3d', - field=models.FileField(blank=True, default=None, null=True, upload_to='back/files'), - ), - ] diff --git a/back/api/migrations/0006_product_image2_product_image3.py b/back/api/migrations/0006_product_image2_product_image3.py deleted file mode 100644 index 9cdba28..0000000 --- a/back/api/migrations/0006_product_image2_product_image3.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-27 06:35 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('api', '0005_product_image1_alter_product_model3d'), - ] - - operations = [ - migrations.AddField( - model_name='product', - name='image2', - field=models.ImageField(blank=True, default=None, null=True, upload_to='back/files'), - ), - migrations.AddField( - model_name='product', - name='image3', - field=models.ImageField(blank=True, default=None, null=True, upload_to='back/files'), - ), - ] diff --git a/back/api/models.py b/back/api/models.py index e9d63dc..de70a66 100644 --- a/back/api/models.py +++ b/back/api/models.py @@ -1,4 +1,5 @@ from django.db import models +import json from django.db import models @@ -8,20 +9,26 @@ from django.db import models class Product(models.Model): title = models.CharField(max_length=100) description = models.TextField(default=None, null=True) - model3d = models.FileField( - default=None, blank=True, null=True, upload_to="files" - ) - image1 = models.ImageField( - default=None, blank=True, null=True, upload_to="files" - ) - image2 = models.ImageField( - default=None, blank=True, null=True, upload_to="files" - ) - image3 = models.ImageField( - default=None, blank=True, null=True, upload_to="files" - ) + model3d = models.FileField(default=None, blank=True, null=True, upload_to="files") + image1 = models.ImageField(default=None, blank=True, null=True, upload_to="files") + image2 = models.ImageField(default=None, blank=True, null=True, upload_to="files") + image3 = models.ImageField(default=None, blank=True, null=True, upload_to="files") def __str__(self): return self.title +<<<<<<< HEAD +======= +class Floorplan(models.Model): + title = models.CharField(max_length=200) + np_field = models.TextField() + d_size = models.IntegerField(null=True, blank=True) + d_border = models.IntegerField(null=True, blank=True) + paths = models.TextField() + + +class FloorplanPoints(models.Model): + plan = models.OneToOneField(Floorplan, on_delete=models.CASCADE, primary_key=True) + points = models.JSONField() +>>>>>>> bx-596-makepromo diff --git a/back/api/serializers.py b/back/api/serializers.py index 46e721d..1fc807c 100644 --- a/back/api/serializers.py +++ b/back/api/serializers.py @@ -1,5 +1,8 @@ from rest_framework import routers, serializers, viewsets -from .models import Product +from .models import Floorplan, FloorplanPoints, Product +import logging + +logger = logging.getLogger("root") class ProductSerializer(serializers.HyperlinkedModelSerializer): @@ -14,3 +17,34 @@ class ProductSerializer(serializers.HyperlinkedModelSerializer): "image2", "image3", ] + + +class FloorplanSerializer(serializers.ModelSerializer): + class Meta: + model = Floorplan + fields = [ + "id", + "title", + "np_field", + "d_border", + "d_size", + "paths", + ] + + +class FloorplanListSerializer(serializers.ModelSerializer): + class Meta: + model = Floorplan + fields = [ + "id", + "title", + ] + + +class FloorplanPointsSerializer(serializers.ModelSerializer): + class Meta: + model = FloorplanPoints + fields = [ + "points", + "plan", + ] diff --git a/back/api/tracer.py b/back/api/tracer.py new file mode 100644 index 0000000..f361a2e --- /dev/null +++ b/back/api/tracer.py @@ -0,0 +1,66 @@ +import io +import base64 +import cv2 +import numpy as np + +def numpy_arr_to_zip_str(arr): + f = io.BytesIO() + np.savez_compressed(f, arr=arr) + return base64.b64encode(f.getvalue()) + +def numpy_zip_str_to_arr(zip_str): + f = io.BytesIO(base64.b64decode(zip_str)) + return np.load(f)['arr'].tolist() + +def read_image(content: bytes) -> np.ndarray: + """ + Image bytes to OpenCV image + + :param content: Image bytes + :returns OpenCV image + :raises TypeError: If content is not bytes + :raises ValueError: If content does not represent an image + """ + if not isinstance(content, bytes): + raise TypeError(f"Expected 'content' to be bytes, received: {type(content)}") + image = cv2.imdecode(np.frombuffer(content, dtype=np.uint8), cv2.IMREAD_COLOR) + if image is None: + raise ValueError(f"Expected 'content' to be image bytes") + return image + + +def parse_image(img): + (img_h, img_w) = img.shape[:2] + t = 1920 + w = t + h = int((img_h / img_w) * t) + img = cv2.resize(img, (w, h)) + + gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) + gray = 255 - gray + gray = cv2.threshold(gray, 250, 255, cv2.THRESH_BINARY)[1] + gray = cv2.blur(gray, (10, 5)) + contours, hierarchy = cv2.findContours(gray, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) + + for cnt in contours: + area = cv2.contourArea(cnt) + # if area > 150000 and area < 500000: + cv2.drawContours(img, [cnt], 0, (255, 0, 0), 2) + + svg_paths = [] + + for cnt in contours: + if len(cnt) > 80: + svg_path = "M" + for i in range(len(cnt)): + x, y = cnt[i][0] + svg_path += f"{x} {y} " + svg_paths.append(svg_path) + + return { + "width": w, + "height": h, + "paths": svg_paths, + "array": gray.tolist(), + "b64": numpy_arr_to_zip_str(gray), + } diff --git a/back/api/views.py b/back/api/views.py index a1dc6fb..bf3f1b6 100644 --- a/back/api/views.py +++ b/back/api/views.py @@ -1,21 +1,33 @@ -from django.shortcuts import render -from rest_framework.parsers import JSONParser -from django.views.decorators.csrf import csrf_exempt -from django.http import HttpResponse, JsonResponse -from .serializers import ProductSerializer -from .models import Product +import json +from rest_framework.parsers import JSONParser, MultiPartParser +from rest_framework.views import APIView +from rest_framework import status + +from django.http import JsonResponse +from django.shortcuts import get_object_or_404 + +from api.tracer import parse_image, read_image, numpy_zip_str_to_arr + +from .serializers import ( + FloorplanListSerializer, + FloorplanPointsSerializer, + FloorplanSerializer, + ProductSerializer, +) +from .models import Floorplan, FloorplanPoints, Product + +import logging + +logger = logging.getLogger("root") -@csrf_exempt -def products(request): - """ - List all task snippets - """ - if request.method == "GET": +class Products(APIView): + def get(self, request): tasks = Product.objects.all() serializer = ProductSerializer(tasks, many=True) return JsonResponse(serializer.data, safe=False) - elif request.method == "POST": + + def post(self, request): data = JSONParser().parse(request) serializer = ProductSerializer(data=data) if serializer.is_valid(): @@ -23,3 +35,100 @@ def products(request): return JsonResponse(serializer.data, status=201) return JsonResponse(serializer.errors, status=400) + + +class FloorplanView(APIView): + + parser_classes = ( + MultiPartParser, + JSONParser, + ) + + def post(self, request): + try: + file = request.FILES["demo"] + logger.info(file.__dict__) + res = parse_image(read_image(file.read())) + serializer = FloorplanSerializer( + data={ + "title": file.name, + "np_field": res["b64"].decode(), + "paths": json.dumps(res["paths"]), + } + ) + + if serializer.is_valid(): + serializer.save() + return JsonResponse( + data={ + "response": { + "np_field": res["array"], + "paths": res["paths"], + } + }, + status=201, + ) + else: + logger.info(serializer.errors) + return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + except Exception as e: + logger.error(e) + raise e + + def get(self, request, id=None): + try: + if id is not None: + item = Floorplan.objects.get(id=id) + serializer = FloorplanSerializer(item, many=False) + data = serializer.data + data["np_field"] = numpy_zip_str_to_arr(data["np_field"]) + return JsonResponse(data, safe=False) + else: + items = Floorplan.objects.only("id", "title").all() + serializer = FloorplanListSerializer(items, many=True) + return JsonResponse(serializer.data, safe=False) + except Exception as e: + logger.error(e) + raise e + + def patch(self, request, id): + try: + if id is not None: + item = Floorplan.objects.get(id=id) + serializer = FloorplanSerializer(item, data=request.data, partial=True) + if serializer.is_valid(): + serializer.save() + return JsonResponse(serializer.data, status=status.HTTP_200_OK) + else: + logger.info(serializer.errors) + return JsonResponse( + serializer.errors, status=status.HTTP_400_BAD_REQUEST + ) + else: + return JsonResponse("No item", status=status.HTTP_400_BAD_REQUEST) + except Exception as e: + logger.error(e) + raise e + + +class FloorplanPointsView(APIView): + def get(self, request, id): + if FloorplanPoints.objects.filter(plan=id).exists(): + points = FloorplanPoints.objects.get(plan=id) + serializer = FloorplanPointsSerializer(points, many=False) + return JsonResponse(serializer.data, safe=False) + else: + return JsonResponse( + "No item", safe=False, status=status.HTTP_400_BAD_REQUEST + ) + + def post(self, request, id): + data = JSONParser().parse(request) + data["plan"] = id + floorplapoints_object = get_object_or_404(FloorplanPoints, plan=id) + serializer = FloorplanPointsSerializer(floorplapoints_object, data=data, partial=True) + if serializer.is_valid(): + serializer.save() + return JsonResponse(serializer.data, status=status.HTTP_201_CREATED) + else: + return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/back/back/settings.py b/back/back/settings.py index 5a83d12..d6ae1f1 100644 --- a/back/back/settings.py +++ b/back/back/settings.py @@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/5.0/ref/settings/ from pathlib import Path import os from dotenv import load_dotenv + load_dotenv() # Build paths inside the project like this: BASE_DIR / 'subdir'. @@ -42,17 +43,24 @@ ALLOWED_HOSTS = [ CSRF_TRUSTED_ORIGINS = ( "https://demo.kustarshina.ru", "http://localhost", + "http://localhost:3011", + "http://localhost:4173", + "http://localhost:5173", + "http://192.168.103.159:3011", "http://192.168.103.159", ) CORS_ORIGIN_ALLOW_ALL = False CORS_ORIGIN_WHITELIST = [ "null", "http://localhost", + "http://localhost:3011", "http://localhost:4173", "http://localhost:5173", "http://localhost:8000", + "http://192.168.103.159:3011", "http://127.0.0.1", "http://192.168.103.159", + "http://192.168.103.159:3000", "http://192.168.103.159:8000", "http://front:4173", "http://front:5173", diff --git a/back/back/urls.py b/back/back/urls.py index c5343f0..b821e6f 100644 --- a/back/back/urls.py +++ b/back/back/urls.py @@ -17,6 +17,7 @@ Including another URLconf from django.contrib import admin from django.urls import include, path from django.conf.urls.static import static +from django.views.decorators.csrf import csrf_exempt from api import views from rest_framework import routers @@ -28,5 +29,8 @@ router.register(r'api/front_img', frontimg_views.ImageViewSet) urlpatterns = [ path('', include(router.urls)), path("admin/", admin.site.urls), - path("api/products", views.products), + path("api/products", csrf_exempt(views.Products.as_view())), + path("api/floorplan/", csrf_exempt(views.FloorplanView.as_view())), + path("api/floorplan/", csrf_exempt(views.FloorplanView.as_view())), + path("api/floorplan//points", csrf_exempt(views.FloorplanPointsView.as_view())), ] + static('/files', document_root='files') diff --git a/back/requirements.txt b/back/requirements.txt index 7c8d076..4d567c7 100644 --- a/back/requirements.txt +++ b/back/requirements.txt @@ -1,10 +1,13 @@ asgiref==3.8.1 ; python_version >= "3.10" and python_version < "4.0" colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" django-cors-headers==4.3.1 ; python_version >= "3.10" and python_version < "4.0" -django==5.0.4 ; python_version >= "3.10" and python_version < "4.0" +django==5.0.6 ; python_version >= "3.10" and python_version < "4.0" djangorestframework==3.15.1 ; python_version >= "3.10" and python_version < "4.0" mslex==1.2.0 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" +numpy==1.26.4 ; python_version >= "3.10" and python_version < "4.0" +opencv-python==4.9.0.80 ; python_version >= "3.10" and python_version < "4.0" pillow==10.3.0 ; python_version >= "3.10" and python_version < "4.0" +potracer==0.0.4 ; python_version >= "3.10" and python_version < "4.0" psutil==5.9.8 ; python_version >= "3.10" and python_version < "4.0" psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" diff --git a/dev.sh b/dev.sh new file mode 100755 index 0000000..132f938 --- /dev/null +++ b/dev.sh @@ -0,0 +1,3 @@ +x-terminal-emulator -title "Interactive table Admin FRONT" -e "poetry run task admin_front_dev" & +x-terminal-emulator -title "Interactive table FRONT" -e "poetry run task front_dev" & +x-terminal-emulator -title "Interactive table BACK" -e "poetry run task server" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f2dee60..e81f542 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,7 @@ services: - ./files:/app/files networks: - network + - dev front: build: @@ -32,6 +33,7 @@ services: condition: service_healthy networks: - network + - dev nginx: image: nginx:1.25 @@ -50,7 +52,14 @@ services: - ./nginx/conf.d:/etc/nginx/conf.d networks: - network + - dev networks: network: driver: bridge + dev: + driver: bridge + ipam: + config: + - subnet: 10.67.0.0/24 + gateway: 10.67.0.1 diff --git a/front/Dockerfile b/front/Dockerfile index 8af2174..de7f040 100644 --- a/front/Dockerfile +++ b/front/Dockerfile @@ -9,5 +9,5 @@ WORKDIR /src RUN npm install COPY . /src -RUN npm run build +RUN npm run build_dev CMD npm run preview -- --host \ No newline at end of file diff --git a/front/components.d.ts b/front/components.d.ts index 4a6e664..5f8b8a8 100644 --- a/front/components.d.ts +++ b/front/components.d.ts @@ -7,15 +7,24 @@ export {} declare module 'vue' { export interface GlobalComponents { + copy: typeof import('./src/components/Promo/modelItem copy.vue')['default'] + Floorplan: typeof import('./src/components/Floorplan/index.vue')['default'] + Gallery: typeof import('./src/components/Promo/gallery.vue')['default'] + Game: typeof import('./src/components/Game.vue')['default'] Home: typeof import('./src/components/Home.vue')['default'] - IMdi3dRotation: typeof import('~icons/mdi/3d-rotation')['default'] - IMdiCard: typeof import('~icons/mdi/card')['default'] - IMdiClarify: typeof import('~icons/mdi/clarify')['default'] IMdiFile: typeof import('~icons/mdi/file')['default'] - IMdiIcon: typeof import('~icons/mdi/icon')['default'] - IMdiPrinter: typeof import('~icons/mdi/printer')['default'] + IMdiHexagonOutline: typeof import('~icons/mdi/hexagon-outline')['default'] + IMdiHome: typeof import('~icons/mdi/home')['default'] + IMdiMonitorScreenshot: typeof import('~icons/mdi/monitor-screenshot')['default'] + IMdiShop: typeof import('~icons/mdi/shop')['default'] IMdiVideo3d: typeof import('~icons/mdi/video3d')['default'] + Item: typeof import('./src/components/Floorplan/item.vue')['default'] + Main: typeof import('./src/components/Promo/main.vue')['default'] + ModelItem: typeof import('./src/components/Promo/modelItem.vue')['default'] + ModelItem2: typeof import('./src/components/Promo/modelItem2.vue')['default'] + Models: typeof import('./src/components/Promo/models.vue')['default'] Projects: typeof import('./src/components/Projects.vue')['default'] + Promo: typeof import('./src/components/Promo/index.vue')['default'] RandomIcon: typeof import('./src/components/RandomIcon.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] diff --git a/front/package-lock.json b/front/package-lock.json index 7cf9567..c418953 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -9,15 +9,25 @@ "version": "0.0.0", "dependencies": { "@fireworks-js/vue": "^2.10.7", + "@tresjs/cientos": "^3.9.0", + "@tresjs/core": "^3.9.0", + "@vueuse/components": "^10.9.0", "@vueuse/core": "^10.9.0", + "d3": "^7.9.0", + "pathfinding": "^0.4.18", "pinia": "^2.1.7", "reset-css": "^5.0.2", + "three": "^0.164.1", + "vite-svg-loader": "^5.1.0", "vue": "^3.4.21", "vue-3d-model": "^2.0.0-alpha.4", "vue-router": "^4.3.2" }, "devDependencies": { "@iconify-json/mdi": "^1.1.66", + "@types/d3": "^7.4.3", + "@types/pathfinding": "^0.0.9", + "@types/three": "^0.164.1", "@vitejs/plugin-vue": "^5.0.4", "@vue/compiler-sfc": "^3.2.31", "sass": "^1.75.0", @@ -25,9 +35,15 @@ "unplugin-icons": "^0.18.5", "unplugin-vue-components": "^0.26.0", "vite": "^5.2.0", + "vite-plugin-static-copy": "^1.0.5", "vue-tsc": "^2.0.6" } }, + "node_modules/@alvarosabu/utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@alvarosabu/utils/-/utils-3.2.0.tgz", + "integrity": "sha512-aoGWRfaQjOo9TUwrBA6W0zwTHktgrXy69GIFNILT4gHsqscw6+X8P6uoSlZVQFr887SPm8x3aDin5EBVq8y4pw==" + }, "node_modules/@antfu/install-pkg": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.3.tgz", @@ -767,18 +783,433 @@ "win32" ] }, + "node_modules/@tresjs/cientos": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@tresjs/cientos/-/cientos-3.9.0.tgz", + "integrity": "sha512-LAtMveKlecKvWh7TNWdwEs3nQUYMLqz9DZy0YhSZ6OVTfL2vevx2K4sH9744UME8OedUf4fkFFkX4OWQRHaDRQ==", + "dependencies": { + "@tresjs/core": "3.9.0", + "@vueuse/core": "^10.9.0", + "camera-controls": "^2.8.3", + "stats-gl": "^2.2.8", + "stats.js": "^0.17.0", + "three-custom-shader-material": "^5.4.0", + "three-stdlib": "^2.29.11" + }, + "peerDependencies": { + "@tresjs/core": ">=3.2", + "three": ">=0.133", + "tweakpane": ">=3.0.0", + "vue": ">=3.3" + } + }, + "node_modules/@tresjs/core": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/@tresjs/core/-/core-3.9.0.tgz", + "integrity": "sha512-6el70oXSduTvSA3XCI8/rQV2GzcgCLceZKA443CTU/MBPmRDULJ12q/UYl18Ij4CJ68rTqgVi0Da+WNMrs784A==", + "dependencies": { + "@alvarosabu/utils": "^3.1.1", + "@vue/devtools-api": "^6.6.1", + "@vueuse/core": "^10.7.0" + }, + "peerDependencies": { + "three": ">=0.133", + "vue": ">=3.3" + } + }, + "node_modules/@tresjs/core/node_modules/@vueuse/core": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.10.0.tgz", + "integrity": "sha512-vexJ/YXYs2S42B783rI95lMt3GzEwkxzC8Hb0Ndpd8rD+p+Lk/Za4bd797Ym7yq4jXqdSyj3JLChunF/vyYjUw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.10.0", + "@vueuse/shared": "10.10.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@tresjs/core/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@tresjs/core/node_modules/@vueuse/metadata": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.10.0.tgz", + "integrity": "sha512-UNAo2sTCAW5ge6OErPEHb5z7NEAg3XcO9Cj7OK45aZXfLLH1QkexDcZD77HBi5zvEiLOm1An+p/4b5K3Worpug==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@tresjs/core/node_modules/@vueuse/shared": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.10.0.tgz", + "integrity": "sha512-2aW33Ac0Uk0U+9yo3Ypg9s5KcR42cuehRWl7vnUHadQyFvCktseyxxEPBi1Eiq4D2yBGACOnqLZpx1eMc7g5Og==", + "dependencies": { + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@tresjs/core/node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.8", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", + "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tweenjs/tween.js": { + "version": "23.1.2", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.2.tgz", + "integrity": "sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==" + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", + "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "dev": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dev": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dev": true, + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "dev": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/draco3d": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", + "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==" + }, "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/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "dev": true + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" + }, + "node_modules/@types/pathfinding": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/pathfinding/-/pathfinding-0.0.9.tgz", + "integrity": "sha512-b7tf4+gVc8+sRETzJ7pCeqhknQ9XVgYqbH5+ekcHmO5Hf/fy9BTBzSstE9mcOQc81Y0qITda8tF/UsN3huIMwg==", + "dev": true + }, + "node_modules/@types/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==" + }, "node_modules/@types/three": { - "version": "0.141.0", - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.141.0.tgz", - "integrity": "sha512-OJdKDgTPVBUgc+s74DYoy4aLznbFFC38Xm4ElmU1YwGNgR7GGFVvFCX7lpVgOsT6S1zSJtGdajTsOYE8/xY9nA==", + "version": "0.164.1", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.164.1.tgz", + "integrity": "sha512-dR/trWDhyaNqJV38rl1TonlCA9DpnX7OPYDWD81bmBGn/+uEc3+zNalFxQcV4FlPTeDBhCY3SFWKvK6EJwL88g==", + "dev": true, "dependencies": { - "@types/webxr": "*" + "@tweenjs/tween.js": "~23.1.1", + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.8.2", + "meshoptimizer": "~0.18.1" } }, "node_modules/@types/web-bluetooth": { @@ -879,9 +1310,9 @@ } }, "node_modules/@vue/devtools-api": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", - "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.2.tgz", + "integrity": "sha512-134clD8u7cBBXdmBbXI282gHGF7T/eAbD/G7mAK2llQF62IbI4ny28IVamZVMoJSvfImC2Xxnj732hXkJvUj6g==" }, "node_modules/@vue/language-core": { "version": "2.0.14", @@ -950,6 +1381,41 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz", "integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==" }, + "node_modules/@vueuse/components": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/components/-/components-10.9.0.tgz", + "integrity": "sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==", + "dependencies": { + "@vueuse/core": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + } + }, + "node_modules/@vueuse/components/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/@vueuse/core": { "version": "10.9.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", @@ -1076,6 +1542,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1103,6 +1574,14 @@ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true }, + "node_modules/camera-controls": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.8.3.tgz", + "integrity": "sha512-zFjqUR6onLkG+z1A6vAWfzovxZxWVSvp6e5t3lfZgfgPZtX3n74aykNAUaoRbq8Y3tOxadHkDjbfGDOP9hFf2w==", + "peerDependencies": { + "three": ">=0.126.1" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -1127,6 +1606,14 @@ "fsevents": "~2.3.2" } }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/computeds": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", @@ -1139,6 +1626,11 @@ "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", "dev": true }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1153,11 +1645,449 @@ "node": ">= 8" } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + }, "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/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -1181,6 +2111,70 @@ } } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/draco3d": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==" + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1283,6 +2277,11 @@ "reusify": "^1.0.4" } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1316,6 +2315,20 @@ "resolved": "https://registry.npmjs.org/fireworks-js/-/fireworks-js-2.10.7.tgz", "integrity": "sha512-FyRNiqlgu9ZeFCjfN0UiGUlj5dUWNYLyFaWN/Q8sOMf0E+KGA4dMROaBZpCtym85fChgCspoa3jHoLTRZiy74A==" }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1363,6 +2376,30 @@ "node": ">= 6" } }, + "node_modules/glsl-token-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-functions/-/glsl-token-functions-1.0.1.tgz", + "integrity": "sha512-EigGhp1g+aUVeUNY7H1o5tL/bnwIB3/FcRREPr2E7Du+/UDXN24hDkaZ3e4aWHDjHr9lJ6YHXMISkwhUYg9UOg==" + }, + "node_modules/glsl-token-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz", + "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==" + }, + "node_modules/glsl-tokenizer": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", + "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "dependencies": { + "through2": "^0.6.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -1384,6 +2421,11 @@ "he": "bin/he" } }, + "node_modules/heap": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.5.tgz", + "integrity": "sha512-G7HLD+WKcrOyJP5VQwYZNC3Z6FcQ7YYjEFiFoIj8PfEr73mu421o8B1N5DKUcc8K37EsJ2XXWA8DtrDz/2dReg==" + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -1393,12 +2435,36 @@ "node": ">=10.17.0" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/immutable": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", "dev": true }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1465,12 +2531,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, "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/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/kolorist": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", @@ -1528,6 +2611,11 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -1543,6 +2631,11 @@ "node": ">= 8" } }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==" + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -1642,6 +2735,25 @@ "node": ">=8" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "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==", + "engines": { + "node": ">= 6" + } + }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -1723,6 +2835,14 @@ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true }, + "node_modules/pathfinding": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/pathfinding/-/pathfinding-0.4.18.tgz", + "integrity": "sha512-R0TGEQ9GRcFCDvAWlJAWC+KGJ9SLbW4c0nuZRcioVlXVTlw+F5RvXQ8SQgSqI9KXWC1ew95vgmIiyaWTlCe9Ag==", + "dependencies": { + "heap": "0.2.5" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1828,6 +2948,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -1848,6 +2973,17 @@ } ] }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1892,6 +3028,11 @@ "node": ">=0.10.0" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rollup": { "version": "4.16.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.16.4.tgz", @@ -1950,6 +3091,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sass": { "version": "1.75.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", @@ -2017,6 +3168,36 @@ "node": ">=0.10.0" } }, + "node_modules/stats-gl": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.2.8.tgz", + "integrity": "sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==", + "dependencies": { + "@types/three": "^0.163.0" + } + }, + "node_modules/stats-gl/node_modules/@types/three": { + "version": "0.163.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.163.0.tgz", + "integrity": "sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==", + "dependencies": { + "@tweenjs/tween.js": "~23.1.1", + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.8.2", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -2047,10 +3228,88 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, "node_modules/three": { - "version": "0.141.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.141.0.tgz", - "integrity": "sha512-JaSDAPWuk4RTzG5BYRQm8YZbERUxTfTDVouWgHMisS2to4E5fotMS9F2zPFNOIJyEFTTQDDKPpsgZVThKU3pXA==" + "version": "0.164.1", + "resolved": "https://registry.npmjs.org/three/-/three-0.164.1.tgz", + "integrity": "sha512-iC/hUBbl1vzFny7f5GtqzVXYjMJKaTPxiCxXfrvVdBi1Sf+jhd1CAkitiFwC7mIBFCo3MrDLJG97yisoaWig0w==" + }, + "node_modules/three-custom-shader-material": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/three-custom-shader-material/-/three-custom-shader-material-5.4.0.tgz", + "integrity": "sha512-Yn1lFlKOk3Vul3npEGAmbbFUZ5S2+yjPgM2XqJEZEYRSUUH2vk+WVYrtTB6Bcq15wa7hLUXAKoctAvbRmBmbYA==", + "dependencies": { + "glsl-token-functions": "^1.0.1", + "glsl-token-string": "^1.0.1", + "glsl-tokenizer": "^2.1.5", + "object-hash": "^3.0.0" + }, + "peerDependencies": { + "@react-three/fiber": ">=8.0", + "react": ">=18.0", + "three": ">=0.154" + }, + "peerDependenciesMeta": { + "@react-three/fiber": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/three-stdlib": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.30.1.tgz", + "integrity": "sha512-3WHpc6rB5aiqkrbVA0h09NcwwCdcZ/bTN/01BbjcxzLQLjclhi163JUA02VZ93jR5zN7und6gfrWwewNHQTMog==", + "dependencies": { + "@types/draco3d": "^1.4.0", + "@types/offscreencanvas": "^2019.6.4", + "@types/webxr": "^0.5.2", + "draco3d": "^1.4.1", + "fflate": "^0.6.9", + "potpack": "^1.0.1" + }, + "peerDependencies": { + "three": ">=0.128.0" + } + }, + "node_modules/three-stdlib/node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==" + }, + "node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -2064,6 +3323,15 @@ "node": ">=8.0" } }, + "node_modules/tweakpane": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-4.0.3.tgz", + "integrity": "sha512-BlcWOAe8oe4c+k9pmLBARGdWB6MVZMszayekkixQXTgkxTaYoTUpHpwVEp+3HkoamZkomodpbBf0CkguIHTgLg==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/cocopon" + } + }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -2092,6 +3360,15 @@ "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", "dev": true }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/unplugin": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", @@ -2253,6 +3530,35 @@ } } }, + "node_modules/vite-plugin-static-copy": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-1.0.5.tgz", + "integrity": "sha512-02k0Rox+buYdEOfeilKZSgs1gXfPf9RjVztZEIYZgVIxjsVZi6AXssjzdi+qW6zYt00d3bq+tpP2voVXN2fKLw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.3", + "fast-glob": "^3.2.11", + "fs-extra": "^11.1.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0" + } + }, + "node_modules/vite-svg-loader": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-5.1.0.tgz", + "integrity": "sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==", + "dependencies": { + "svgo": "^3.0.2" + }, + "peerDependencies": { + "vue": ">=3.2.13" + } + }, "node_modules/vue": { "version": "3.4.25", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz", @@ -2285,6 +3591,19 @@ "vue": ">=3.0.0" } }, + "node_modules/vue-3d-model/node_modules/@types/three": { + "version": "0.141.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.141.0.tgz", + "integrity": "sha512-OJdKDgTPVBUgc+s74DYoy4aLznbFFC38Xm4ElmU1YwGNgR7GGFVvFCX7lpVgOsT6S1zSJtGdajTsOYE8/xY9nA==", + "dependencies": { + "@types/webxr": "*" + } + }, + "node_modules/vue-3d-model/node_modules/three": { + "version": "0.141.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.141.0.tgz", + "integrity": "sha512-JaSDAPWuk4RTzG5BYRQm8YZbERUxTfTDVouWgHMisS2to4E5fotMS9F2zPFNOIJyEFTTQDDKPpsgZVThKU3pXA==" + }, "node_modules/vue-router": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", @@ -2356,6 +3675,14 @@ "node": ">= 8" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/front/package.json b/front/package.json index dbc1586..83a668a 100644 --- a/front/package.json +++ b/front/package.json @@ -6,19 +6,30 @@ "scripts": { "dev": "vite", "build": "vue-tsc && vite build", + "build_dev": "vite build", "preview": "vite preview" }, "dependencies": { "@fireworks-js/vue": "^2.10.7", + "@tresjs/cientos": "^3.9.0", + "@tresjs/core": "^3.9.0", + "@vueuse/components": "^10.9.0", "@vueuse/core": "^10.9.0", + "d3": "^7.9.0", + "pathfinding": "^0.4.18", "pinia": "^2.1.7", "reset-css": "^5.0.2", + "three": "^0.164.1", + "vite-svg-loader": "^5.1.0", "vue": "^3.4.21", "vue-3d-model": "^2.0.0-alpha.4", "vue-router": "^4.3.2" }, "devDependencies": { "@iconify-json/mdi": "^1.1.66", + "@types/d3": "^7.4.3", + "@types/pathfinding": "^0.0.9", + "@types/three": "^0.164.1", "@vitejs/plugin-vue": "^5.0.4", "@vue/compiler-sfc": "^3.2.31", "sass": "^1.75.0", @@ -26,6 +37,7 @@ "unplugin-icons": "^0.18.5", "unplugin-vue-components": "^0.26.0", "vite": "^5.2.0", + "vite-plugin-static-copy": "^1.0.5", "vue-tsc": "^2.0.6" } } diff --git a/front/public/andrey.glb b/front/public/andrey.glb new file mode 100644 index 0000000..0168b7b Binary files /dev/null and b/front/public/andrey.glb differ diff --git a/front/public/area_light.glb b/front/public/area_light.glb new file mode 100644 index 0000000..929a8bb Binary files /dev/null and b/front/public/area_light.glb differ diff --git a/front/public/ground.glb b/front/public/ground.glb new file mode 100644 index 0000000..dd0bfc4 Binary files /dev/null and b/front/public/ground.glb differ diff --git a/front/public/mangal.glb b/front/public/mangal.glb new file mode 100644 index 0000000..ca30271 Binary files /dev/null and b/front/public/mangal.glb differ diff --git a/front/public/pillar.glb b/front/public/pillar.glb new file mode 100644 index 0000000..c8ef042 Binary files /dev/null and b/front/public/pillar.glb differ diff --git a/front/public/pointer.glb b/front/public/pointer.glb new file mode 100644 index 0000000..0fa9229 Binary files /dev/null and b/front/public/pointer.glb differ diff --git a/front/public/quad.glb b/front/public/quad.glb new file mode 100644 index 0000000..4a77e71 Binary files /dev/null and b/front/public/quad.glb differ diff --git a/front/public/sea.ogg b/front/public/sea.ogg new file mode 100644 index 0000000..56b6fe6 Binary files /dev/null and b/front/public/sea.ogg differ diff --git a/front/public/spot_light.glb b/front/public/spot_light.glb new file mode 100644 index 0000000..3cb9904 Binary files /dev/null and b/front/public/spot_light.glb differ diff --git a/front/public/walkway.glb b/front/public/walkway.glb new file mode 100644 index 0000000..b3ffd3d Binary files /dev/null and b/front/public/walkway.glb differ diff --git a/front/src/App.vue b/front/src/App.vue index 8700889..51971dc 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -1,7 +1,18 @@ \ No newline at end of file diff --git a/front/src/assets/main.scss b/front/src/assets/main.scss index 0a2fed2..007e5ca 100644 --- a/front/src/assets/main.scss +++ b/front/src/assets/main.scss @@ -1 +1,35 @@ @import 'grid.scss'; + +// #06bcb3 +// #e6d787 +// #048280 +// #a47f62 +// #b1abd4 +// #304c5a + +.nav { + display: flex; + flex-direction: column; + position: fixed; + top: 0; + left: 0; + bottom: 0; + padding: 1rem; + max-width: 2rem; + font-size: 2rem; + background-color: #fff; + box-shadow: 0 0 4px rgba(#000, 0.5); + + z-index: 100; +} +body { + padding-left: 2.5rem; +} + +a[href] { + color: #048280; + + &.router-link-active { + color: #a47f62; + } +} \ No newline at end of file diff --git a/front/src/assets/promo/bg/bg_0.jpg b/front/src/assets/promo/bg/bg_0.jpg new file mode 100644 index 0000000..ffb6df7 Binary files /dev/null and b/front/src/assets/promo/bg/bg_0.jpg differ diff --git a/front/src/assets/promo/bg/bg_1.jpg b/front/src/assets/promo/bg/bg_1.jpg new file mode 100644 index 0000000..99087a2 Binary files /dev/null and b/front/src/assets/promo/bg/bg_1.jpg differ diff --git a/front/src/assets/promo/bg/bg_10.jpg b/front/src/assets/promo/bg/bg_10.jpg new file mode 100644 index 0000000..426c971 Binary files /dev/null and b/front/src/assets/promo/bg/bg_10.jpg differ diff --git a/front/src/assets/promo/bg/bg_11.jpg b/front/src/assets/promo/bg/bg_11.jpg new file mode 100644 index 0000000..d9646a6 Binary files /dev/null and b/front/src/assets/promo/bg/bg_11.jpg differ diff --git a/front/src/assets/promo/bg/bg_12.jpg b/front/src/assets/promo/bg/bg_12.jpg new file mode 100644 index 0000000..8204f52 Binary files /dev/null and b/front/src/assets/promo/bg/bg_12.jpg differ diff --git a/front/src/assets/promo/bg/bg_13.jpg b/front/src/assets/promo/bg/bg_13.jpg new file mode 100644 index 0000000..d764a58 Binary files /dev/null and b/front/src/assets/promo/bg/bg_13.jpg differ diff --git a/front/src/assets/promo/bg/bg_14.jpg b/front/src/assets/promo/bg/bg_14.jpg new file mode 100644 index 0000000..8c4eb7d Binary files /dev/null and b/front/src/assets/promo/bg/bg_14.jpg differ diff --git a/front/src/assets/promo/bg/bg_15.jpg b/front/src/assets/promo/bg/bg_15.jpg new file mode 100644 index 0000000..754b0e7 Binary files /dev/null and b/front/src/assets/promo/bg/bg_15.jpg differ diff --git a/front/src/assets/promo/bg/bg_16.jpg b/front/src/assets/promo/bg/bg_16.jpg new file mode 100644 index 0000000..092da35 Binary files /dev/null and b/front/src/assets/promo/bg/bg_16.jpg differ diff --git a/front/src/assets/promo/bg/bg_17.jpg b/front/src/assets/promo/bg/bg_17.jpg new file mode 100644 index 0000000..5e3c76c Binary files /dev/null and b/front/src/assets/promo/bg/bg_17.jpg differ diff --git a/front/src/assets/promo/bg/bg_2.jpg b/front/src/assets/promo/bg/bg_2.jpg new file mode 100644 index 0000000..bc381cc Binary files /dev/null and b/front/src/assets/promo/bg/bg_2.jpg differ diff --git a/front/src/assets/promo/bg/bg_3.jpg b/front/src/assets/promo/bg/bg_3.jpg new file mode 100644 index 0000000..66b21dc Binary files /dev/null and b/front/src/assets/promo/bg/bg_3.jpg differ diff --git a/front/src/assets/promo/bg/bg_4.jpg b/front/src/assets/promo/bg/bg_4.jpg new file mode 100644 index 0000000..564118e Binary files /dev/null and b/front/src/assets/promo/bg/bg_4.jpg differ diff --git a/front/src/assets/promo/bg/bg_5.jpg b/front/src/assets/promo/bg/bg_5.jpg new file mode 100644 index 0000000..0aa5335 Binary files /dev/null and b/front/src/assets/promo/bg/bg_5.jpg differ diff --git a/front/src/assets/promo/bg/bg_6.jpg b/front/src/assets/promo/bg/bg_6.jpg new file mode 100644 index 0000000..f7b6495 Binary files /dev/null and b/front/src/assets/promo/bg/bg_6.jpg differ diff --git a/front/src/assets/promo/bg/bg_7.jpg b/front/src/assets/promo/bg/bg_7.jpg new file mode 100644 index 0000000..a24b1ec Binary files /dev/null and b/front/src/assets/promo/bg/bg_7.jpg differ diff --git a/front/src/assets/promo/bg/bg_8.jpg b/front/src/assets/promo/bg/bg_8.jpg new file mode 100644 index 0000000..ba9b830 Binary files /dev/null and b/front/src/assets/promo/bg/bg_8.jpg differ diff --git a/front/src/assets/promo/bg/bg_9.jpg b/front/src/assets/promo/bg/bg_9.jpg new file mode 100644 index 0000000..58e9e96 Binary files /dev/null and b/front/src/assets/promo/bg/bg_9.jpg differ diff --git a/front/src/assets/promo/logo.svg b/front/src/assets/promo/logo.svg new file mode 100644 index 0000000..81d8838 --- /dev/null +++ b/front/src/assets/promo/logo.svg @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + diff --git a/front/src/assets/promo/map.png b/front/src/assets/promo/map.png new file mode 100644 index 0000000..7fe7c94 Binary files /dev/null and b/front/src/assets/promo/map.png differ diff --git a/front/src/assets/promo/models/quadro/Ground_Color_1k.jpg b/front/src/assets/promo/models/quadro/Ground_Color_1k.jpg new file mode 100644 index 0000000..86f2115 Binary files /dev/null and b/front/src/assets/promo/models/quadro/Ground_Color_1k.jpg differ diff --git a/front/src/assets/promo/models/quadro/Ground_Normal_1k.jpg b/front/src/assets/promo/models/quadro/Ground_Normal_1k.jpg new file mode 100644 index 0000000..8def61b Binary files /dev/null and b/front/src/assets/promo/models/quadro/Ground_Normal_1k.jpg differ diff --git a/front/src/assets/promo/models/quadro/Ground_Roughness_1k.jpg b/front/src/assets/promo/models/quadro/Ground_Roughness_1k.jpg new file mode 100644 index 0000000..323040c Binary files /dev/null and b/front/src/assets/promo/models/quadro/Ground_Roughness_1k.jpg differ diff --git a/front/src/assets/promo/models/resting_place.hdr b/front/src/assets/promo/models/resting_place.hdr new file mode 100644 index 0000000..1026767 Binary files /dev/null and b/front/src/assets/promo/models/resting_place.hdr differ diff --git a/front/src/assets/promo/models/spiaggia_di_mondello_4k.hdr b/front/src/assets/promo/models/spiaggia_di_mondello_4k.hdr new file mode 100644 index 0000000..7c4b6f6 Binary files /dev/null and b/front/src/assets/promo/models/spiaggia_di_mondello_4k.hdr differ diff --git a/front/src/assets/promo/models/sunset.hdr b/front/src/assets/promo/models/sunset.hdr new file mode 100644 index 0000000..078b683 Binary files /dev/null and b/front/src/assets/promo/models/sunset.hdr differ diff --git a/front/src/components/Floorplan/index.vue b/front/src/components/Floorplan/index.vue new file mode 100644 index 0000000..a28c29a --- /dev/null +++ b/front/src/components/Floorplan/index.vue @@ -0,0 +1,25 @@ + + + + \ No newline at end of file diff --git a/front/src/components/Floorplan/item.vue b/front/src/components/Floorplan/item.vue new file mode 100644 index 0000000..885da85 --- /dev/null +++ b/front/src/components/Floorplan/item.vue @@ -0,0 +1,150 @@ + + + + \ No newline at end of file diff --git a/front/src/components/Game.vue b/front/src/components/Game.vue new file mode 100644 index 0000000..5820916 --- /dev/null +++ b/front/src/components/Game.vue @@ -0,0 +1,151 @@ + + + \ No newline at end of file diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index 4554741..5195cf9 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -12,6 +12,12 @@
  • Проекты
  • +
  • + Игра +
  • +
  • + Промо +
  • Табель рабочего времени
  • diff --git a/front/src/components/Promo/gallery.vue b/front/src/components/Promo/gallery.vue new file mode 100644 index 0000000..df7402e --- /dev/null +++ b/front/src/components/Promo/gallery.vue @@ -0,0 +1,79 @@ + + \ No newline at end of file diff --git a/front/src/components/Promo/index.vue b/front/src/components/Promo/index.vue new file mode 100644 index 0000000..abdd588 --- /dev/null +++ b/front/src/components/Promo/index.vue @@ -0,0 +1,54 @@ + + + \ No newline at end of file diff --git a/front/src/components/Promo/item.vue b/front/src/components/Promo/item.vue new file mode 100644 index 0000000..7c9ad27 --- /dev/null +++ b/front/src/components/Promo/item.vue @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/front/src/components/Promo/main.vue b/front/src/components/Promo/main.vue new file mode 100644 index 0000000..b2b439e --- /dev/null +++ b/front/src/components/Promo/main.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/front/src/components/Promo/modelItem.vue b/front/src/components/Promo/modelItem.vue new file mode 100644 index 0000000..933105b --- /dev/null +++ b/front/src/components/Promo/modelItem.vue @@ -0,0 +1,33 @@ + + \ No newline at end of file diff --git a/front/src/components/Promo/models.vue b/front/src/components/Promo/models.vue new file mode 100644 index 0000000..e0eec06 --- /dev/null +++ b/front/src/components/Promo/models.vue @@ -0,0 +1,69 @@ + + \ No newline at end of file diff --git a/front/src/helpers.ts b/front/src/helpers.ts index 736cc47..19cb7da 100644 --- a/front/src/helpers.ts +++ b/front/src/helpers.ts @@ -2,4 +2,31 @@ export const getRandomIntInclusive = (min: number, max: number) => { const minCeiled = Math.ceil(min); const maxFloored = Math.floor(max); return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // The maximum is inclusive and the minimum is inclusive +} +export const shuffle_array = (array: any[]) => { + let currentIndex = array.length; + + // While there remain elements to shuffle... + while (currentIndex != 0) { + + // Pick a remaining element... + let randomIndex = Math.floor(Math.random() * currentIndex); + currentIndex--; + + // And swap it with the current element. + [array[currentIndex], array[randomIndex]] = [ + array[randomIndex], array[currentIndex]]; + } + return array +} + +export const random_сolor = () => { + const r = () => Math.floor(200 * Math.random()); + + return `rgb(${r()}, ${r()}, ${r()})`; +} +export function* chunks(arr: T[], n: number): Generator { + for (let i = 0; i < arr.length; i += n) { + yield arr.slice(i, i + n); + } } \ No newline at end of file diff --git a/front/src/main.ts b/front/src/main.ts index deac00b..25a6fcb 100644 --- a/front/src/main.ts +++ b/front/src/main.ts @@ -7,10 +7,22 @@ import './assets/main.scss' import App from './App.vue' import Home from './components/Home.vue' import Projects from './components/Projects.vue' +import Game from './components/Game.vue' +import Floorplan from './components/Floorplan/index.vue' +import FloorplanItem from './components/Floorplan/item.vue' +import Promo from './components/Promo/index.vue' +import PromoMain from './components/Promo/main.vue' +import PromoItem from './components/Promo/item.vue' const routes = [ { path: '/', component: Home }, { path: '/projects', component: Projects }, + { path: '/game', component: Game }, + { path: '/floorplan', component: Floorplan }, + { path: '/floorplan/:id', component: FloorplanItem }, + { path: '/promo', component: Promo }, + { path: '/promo/:page', component: PromoMain }, + { path: '/promo/:page/item/:name', component: PromoItem }, ] const router = createRouter({ diff --git a/front/src/stores/floorplan.ts b/front/src/stores/floorplan.ts new file mode 100644 index 0000000..20c348b --- /dev/null +++ b/front/src/stores/floorplan.ts @@ -0,0 +1,76 @@ +import { defineStore } from 'pinia' +import { SERVER_URL } from '../constants' +import { chunks } from '../helpers' + +export const useFloorplanStore = defineStore('floorplan', { + state: () => { + return { + items: [] as { id: string, title: string }[], + title: undefined, + np_array: [] as number[][], + prepared_array: [] as number[][], + chunk_size: undefined as number | undefined, + threshold: undefined as number | undefined, + points: [] as { type: string, title: string, points: { x: number, y: number } }[] + } + }, + actions: { + async getList() { + try { + const res = await fetch(`${SERVER_URL}/api/floorplan/`, { + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + }) + const data = await res.json() + this.items = data + // this.title = data.title + // this.np_array = data.np_field + } catch (error) { + console.log(error) + } + }, + async getData(id: number) { + try { + const res = await fetch(`${SERVER_URL}/api/floorplan/${id}`, { + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + }) + const data = await res.json() + this.title = data.title + this.np_array = data.np_field + this.chunk_size = data.d_size || 8 + this.threshold = data.d_border || 20 + + this.prepared_array = [...chunks(data.np_field, this.chunk_size as number)].map(line => { + const line_data = [] as any[][] + line.map((item: any) => [...chunks(item, this.chunk_size as number)]).map((item) => { + item.map((one_line, k) => { + if (!line_data[k]) line_data[k] = [] + line_data[k].push(...one_line) + }) + }) + return line_data.map(el => { + return el.filter(e => e > 0).length > (this.threshold as number) ? 1 : 0 + }) + }); + await this.getPoints(id) + } catch (error) { + console.log(error) + } + }, + async getPoints(id: number) { + const res = await fetch(`${SERVER_URL}/api/floorplan/${id}/points`, { + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + }) + const data = await res.json() + this.points = data.points + } + } +}) \ No newline at end of file diff --git a/front/src/vite-env.d.ts b/front/src/vite-env.d.ts index 11f02fe..9b7aed9 100644 --- a/front/src/vite-env.d.ts +++ b/front/src/vite-env.d.ts @@ -1 +1,8 @@ /// +declare module "*.fbx"; +declare module "*.gltf"; +declare module '*.glb' { + const src: string + export default src +} +declare module "*.hdr"; \ No newline at end of file diff --git a/front/vite.config.ts b/front/vite.config.ts index 8be06ed..472d6e0 100644 --- a/front/vite.config.ts +++ b/front/vite.config.ts @@ -3,16 +3,31 @@ import vue from '@vitejs/plugin-vue' import Components from 'unplugin-vue-components/vite' import IconsResolver from 'unplugin-icons/resolver' import Icons from 'unplugin-icons/vite' +import svgLoader from 'vite-svg-loader'; +import { templateCompilerOptions } from '@tresjs/core' +import { viteStaticCopy } from 'vite-plugin-static-copy' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ - vue(), + vue({ + ...templateCompilerOptions + }), Components({ resolvers: [ IconsResolver(), ], }), - Icons() + Icons(), + svgLoader(), + viteStaticCopy({ + targets: [ + { + src: 'src/assets/promo/models/quadro/*.jpg', + dest: 'assets' + } + ] + }) ], + assetsInclude: ['**/*.fbx','**/*.glb', '**/*.gltf', '**/*.hdr'], }) diff --git a/poetry.lock b/poetry.lock index 36b54cd..373c180 100644 --- a/poetry.lock +++ b/poetry.lock @@ -30,13 +30,13 @@ files = [ [[package]] name = "django" -version = "5.0.4" +version = "5.0.6" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" files = [ - {file = "Django-5.0.4-py3-none-any.whl", hash = "sha256:916423499d75d62da7aa038d19aef23d23498d8df229775eb0a6309ee1013775"}, - {file = "Django-5.0.4.tar.gz", hash = "sha256:4bd01a8c830bb77a8a3b0e7d8b25b887e536ad17a81ba2dce5476135c73312bd"}, + {file = "Django-5.0.6-py3-none-any.whl", hash = "sha256:8363ac062bb4ef7c3f12d078f6fa5d154031d129a15170a1066412af49d30905"}, + {file = "Django-5.0.6.tar.gz", hash = "sha256:ff1b61005004e476e0aeea47c7f79b85864c70124030e95146315396f1e7951f"}, ] [package.dependencies] @@ -88,6 +88,75 @@ files = [ {file = "mslex-1.2.0.tar.gz", hash = "sha256:79e2abc5a129dd71cdde58a22a2039abb7fa8afcbac498b723ba6e9b9fbacc14"}, ] +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +] + +[[package]] +name = "opencv-python" +version = "4.9.0.80" +description = "Wrapper package for OpenCV python bindings." +optional = false +python-versions = ">=3.6" +files = [ + {file = "opencv-python-4.9.0.80.tar.gz", hash = "sha256:1a9f0e6267de3a1a1db0c54213d022c7c8b5b9ca4b580e80bdc58516c922c9e1"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:7e5f7aa4486651a6ebfa8ed4b594b65bd2d2f41beeb4241a3e4b1b85acbbbadb"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:71dfb9555ccccdd77305fc3dcca5897fbf0cf28b297c51ee55e079c065d812a3"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b34a52e9da36dda8c151c6394aed602e4b17fa041df0b9f5b93ae10b0fcca2a"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4088cab82b66a3b37ffc452976b14a3c599269c247895ae9ceb4066d8188a57"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-win32.whl", hash = "sha256:dcf000c36dd1651118a2462257e3a9e76db789a78432e1f303c7bac54f63ef6c"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl", hash = "sha256:3f16f08e02b2a2da44259c7cc712e779eff1dd8b55fdb0323e8cab09548086c0"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, +] + [[package]] name = "pillow" version = "10.3.0" @@ -174,6 +243,23 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa typing = ["typing-extensions"] xmp = ["defusedxml"] +[[package]] +name = "potracer" +version = "0.0.4" +description = "Python Potrace" +optional = false +python-versions = "*" +files = [ + {file = "potracer-0.0.4-py2.py3-none-any.whl", hash = "sha256:350bb2c7c8532059165264974617d460999e0215cf2f459c0616fa8805c27ce6"}, + {file = "potracer-0.0.4.tar.gz", hash = "sha256:32cbdb984446066bcfbe8b600142a54b90fa6da274b69219473205d6e4c09713"}, +] + +[package.dependencies] +numpy = "*" + +[package.extras] +cli = ["potrace-cli"] + [[package]] name = "psutil" version = "5.9.8" @@ -306,4 +392,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "6c47288dfd6813b1437ec1e65708444b3d059e7890a0907b80803130465efa06" +content-hash = "1c57908ec6786460241b91a63e9b1e30eb78d340264c8e798eaa35041f9bc9f6" diff --git a/pyproject.toml b/pyproject.toml index c2afa55..01f7e55 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,7 @@ version = "0.1.0" description = "" authors = ["Your Name "] readme = "README.md" +package-mode=false [tool.poetry.dependencies] python = "^3.10" @@ -14,6 +15,8 @@ django-cors-headers = "^4.3.1" pillow = "^10.3.0" python-dotenv = "^1.0.1" psycopg2 = "^2.9.9" +opencv-python = "^4.9.0.80" +potracer = "^0.0.4" [build-system] @@ -23,5 +26,6 @@ build-backend = "poetry.core.masonry.api" [tool.taskipy.tasks] export_req = "poetry export --without-hashes --format=requirements.txt > back/requirements.txt" server = "back/manage.py runserver 0.0.0.0:8000" -front = "cd front && npm run build && npm run preview" -front_dev = "cd front && npm run dev" +front = "cd front && npm run build_dev && npm run preview" +front_dev = "cd front && npm run dev -- --host" +admin_front_dev = "cd admin_front && npm run dev" \ No newline at end of file