chartManD commited on
Commit
2ae5786
·
0 Parent(s):

Primer commit del proyecto

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. .gitignore +178 -0
  3. cataSystem/__init__.py +0 -0
  4. cataSystem/asgi.py +16 -0
  5. cataSystem/models.py +1 -0
  6. cataSystem/settings.py +140 -0
  7. cataSystem/urls.py +25 -0
  8. cataSystem/wsgi.py +16 -0
  9. manage.py +22 -0
  10. requirements.txt +0 -0
  11. tecnicas/__init__.py +0 -0
  12. tecnicas/admin.py +3 -0
  13. tecnicas/apps.py +6 -0
  14. tecnicas/migrations/0001_initial.py +120 -0
  15. tecnicas/migrations/__init__.py +0 -0
  16. tecnicas/models/__init__.py +14 -0
  17. tecnicas/models/catador.py +8 -0
  18. tecnicas/models/es_atributo.py +6 -0
  19. tecnicas/models/es_vocabulario.py +8 -0
  20. tecnicas/models/escala.py +12 -0
  21. tecnicas/models/estilo_palabra.py +7 -0
  22. tecnicas/models/etiqueta.py +7 -0
  23. tecnicas/models/lista_palabra.py +8 -0
  24. tecnicas/models/palabra.py +7 -0
  25. tecnicas/models/presentador.py +10 -0
  26. tecnicas/models/producto.py +10 -0
  27. tecnicas/models/sesion_sensorial.py +10 -0
  28. tecnicas/models/tecnica.py +14 -0
  29. tecnicas/models/tecnica_intensidad.py +6 -0
  30. tecnicas/models/tipo_escala.py +7 -0
  31. tecnicas/models/vocabulario.py +10 -0
  32. tecnicas/pato.py +42 -0
  33. tecnicas/static/img/catador-smokin.webp +0 -0
  34. tecnicas/templates/tecnicas/auth.html +31 -0
  35. tecnicas/templates/tecnicas/base.html +28 -0
  36. tecnicas/templates/tecnicas/cata-login.html +31 -0
  37. tecnicas/templates/tecnicas/catadores-panel.html +35 -0
  38. tecnicas/templates/tecnicas/main-panel.html +48 -0
  39. tecnicas/templates/tecnicas/seleccion-tecnica.html +6 -0
  40. tecnicas/templates/tecnicas/sesiones-panel.html +38 -0
  41. tecnicas/tests.py +3 -0
  42. tecnicas/urls.py +14 -0
  43. tecnicas/views.py +29 -0
  44. theme/__init__.py +0 -0
  45. theme/apps.py +5 -0
  46. theme/static_src/.gitignore +1 -0
  47. theme/static_src/package-lock.json +2129 -0
  48. theme/static_src/package.json +25 -0
  49. theme/static_src/postcss.config.js +7 -0
  50. theme/static_src/src/styles.css +10 -0
.gitattributes ADDED
@@ -0,0 +1 @@
 
 
1
+ * text eol=lf
.gitignore ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Created by https://www.toptal.com/developers/gitignore/api/django
2
+ # Edit at https://www.toptal.com/developers/gitignore?templates=django
3
+
4
+ ### Django ###
5
+ *.log
6
+ *.pot
7
+ *.pyc
8
+ __pycache__/
9
+ local_settings.py
10
+ db.sqlite3
11
+ db.sqlite3-journal
12
+ media
13
+
14
+ # If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
15
+ # in your Git repository. Update and uncomment the following line accordingly.
16
+ # <django-project-name>/staticfiles/
17
+
18
+ ### Django.Python Stack ###
19
+ # Byte-compiled / optimized / DLL files
20
+ *.py[cod]
21
+ *$py.class
22
+
23
+ # C extensions
24
+ *.so
25
+
26
+ # Distribution / packaging
27
+ .Python
28
+ build/
29
+ develop-eggs/
30
+ dist/
31
+ downloads/
32
+ eggs/
33
+ .eggs/
34
+ lib/
35
+ lib64/
36
+ parts/
37
+ sdist/
38
+ var/
39
+ wheels/
40
+ share/python-wheels/
41
+ *.egg-info/
42
+ .installed.cfg
43
+ *.egg
44
+ MANIFEST
45
+
46
+ # PyInstaller
47
+ # Usually these files are written by a python script from a template
48
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
49
+ *.manifest
50
+ *.spec
51
+
52
+ # Installer logs
53
+ pip-log.txt
54
+ pip-delete-this-directory.txt
55
+
56
+ # Unit test / coverage reports
57
+ htmlcov/
58
+ .tox/
59
+ .nox/
60
+ .coverage
61
+ .coverage.*
62
+ .cache
63
+ nosetests.xml
64
+ coverage.xml
65
+ *.cover
66
+ *.py,cover
67
+ .hypothesis/
68
+ .pytest_cache/
69
+ cover/
70
+
71
+ # Translations
72
+ *.mo
73
+
74
+ # Django stuff:
75
+
76
+ # Flask stuff:
77
+ instance/
78
+ .webassets-cache
79
+
80
+ # Scrapy stuff:
81
+ .scrapy
82
+
83
+ # Sphinx documentation
84
+ docs/_build/
85
+
86
+ # PyBuilder
87
+ .pybuilder/
88
+ target/
89
+
90
+ # Jupyter Notebook
91
+ .ipynb_checkpoints
92
+
93
+ # IPython
94
+ profile_default/
95
+ ipython_config.py
96
+
97
+ # pyenv
98
+ # For a library or package, you might want to ignore these files since the code is
99
+ # intended to run in multiple environments; otherwise, check them in:
100
+ # .python-version
101
+
102
+ # pipenv
103
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
104
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
105
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
106
+ # install all needed dependencies.
107
+ #Pipfile.lock
108
+
109
+ # poetry
110
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
111
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
112
+ # commonly ignored for libraries.
113
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
114
+ #poetry.lock
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ #pdm.lock
119
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
120
+ # in version control.
121
+ # https://pdm.fming.dev/#use-with-ide
122
+ .pdm.toml
123
+
124
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
125
+ __pypackages__/
126
+
127
+ # Celery stuff
128
+ celerybeat-schedule
129
+ celerybeat.pid
130
+
131
+ # SageMath parsed files
132
+ *.sage.py
133
+
134
+ # Environments
135
+ .env
136
+ .venv
137
+ env/
138
+ venv/
139
+ ENV/
140
+ env.bak/
141
+ venv.bak/
142
+ env-cata-sys/
143
+
144
+ # Spyder project settings
145
+ .spyderproject
146
+ .spyproject
147
+
148
+ # Rope project settings
149
+ .ropeproject
150
+
151
+ # mkdocs documentation
152
+ /site
153
+
154
+ # mypy
155
+ .mypy_cache/
156
+ .dmypy.json
157
+ dmypy.json
158
+
159
+ # Pyre type checker
160
+ .pyre/
161
+
162
+ # pytype static type analyzer
163
+ .pytype/
164
+
165
+ # Cython debug symbols
166
+ cython_debug/
167
+
168
+ # Others files
169
+ chu.py
170
+
171
+ # PyCharm
172
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
175
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
+ #.idea/
177
+
178
+ # End of https://www.toptal.com/developers/gitignore/api/django
cataSystem/__init__.py ADDED
File without changes
cataSystem/asgi.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ ASGI config for cataSystem project.
3
+
4
+ It exposes the ASGI callable as a module-level variable named ``application``.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/5.2/howto/deployment/asgi/
8
+ """
9
+
10
+ import os
11
+
12
+ from django.core.asgi import get_asgi_application
13
+
14
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cataSystem.settings')
15
+
16
+ application = get_asgi_application()
cataSystem/models.py ADDED
@@ -0,0 +1 @@
 
 
1
+ from django.db import models
cataSystem/settings.py ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Django settings for cataSystem project.
3
+
4
+ Generated by 'django-admin startproject' using Django 5.2.1.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/5.2/topics/settings/
8
+
9
+ For the full list of settings and their values, see
10
+ https://docs.djangoproject.com/en/5.2/ref/settings/
11
+ """
12
+
13
+ from pathlib import Path
14
+ import os
15
+
16
+ # Build paths inside the project like this: BASE_DIR / 'subdir'.
17
+ BASE_DIR = Path(__file__).resolve().parent.parent
18
+
19
+
20
+ # Quick-start development settings - unsuitable for production
21
+ # See https://docs.djangoproject.com/en/5.2/howto/deployment/checklist/
22
+
23
+ # SECURITY WARNING: keep the secret key used in production secret!
24
+ SECRET_KEY = 'django-insecure-u)t2290d+c@$$7@!%@m&=w44$a@haxew8$!!tggh!up-+0-ll('
25
+
26
+ # SECURITY WARNING: don't run with debug turned on in production!
27
+ DEBUG = True
28
+
29
+ ALLOWED_HOSTS = []
30
+
31
+
32
+ # Application definition
33
+
34
+ INSTALLED_APPS = [
35
+ 'django.contrib.admin',
36
+ 'django.contrib.auth',
37
+ 'django.contrib.contenttypes',
38
+ 'django.contrib.sessions',
39
+ 'django.contrib.messages',
40
+ 'django.contrib.staticfiles',
41
+
42
+ 'tecnicas.apps.TecnicasConfig',
43
+
44
+ 'tailwind',
45
+ 'theme',
46
+
47
+ 'django_browser_reload'
48
+ ]
49
+
50
+ TAILWIND_APP_NAME = 'theme'
51
+ NPM_BIN_PATH = 'C:/Program Files/nodejs/npm.cmd'
52
+
53
+ MIDDLEWARE = [
54
+ 'django.middleware.security.SecurityMiddleware',
55
+ 'django.contrib.sessions.middleware.SessionMiddleware',
56
+ 'django.middleware.common.CommonMiddleware',
57
+ 'django.middleware.csrf.CsrfViewMiddleware',
58
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
59
+ 'django.contrib.messages.middleware.MessageMiddleware',
60
+ 'django.middleware.clickjacking.XFrameOptionsMiddleware',
61
+
62
+ 'django_browser_reload.middleware.BrowserReloadMiddleware',
63
+
64
+ ]
65
+
66
+ ROOT_URLCONF = 'cataSystem.urls'
67
+
68
+ TEMPLATES = [
69
+ {
70
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
71
+ 'DIRS': [],
72
+ 'APP_DIRS': True,
73
+ 'OPTIONS': {
74
+ 'context_processors': [
75
+ 'django.template.context_processors.request',
76
+ 'django.contrib.auth.context_processors.auth',
77
+ 'django.contrib.messages.context_processors.messages',
78
+ ],
79
+ },
80
+ },
81
+ ]
82
+
83
+ WSGI_APPLICATION = 'cataSystem.wsgi.application'
84
+
85
+
86
+ # Database
87
+ # https://docs.djangoproject.com/en/5.2/ref/settings/#databases
88
+
89
+ DATABASES = {
90
+ 'default': {
91
+ 'ENGINE': 'django.db.backends.mysql',
92
+ 'NAME': os.getenv("DB_NAME_DATABASE"),
93
+ 'USER': os.getenv("DB_USER"),
94
+ 'HOST': os.getenv("DB_HOST"),
95
+ 'PASSWORD': os.getenv("DB_PASSWORD"),
96
+ 'PORT': os.getenv("DB_PORT")
97
+ }
98
+ }
99
+
100
+
101
+ # Password validation
102
+ # https://docs.djangoproject.com/en/5.2/ref/settings/#auth-password-validators
103
+
104
+ AUTH_PASSWORD_VALIDATORS = [
105
+ {
106
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
107
+ },
108
+ {
109
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
110
+ },
111
+ {
112
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
113
+ },
114
+ {
115
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
116
+ },
117
+ ]
118
+
119
+
120
+ # Internationalization
121
+ # https://docs.djangoproject.com/en/5.2/topics/i18n/
122
+
123
+ LANGUAGE_CODE = 'en-us'
124
+
125
+ TIME_ZONE = 'UTC'
126
+
127
+ USE_I18N = True
128
+
129
+ USE_TZ = True
130
+
131
+
132
+ # Static files (CSS, JavaScript, Images)
133
+ # https://docs.djangoproject.com/en/5.2/howto/static-files/
134
+
135
+ STATIC_URL = '/static/'
136
+
137
+ # Default primary key field type
138
+ # https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
139
+
140
+ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
cataSystem/urls.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ URL configuration for cataSystem project.
3
+
4
+ The `urlpatterns` list routes URLs to views. For more information please see:
5
+ https://docs.djangoproject.com/en/5.2/topics/http/urls/
6
+ Examples:
7
+ Function views
8
+ 1. Add an import: from my_app import views
9
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
10
+ Class-based views
11
+ 1. Add an import: from other_app.views import Home
12
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
13
+ Including another URLconf
14
+ 1. Import the include() function: from django.urls import include, path
15
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
16
+ """
17
+ from django.contrib import admin
18
+ from django.urls import path, include
19
+
20
+ urlpatterns = [
21
+ path('cata/', include("tecnicas.urls")),
22
+ path('admin/', admin.site.urls),
23
+
24
+ path("__reload__/", include("django_browser_reload.urls")),
25
+ ]
cataSystem/wsgi.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ WSGI config for cataSystem project.
3
+
4
+ It exposes the WSGI callable as a module-level variable named ``application``.
5
+
6
+ For more information on this file, see
7
+ https://docs.djangoproject.com/en/5.2/howto/deployment/wsgi/
8
+ """
9
+
10
+ import os
11
+
12
+ from django.core.wsgi import get_wsgi_application
13
+
14
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cataSystem.settings')
15
+
16
+ application = get_wsgi_application()
manage.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ """Django's command-line utility for administrative tasks."""
3
+ import os
4
+ import sys
5
+
6
+
7
+ def main():
8
+ """Run administrative tasks."""
9
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cataSystem.settings')
10
+ try:
11
+ from django.core.management import execute_from_command_line
12
+ except ImportError as exc:
13
+ raise ImportError(
14
+ "Couldn't import Django. Are you sure it's installed and "
15
+ "available on your PYTHONPATH environment variable? Did you "
16
+ "forget to activate a virtual environment?"
17
+ ) from exc
18
+ execute_from_command_line(sys.argv)
19
+
20
+
21
+ if __name__ == '__main__':
22
+ main()
requirements.txt ADDED
Binary file (1.16 kB). View file
 
tecnicas/__init__.py ADDED
File without changes
tecnicas/admin.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ from django.contrib import admin
2
+
3
+ # Register your models here.
tecnicas/apps.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class TecnicasConfig(AppConfig):
5
+ default_auto_field = 'django.db.models.BigAutoField'
6
+ name = 'tecnicas'
tecnicas/migrations/0001_initial.py ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Generated by Django 5.2.1 on 2025-05-27 22:23
2
+
3
+ import django.db.models.deletion
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+
9
+ initial = True
10
+
11
+ dependencies = [
12
+ ]
13
+
14
+ operations = [
15
+ migrations.CreateModel(
16
+ name='EstiloPalabra',
17
+ fields=[
18
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19
+ ('nombre_estilo', models.CharField(max_length=255, unique=True)),
20
+ ],
21
+ ),
22
+ migrations.CreateModel(
23
+ name='Etiqueta',
24
+ fields=[
25
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26
+ ('valor_etiqueta', models.CharField(max_length=255)),
27
+ ],
28
+ ),
29
+ migrations.CreateModel(
30
+ name='Palabra',
31
+ fields=[
32
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
33
+ ('nombre_palabra', models.CharField(max_length=255, unique=True)),
34
+ ],
35
+ ),
36
+ migrations.CreateModel(
37
+ name='Presentador',
38
+ fields=[
39
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
40
+ ('nombre', models.CharField(max_length=255)),
41
+ ('apellido', models.CharField(max_length=255)),
42
+ ('nombre_usuario', models.CharField(max_length=255)),
43
+ ('contrasena', models.CharField(max_length=255)),
44
+ ],
45
+ ),
46
+ migrations.CreateModel(
47
+ name='EsAtributo',
48
+ fields=[
49
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
50
+ ('id_estilo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='estilo_esatributo', to='tecnicas.estilopalabra')),
51
+ ],
52
+ ),
53
+ migrations.CreateModel(
54
+ name='Escala',
55
+ fields=[
56
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
57
+ ('nombre_escala', models.CharField(max_length=255)),
58
+ ('longitud', models.IntegerField()),
59
+ ('etiquetas', models.ManyToManyField(to='tecnicas.etiqueta')),
60
+ ],
61
+ ),
62
+ migrations.CreateModel(
63
+ name='ListaPalabra',
64
+ fields=[
65
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
66
+ ('id_atributos', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='atributo_listapalabras', to='tecnicas.esatributo')),
67
+ ('id_palabra', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='palabra_listapalabras', to='tecnicas.palabra')),
68
+ ],
69
+ ),
70
+ migrations.CreateModel(
71
+ name='SesionSensorial',
72
+ fields=[
73
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
74
+ ('fechaCreacion', models.DateTimeField(verbose_name='date published')),
75
+ ('activo', models.BooleanField(default=False)),
76
+ ('creadoPor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='presentador_sesion', to='tecnicas.presentador')),
77
+ ],
78
+ ),
79
+ migrations.CreateModel(
80
+ name='Producto',
81
+ fields=[
82
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
83
+ ('codigoProducto', models.CharField(max_length=3)),
84
+ ('id_sesion', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='productos_sesion', to='tecnicas.sesionsensorial')),
85
+ ],
86
+ ),
87
+ migrations.CreateModel(
88
+ name='Tecnica',
89
+ fields=[
90
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
91
+ ('nombre_tecnica', models.CharField(max_length=255)),
92
+ ('maximas_repeticiones', models.IntegerField(default=0)),
93
+ ('repecion', models.IntegerField(default=0)),
94
+ ('limite_catadores', models.IntegerField()),
95
+ ('instrucciones', models.CharField(max_length=255)),
96
+ ('id_estilo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='estilo_tecnica', to='tecnicas.estilopalabra')),
97
+ ],
98
+ ),
99
+ migrations.AddField(
100
+ model_name='sesionsensorial',
101
+ name='tecnica',
102
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sesion_tecnica', to='tecnicas.tecnica'),
103
+ ),
104
+ migrations.CreateModel(
105
+ name='Vocabulario',
106
+ fields=[
107
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
108
+ ('nomre_vocabulario', models.CharField(max_length=255, unique=True)),
109
+ ('palabras', models.ManyToManyField(to='tecnicas.palabra')),
110
+ ],
111
+ ),
112
+ migrations.CreateModel(
113
+ name='EsVocabulario',
114
+ fields=[
115
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
116
+ ('id_estilo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='estilo_esvacabulario', to='tecnicas.estilopalabra')),
117
+ ('id_vocabulario', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vocabulario_esvocabulario', to='tecnicas.vocabulario')),
118
+ ],
119
+ ),
120
+ ]
tecnicas/migrations/__init__.py ADDED
File without changes
tecnicas/models/__init__.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from .presentador import Presentador
2
+ from .palabra import Palabra
3
+ from .vocabulario import Vocabulario
4
+ from .estilo_palabra import EstiloPalabra
5
+ from .es_atributo import EsAtributo
6
+ from .lista_palabra import ListaPalabra
7
+ from .es_vocabulario import EsVocabulario
8
+ from .tecnica import Tecnica
9
+ from .sesion_sensorial import SesionSensorial
10
+
11
+ from .producto import Producto
12
+ from .etiqueta import Etiqueta
13
+ from .tipo_escala import TipoEscala
14
+ # from .escala import Escala
tecnicas/models/catador.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class Catador():
4
+ usuarioCatador = models.CharField(max_length=255, unique=True)
5
+ nombre = models.CharField(max_length=255)
6
+ apellido = models.CharField(max_length=255)
7
+ telefono = models.BigIntegerField()
8
+ correo = models.EmailField()
tecnicas/models/es_atributo.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .estilo_palabra import EstiloPalabra
4
+
5
+ class EsAtributo(models.Model):
6
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_esatributo")
tecnicas/models/es_vocabulario.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .estilo_palabra import EstiloPalabra
4
+ from .vocabulario import Vocabulario
5
+
6
+ class EsVocabulario(models.Model):
7
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_esvacabulario")
8
+ id_vocabulario = models.ForeignKey(Vocabulario, on_delete=models.CASCADE, related_name="vocabulario_esvocabulario")
tecnicas/models/escala.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # from django.db import models
2
+
3
+ # from .etiqueta import Etiqueta
4
+ # from .tipo_escala import TipoEscala
5
+
6
+ # class Escala(models.Model):
7
+ # longitud = models.IntegerField()
8
+ # id_tipo_escala = models.ForeignKey(TipoEscala)
9
+ # etiquetas = models.ManyToManyField(Etiqueta)
10
+
11
+ # def __str__(self):
12
+ # return self.longitud
tecnicas/models/estilo_palabra.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class EstiloPalabra(models.Model):
4
+ nombre_estilo = models.CharField(max_length=255, unique=True)
5
+
6
+ def __str__(self):
7
+ return self.nombre_estilo
tecnicas/models/etiqueta.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class Etiqueta(models.Model):
4
+ valor_etiqueta = models.CharField(max_length=255)
5
+
6
+ def __str__(self):
7
+ return self.valor_etiqueta
tecnicas/models/lista_palabra.py ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .palabra import Palabra
4
+ from .es_atributo import EsAtributo
5
+
6
+ class ListaPalabra(models.Model):
7
+ id_palabra = models.ForeignKey(Palabra, on_delete=models.CASCADE, related_name="palabra_listapalabras")
8
+ id_atributos = models.ForeignKey(EsAtributo, on_delete=models.CASCADE, related_name="atributo_listapalabras")
tecnicas/models/palabra.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class Palabra(models.Model):
4
+ nombre_palabra = models.CharField(max_length=255, unique=True)
5
+
6
+ def __str__(self):
7
+ return self.nombre_palabra
tecnicas/models/presentador.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class Presentador(models.Model):
4
+ nombre = models.CharField(max_length=255)
5
+ apellido = models.CharField(max_length=255)
6
+ nombre_usuario = models.CharField(max_length=255)
7
+ contrasena = models.CharField(max_length=255)
8
+
9
+ def __str__(self):
10
+ return self.nombre
tecnicas/models/producto.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .sesion_sensorial import SesionSensorial
4
+
5
+ class Producto(models.Model):
6
+ codigoProducto = models.CharField(max_length=3)
7
+ id_sesion = models.ForeignKey(SesionSensorial, on_delete=models.CASCADE, related_name="productos_sesion")
8
+
9
+ def __str__(self):
10
+ return self.codigoProducto
tecnicas/models/sesion_sensorial.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .presentador import Presentador
4
+ from .tecnica import Tecnica
5
+
6
+ class SesionSensorial(models.Model):
7
+ fechaCreacion = models.DateTimeField("date published")
8
+ activo = models.BooleanField(default=False)
9
+ creadoPor = models.ForeignKey(Presentador, on_delete=models.CASCADE, related_name="presentador_sesion")
10
+ tecnica = models.ForeignKey(Tecnica, on_delete=models.CASCADE, related_name="sesion_tecnica")
tecnicas/models/tecnica.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .estilo_palabra import EstiloPalabra
4
+
5
+ class Tecnica(models.Model):
6
+ nombre_tecnica = models.CharField(max_length=255)
7
+ maximas_repeticiones = models.IntegerField(default=0)
8
+ repecion = models.IntegerField(default=0)
9
+ limite_catadores = models.IntegerField()
10
+ instrucciones = models.CharField(max_length=255)
11
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_tecnica")
12
+
13
+ def __str__(self):
14
+ return self.nombre_tecnica
tecnicas/models/tecnica_intensidad.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .escala import Escala
4
+
5
+ class TecnicaIntensidad(models.Model):
6
+ id_escala = models.ForeignKey(Escala)
tecnicas/models/tipo_escala.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class TipoEscala():
4
+ nombre_escala = models.CharField(max_length=255)
5
+
6
+ def __str__(self):
7
+ return self.nombre_escala
tecnicas/models/vocabulario.py ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ from .palabra import Palabra
4
+
5
+ class Vocabulario(models.Model):
6
+ nomre_vocabulario = models.CharField(max_length=255, unique=True)
7
+ palabras = models.ManyToManyField(Palabra)
8
+
9
+ def __str__(self):
10
+ return self.nomre_vocabulario
tecnicas/pato.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.db import models
2
+
3
+ class Presentador(models.Model):
4
+ nombre = models.CharField(max_length=255)
5
+ apellido = models.CharField(max_length=255)
6
+ nombre_usuario = models.CharField(max_length=255)
7
+ contrasena = models.CharField(max_length=255)
8
+
9
+ class Palabra(models.Model):
10
+ nombre_palabra = models.CharField(max_length=255, unique=True)
11
+
12
+ class Vocabualario(models.Model):
13
+ nomre_vocabulario = models.CharField(max_length=255, unique=True)
14
+ palabras = models.ManyToManyField(Palabra)
15
+
16
+ class EstiloPalabra(models.Model):
17
+ nombre_estilo = models.CharField(max_length=255, unique=True)
18
+
19
+ class EsAtributo(models.Model):
20
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_esatributo")
21
+
22
+ class ListaPalabra(models.Model):
23
+ id_palabra = models.ForeignKey(Palabra, on_delete=models.CASCADE, related_name="palabra_listapalabras")
24
+ id_atributos = models.ForeignKey(EsAtributo, on_delete=models.CASCADE, related_name="atributo_listapalabras")
25
+
26
+ class EsVocabulario(models.Model):
27
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_esvacabulario")
28
+ id_vocabulario = models.ForeignKey(Vocabualario, on_delete=models.CASCADE, related_name="vocabulario_esvocabulario")
29
+
30
+ class Tecnica(models.Model):
31
+ nombre_tecnica = models.CharField(max_length=255)
32
+ maximas_repeticiones = models.IntegerField(default=0)
33
+ repecion = models.IntegerField(default=0)
34
+ limite_catadores = models.IntegerField()
35
+ instrucciones = models.CharField(max_length=255)
36
+ id_estilo = models.ForeignKey(EstiloPalabra, on_delete=models.CASCADE, related_name="estilo_tecnica")
37
+
38
+ class SesionSensorial(models.Model):
39
+ fechaCreacion = models.DateTimeField("date published")
40
+ activo = models.BooleanField(default=False)
41
+ creadoPor = models.ForeignKey(Presentador, on_delete=models.CASCADE, related_name="presentador_sesion")
42
+ tecnica = models.ForeignKey(Tecnica, on_delete=models.CASCADE, related_name="sesion_tecnica")
tecnicas/static/img/catador-smokin.webp ADDED
tecnicas/templates/tecnicas/auth.html ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+
3
+ {% block title %}Login{% endblock %}
4
+
5
+ {% block content %}
6
+ <article class="w-full h-full flex flex-col justify-center items-center bg-gray-600">
7
+ <form action="/auth" method="post" class="bg-gray-200 w-xl p-8 rounded-xl">
8
+ <header class="text-center">
9
+ <h1 class="text-5xl font-bold">Cateo System</h1>
10
+ <p class="text-2xl font-medium mt-3">Presentador</p>
11
+ </header>
12
+ <section class="flex flex-col gap-6 items-center w-full mt-5">
13
+ <label for="id">
14
+ <input type="text" name="id" id="id" placeholder="Ingrese Indentifiacion"
15
+ class="placeholder:text-gray-100 placeholder:text-xl bg-gray-400 py-3 px-6 rounded-xl w-sm border-b-2 border-blue-700" required>
16
+ </label>
17
+
18
+ <label for="id">
19
+ <input type="text" name="id" id="id" placeholder="Ingrese Contraseña"
20
+ class="placeholder:text-gray-100 placeholder:text-xl bg-gray-400 py-3 px-6 rounded-xl w-sm border-b-2 border-blue-700" required>
21
+ </label>
22
+
23
+ <section class="flex flex-row flex-wrap gap-4 w-f ull justify-center">
24
+ <button type="submit"
25
+ class="text-white bg-blue-600 hover:bg-blue-700 active:outline-none active:ring-4 active:ring-blue-300 font-medium rounded-xl text-xl px-8 py-2 text-center uppercase">Ingresar</button>
26
+ </section>
27
+
28
+ </section>
29
+ </form>
30
+ </article>
31
+ {% endblock %}
tecnicas/templates/tecnicas/base.html ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% load static tailwind_tags %}
2
+ <!DOCTYPE html>
3
+ <html lang="es">
4
+
5
+ <head>
6
+ <meta charset="UTF-8">
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
8
+ {% tailwind_css %}
9
+
10
+ <title>{% block title %}{% endblock %}</title>
11
+
12
+ <!-- Favicon -->
13
+ <!-- <link rel="icon" href="{% static 'img/favicon.ico' %}"> -->
14
+
15
+ {% block extra_css %}{% endblock %}
16
+
17
+ {% block meta %}{% endblock %}
18
+ </head>
19
+
20
+ <body>
21
+ <main class="flex flex-col w-screen h-screen overflow-x-hidden overflow-y-scroll bg-gray-600">
22
+ {% block content %}{% endblock %}
23
+ </main>
24
+
25
+ {% block extra_js %}{% endblock %}
26
+ </body>
27
+
28
+ </html>
tecnicas/templates/tecnicas/cata-login.html ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+
3
+ {% block title %}Login{% endblock %}
4
+
5
+ {% block content %}
6
+ <article class="w-full h-full flex flex-col justify-center items-center bg-gray-600">
7
+ <form action="./auth" method="post" class="bg-gray-200 w-xl p-8 rounded-xl">
8
+ <header class="text-center">
9
+ <h1 class="text-5xl font-bold">Cateo System</h1>
10
+ <p class="text-2xl font-medium mt-3">Catadores</p>
11
+ </header>
12
+ <section class="flex flex-col gap-6 items-center w-full mt-5">
13
+ <label for="id">
14
+ <input type="text" name="id" id="id" placeholder="Codigo de sesion"
15
+ class="placeholder:text-gray-100 placeholder:text-xl bg-gray-400 py-3 px-6 rounded-xl w-sm border-b-2 border-blue-700" required>
16
+ </label>
17
+
18
+ <label for="id">
19
+ <input type="text" name="id" id="id" placeholder="Nombre de usuario"
20
+ class="placeholder:text-gray-100 placeholder:text-xl bg-gray-400 py-3 px-6 rounded-xl w-sm border-b-2 border-blue-700" required>
21
+ </label>
22
+
23
+ <section class="flex flex-row flex-wrap gap-4 w-f ull justify-center">
24
+ <button type="submit"
25
+ class="text-white bg-blue-600 hover:bg-blue-700 active:outline-none active:ring-4 active:ring-blue-300 font-medium rounded-xl text-xl px-8 py-2 text-center uppercase">Ingresar</button>
26
+ </section>
27
+
28
+ </section>
29
+ </form>
30
+ </article>
31
+ {% endblock %}
tecnicas/templates/tecnicas/catadores-panel.html ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+ {% load static %}
3
+
4
+ {% block title %}Gestionar Catadores{% endblock %}
5
+
6
+ {% block content %}
7
+ <article class="w-full h-full flex flex-col justify-center items-center bg-gray-600">
8
+ <article class="flex flex-row gap-8 bg-gray-400 p-10 rounded-2xl w-3xl">
9
+ <header class="flex-1 flex flex-col gap-7">
10
+ <div class="bg-gray-300 p-8 text-2xl font-bold rounded-2xl text-center">
11
+ <h1>Adiministra los<br>catadores aquí</h1>
12
+ </div>
13
+ <a href="{% url 'cata_system:index' %}"
14
+ class="text-white bg-blue-600 hover:bg-blue-700 active:outline-none active:ring-4 active:ring-blue-300 font-medium rounded-xl text-xl p-4 text-center uppercase">Panel
15
+ principal</a>
16
+ <div class="w-full h-60 bg-gray-200 rounded-2xl relative">
17
+ <img src="https://ingenieriademenu.com/wp-content/uploads/2024/01/Que-hay-que-estudiar-para-ser-catador-de-vinos-1.png"
18
+ alt="un hombre en smokin probando vino" class="h-full w-full object-cover">
19
+ </div>
20
+ </header>
21
+ <section class="flex-1 flex flex-col gap-7">
22
+ <div class="w-full h-40 rounded-2xl">
23
+ <img src="https://cdn.pixabay.com/photo/2020/06/08/16/19/woman-5275027_640.jpg"
24
+ alt="varias personas en fila" class="w-full h-full rounded-2xl">
25
+ </div>
26
+ <button type="button"
27
+ class="flex-1 text-white bg-green-600 hover:bg-green-700 active:outline-none active:ring-4 active:ring-green-300 font-medium rounded-xl text-xl p-4 w-full text-center uppercase">Crear
28
+ Cadator</button>
29
+ <button type="button"
30
+ class="flex-1 text-white bg-yellow-600 hover:bg-yellow-700 active:outline-none active:ring-4 active:ring-yellow-300 font-medium rounded-xl text-xl p-4 w-full text-center uppercase">Buscar
31
+ Catador</button>
32
+ </section>
33
+ </article>
34
+ </article>
35
+ {% endblock %}
tecnicas/templates/tecnicas/main-panel.html ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+
3
+ {% block title %}Panel principal{% endblock %}
4
+
5
+ {% block content %}
6
+ <article class="w-full h-full flex flex-col justify-center items-center bg-gray-600">
7
+ <h1 class="text-4xl font-bold text-center max-sm:hidden">Panel Principal</h1>
8
+
9
+ <article class="w-full flex flex-col gap-7 items-center mt-7">
10
+ <article
11
+ class="w-5xl max-lg:w-3xl max-md:w-auto p-8 flex flex-row flex-wrap justify-center items-center gap-8 bg-zinc-400 rounded-md">
12
+ <section class="flex flex-col text-white flex-1 flex-wrap gap-4">
13
+ <fieldset class="fieldset rounded-box border px-3 pb-3 rounded-2xl">
14
+ <legend class="fieldset-legend px-1.5">Nombre</legend>
15
+ <p class="text-3xl font-medium">{{ presentador.nombre }}</p>
16
+ </fieldset>
17
+ <fieldset class="fieldset rounded-box border px-3 pb-3 rounded-2xl">
18
+ <legend class="fieldset-legend px-1.5">Identificador</legend>
19
+ <p class="text-3xl font-medium">{{ presentador.id }}</p>
20
+ </fieldset>
21
+ </section>
22
+ <section class="flex-1 flex justify-center">
23
+ <button type="button"
24
+ class="text-white bg-red-600 hover:bg-red-700 active:outline-none active:ring-4 active:ring-red-300 font-medium rounded-2xl text-3xl px-5 py-4 text-center uppercase">Salir
25
+ del sistema</button>
26
+ </section>
27
+ </article>
28
+
29
+ <article
30
+ class="w-5xl max-lg:w-3xl max-md:w-auto p-8 flex flex-col justify-around items-center gap-4 flex-wrap bg-zinc-400 rounded-md">
31
+ <section class="flex flex-row flex-wrap gap-4 w-full">
32
+ <a href="{% url 'cata_system:seleccion_tecnica' %}"
33
+ class="text-white bg-green-600 hover:bg-green-700 active:outline-none active:ring-4 active:ring-green-300 font-medium rounded-xl text-3xl px-8 py-4 text-center uppercase flex-1">Iniciar
34
+ Sesión <br> Sensorial</a>
35
+ <a href="{% url 'cata_system:panel_catadores' %}"
36
+ class="text-white bg-yellow-600 hover:bg-yellow-700 active:outline-none active:ring-4 active:ring-yellow-300 font-medium rounded-xl text-3xl px-8 py-4 text-center uppercase flex-1">Gestión
37
+ de <br>catadores</a>
38
+ </section>
39
+
40
+ <section class="flex flex-row flex-wrap gap-4 w-f ull justify-center">
41
+ <a href="{% url 'cata_system:panel_sesiones' %}"
42
+ class="text-white bg-blue-600 hover:bg-blue-700 active:outline-none active:ring-4 active:ring-blue-300 font-medium rounded-xl text-3xl px-8 py-4 text-center uppercase">Gestión
43
+ de sesiones <br> sensoriales</a>
44
+ </section>
45
+ </article>
46
+ </article>
47
+ </article>
48
+ {% endblock %}
tecnicas/templates/tecnicas/seleccion-tecnica.html ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+
3
+ {% block title %}Panel principal{% endblock %}
4
+
5
+ {% block content %}
6
+ {% endblock %}
tecnicas/templates/tecnicas/sesiones-panel.html ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {% extends 'tecnicas/base.html' %}
2
+
3
+ {% block title %}Panel Sesiones{% endblock %}
4
+
5
+ {% block content %}
6
+ <article class="w-full h-full flex flex-col justify-center items-center bg-gray-600">
7
+ <article class="flex flex-col gap-8 bg-gray-400 p-10 rounded-2xl w-4xl">
8
+ <header class="text-center flex flex-row gap-8 items-center w-full">
9
+ <div class="bg-gray-600 p-4 text-white rounded-xl flex-1">
10
+ <h1 class="font-bold text-2xl">Administra las<br>sesiones sensoriales</h1>
11
+ </div>
12
+ <div class="flex-1">
13
+ <a href="{% url 'cata_system:index' %}"
14
+ class="text-white bg-blue-600 hover:bg-blue-700 active:outline-none active:ring-4 active:ring-blue-300 font-medium rounded-xl text-xl p-4 text-center uppercase">Panel
15
+ principal</a>
16
+ </div>
17
+ </header>
18
+ <section class="grid grid-cols-3 gap-4">
19
+ {% for ele in elementos %}
20
+ <article class="p-4 bg-gray-200 flex flex-row gap-4 justify-center">
21
+ <div class="text-right *:not-last:mb-4">
22
+ <p><b>Código:</b></p>
23
+ <p><b>Fecha:</b></p>
24
+ <p><b>Técnica:</b></p>
25
+ <p>{{ ele }}</p>
26
+ </div>
27
+ <div class="*:not-last:mb-4">
28
+ <p>9J78GGHJK7V</p>
29
+ <p>12-07-2025</p>
30
+ <p>Intensidad</p>
31
+ </div>
32
+ <p>{{ ele }}</p>
33
+ </article>
34
+ {% endfor %}
35
+ </section>
36
+ </article>
37
+ </article>
38
+ {% endblock %}
tecnicas/tests.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ from django.test import TestCase
2
+
3
+ # Create your tests here.
tecnicas/urls.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.urls import path
2
+ from django.conf import settings
3
+
4
+ from . import views
5
+
6
+ app_name = "cata_system"
7
+ urlpatterns = [
8
+ path("", views.mainPanel, name="index"),
9
+ path("autenticacion", views.autentication, name="autenticacion"),
10
+ path("catador-login", views.catadorLogin, name="catador_login"),
11
+ path("panel-catadores", views.managementCatadores, name="panel_catadores"),
12
+ path("panel-sesiones", views.sesionesPanel, name="panel_sesiones"),
13
+ path("seleccion-tecnica", views.selecionTecnica, name="seleccion_tecnica"),
14
+ ]
tecnicas/views.py ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from django.shortcuts import render
2
+ import array as ar
3
+
4
+ # Create your views here.
5
+ def mainPanel(req):
6
+ pres = Presente("1233MMAS092222", "Juan Mendez Salazar")
7
+ return render(req, "tecnicas/main-panel.html", context={"presentador":pres})
8
+
9
+ def autentication(req):
10
+ return render(req, "tecnicas/auth.html")
11
+
12
+ def catadorLogin(req):
13
+ return render(req, "tecnicas/cata-login.html")
14
+
15
+ def managementCatadores(req):
16
+ return render(req, "tecnicas/catadores-panel.html")
17
+
18
+ def sesionesPanel(req):
19
+ return render(req, "tecnicas/sesiones-panel.html")
20
+
21
+ def selecionTecnica(req):
22
+
23
+ elementos = ["Par", "lo", "asa", "miua", "guau", "mal", "pollo", "yuo", "ui", "ua"]
24
+ return render(req, "tecnicas/seleccion-tecnica.html", context={"elementos":elementos})
25
+
26
+ class Presente():
27
+ def __init__(self, id, nombre):
28
+ self.id = id
29
+ self.nombre = nombre
theme/__init__.py ADDED
File without changes
theme/apps.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class ThemeConfig(AppConfig):
5
+ name = 'theme'
theme/static_src/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ node_modules
theme/static_src/package-lock.json ADDED
@@ -0,0 +1,2129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "theme",
3
+ "version": "4.0.1",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "theme",
9
+ "version": "4.0.1",
10
+ "license": "MIT",
11
+ "devDependencies": {
12
+ "@tailwindcss/postcss": "^4.1.0",
13
+ "cross-env": "^7.0.3",
14
+ "postcss": "^8.5.3",
15
+ "postcss-cli": "^11.0.1",
16
+ "postcss-nested": "^7.0.2",
17
+ "postcss-simple-vars": "^7.0.1",
18
+ "rimraf": "^6.0.1",
19
+ "tailwindcss": "^4.1.0"
20
+ }
21
+ },
22
+ "node_modules/@alloc/quick-lru": {
23
+ "version": "5.2.0",
24
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
25
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
26
+ "dev": true,
27
+ "license": "MIT",
28
+ "engines": {
29
+ "node": ">=10"
30
+ },
31
+ "funding": {
32
+ "url": "https://github.com/sponsors/sindresorhus"
33
+ }
34
+ },
35
+ "node_modules/@ampproject/remapping": {
36
+ "version": "2.3.0",
37
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
38
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
39
+ "dev": true,
40
+ "license": "Apache-2.0",
41
+ "dependencies": {
42
+ "@jridgewell/gen-mapping": "^0.3.5",
43
+ "@jridgewell/trace-mapping": "^0.3.24"
44
+ },
45
+ "engines": {
46
+ "node": ">=6.0.0"
47
+ }
48
+ },
49
+ "node_modules/@isaacs/cliui": {
50
+ "version": "8.0.2",
51
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
52
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
53
+ "dev": true,
54
+ "license": "ISC",
55
+ "dependencies": {
56
+ "string-width": "^5.1.2",
57
+ "string-width-cjs": "npm:string-width@^4.2.0",
58
+ "strip-ansi": "^7.0.1",
59
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
60
+ "wrap-ansi": "^8.1.0",
61
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
62
+ },
63
+ "engines": {
64
+ "node": ">=12"
65
+ }
66
+ },
67
+ "node_modules/@isaacs/fs-minipass": {
68
+ "version": "4.0.1",
69
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
70
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
71
+ "dev": true,
72
+ "license": "ISC",
73
+ "dependencies": {
74
+ "minipass": "^7.0.4"
75
+ },
76
+ "engines": {
77
+ "node": ">=18.0.0"
78
+ }
79
+ },
80
+ "node_modules/@jridgewell/gen-mapping": {
81
+ "version": "0.3.8",
82
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
83
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
84
+ "dev": true,
85
+ "license": "MIT",
86
+ "dependencies": {
87
+ "@jridgewell/set-array": "^1.2.1",
88
+ "@jridgewell/sourcemap-codec": "^1.4.10",
89
+ "@jridgewell/trace-mapping": "^0.3.24"
90
+ },
91
+ "engines": {
92
+ "node": ">=6.0.0"
93
+ }
94
+ },
95
+ "node_modules/@jridgewell/resolve-uri": {
96
+ "version": "3.1.2",
97
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
98
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
99
+ "dev": true,
100
+ "license": "MIT",
101
+ "engines": {
102
+ "node": ">=6.0.0"
103
+ }
104
+ },
105
+ "node_modules/@jridgewell/set-array": {
106
+ "version": "1.2.1",
107
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
108
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
109
+ "dev": true,
110
+ "license": "MIT",
111
+ "engines": {
112
+ "node": ">=6.0.0"
113
+ }
114
+ },
115
+ "node_modules/@jridgewell/sourcemap-codec": {
116
+ "version": "1.5.0",
117
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
118
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
119
+ "dev": true,
120
+ "license": "MIT"
121
+ },
122
+ "node_modules/@jridgewell/trace-mapping": {
123
+ "version": "0.3.25",
124
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
125
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
126
+ "dev": true,
127
+ "license": "MIT",
128
+ "dependencies": {
129
+ "@jridgewell/resolve-uri": "^3.1.0",
130
+ "@jridgewell/sourcemap-codec": "^1.4.14"
131
+ }
132
+ },
133
+ "node_modules/@tailwindcss/node": {
134
+ "version": "4.1.8",
135
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.8.tgz",
136
+ "integrity": "sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==",
137
+ "dev": true,
138
+ "license": "MIT",
139
+ "dependencies": {
140
+ "@ampproject/remapping": "^2.3.0",
141
+ "enhanced-resolve": "^5.18.1",
142
+ "jiti": "^2.4.2",
143
+ "lightningcss": "1.30.1",
144
+ "magic-string": "^0.30.17",
145
+ "source-map-js": "^1.2.1",
146
+ "tailwindcss": "4.1.8"
147
+ }
148
+ },
149
+ "node_modules/@tailwindcss/oxide": {
150
+ "version": "4.1.8",
151
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.8.tgz",
152
+ "integrity": "sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==",
153
+ "dev": true,
154
+ "hasInstallScript": true,
155
+ "license": "MIT",
156
+ "dependencies": {
157
+ "detect-libc": "^2.0.4",
158
+ "tar": "^7.4.3"
159
+ },
160
+ "engines": {
161
+ "node": ">= 10"
162
+ },
163
+ "optionalDependencies": {
164
+ "@tailwindcss/oxide-android-arm64": "4.1.8",
165
+ "@tailwindcss/oxide-darwin-arm64": "4.1.8",
166
+ "@tailwindcss/oxide-darwin-x64": "4.1.8",
167
+ "@tailwindcss/oxide-freebsd-x64": "4.1.8",
168
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.8",
169
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.8",
170
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.8",
171
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.8",
172
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.8",
173
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.8",
174
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.8",
175
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.8"
176
+ }
177
+ },
178
+ "node_modules/@tailwindcss/oxide-android-arm64": {
179
+ "version": "4.1.8",
180
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.8.tgz",
181
+ "integrity": "sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==",
182
+ "cpu": [
183
+ "arm64"
184
+ ],
185
+ "dev": true,
186
+ "license": "MIT",
187
+ "optional": true,
188
+ "os": [
189
+ "android"
190
+ ],
191
+ "engines": {
192
+ "node": ">= 10"
193
+ }
194
+ },
195
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
196
+ "version": "4.1.8",
197
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.8.tgz",
198
+ "integrity": "sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==",
199
+ "cpu": [
200
+ "arm64"
201
+ ],
202
+ "dev": true,
203
+ "license": "MIT",
204
+ "optional": true,
205
+ "os": [
206
+ "darwin"
207
+ ],
208
+ "engines": {
209
+ "node": ">= 10"
210
+ }
211
+ },
212
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
213
+ "version": "4.1.8",
214
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.8.tgz",
215
+ "integrity": "sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==",
216
+ "cpu": [
217
+ "x64"
218
+ ],
219
+ "dev": true,
220
+ "license": "MIT",
221
+ "optional": true,
222
+ "os": [
223
+ "darwin"
224
+ ],
225
+ "engines": {
226
+ "node": ">= 10"
227
+ }
228
+ },
229
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
230
+ "version": "4.1.8",
231
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.8.tgz",
232
+ "integrity": "sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==",
233
+ "cpu": [
234
+ "x64"
235
+ ],
236
+ "dev": true,
237
+ "license": "MIT",
238
+ "optional": true,
239
+ "os": [
240
+ "freebsd"
241
+ ],
242
+ "engines": {
243
+ "node": ">= 10"
244
+ }
245
+ },
246
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
247
+ "version": "4.1.8",
248
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.8.tgz",
249
+ "integrity": "sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==",
250
+ "cpu": [
251
+ "arm"
252
+ ],
253
+ "dev": true,
254
+ "license": "MIT",
255
+ "optional": true,
256
+ "os": [
257
+ "linux"
258
+ ],
259
+ "engines": {
260
+ "node": ">= 10"
261
+ }
262
+ },
263
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
264
+ "version": "4.1.8",
265
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.8.tgz",
266
+ "integrity": "sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==",
267
+ "cpu": [
268
+ "arm64"
269
+ ],
270
+ "dev": true,
271
+ "license": "MIT",
272
+ "optional": true,
273
+ "os": [
274
+ "linux"
275
+ ],
276
+ "engines": {
277
+ "node": ">= 10"
278
+ }
279
+ },
280
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
281
+ "version": "4.1.8",
282
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.8.tgz",
283
+ "integrity": "sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==",
284
+ "cpu": [
285
+ "arm64"
286
+ ],
287
+ "dev": true,
288
+ "license": "MIT",
289
+ "optional": true,
290
+ "os": [
291
+ "linux"
292
+ ],
293
+ "engines": {
294
+ "node": ">= 10"
295
+ }
296
+ },
297
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
298
+ "version": "4.1.8",
299
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.8.tgz",
300
+ "integrity": "sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==",
301
+ "cpu": [
302
+ "x64"
303
+ ],
304
+ "dev": true,
305
+ "license": "MIT",
306
+ "optional": true,
307
+ "os": [
308
+ "linux"
309
+ ],
310
+ "engines": {
311
+ "node": ">= 10"
312
+ }
313
+ },
314
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
315
+ "version": "4.1.8",
316
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.8.tgz",
317
+ "integrity": "sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==",
318
+ "cpu": [
319
+ "x64"
320
+ ],
321
+ "dev": true,
322
+ "license": "MIT",
323
+ "optional": true,
324
+ "os": [
325
+ "linux"
326
+ ],
327
+ "engines": {
328
+ "node": ">= 10"
329
+ }
330
+ },
331
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
332
+ "version": "4.1.8",
333
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.8.tgz",
334
+ "integrity": "sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==",
335
+ "bundleDependencies": [
336
+ "@napi-rs/wasm-runtime",
337
+ "@emnapi/core",
338
+ "@emnapi/runtime",
339
+ "@tybys/wasm-util",
340
+ "@emnapi/wasi-threads",
341
+ "tslib"
342
+ ],
343
+ "cpu": [
344
+ "wasm32"
345
+ ],
346
+ "dev": true,
347
+ "license": "MIT",
348
+ "optional": true,
349
+ "dependencies": {
350
+ "@emnapi/core": "^1.4.3",
351
+ "@emnapi/runtime": "^1.4.3",
352
+ "@emnapi/wasi-threads": "^1.0.2",
353
+ "@napi-rs/wasm-runtime": "^0.2.10",
354
+ "@tybys/wasm-util": "^0.9.0",
355
+ "tslib": "^2.8.0"
356
+ },
357
+ "engines": {
358
+ "node": ">=14.0.0"
359
+ }
360
+ },
361
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
362
+ "version": "4.1.8",
363
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.8.tgz",
364
+ "integrity": "sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==",
365
+ "cpu": [
366
+ "arm64"
367
+ ],
368
+ "dev": true,
369
+ "license": "MIT",
370
+ "optional": true,
371
+ "os": [
372
+ "win32"
373
+ ],
374
+ "engines": {
375
+ "node": ">= 10"
376
+ }
377
+ },
378
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
379
+ "version": "4.1.8",
380
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.8.tgz",
381
+ "integrity": "sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==",
382
+ "cpu": [
383
+ "x64"
384
+ ],
385
+ "dev": true,
386
+ "license": "MIT",
387
+ "optional": true,
388
+ "os": [
389
+ "win32"
390
+ ],
391
+ "engines": {
392
+ "node": ">= 10"
393
+ }
394
+ },
395
+ "node_modules/@tailwindcss/postcss": {
396
+ "version": "4.1.8",
397
+ "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.8.tgz",
398
+ "integrity": "sha512-vB/vlf7rIky+w94aWMw34bWW1ka6g6C3xIOdICKX2GC0VcLtL6fhlLiafF0DVIwa9V6EHz8kbWMkS2s2QvvNlw==",
399
+ "dev": true,
400
+ "license": "MIT",
401
+ "dependencies": {
402
+ "@alloc/quick-lru": "^5.2.0",
403
+ "@tailwindcss/node": "4.1.8",
404
+ "@tailwindcss/oxide": "4.1.8",
405
+ "postcss": "^8.4.41",
406
+ "tailwindcss": "4.1.8"
407
+ }
408
+ },
409
+ "node_modules/ansi-regex": {
410
+ "version": "6.1.0",
411
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
412
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
413
+ "dev": true,
414
+ "license": "MIT",
415
+ "engines": {
416
+ "node": ">=12"
417
+ },
418
+ "funding": {
419
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
420
+ }
421
+ },
422
+ "node_modules/ansi-styles": {
423
+ "version": "6.2.1",
424
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
425
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
426
+ "dev": true,
427
+ "license": "MIT",
428
+ "engines": {
429
+ "node": ">=12"
430
+ },
431
+ "funding": {
432
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
433
+ }
434
+ },
435
+ "node_modules/anymatch": {
436
+ "version": "3.1.3",
437
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
438
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
439
+ "dev": true,
440
+ "license": "ISC",
441
+ "dependencies": {
442
+ "normalize-path": "^3.0.0",
443
+ "picomatch": "^2.0.4"
444
+ },
445
+ "engines": {
446
+ "node": ">= 8"
447
+ }
448
+ },
449
+ "node_modules/balanced-match": {
450
+ "version": "1.0.2",
451
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
452
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
453
+ "dev": true,
454
+ "license": "MIT"
455
+ },
456
+ "node_modules/binary-extensions": {
457
+ "version": "2.3.0",
458
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
459
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
460
+ "dev": true,
461
+ "license": "MIT",
462
+ "engines": {
463
+ "node": ">=8"
464
+ },
465
+ "funding": {
466
+ "url": "https://github.com/sponsors/sindresorhus"
467
+ }
468
+ },
469
+ "node_modules/brace-expansion": {
470
+ "version": "2.0.1",
471
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
472
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
473
+ "dev": true,
474
+ "license": "MIT",
475
+ "dependencies": {
476
+ "balanced-match": "^1.0.0"
477
+ }
478
+ },
479
+ "node_modules/braces": {
480
+ "version": "3.0.3",
481
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
482
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
483
+ "dev": true,
484
+ "license": "MIT",
485
+ "dependencies": {
486
+ "fill-range": "^7.1.1"
487
+ },
488
+ "engines": {
489
+ "node": ">=8"
490
+ }
491
+ },
492
+ "node_modules/chokidar": {
493
+ "version": "3.6.0",
494
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
495
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
496
+ "dev": true,
497
+ "license": "MIT",
498
+ "dependencies": {
499
+ "anymatch": "~3.1.2",
500
+ "braces": "~3.0.2",
501
+ "glob-parent": "~5.1.2",
502
+ "is-binary-path": "~2.1.0",
503
+ "is-glob": "~4.0.1",
504
+ "normalize-path": "~3.0.0",
505
+ "readdirp": "~3.6.0"
506
+ },
507
+ "engines": {
508
+ "node": ">= 8.10.0"
509
+ },
510
+ "funding": {
511
+ "url": "https://paulmillr.com/funding/"
512
+ },
513
+ "optionalDependencies": {
514
+ "fsevents": "~2.3.2"
515
+ }
516
+ },
517
+ "node_modules/chownr": {
518
+ "version": "3.0.0",
519
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
520
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
521
+ "dev": true,
522
+ "license": "BlueOak-1.0.0",
523
+ "engines": {
524
+ "node": ">=18"
525
+ }
526
+ },
527
+ "node_modules/cliui": {
528
+ "version": "8.0.1",
529
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
530
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
531
+ "dev": true,
532
+ "license": "ISC",
533
+ "dependencies": {
534
+ "string-width": "^4.2.0",
535
+ "strip-ansi": "^6.0.1",
536
+ "wrap-ansi": "^7.0.0"
537
+ },
538
+ "engines": {
539
+ "node": ">=12"
540
+ }
541
+ },
542
+ "node_modules/cliui/node_modules/ansi-regex": {
543
+ "version": "5.0.1",
544
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
545
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
546
+ "dev": true,
547
+ "license": "MIT",
548
+ "engines": {
549
+ "node": ">=8"
550
+ }
551
+ },
552
+ "node_modules/cliui/node_modules/ansi-styles": {
553
+ "version": "4.3.0",
554
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
555
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
556
+ "dev": true,
557
+ "license": "MIT",
558
+ "dependencies": {
559
+ "color-convert": "^2.0.1"
560
+ },
561
+ "engines": {
562
+ "node": ">=8"
563
+ },
564
+ "funding": {
565
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
566
+ }
567
+ },
568
+ "node_modules/cliui/node_modules/emoji-regex": {
569
+ "version": "8.0.0",
570
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
571
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
572
+ "dev": true,
573
+ "license": "MIT"
574
+ },
575
+ "node_modules/cliui/node_modules/string-width": {
576
+ "version": "4.2.3",
577
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
578
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
579
+ "dev": true,
580
+ "license": "MIT",
581
+ "dependencies": {
582
+ "emoji-regex": "^8.0.0",
583
+ "is-fullwidth-code-point": "^3.0.0",
584
+ "strip-ansi": "^6.0.1"
585
+ },
586
+ "engines": {
587
+ "node": ">=8"
588
+ }
589
+ },
590
+ "node_modules/cliui/node_modules/strip-ansi": {
591
+ "version": "6.0.1",
592
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
593
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
594
+ "dev": true,
595
+ "license": "MIT",
596
+ "dependencies": {
597
+ "ansi-regex": "^5.0.1"
598
+ },
599
+ "engines": {
600
+ "node": ">=8"
601
+ }
602
+ },
603
+ "node_modules/cliui/node_modules/wrap-ansi": {
604
+ "version": "7.0.0",
605
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
606
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
607
+ "dev": true,
608
+ "license": "MIT",
609
+ "dependencies": {
610
+ "ansi-styles": "^4.0.0",
611
+ "string-width": "^4.1.0",
612
+ "strip-ansi": "^6.0.0"
613
+ },
614
+ "engines": {
615
+ "node": ">=10"
616
+ },
617
+ "funding": {
618
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
619
+ }
620
+ },
621
+ "node_modules/color-convert": {
622
+ "version": "2.0.1",
623
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
624
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
625
+ "dev": true,
626
+ "license": "MIT",
627
+ "dependencies": {
628
+ "color-name": "~1.1.4"
629
+ },
630
+ "engines": {
631
+ "node": ">=7.0.0"
632
+ }
633
+ },
634
+ "node_modules/color-name": {
635
+ "version": "1.1.4",
636
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
637
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
638
+ "dev": true,
639
+ "license": "MIT"
640
+ },
641
+ "node_modules/cross-env": {
642
+ "version": "7.0.3",
643
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
644
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
645
+ "dev": true,
646
+ "license": "MIT",
647
+ "dependencies": {
648
+ "cross-spawn": "^7.0.1"
649
+ },
650
+ "bin": {
651
+ "cross-env": "src/bin/cross-env.js",
652
+ "cross-env-shell": "src/bin/cross-env-shell.js"
653
+ },
654
+ "engines": {
655
+ "node": ">=10.14",
656
+ "npm": ">=6",
657
+ "yarn": ">=1"
658
+ }
659
+ },
660
+ "node_modules/cross-spawn": {
661
+ "version": "7.0.6",
662
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
663
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
664
+ "dev": true,
665
+ "license": "MIT",
666
+ "dependencies": {
667
+ "path-key": "^3.1.0",
668
+ "shebang-command": "^2.0.0",
669
+ "which": "^2.0.1"
670
+ },
671
+ "engines": {
672
+ "node": ">= 8"
673
+ }
674
+ },
675
+ "node_modules/cssesc": {
676
+ "version": "3.0.0",
677
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
678
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
679
+ "dev": true,
680
+ "license": "MIT",
681
+ "bin": {
682
+ "cssesc": "bin/cssesc"
683
+ },
684
+ "engines": {
685
+ "node": ">=4"
686
+ }
687
+ },
688
+ "node_modules/dependency-graph": {
689
+ "version": "1.0.0",
690
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz",
691
+ "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==",
692
+ "dev": true,
693
+ "license": "MIT",
694
+ "engines": {
695
+ "node": ">=4"
696
+ }
697
+ },
698
+ "node_modules/detect-libc": {
699
+ "version": "2.0.4",
700
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
701
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
702
+ "dev": true,
703
+ "license": "Apache-2.0",
704
+ "engines": {
705
+ "node": ">=8"
706
+ }
707
+ },
708
+ "node_modules/eastasianwidth": {
709
+ "version": "0.2.0",
710
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
711
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
712
+ "dev": true,
713
+ "license": "MIT"
714
+ },
715
+ "node_modules/emoji-regex": {
716
+ "version": "9.2.2",
717
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
718
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
719
+ "dev": true,
720
+ "license": "MIT"
721
+ },
722
+ "node_modules/enhanced-resolve": {
723
+ "version": "5.18.1",
724
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
725
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
726
+ "dev": true,
727
+ "license": "MIT",
728
+ "dependencies": {
729
+ "graceful-fs": "^4.2.4",
730
+ "tapable": "^2.2.0"
731
+ },
732
+ "engines": {
733
+ "node": ">=10.13.0"
734
+ }
735
+ },
736
+ "node_modules/escalade": {
737
+ "version": "3.2.0",
738
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
739
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
740
+ "dev": true,
741
+ "license": "MIT",
742
+ "engines": {
743
+ "node": ">=6"
744
+ }
745
+ },
746
+ "node_modules/fill-range": {
747
+ "version": "7.1.1",
748
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
749
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
750
+ "dev": true,
751
+ "license": "MIT",
752
+ "dependencies": {
753
+ "to-regex-range": "^5.0.1"
754
+ },
755
+ "engines": {
756
+ "node": ">=8"
757
+ }
758
+ },
759
+ "node_modules/foreground-child": {
760
+ "version": "3.3.1",
761
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
762
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
763
+ "dev": true,
764
+ "license": "ISC",
765
+ "dependencies": {
766
+ "cross-spawn": "^7.0.6",
767
+ "signal-exit": "^4.0.1"
768
+ },
769
+ "engines": {
770
+ "node": ">=14"
771
+ },
772
+ "funding": {
773
+ "url": "https://github.com/sponsors/isaacs"
774
+ }
775
+ },
776
+ "node_modules/fs-extra": {
777
+ "version": "11.3.0",
778
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
779
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
780
+ "dev": true,
781
+ "license": "MIT",
782
+ "dependencies": {
783
+ "graceful-fs": "^4.2.0",
784
+ "jsonfile": "^6.0.1",
785
+ "universalify": "^2.0.0"
786
+ },
787
+ "engines": {
788
+ "node": ">=14.14"
789
+ }
790
+ },
791
+ "node_modules/fsevents": {
792
+ "version": "2.3.3",
793
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
794
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
795
+ "dev": true,
796
+ "hasInstallScript": true,
797
+ "license": "MIT",
798
+ "optional": true,
799
+ "os": [
800
+ "darwin"
801
+ ],
802
+ "engines": {
803
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
804
+ }
805
+ },
806
+ "node_modules/get-caller-file": {
807
+ "version": "2.0.5",
808
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
809
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
810
+ "dev": true,
811
+ "license": "ISC",
812
+ "engines": {
813
+ "node": "6.* || 8.* || >= 10.*"
814
+ }
815
+ },
816
+ "node_modules/glob": {
817
+ "version": "11.0.2",
818
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz",
819
+ "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==",
820
+ "dev": true,
821
+ "license": "ISC",
822
+ "dependencies": {
823
+ "foreground-child": "^3.1.0",
824
+ "jackspeak": "^4.0.1",
825
+ "minimatch": "^10.0.0",
826
+ "minipass": "^7.1.2",
827
+ "package-json-from-dist": "^1.0.0",
828
+ "path-scurry": "^2.0.0"
829
+ },
830
+ "bin": {
831
+ "glob": "dist/esm/bin.mjs"
832
+ },
833
+ "engines": {
834
+ "node": "20 || >=22"
835
+ },
836
+ "funding": {
837
+ "url": "https://github.com/sponsors/isaacs"
838
+ }
839
+ },
840
+ "node_modules/glob-parent": {
841
+ "version": "5.1.2",
842
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
843
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
844
+ "dev": true,
845
+ "license": "ISC",
846
+ "dependencies": {
847
+ "is-glob": "^4.0.1"
848
+ },
849
+ "engines": {
850
+ "node": ">= 6"
851
+ }
852
+ },
853
+ "node_modules/graceful-fs": {
854
+ "version": "4.2.11",
855
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
856
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
857
+ "dev": true,
858
+ "license": "ISC"
859
+ },
860
+ "node_modules/is-binary-path": {
861
+ "version": "2.1.0",
862
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
863
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
864
+ "dev": true,
865
+ "license": "MIT",
866
+ "dependencies": {
867
+ "binary-extensions": "^2.0.0"
868
+ },
869
+ "engines": {
870
+ "node": ">=8"
871
+ }
872
+ },
873
+ "node_modules/is-extglob": {
874
+ "version": "2.1.1",
875
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
876
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
877
+ "dev": true,
878
+ "license": "MIT",
879
+ "engines": {
880
+ "node": ">=0.10.0"
881
+ }
882
+ },
883
+ "node_modules/is-fullwidth-code-point": {
884
+ "version": "3.0.0",
885
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
886
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
887
+ "dev": true,
888
+ "license": "MIT",
889
+ "engines": {
890
+ "node": ">=8"
891
+ }
892
+ },
893
+ "node_modules/is-glob": {
894
+ "version": "4.0.3",
895
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
896
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
897
+ "dev": true,
898
+ "license": "MIT",
899
+ "dependencies": {
900
+ "is-extglob": "^2.1.1"
901
+ },
902
+ "engines": {
903
+ "node": ">=0.10.0"
904
+ }
905
+ },
906
+ "node_modules/is-number": {
907
+ "version": "7.0.0",
908
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
909
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
910
+ "dev": true,
911
+ "license": "MIT",
912
+ "engines": {
913
+ "node": ">=0.12.0"
914
+ }
915
+ },
916
+ "node_modules/isexe": {
917
+ "version": "2.0.0",
918
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
919
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
920
+ "dev": true,
921
+ "license": "ISC"
922
+ },
923
+ "node_modules/jackspeak": {
924
+ "version": "4.1.1",
925
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
926
+ "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
927
+ "dev": true,
928
+ "license": "BlueOak-1.0.0",
929
+ "dependencies": {
930
+ "@isaacs/cliui": "^8.0.2"
931
+ },
932
+ "engines": {
933
+ "node": "20 || >=22"
934
+ },
935
+ "funding": {
936
+ "url": "https://github.com/sponsors/isaacs"
937
+ }
938
+ },
939
+ "node_modules/jiti": {
940
+ "version": "2.4.2",
941
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
942
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
943
+ "dev": true,
944
+ "license": "MIT",
945
+ "bin": {
946
+ "jiti": "lib/jiti-cli.mjs"
947
+ }
948
+ },
949
+ "node_modules/jsonfile": {
950
+ "version": "6.1.0",
951
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
952
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
953
+ "dev": true,
954
+ "license": "MIT",
955
+ "dependencies": {
956
+ "universalify": "^2.0.0"
957
+ },
958
+ "optionalDependencies": {
959
+ "graceful-fs": "^4.1.6"
960
+ }
961
+ },
962
+ "node_modules/lightningcss": {
963
+ "version": "1.30.1",
964
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz",
965
+ "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==",
966
+ "dev": true,
967
+ "license": "MPL-2.0",
968
+ "dependencies": {
969
+ "detect-libc": "^2.0.3"
970
+ },
971
+ "engines": {
972
+ "node": ">= 12.0.0"
973
+ },
974
+ "funding": {
975
+ "type": "opencollective",
976
+ "url": "https://opencollective.com/parcel"
977
+ },
978
+ "optionalDependencies": {
979
+ "lightningcss-darwin-arm64": "1.30.1",
980
+ "lightningcss-darwin-x64": "1.30.1",
981
+ "lightningcss-freebsd-x64": "1.30.1",
982
+ "lightningcss-linux-arm-gnueabihf": "1.30.1",
983
+ "lightningcss-linux-arm64-gnu": "1.30.1",
984
+ "lightningcss-linux-arm64-musl": "1.30.1",
985
+ "lightningcss-linux-x64-gnu": "1.30.1",
986
+ "lightningcss-linux-x64-musl": "1.30.1",
987
+ "lightningcss-win32-arm64-msvc": "1.30.1",
988
+ "lightningcss-win32-x64-msvc": "1.30.1"
989
+ }
990
+ },
991
+ "node_modules/lightningcss-darwin-arm64": {
992
+ "version": "1.30.1",
993
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz",
994
+ "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==",
995
+ "cpu": [
996
+ "arm64"
997
+ ],
998
+ "dev": true,
999
+ "license": "MPL-2.0",
1000
+ "optional": true,
1001
+ "os": [
1002
+ "darwin"
1003
+ ],
1004
+ "engines": {
1005
+ "node": ">= 12.0.0"
1006
+ },
1007
+ "funding": {
1008
+ "type": "opencollective",
1009
+ "url": "https://opencollective.com/parcel"
1010
+ }
1011
+ },
1012
+ "node_modules/lightningcss-darwin-x64": {
1013
+ "version": "1.30.1",
1014
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz",
1015
+ "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==",
1016
+ "cpu": [
1017
+ "x64"
1018
+ ],
1019
+ "dev": true,
1020
+ "license": "MPL-2.0",
1021
+ "optional": true,
1022
+ "os": [
1023
+ "darwin"
1024
+ ],
1025
+ "engines": {
1026
+ "node": ">= 12.0.0"
1027
+ },
1028
+ "funding": {
1029
+ "type": "opencollective",
1030
+ "url": "https://opencollective.com/parcel"
1031
+ }
1032
+ },
1033
+ "node_modules/lightningcss-freebsd-x64": {
1034
+ "version": "1.30.1",
1035
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz",
1036
+ "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==",
1037
+ "cpu": [
1038
+ "x64"
1039
+ ],
1040
+ "dev": true,
1041
+ "license": "MPL-2.0",
1042
+ "optional": true,
1043
+ "os": [
1044
+ "freebsd"
1045
+ ],
1046
+ "engines": {
1047
+ "node": ">= 12.0.0"
1048
+ },
1049
+ "funding": {
1050
+ "type": "opencollective",
1051
+ "url": "https://opencollective.com/parcel"
1052
+ }
1053
+ },
1054
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
1055
+ "version": "1.30.1",
1056
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz",
1057
+ "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==",
1058
+ "cpu": [
1059
+ "arm"
1060
+ ],
1061
+ "dev": true,
1062
+ "license": "MPL-2.0",
1063
+ "optional": true,
1064
+ "os": [
1065
+ "linux"
1066
+ ],
1067
+ "engines": {
1068
+ "node": ">= 12.0.0"
1069
+ },
1070
+ "funding": {
1071
+ "type": "opencollective",
1072
+ "url": "https://opencollective.com/parcel"
1073
+ }
1074
+ },
1075
+ "node_modules/lightningcss-linux-arm64-gnu": {
1076
+ "version": "1.30.1",
1077
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz",
1078
+ "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==",
1079
+ "cpu": [
1080
+ "arm64"
1081
+ ],
1082
+ "dev": true,
1083
+ "license": "MPL-2.0",
1084
+ "optional": true,
1085
+ "os": [
1086
+ "linux"
1087
+ ],
1088
+ "engines": {
1089
+ "node": ">= 12.0.0"
1090
+ },
1091
+ "funding": {
1092
+ "type": "opencollective",
1093
+ "url": "https://opencollective.com/parcel"
1094
+ }
1095
+ },
1096
+ "node_modules/lightningcss-linux-arm64-musl": {
1097
+ "version": "1.30.1",
1098
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz",
1099
+ "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==",
1100
+ "cpu": [
1101
+ "arm64"
1102
+ ],
1103
+ "dev": true,
1104
+ "license": "MPL-2.0",
1105
+ "optional": true,
1106
+ "os": [
1107
+ "linux"
1108
+ ],
1109
+ "engines": {
1110
+ "node": ">= 12.0.0"
1111
+ },
1112
+ "funding": {
1113
+ "type": "opencollective",
1114
+ "url": "https://opencollective.com/parcel"
1115
+ }
1116
+ },
1117
+ "node_modules/lightningcss-linux-x64-gnu": {
1118
+ "version": "1.30.1",
1119
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz",
1120
+ "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==",
1121
+ "cpu": [
1122
+ "x64"
1123
+ ],
1124
+ "dev": true,
1125
+ "license": "MPL-2.0",
1126
+ "optional": true,
1127
+ "os": [
1128
+ "linux"
1129
+ ],
1130
+ "engines": {
1131
+ "node": ">= 12.0.0"
1132
+ },
1133
+ "funding": {
1134
+ "type": "opencollective",
1135
+ "url": "https://opencollective.com/parcel"
1136
+ }
1137
+ },
1138
+ "node_modules/lightningcss-linux-x64-musl": {
1139
+ "version": "1.30.1",
1140
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz",
1141
+ "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==",
1142
+ "cpu": [
1143
+ "x64"
1144
+ ],
1145
+ "dev": true,
1146
+ "license": "MPL-2.0",
1147
+ "optional": true,
1148
+ "os": [
1149
+ "linux"
1150
+ ],
1151
+ "engines": {
1152
+ "node": ">= 12.0.0"
1153
+ },
1154
+ "funding": {
1155
+ "type": "opencollective",
1156
+ "url": "https://opencollective.com/parcel"
1157
+ }
1158
+ },
1159
+ "node_modules/lightningcss-win32-arm64-msvc": {
1160
+ "version": "1.30.1",
1161
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz",
1162
+ "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==",
1163
+ "cpu": [
1164
+ "arm64"
1165
+ ],
1166
+ "dev": true,
1167
+ "license": "MPL-2.0",
1168
+ "optional": true,
1169
+ "os": [
1170
+ "win32"
1171
+ ],
1172
+ "engines": {
1173
+ "node": ">= 12.0.0"
1174
+ },
1175
+ "funding": {
1176
+ "type": "opencollective",
1177
+ "url": "https://opencollective.com/parcel"
1178
+ }
1179
+ },
1180
+ "node_modules/lightningcss-win32-x64-msvc": {
1181
+ "version": "1.30.1",
1182
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz",
1183
+ "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==",
1184
+ "cpu": [
1185
+ "x64"
1186
+ ],
1187
+ "dev": true,
1188
+ "license": "MPL-2.0",
1189
+ "optional": true,
1190
+ "os": [
1191
+ "win32"
1192
+ ],
1193
+ "engines": {
1194
+ "node": ">= 12.0.0"
1195
+ },
1196
+ "funding": {
1197
+ "type": "opencollective",
1198
+ "url": "https://opencollective.com/parcel"
1199
+ }
1200
+ },
1201
+ "node_modules/lilconfig": {
1202
+ "version": "3.1.3",
1203
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1204
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1205
+ "dev": true,
1206
+ "license": "MIT",
1207
+ "engines": {
1208
+ "node": ">=14"
1209
+ },
1210
+ "funding": {
1211
+ "url": "https://github.com/sponsors/antonk52"
1212
+ }
1213
+ },
1214
+ "node_modules/lru-cache": {
1215
+ "version": "11.1.0",
1216
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
1217
+ "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
1218
+ "dev": true,
1219
+ "license": "ISC",
1220
+ "engines": {
1221
+ "node": "20 || >=22"
1222
+ }
1223
+ },
1224
+ "node_modules/magic-string": {
1225
+ "version": "0.30.17",
1226
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
1227
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
1228
+ "dev": true,
1229
+ "license": "MIT",
1230
+ "dependencies": {
1231
+ "@jridgewell/sourcemap-codec": "^1.5.0"
1232
+ }
1233
+ },
1234
+ "node_modules/minimatch": {
1235
+ "version": "10.0.1",
1236
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
1237
+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
1238
+ "dev": true,
1239
+ "license": "ISC",
1240
+ "dependencies": {
1241
+ "brace-expansion": "^2.0.1"
1242
+ },
1243
+ "engines": {
1244
+ "node": "20 || >=22"
1245
+ },
1246
+ "funding": {
1247
+ "url": "https://github.com/sponsors/isaacs"
1248
+ }
1249
+ },
1250
+ "node_modules/minipass": {
1251
+ "version": "7.1.2",
1252
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1253
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1254
+ "dev": true,
1255
+ "license": "ISC",
1256
+ "engines": {
1257
+ "node": ">=16 || 14 >=14.17"
1258
+ }
1259
+ },
1260
+ "node_modules/minizlib": {
1261
+ "version": "3.0.2",
1262
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
1263
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
1264
+ "dev": true,
1265
+ "license": "MIT",
1266
+ "dependencies": {
1267
+ "minipass": "^7.1.2"
1268
+ },
1269
+ "engines": {
1270
+ "node": ">= 18"
1271
+ }
1272
+ },
1273
+ "node_modules/mkdirp": {
1274
+ "version": "3.0.1",
1275
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
1276
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
1277
+ "dev": true,
1278
+ "license": "MIT",
1279
+ "bin": {
1280
+ "mkdirp": "dist/cjs/src/bin.js"
1281
+ },
1282
+ "engines": {
1283
+ "node": ">=10"
1284
+ },
1285
+ "funding": {
1286
+ "url": "https://github.com/sponsors/isaacs"
1287
+ }
1288
+ },
1289
+ "node_modules/nanoid": {
1290
+ "version": "3.3.11",
1291
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1292
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1293
+ "dev": true,
1294
+ "funding": [
1295
+ {
1296
+ "type": "github",
1297
+ "url": "https://github.com/sponsors/ai"
1298
+ }
1299
+ ],
1300
+ "license": "MIT",
1301
+ "bin": {
1302
+ "nanoid": "bin/nanoid.cjs"
1303
+ },
1304
+ "engines": {
1305
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1306
+ }
1307
+ },
1308
+ "node_modules/normalize-path": {
1309
+ "version": "3.0.0",
1310
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1311
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1312
+ "dev": true,
1313
+ "license": "MIT",
1314
+ "engines": {
1315
+ "node": ">=0.10.0"
1316
+ }
1317
+ },
1318
+ "node_modules/package-json-from-dist": {
1319
+ "version": "1.0.1",
1320
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1321
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
1322
+ "dev": true,
1323
+ "license": "BlueOak-1.0.0"
1324
+ },
1325
+ "node_modules/path-key": {
1326
+ "version": "3.1.1",
1327
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1328
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1329
+ "dev": true,
1330
+ "license": "MIT",
1331
+ "engines": {
1332
+ "node": ">=8"
1333
+ }
1334
+ },
1335
+ "node_modules/path-scurry": {
1336
+ "version": "2.0.0",
1337
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
1338
+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
1339
+ "dev": true,
1340
+ "license": "BlueOak-1.0.0",
1341
+ "dependencies": {
1342
+ "lru-cache": "^11.0.0",
1343
+ "minipass": "^7.1.2"
1344
+ },
1345
+ "engines": {
1346
+ "node": "20 || >=22"
1347
+ },
1348
+ "funding": {
1349
+ "url": "https://github.com/sponsors/isaacs"
1350
+ }
1351
+ },
1352
+ "node_modules/picocolors": {
1353
+ "version": "1.1.1",
1354
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1355
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1356
+ "dev": true,
1357
+ "license": "ISC"
1358
+ },
1359
+ "node_modules/picomatch": {
1360
+ "version": "2.3.1",
1361
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1362
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1363
+ "dev": true,
1364
+ "license": "MIT",
1365
+ "engines": {
1366
+ "node": ">=8.6"
1367
+ },
1368
+ "funding": {
1369
+ "url": "https://github.com/sponsors/jonschlinkert"
1370
+ }
1371
+ },
1372
+ "node_modules/pify": {
1373
+ "version": "2.3.0",
1374
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1375
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1376
+ "dev": true,
1377
+ "license": "MIT",
1378
+ "engines": {
1379
+ "node": ">=0.10.0"
1380
+ }
1381
+ },
1382
+ "node_modules/postcss": {
1383
+ "version": "8.5.4",
1384
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz",
1385
+ "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==",
1386
+ "dev": true,
1387
+ "funding": [
1388
+ {
1389
+ "type": "opencollective",
1390
+ "url": "https://opencollective.com/postcss/"
1391
+ },
1392
+ {
1393
+ "type": "tidelift",
1394
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1395
+ },
1396
+ {
1397
+ "type": "github",
1398
+ "url": "https://github.com/sponsors/ai"
1399
+ }
1400
+ ],
1401
+ "license": "MIT",
1402
+ "dependencies": {
1403
+ "nanoid": "^3.3.11",
1404
+ "picocolors": "^1.1.1",
1405
+ "source-map-js": "^1.2.1"
1406
+ },
1407
+ "engines": {
1408
+ "node": "^10 || ^12 || >=14"
1409
+ }
1410
+ },
1411
+ "node_modules/postcss-cli": {
1412
+ "version": "11.0.1",
1413
+ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz",
1414
+ "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==",
1415
+ "dev": true,
1416
+ "license": "MIT",
1417
+ "dependencies": {
1418
+ "chokidar": "^3.3.0",
1419
+ "dependency-graph": "^1.0.0",
1420
+ "fs-extra": "^11.0.0",
1421
+ "picocolors": "^1.0.0",
1422
+ "postcss-load-config": "^5.0.0",
1423
+ "postcss-reporter": "^7.0.0",
1424
+ "pretty-hrtime": "^1.0.3",
1425
+ "read-cache": "^1.0.0",
1426
+ "slash": "^5.0.0",
1427
+ "tinyglobby": "^0.2.12",
1428
+ "yargs": "^17.0.0"
1429
+ },
1430
+ "bin": {
1431
+ "postcss": "index.js"
1432
+ },
1433
+ "engines": {
1434
+ "node": ">=18"
1435
+ },
1436
+ "peerDependencies": {
1437
+ "postcss": "^8.0.0"
1438
+ }
1439
+ },
1440
+ "node_modules/postcss-load-config": {
1441
+ "version": "5.1.0",
1442
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz",
1443
+ "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==",
1444
+ "dev": true,
1445
+ "funding": [
1446
+ {
1447
+ "type": "opencollective",
1448
+ "url": "https://opencollective.com/postcss/"
1449
+ },
1450
+ {
1451
+ "type": "github",
1452
+ "url": "https://github.com/sponsors/ai"
1453
+ }
1454
+ ],
1455
+ "license": "MIT",
1456
+ "dependencies": {
1457
+ "lilconfig": "^3.1.1",
1458
+ "yaml": "^2.4.2"
1459
+ },
1460
+ "engines": {
1461
+ "node": ">= 18"
1462
+ },
1463
+ "peerDependencies": {
1464
+ "jiti": ">=1.21.0",
1465
+ "postcss": ">=8.0.9",
1466
+ "tsx": "^4.8.1"
1467
+ },
1468
+ "peerDependenciesMeta": {
1469
+ "jiti": {
1470
+ "optional": true
1471
+ },
1472
+ "postcss": {
1473
+ "optional": true
1474
+ },
1475
+ "tsx": {
1476
+ "optional": true
1477
+ }
1478
+ }
1479
+ },
1480
+ "node_modules/postcss-nested": {
1481
+ "version": "7.0.2",
1482
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-7.0.2.tgz",
1483
+ "integrity": "sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==",
1484
+ "dev": true,
1485
+ "funding": [
1486
+ {
1487
+ "type": "opencollective",
1488
+ "url": "https://opencollective.com/postcss/"
1489
+ },
1490
+ {
1491
+ "type": "github",
1492
+ "url": "https://github.com/sponsors/ai"
1493
+ }
1494
+ ],
1495
+ "license": "MIT",
1496
+ "dependencies": {
1497
+ "postcss-selector-parser": "^7.0.0"
1498
+ },
1499
+ "engines": {
1500
+ "node": ">=18.0"
1501
+ },
1502
+ "peerDependencies": {
1503
+ "postcss": "^8.2.14"
1504
+ }
1505
+ },
1506
+ "node_modules/postcss-reporter": {
1507
+ "version": "7.1.0",
1508
+ "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz",
1509
+ "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==",
1510
+ "dev": true,
1511
+ "funding": [
1512
+ {
1513
+ "type": "opencollective",
1514
+ "url": "https://opencollective.com/postcss/"
1515
+ },
1516
+ {
1517
+ "type": "github",
1518
+ "url": "https://github.com/sponsors/ai"
1519
+ }
1520
+ ],
1521
+ "license": "MIT",
1522
+ "dependencies": {
1523
+ "picocolors": "^1.0.0",
1524
+ "thenby": "^1.3.4"
1525
+ },
1526
+ "engines": {
1527
+ "node": ">=10"
1528
+ },
1529
+ "peerDependencies": {
1530
+ "postcss": "^8.1.0"
1531
+ }
1532
+ },
1533
+ "node_modules/postcss-selector-parser": {
1534
+ "version": "7.1.0",
1535
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
1536
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
1537
+ "dev": true,
1538
+ "license": "MIT",
1539
+ "dependencies": {
1540
+ "cssesc": "^3.0.0",
1541
+ "util-deprecate": "^1.0.2"
1542
+ },
1543
+ "engines": {
1544
+ "node": ">=4"
1545
+ }
1546
+ },
1547
+ "node_modules/postcss-simple-vars": {
1548
+ "version": "7.0.1",
1549
+ "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz",
1550
+ "integrity": "sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A==",
1551
+ "dev": true,
1552
+ "license": "MIT",
1553
+ "engines": {
1554
+ "node": ">=14.0"
1555
+ },
1556
+ "funding": {
1557
+ "type": "opencollective",
1558
+ "url": "https://opencollective.com/postcss/"
1559
+ },
1560
+ "peerDependencies": {
1561
+ "postcss": "^8.2.1"
1562
+ }
1563
+ },
1564
+ "node_modules/pretty-hrtime": {
1565
+ "version": "1.0.3",
1566
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
1567
+ "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
1568
+ "dev": true,
1569
+ "license": "MIT",
1570
+ "engines": {
1571
+ "node": ">= 0.8"
1572
+ }
1573
+ },
1574
+ "node_modules/read-cache": {
1575
+ "version": "1.0.0",
1576
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1577
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1578
+ "dev": true,
1579
+ "license": "MIT",
1580
+ "dependencies": {
1581
+ "pify": "^2.3.0"
1582
+ }
1583
+ },
1584
+ "node_modules/readdirp": {
1585
+ "version": "3.6.0",
1586
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1587
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1588
+ "dev": true,
1589
+ "license": "MIT",
1590
+ "dependencies": {
1591
+ "picomatch": "^2.2.1"
1592
+ },
1593
+ "engines": {
1594
+ "node": ">=8.10.0"
1595
+ }
1596
+ },
1597
+ "node_modules/require-directory": {
1598
+ "version": "2.1.1",
1599
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
1600
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
1601
+ "dev": true,
1602
+ "license": "MIT",
1603
+ "engines": {
1604
+ "node": ">=0.10.0"
1605
+ }
1606
+ },
1607
+ "node_modules/rimraf": {
1608
+ "version": "6.0.1",
1609
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
1610
+ "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
1611
+ "dev": true,
1612
+ "license": "ISC",
1613
+ "dependencies": {
1614
+ "glob": "^11.0.0",
1615
+ "package-json-from-dist": "^1.0.0"
1616
+ },
1617
+ "bin": {
1618
+ "rimraf": "dist/esm/bin.mjs"
1619
+ },
1620
+ "engines": {
1621
+ "node": "20 || >=22"
1622
+ },
1623
+ "funding": {
1624
+ "url": "https://github.com/sponsors/isaacs"
1625
+ }
1626
+ },
1627
+ "node_modules/shebang-command": {
1628
+ "version": "2.0.0",
1629
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1630
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1631
+ "dev": true,
1632
+ "license": "MIT",
1633
+ "dependencies": {
1634
+ "shebang-regex": "^3.0.0"
1635
+ },
1636
+ "engines": {
1637
+ "node": ">=8"
1638
+ }
1639
+ },
1640
+ "node_modules/shebang-regex": {
1641
+ "version": "3.0.0",
1642
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1643
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1644
+ "dev": true,
1645
+ "license": "MIT",
1646
+ "engines": {
1647
+ "node": ">=8"
1648
+ }
1649
+ },
1650
+ "node_modules/signal-exit": {
1651
+ "version": "4.1.0",
1652
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1653
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1654
+ "dev": true,
1655
+ "license": "ISC",
1656
+ "engines": {
1657
+ "node": ">=14"
1658
+ },
1659
+ "funding": {
1660
+ "url": "https://github.com/sponsors/isaacs"
1661
+ }
1662
+ },
1663
+ "node_modules/slash": {
1664
+ "version": "5.1.0",
1665
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
1666
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
1667
+ "dev": true,
1668
+ "license": "MIT",
1669
+ "engines": {
1670
+ "node": ">=14.16"
1671
+ },
1672
+ "funding": {
1673
+ "url": "https://github.com/sponsors/sindresorhus"
1674
+ }
1675
+ },
1676
+ "node_modules/source-map-js": {
1677
+ "version": "1.2.1",
1678
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1679
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1680
+ "dev": true,
1681
+ "license": "BSD-3-Clause",
1682
+ "engines": {
1683
+ "node": ">=0.10.0"
1684
+ }
1685
+ },
1686
+ "node_modules/string-width": {
1687
+ "version": "5.1.2",
1688
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1689
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1690
+ "dev": true,
1691
+ "license": "MIT",
1692
+ "dependencies": {
1693
+ "eastasianwidth": "^0.2.0",
1694
+ "emoji-regex": "^9.2.2",
1695
+ "strip-ansi": "^7.0.1"
1696
+ },
1697
+ "engines": {
1698
+ "node": ">=12"
1699
+ },
1700
+ "funding": {
1701
+ "url": "https://github.com/sponsors/sindresorhus"
1702
+ }
1703
+ },
1704
+ "node_modules/string-width-cjs": {
1705
+ "name": "string-width",
1706
+ "version": "4.2.3",
1707
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1708
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1709
+ "dev": true,
1710
+ "license": "MIT",
1711
+ "dependencies": {
1712
+ "emoji-regex": "^8.0.0",
1713
+ "is-fullwidth-code-point": "^3.0.0",
1714
+ "strip-ansi": "^6.0.1"
1715
+ },
1716
+ "engines": {
1717
+ "node": ">=8"
1718
+ }
1719
+ },
1720
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
1721
+ "version": "5.0.1",
1722
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1723
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1724
+ "dev": true,
1725
+ "license": "MIT",
1726
+ "engines": {
1727
+ "node": ">=8"
1728
+ }
1729
+ },
1730
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
1731
+ "version": "8.0.0",
1732
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1733
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1734
+ "dev": true,
1735
+ "license": "MIT"
1736
+ },
1737
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
1738
+ "version": "6.0.1",
1739
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1740
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1741
+ "dev": true,
1742
+ "license": "MIT",
1743
+ "dependencies": {
1744
+ "ansi-regex": "^5.0.1"
1745
+ },
1746
+ "engines": {
1747
+ "node": ">=8"
1748
+ }
1749
+ },
1750
+ "node_modules/strip-ansi": {
1751
+ "version": "7.1.0",
1752
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1753
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1754
+ "dev": true,
1755
+ "license": "MIT",
1756
+ "dependencies": {
1757
+ "ansi-regex": "^6.0.1"
1758
+ },
1759
+ "engines": {
1760
+ "node": ">=12"
1761
+ },
1762
+ "funding": {
1763
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1764
+ }
1765
+ },
1766
+ "node_modules/strip-ansi-cjs": {
1767
+ "name": "strip-ansi",
1768
+ "version": "6.0.1",
1769
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1770
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1771
+ "dev": true,
1772
+ "license": "MIT",
1773
+ "dependencies": {
1774
+ "ansi-regex": "^5.0.1"
1775
+ },
1776
+ "engines": {
1777
+ "node": ">=8"
1778
+ }
1779
+ },
1780
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
1781
+ "version": "5.0.1",
1782
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1783
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1784
+ "dev": true,
1785
+ "license": "MIT",
1786
+ "engines": {
1787
+ "node": ">=8"
1788
+ }
1789
+ },
1790
+ "node_modules/tailwindcss": {
1791
+ "version": "4.1.8",
1792
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.8.tgz",
1793
+ "integrity": "sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==",
1794
+ "dev": true,
1795
+ "license": "MIT"
1796
+ },
1797
+ "node_modules/tapable": {
1798
+ "version": "2.2.2",
1799
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
1800
+ "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
1801
+ "dev": true,
1802
+ "license": "MIT",
1803
+ "engines": {
1804
+ "node": ">=6"
1805
+ }
1806
+ },
1807
+ "node_modules/tar": {
1808
+ "version": "7.4.3",
1809
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
1810
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
1811
+ "dev": true,
1812
+ "license": "ISC",
1813
+ "dependencies": {
1814
+ "@isaacs/fs-minipass": "^4.0.0",
1815
+ "chownr": "^3.0.0",
1816
+ "minipass": "^7.1.2",
1817
+ "minizlib": "^3.0.1",
1818
+ "mkdirp": "^3.0.1",
1819
+ "yallist": "^5.0.0"
1820
+ },
1821
+ "engines": {
1822
+ "node": ">=18"
1823
+ }
1824
+ },
1825
+ "node_modules/thenby": {
1826
+ "version": "1.3.4",
1827
+ "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz",
1828
+ "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==",
1829
+ "dev": true,
1830
+ "license": "Apache-2.0"
1831
+ },
1832
+ "node_modules/tinyglobby": {
1833
+ "version": "0.2.14",
1834
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
1835
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
1836
+ "dev": true,
1837
+ "license": "MIT",
1838
+ "dependencies": {
1839
+ "fdir": "^6.4.4",
1840
+ "picomatch": "^4.0.2"
1841
+ },
1842
+ "engines": {
1843
+ "node": ">=12.0.0"
1844
+ },
1845
+ "funding": {
1846
+ "url": "https://github.com/sponsors/SuperchupuDev"
1847
+ }
1848
+ },
1849
+ "node_modules/tinyglobby/node_modules/fdir": {
1850
+ "version": "6.4.5",
1851
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
1852
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
1853
+ "dev": true,
1854
+ "license": "MIT",
1855
+ "peerDependencies": {
1856
+ "picomatch": "^3 || ^4"
1857
+ },
1858
+ "peerDependenciesMeta": {
1859
+ "picomatch": {
1860
+ "optional": true
1861
+ }
1862
+ }
1863
+ },
1864
+ "node_modules/tinyglobby/node_modules/picomatch": {
1865
+ "version": "4.0.2",
1866
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
1867
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
1868
+ "dev": true,
1869
+ "license": "MIT",
1870
+ "engines": {
1871
+ "node": ">=12"
1872
+ },
1873
+ "funding": {
1874
+ "url": "https://github.com/sponsors/jonschlinkert"
1875
+ }
1876
+ },
1877
+ "node_modules/to-regex-range": {
1878
+ "version": "5.0.1",
1879
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1880
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1881
+ "dev": true,
1882
+ "license": "MIT",
1883
+ "dependencies": {
1884
+ "is-number": "^7.0.0"
1885
+ },
1886
+ "engines": {
1887
+ "node": ">=8.0"
1888
+ }
1889
+ },
1890
+ "node_modules/universalify": {
1891
+ "version": "2.0.1",
1892
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
1893
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
1894
+ "dev": true,
1895
+ "license": "MIT",
1896
+ "engines": {
1897
+ "node": ">= 10.0.0"
1898
+ }
1899
+ },
1900
+ "node_modules/util-deprecate": {
1901
+ "version": "1.0.2",
1902
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1903
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1904
+ "dev": true,
1905
+ "license": "MIT"
1906
+ },
1907
+ "node_modules/which": {
1908
+ "version": "2.0.2",
1909
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1910
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1911
+ "dev": true,
1912
+ "license": "ISC",
1913
+ "dependencies": {
1914
+ "isexe": "^2.0.0"
1915
+ },
1916
+ "bin": {
1917
+ "node-which": "bin/node-which"
1918
+ },
1919
+ "engines": {
1920
+ "node": ">= 8"
1921
+ }
1922
+ },
1923
+ "node_modules/wrap-ansi": {
1924
+ "version": "8.1.0",
1925
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
1926
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
1927
+ "dev": true,
1928
+ "license": "MIT",
1929
+ "dependencies": {
1930
+ "ansi-styles": "^6.1.0",
1931
+ "string-width": "^5.0.1",
1932
+ "strip-ansi": "^7.0.1"
1933
+ },
1934
+ "engines": {
1935
+ "node": ">=12"
1936
+ },
1937
+ "funding": {
1938
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1939
+ }
1940
+ },
1941
+ "node_modules/wrap-ansi-cjs": {
1942
+ "name": "wrap-ansi",
1943
+ "version": "7.0.0",
1944
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1945
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1946
+ "dev": true,
1947
+ "license": "MIT",
1948
+ "dependencies": {
1949
+ "ansi-styles": "^4.0.0",
1950
+ "string-width": "^4.1.0",
1951
+ "strip-ansi": "^6.0.0"
1952
+ },
1953
+ "engines": {
1954
+ "node": ">=10"
1955
+ },
1956
+ "funding": {
1957
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1958
+ }
1959
+ },
1960
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
1961
+ "version": "5.0.1",
1962
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1963
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1964
+ "dev": true,
1965
+ "license": "MIT",
1966
+ "engines": {
1967
+ "node": ">=8"
1968
+ }
1969
+ },
1970
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
1971
+ "version": "4.3.0",
1972
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1973
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1974
+ "dev": true,
1975
+ "license": "MIT",
1976
+ "dependencies": {
1977
+ "color-convert": "^2.0.1"
1978
+ },
1979
+ "engines": {
1980
+ "node": ">=8"
1981
+ },
1982
+ "funding": {
1983
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1984
+ }
1985
+ },
1986
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
1987
+ "version": "8.0.0",
1988
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1989
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1990
+ "dev": true,
1991
+ "license": "MIT"
1992
+ },
1993
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
1994
+ "version": "4.2.3",
1995
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1996
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1997
+ "dev": true,
1998
+ "license": "MIT",
1999
+ "dependencies": {
2000
+ "emoji-regex": "^8.0.0",
2001
+ "is-fullwidth-code-point": "^3.0.0",
2002
+ "strip-ansi": "^6.0.1"
2003
+ },
2004
+ "engines": {
2005
+ "node": ">=8"
2006
+ }
2007
+ },
2008
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2009
+ "version": "6.0.1",
2010
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2011
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2012
+ "dev": true,
2013
+ "license": "MIT",
2014
+ "dependencies": {
2015
+ "ansi-regex": "^5.0.1"
2016
+ },
2017
+ "engines": {
2018
+ "node": ">=8"
2019
+ }
2020
+ },
2021
+ "node_modules/y18n": {
2022
+ "version": "5.0.8",
2023
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
2024
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
2025
+ "dev": true,
2026
+ "license": "ISC",
2027
+ "engines": {
2028
+ "node": ">=10"
2029
+ }
2030
+ },
2031
+ "node_modules/yallist": {
2032
+ "version": "5.0.0",
2033
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
2034
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
2035
+ "dev": true,
2036
+ "license": "BlueOak-1.0.0",
2037
+ "engines": {
2038
+ "node": ">=18"
2039
+ }
2040
+ },
2041
+ "node_modules/yaml": {
2042
+ "version": "2.8.0",
2043
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
2044
+ "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
2045
+ "dev": true,
2046
+ "license": "ISC",
2047
+ "bin": {
2048
+ "yaml": "bin.mjs"
2049
+ },
2050
+ "engines": {
2051
+ "node": ">= 14.6"
2052
+ }
2053
+ },
2054
+ "node_modules/yargs": {
2055
+ "version": "17.7.2",
2056
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
2057
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
2058
+ "dev": true,
2059
+ "license": "MIT",
2060
+ "dependencies": {
2061
+ "cliui": "^8.0.1",
2062
+ "escalade": "^3.1.1",
2063
+ "get-caller-file": "^2.0.5",
2064
+ "require-directory": "^2.1.1",
2065
+ "string-width": "^4.2.3",
2066
+ "y18n": "^5.0.5",
2067
+ "yargs-parser": "^21.1.1"
2068
+ },
2069
+ "engines": {
2070
+ "node": ">=12"
2071
+ }
2072
+ },
2073
+ "node_modules/yargs-parser": {
2074
+ "version": "21.1.1",
2075
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
2076
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
2077
+ "dev": true,
2078
+ "license": "ISC",
2079
+ "engines": {
2080
+ "node": ">=12"
2081
+ }
2082
+ },
2083
+ "node_modules/yargs/node_modules/ansi-regex": {
2084
+ "version": "5.0.1",
2085
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2086
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2087
+ "dev": true,
2088
+ "license": "MIT",
2089
+ "engines": {
2090
+ "node": ">=8"
2091
+ }
2092
+ },
2093
+ "node_modules/yargs/node_modules/emoji-regex": {
2094
+ "version": "8.0.0",
2095
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2096
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2097
+ "dev": true,
2098
+ "license": "MIT"
2099
+ },
2100
+ "node_modules/yargs/node_modules/string-width": {
2101
+ "version": "4.2.3",
2102
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2103
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2104
+ "dev": true,
2105
+ "license": "MIT",
2106
+ "dependencies": {
2107
+ "emoji-regex": "^8.0.0",
2108
+ "is-fullwidth-code-point": "^3.0.0",
2109
+ "strip-ansi": "^6.0.1"
2110
+ },
2111
+ "engines": {
2112
+ "node": ">=8"
2113
+ }
2114
+ },
2115
+ "node_modules/yargs/node_modules/strip-ansi": {
2116
+ "version": "6.0.1",
2117
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2118
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2119
+ "dev": true,
2120
+ "license": "MIT",
2121
+ "dependencies": {
2122
+ "ansi-regex": "^5.0.1"
2123
+ },
2124
+ "engines": {
2125
+ "node": ">=8"
2126
+ }
2127
+ }
2128
+ }
2129
+ }
theme/static_src/package.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "theme",
3
+ "version": "4.0.1",
4
+ "description": "",
5
+ "scripts": {
6
+ "start": "npm run dev",
7
+ "build": "npm run build:clean && npm run build:tailwind",
8
+ "build:clean": "rimraf ../static/css/dist",
9
+ "build:tailwind": "cross-env NODE_ENV=production postcss ./src/styles.css -o ../static/css/dist/styles.css --minify",
10
+ "dev": "cross-env NODE_ENV=development postcss ./src/styles.css -o ../static/css/dist/styles.css --watch"
11
+ },
12
+ "keywords": [],
13
+ "author": "",
14
+ "license": "MIT",
15
+ "devDependencies": {
16
+ "@tailwindcss/postcss": "^4.1.0",
17
+ "cross-env": "^7.0.3",
18
+ "postcss": "^8.5.3",
19
+ "postcss-cli": "^11.0.1",
20
+ "postcss-nested": "^7.0.2",
21
+ "postcss-simple-vars": "^7.0.1",
22
+ "rimraf": "^6.0.1",
23
+ "tailwindcss": "^4.1.0"
24
+ }
25
+ }
theme/static_src/postcss.config.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ "postcss-simple-vars": {},
5
+ "postcss-nested": {}
6
+ },
7
+ }
theme/static_src/src/styles.css ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "tailwindcss";
2
+
3
+ /**
4
+ * A catch-all path to Django template files, JavaScript, and Python files
5
+ * that contain Tailwind CSS classes and will be scanned by Tailwind to generate the final CSS file.
6
+ *
7
+ * If your final CSS file is not being updated after code changes, you may want to broaden or narrow
8
+ * the scope of this path.
9
+ */
10
+ @source "../../../**/*.{html,py,js}";