commit 1b0e879ba220e0ef443cca847dbbb8ecfb258c36 Author: Karim Khattabi Date: Tue Feb 10 11:38:26 2026 +0100 Primer commit de Megafonías TsSAEx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..2817d6a Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d800ff6 --- /dev/null +++ b/index.html @@ -0,0 +1,104 @@ + + + + + + Megafonías TsSAEx + + + + + +
+
+ +

Megafonías TsSAEx

+ +
+
+ +
+
+

Megafonías TsSAEx

+
+ +
+ +
+
meeting_roomPanel Interior
+ + +
+ + +
+ Anunciar Parada +
+ +
+
campaignExterior
+

Configuración de letrero y megafonía externa para paradas.

+ + open_in_newConfigurar Exterior + +
+ +
+
starsEspeciales
+
+ + warningColisión + + + scheduleHora + + + account_balance_walletSaldo + + + blockInsuf. + +
+
+ +
+
volume_upVolumen General
+ +
+ +
+
edit_noteEditor de Líneas
+
+ + +
+
+
+ addAñadir Parada + Exportar JSON +
+

+      
+
+ + +
record_voice_over Exterior
+
+
+ + + +
volume_downVolumen Exterior
+ +
+
+
+ Cerrar + Reproducir +
+
+
+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..20c8b45 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,920 @@ +{ + "name": "megafonias", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "megafonias", + "version": "0.0.0", + "dependencies": { + "@fontsource/roboto": "^5.2.9", + "@material/web": "^2.4.1" + }, + "devDependencies": { + "vite": "^8.0.0-beta.13" + } + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@fontsource/roboto": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.2.9.tgz", + "integrity": "sha512-ZTkyHiPk74B/aj8BZWbsxD5Yu+Lq+nR64eV4wirlrac2qXR7jYk2h6JlLYuOuoruTkGQWNw2fMuKNavw7/rg0w==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.5.1.tgz", + "integrity": "sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/reactive-element": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.2.tgz", + "integrity": "sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0" + } + }, + "node_modules/@material/web": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@material/web/-/web-2.4.1.tgz", + "integrity": "sha512-0sk9t25acJ72Qv3r0n9r0lgDbPaAKnpm0p+QmEAAwYyZomHxuVbgrrAdtNXaRm7jFyGh+WsTr8bhtvCnpPRFjw==", + "license": "Apache-2.0", + "workspaces": [ + "catalog" + ], + "dependencies": { + "lit": "^2.8.0 || ^3.0.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@oxc-project/runtime": { + "version": "0.112.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.112.0.tgz", + "integrity": "sha512-4vYtWXMnXM6EaweCxbJ6bISAhkNHeN33SihvuX3wrpqaSJA4ZEoW35i9mSvE74+GDf1yTeVE+aEHA+WBpjDk/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.112.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.112.0.tgz", + "integrity": "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.3.tgz", + "integrity": "sha512-0T1k9FinuBZ/t7rZ8jN6OpUKPnUjNdYHoj/cESWrQ3ZraAJ4OMm6z7QjSfCxqj8mOp9kTKc1zHK3kGz5vMu+nQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.3.tgz", + "integrity": "sha512-JWWLzvcmc/3pe7qdJqPpuPk91SoE/N+f3PcWx/6ZwuyDVyungAEJPvKm/eEldiDdwTmaEzWfIR+HORxYWrCi1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.3.tgz", + "integrity": "sha512-MTakBxfx3tde5WSmbHxuqlDsIW0EzQym+PJYGF4P6lG2NmKzi128OGynoFUqoD5ryCySEY85dug4v+LWGBElIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.3.tgz", + "integrity": "sha512-jje3oopyOLs7IwfvXoS6Lxnmie5JJO7vW29fdGFu5YGY1EDbVDhD+P9vDihqS5X6fFiqL3ZQZCMBg6jyHkSVww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.3.tgz", + "integrity": "sha512-A0n8P3hdLAaqzSFrQoA42p23ZKBYQOw+8EH5r15Sa9X1kD9/JXe0YT2gph2QTWvdr0CVK2BOXiK6ENfy6DXOag==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.3.tgz", + "integrity": "sha512-kWXkoxxarYISBJ4bLNf5vFkEbb4JvccOwxWDxuK9yee8lg5XA7OpvlTptfRuwEvYcOZf+7VS69Uenpmpyo5Bjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.3.tgz", + "integrity": "sha512-Z03/wrqau9Bicfgb3Dbs6SYTHliELk2PM2LpG2nFd+cGupTMF5kanLEcj2vuuJLLhptNyS61rtk7SOZ+lPsTUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.3.tgz", + "integrity": "sha512-iSXXZsQp08CSilff/DCTFZHSVEpEwdicV3W8idHyrByrcsRDVh9sGC3sev6d8BygSGj3vt8GvUKBPCoyMA4tgQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.3.tgz", + "integrity": "sha512-qaj+MFudtdCv9xZo9znFvkgoajLdc+vwf0Kz5N44g+LU5XMe+IsACgn3UG7uTRlCCvhMAGXm1XlpEA5bZBrOcw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.3.tgz", + "integrity": "sha512-U662UnMETyjT65gFmG9ma+XziENrs7BBnENi/27swZPYagubfHRirXHG2oMl+pEax2WvO7Kb9gHZmMakpYqBHQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.3.tgz", + "integrity": "sha512-gekrQ3Q2HiC1T5njGyuUJoGpK/l6B/TNXKed3fZXNf9YRTJn3L5MOZsFBn4bN2+UX+8+7hgdlTcEsexX988G4g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.3.tgz", + "integrity": "sha512-85y5JifyMgs8m5K2XzR/VDsapKbiFiohl7s5lEj7nmNGO0pkTXE7q6TQScei96BNAsoK7JC3pA7ukA8WRHVJpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.3.tgz", + "integrity": "sha512-a4VUQZH7LxGbUJ3qJ/TzQG8HxdHvf+jOnqf7B7oFx1TEBm+j2KNL2zr5SQ7wHkNAcaPevF6gf9tQnVBnC4mD+A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lit": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.2.tgz", + "integrity": "sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-element": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.2.tgz", + "integrity": "sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.5.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-html": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.2.tgz", + "integrity": "sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.3.tgz", + "integrity": "sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.112.0", + "@rolldown/pluginutils": "1.0.0-rc.3" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.3", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.3", + "@rolldown/binding-darwin-x64": "1.0.0-rc.3", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.3", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.3", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.3", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.3", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.3", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.3", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.3" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/vite": { + "version": "8.0.0-beta.13", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0-beta.13.tgz", + "integrity": "sha512-7s/rfpYOAo7WUHh9irzaGjhhKb12hGv0BpDegAMV5A391wdyvM45WtX6VMV7hvEtZF2j/QtpDpR6ldXI3GgARQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/runtime": "0.112.0", + "fdir": "^6.5.0", + "lightningcss": "^1.31.1", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rolldown": "1.0.0-rc.3", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.0.0-alpha.24", + "esbuild": "^0.27.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0404741 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "megafonias", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "vite": "^8.0.0-beta.13" + }, + "overrides": { + "vite": "^8.0.0-beta.13" + }, + "dependencies": { + "@fontsource/roboto": "^5.2.9", + "@material/web": "^2.4.1" + } +} diff --git a/public/audio/1-av._andalucia_(castaño_robledo).wav b/public/audio/1-av._andalucia_(castaño_robledo).wav new file mode 100644 index 0000000..7d7b156 Binary files /dev/null and b/public/audio/1-av._andalucia_(castaño_robledo).wav differ diff --git a/public/audio/1-avda._alemania_(esquina_ruiz_de_alda).wav b/public/audio/1-avda._alemania_(esquina_ruiz_de_alda).wav new file mode 100644 index 0000000..2596e38 Binary files /dev/null and b/public/audio/1-avda._alemania_(esquina_ruiz_de_alda).wav differ diff --git a/public/audio/1-avda._alemania_(plaza_de_toros).wav b/public/audio/1-avda._alemania_(plaza_de_toros).wav new file mode 100644 index 0000000..976770a Binary files /dev/null and b/public/audio/1-avda._alemania_(plaza_de_toros).wav differ diff --git a/public/audio/1-avda.alemania(plaza_de_toros).wav b/public/audio/1-avda.alemania(plaza_de_toros).wav new file mode 100644 index 0000000..c50dbeb Binary files /dev/null and b/public/audio/1-avda.alemania(plaza_de_toros).wav differ diff --git a/public/audio/1-barriada_del_carmen.wav b/public/audio/1-barriada_del_carmen.wav new file mode 100644 index 0000000..38a5cdc Binary files /dev/null and b/public/audio/1-barriada_del_carmen.wav differ diff --git a/public/audio/1-bda._josé_antonio.wav b/public/audio/1-bda._josé_antonio.wav new file mode 100644 index 0000000..59b6d73 Binary files /dev/null and b/public/audio/1-bda._josé_antonio.wav differ diff --git a/public/audio/1-bda._navidad.wav b/public/audio/1-bda._navidad.wav new file mode 100644 index 0000000..464206d Binary files /dev/null and b/public/audio/1-bda._navidad.wav differ diff --git a/public/audio/1-cardeñas.wav b/public/audio/1-cardeñas.wav new file mode 100644 index 0000000..24a40ae Binary files /dev/null and b/public/audio/1-cardeñas.wav differ diff --git a/public/audio/1-centro_comercial_holea.wav b/public/audio/1-centro_comercial_holea.wav new file mode 100644 index 0000000..be68413 Binary files /dev/null and b/public/audio/1-centro_comercial_holea.wav differ diff --git a/public/audio/1-cruce_romeralejo.wav b/public/audio/1-cruce_romeralejo.wav new file mode 100644 index 0000000..eaf454b Binary files /dev/null and b/public/audio/1-cruce_romeralejo.wav differ diff --git a/public/audio/1-don_bosco.wav b/public/audio/1-don_bosco.wav new file mode 100644 index 0000000..4f4e599 Binary files /dev/null and b/public/audio/1-don_bosco.wav differ diff --git a/public/audio/1-el_punto.wav b/public/audio/1-el_punto.wav new file mode 100644 index 0000000..d030c1b Binary files /dev/null and b/public/audio/1-el_punto.wav differ diff --git a/public/audio/1-el_árbol.wav b/public/audio/1-el_árbol.wav new file mode 100644 index 0000000..994266f Binary files /dev/null and b/public/audio/1-el_árbol.wav differ diff --git a/public/audio/1-estación_de_ferrocarril.wav b/public/audio/1-estación_de_ferrocarril.wav new file mode 100644 index 0000000..545174e Binary files /dev/null and b/public/audio/1-estación_de_ferrocarril.wav differ diff --git a/public/audio/1-estación_de_sevilla.wav b/public/audio/1-estación_de_sevilla.wav new file mode 100644 index 0000000..989b803 Binary files /dev/null and b/public/audio/1-estación_de_sevilla.wav differ diff --git a/public/audio/1-gasolinera.wav b/public/audio/1-gasolinera.wav new file mode 100644 index 0000000..8657530 Binary files /dev/null and b/public/audio/1-gasolinera.wav differ diff --git a/public/audio/1-gonzalo_de_berceo.wav b/public/audio/1-gonzalo_de_berceo.wav new file mode 100644 index 0000000..3f4df9a Binary files /dev/null and b/public/audio/1-gonzalo_de_berceo.wav differ diff --git a/public/audio/1-higueral_(fuerzas_armadas).wav b/public/audio/1-higueral_(fuerzas_armadas).wav new file mode 100644 index 0000000..416440a Binary files /dev/null and b/public/audio/1-higueral_(fuerzas_armadas).wav differ diff --git a/public/audio/1-hospital_jrj.wav b/public/audio/1-hospital_jrj.wav new file mode 100644 index 0000000..7b320fc Binary files /dev/null and b/public/audio/1-hospital_jrj.wav differ diff --git a/public/audio/1-humilladero.wav b/public/audio/1-humilladero.wav new file mode 100644 index 0000000..3c59ab1 Binary files /dev/null and b/public/audio/1-humilladero.wav differ diff --git a/public/audio/1-isla_chica.wav b/public/audio/1-isla_chica.wav new file mode 100644 index 0000000..581c130 Binary files /dev/null and b/public/audio/1-isla_chica.wav differ diff --git a/public/audio/1-julio_caro_baroja_(aqualon).wav b/public/audio/1-julio_caro_baroja_(aqualon).wav new file mode 100644 index 0000000..8a9d0ef Binary files /dev/null and b/public/audio/1-julio_caro_baroja_(aqualon).wav differ diff --git a/public/audio/1-las_delicias.wav b/public/audio/1-las_delicias.wav new file mode 100644 index 0000000..dc89edf Binary files /dev/null and b/public/audio/1-las_delicias.wav differ diff --git a/public/audio/1-magnolia.wav b/public/audio/1-magnolia.wav new file mode 100644 index 0000000..0085db4 Binary files /dev/null and b/public/audio/1-magnolia.wav differ diff --git a/public/audio/1-monumento_al_fútbol.wav b/public/audio/1-monumento_al_fútbol.wav new file mode 100644 index 0000000..0db290a Binary files /dev/null and b/public/audio/1-monumento_al_fútbol.wav differ diff --git a/public/audio/1-nuevo_mercado.wav b/public/audio/1-nuevo_mercado.wav new file mode 100644 index 0000000..aa58f20 Binary files /dev/null and b/public/audio/1-nuevo_mercado.wav differ diff --git a/public/audio/1-orden_baja.wav b/public/audio/1-orden_baja.wav new file mode 100644 index 0000000..ea4076e Binary files /dev/null and b/public/audio/1-orden_baja.wav differ diff --git a/public/audio/1-palacio_de_deportes.wav b/public/audio/1-palacio_de_deportes.wav new file mode 100644 index 0000000..36a9fb8 Binary files /dev/null and b/public/audio/1-palacio_de_deportes.wav differ diff --git a/public/audio/1-plaza_de_los_dolores.wav b/public/audio/1-plaza_de_los_dolores.wav new file mode 100644 index 0000000..aacf033 Binary files /dev/null and b/public/audio/1-plaza_de_los_dolores.wav differ diff --git a/public/audio/1-plaza_las_amapolas.wav b/public/audio/1-plaza_las_amapolas.wav new file mode 100644 index 0000000..444b3e7 Binary files /dev/null and b/public/audio/1-plaza_las_amapolas.wav differ diff --git a/public/audio/1-plaza_niño_miguel.wav b/public/audio/1-plaza_niño_miguel.wav new file mode 100644 index 0000000..9314f04 Binary files /dev/null and b/public/audio/1-plaza_niño_miguel.wav differ diff --git a/public/audio/1-relaciones_laborales_(universidad).wav b/public/audio/1-relaciones_laborales_(universidad).wav new file mode 100644 index 0000000..def4e88 Binary files /dev/null and b/public/audio/1-relaciones_laborales_(universidad).wav differ diff --git a/public/audio/1-universidad._avenida_de_las_artes.wav b/public/audio/1-universidad._avenida_de_las_artes.wav new file mode 100644 index 0000000..68e68cd Binary files /dev/null and b/public/audio/1-universidad._avenida_de_las_artes.wav differ diff --git a/public/audio/1-vista_alegre-universidad.wav b/public/audio/1-vista_alegre-universidad.wav new file mode 100644 index 0000000..d16729e Binary files /dev/null and b/public/audio/1-vista_alegre-universidad.wav differ diff --git a/public/audio/1-zafra.wav b/public/audio/1-zafra.wav new file mode 100644 index 0000000..c02b26b Binary files /dev/null and b/public/audio/1-zafra.wav differ diff --git a/public/audio/131-puente_de_vallecas.wav b/public/audio/131-puente_de_vallecas.wav new file mode 100644 index 0000000..b2cf6b7 Binary files /dev/null and b/public/audio/131-puente_de_vallecas.wav differ diff --git a/public/audio/141-puente_de_vallecas.wav b/public/audio/141-puente_de_vallecas.wav new file mode 100644 index 0000000..b2cf6b7 Binary files /dev/null and b/public/audio/141-puente_de_vallecas.wav differ diff --git a/public/audio/2-nuevo_mercado.wav b/public/audio/2-nuevo_mercado.wav new file mode 100644 index 0000000..6d5e9f4 Binary files /dev/null and b/public/audio/2-nuevo_mercado.wav differ diff --git a/public/audio/2-villa_de_madrid.wav b/public/audio/2-villa_de_madrid.wav new file mode 100644 index 0000000..102ff78 Binary files /dev/null and b/public/audio/2-villa_de_madrid.wav differ diff --git a/public/audio/2-zafra.wav b/public/audio/2-zafra.wav new file mode 100644 index 0000000..c02b26b Binary files /dev/null and b/public/audio/2-zafra.wav differ diff --git a/public/audio/T32-profesor_raúl_vázquez.wav b/public/audio/T32-profesor_raúl_vázquez.wav new file mode 100644 index 0000000..4853fb8 Binary files /dev/null and b/public/audio/T32-profesor_raúl_vázquez.wav differ diff --git a/public/audio/atencion_a_su_saldo.mp3 b/public/audio/atencion_a_su_saldo.mp3 new file mode 100644 index 0000000..517c321 Binary files /dev/null and b/public/audio/atencion_a_su_saldo.mp3 differ diff --git a/public/audio/colision.wav b/public/audio/colision.wav new file mode 100644 index 0000000..c237385 Binary files /dev/null and b/public/audio/colision.wav differ diff --git a/public/audio/hora_de_salida.mp3 b/public/audio/hora_de_salida.mp3 new file mode 100644 index 0000000..f8d16e7 Binary files /dev/null and b/public/audio/hora_de_salida.mp3 differ diff --git a/public/audio/parada_actual.wav b/public/audio/parada_actual.wav new file mode 100644 index 0000000..c41db5a Binary files /dev/null and b/public/audio/parada_actual.wav differ diff --git a/public/audio/parada_siguiente.wav b/public/audio/parada_siguiente.wav new file mode 100644 index 0000000..dc7c8fa Binary files /dev/null and b/public/audio/parada_siguiente.wav differ diff --git a/public/audio/saldo_insuficiente.mp3 b/public/audio/saldo_insuficiente.mp3 new file mode 100644 index 0000000..75c0ea4 Binary files /dev/null and b/public/audio/saldo_insuficiente.mp3 differ diff --git a/public/audio/zafra.wav b/public/audio/zafra.wav new file mode 100644 index 0000000..f324240 Binary files /dev/null and b/public/audio/zafra.wav differ diff --git a/public/data/exterior.json b/public/data/exterior.json new file mode 100644 index 0000000..6ef35f3 --- /dev/null +++ b/public/data/exterior.json @@ -0,0 +1,12 @@ +{ + "lineas": { + "L1": { + "nombre": "Línea 1", + "destinos": ["Zafra", "Hospital JRJ"] + }, + "L2": { + "nombre": "Línea 2", + "destinos": ["Zafra", "Hospital JRJ"] + } + } +} \ No newline at end of file diff --git a/public/data/lineas.json b/public/data/lineas.json new file mode 100644 index 0000000..e487d60 --- /dev/null +++ b/public/data/lineas.json @@ -0,0 +1,485 @@ +{ + "L1": { + "nombre": "Línea 1", + "paradas": [ + { + "id": "zafra", + "nombre": "Zafra", + "enlaces": [ + "todas" + ] + }, + { + "id": "caro_baroja", + "nombre": "Julio Caro Baroja (Aqualon)", + "enlaces": [] + }, + { + "id": "alemania_ruiz_alda", + "nombre": "Avda. Alemania (Ruiz de Alda)", + "enlaces": [] + }, + { + "id": "alemania_plaza_toros", + "nombre": "Avda. Alemania (Plaza de Toros)", + "enlaces": [] + }, + { + "id": "bda_navidad", + "nombre": "Bda. Navidad", + "enlaces": [] + }, + { + "id": "don_bosco", + "nombre": "Don Bosco", + "enlaces": [] + }, + { + "id": "plaza_dolores", + "nombre": "Plaza de los Dolores", + "enlaces": [] + }, + { + "id": "bda_carmen", + "nombre": "Barriada del Carmen", + "enlaces": [] + }, + { + "id": "humilladero", + "nombre": "Humilladero", + "enlaces": [] + }, + { + "id": "cardenas", + "nombre": "Cardeñas", + "enlaces": [] + }, + { + "id": "orden_baja", + "nombre": "Orden Baja", + "enlaces": [ + "L2", + "L3", + "L4", + "L8" + ] + }, + { + "id": "gonzalo_berceo", + "nombre": "Gonzalo de Berceo", + "enlaces": [ + "L8" + ] + }, + { + "id": "plaza_nino_miguel", + "nombre": "Plaza Niño Miguel", + "enlaces": [] + }, + { + "id": "magnolia", + "nombre": "Magnolia", + "enlaces": [ + "L7" + ] + }, + { + "id": "hospital_jrj", + "nombre": "Hospital Juan Ramón Jiménez", + "enlaces": [ + "" + ] + }, + { + "id": "plaza_amapolas", + "nombre": "Plaza las Amapolas", + "enlaces": [] + }, + { + "id": "andalucia_castano", + "nombre": "Av. Andalucía (Castaño Robledo)", + "enlaces": [] + }, + { + "id": "monumento_futbol", + "nombre": "Monumento al Fútbol", + "enlaces": [] + }, + { + "id": "relaciones_laborales", + "nombre": "Relaciones Laborales (Univ.)", + "enlaces": [] + }, + { + "id": "vista_alegre", + "nombre": "Vista Alegre-Universidad", + "enlaces": [] + }, + { + "id": "holea", + "nombre": "Centro Comercial Holea", + "enlaces": [] + }, + { + "id": "cruce_romeralejo", + "nombre": "Cruce Romeralejo", + "enlaces": [] + }, + { + "id": "universidad_artes", + "nombre": "Univ. Avenida de las Artes", + "enlaces": [] + }, + { + "id": "palacio_deportes", + "nombre": "Palacio de Deportes", + "enlaces": [] + }, + { + "id": "higueral", + "nombre": "Higueral (Fuerzas Armadas)", + "enlaces": [] + }, + { + "id": "bda_jose_antonio", + "nombre": "Bda. José Antonio", + "enlaces": [] + }, + { + "id": "isla_chica", + "nombre": "Isla Chica", + "enlaces": [ + "L3", + "L5", + "L6" + ] + }, + { + "id": "las_delicias", + "nombre": "Las Delicias", + "enlaces": [] + }, + { + "id": "el_arbol", + "nombre": "El Árbol", + "enlaces": [] + }, + { + "id": "gasolinera", + "nombre": "Gasolinera", + "enlaces": [] + }, + { + "id": "estacion_ffcc", + "nombre": "Estación de Ferrocarril", + "enlaces": [ + "L2", + "L8" + ] + }, + { + "id": "punto", + "nombre": "El Punto", + "enlaces": [ + "L2" + ] + }, + { + "id": "estacion_sevilla", + "nombre": "Estación de Sevilla", + "enlaces": [] + }, + { + "id": "nuevo_mercado", + "nombre": "Nuevo Mercado", + "enlaces": [ + "L2" + ] + } + ] + }, + "L2": { + "nombre": "Línea 2", + "paradas": [ + { + "id": "zafra", + "nombre": "Zafra", + "enlaces": [ + "todas" + ] + }, + { + "id": "nuevo-mercado", + "nombre": "Nuevo Mercado", + "enlaces": [ + "L6" + ] + }, + { + "id": "villa-madrid", + "nombre": "Villa de Madrid", + "enlaces": [ + "L6" + ] + }, + { + "id": "avenida-italia", + "nombre": "Avenida Italia Estación de Sevilla", + "enlaces": [ + "L6" + ] + }, + { + "id": "el-punto", + "nombre": "El Punto", + "enlaces": [ + "L6" + ] + }, + { + "id": "estacion-ferrocarril", + "nombre": "Estación de Ferrocarril", + "enlaces": [ + "L1", + "L5", + "L6", + "L7", + "L7H", + "L7HP", + "L8" + ] + }, + { + "id": "juzgados", + "nombre": "Juzgados", + "enlaces": [ + "L6" + ] + }, + { + "id": "barrio-obrero", + "nombre": "Barrio Obrero", + "enlaces": [] + }, + { + "id": "el-porvenir", + "nombre": "El Porvenir", + "enlaces": [ + "L4" + ] + }, + { + "id": "las-delicias", + "nombre": "Las Delicias", + "enlaces": [ + "L4" + ] + }, + { + "id": "isla-chica", + "nombre": "Isla Chica", + "enlaces": [ + "L4" + ] + }, + { + "id": "jose-antonio", + "nombre": "Bda. José Antonio", + "enlaces": [] + }, + { + "id": "fuerzas-armadas", + "nombre": "Fuerzas Armadas Los Rosales", + "enlaces": [] + }, + { + "id": "palacio-deportes", + "nombre": "Palacio de Deportes", + "enlaces": [ + "L6" + ] + }, + { + "id": "ciencias-educacion", + "nombre": "Ciencias de la Educación (Universidad)", + "enlaces": [] + }, + { + "id": "biblioteca-universidad", + "nombre": "Biblioteca (Universidad)", + "enlaces": [] + }, + { + "id": "monumento-futbol", + "nombre": "Monumento al Fútbol", + "enlaces": [ + "L1", + "L7", + "L7H", + "L7HP" + ] + }, + { + "id": "relaciones-laborales", + "nombre": "Relaciones Laborales (Universidad)", + "enlaces": [ + "L1", + "L6", + "L7", + "L7H", + "L7HP" + ] + }, + { + "id": "vista-alegre", + "nombre": "Vista Alegre-Universidad", + "enlaces": [ + "L1", + "L5", + "L6", + "L7", + "L7H", + "L7HP" + ] + }, + { + "id": "holea", + "nombre": "Centro Comercial Holea", + "enlaces": [ + "L1", + "L5", + "L6", + "L7", + "L7H", + "L7HP" + ] + }, + { + "id": "plaza-amapolas", + "nombre": "Plaza las Amapolas", + "enlaces": [ + "L6", + "L7", + "L7H", + "L7HP" + ] + }, + { + "id": "hospital", + "nombre": "Hospital JRJ", + "enlaces": [ + "L1", + "L5", + "L6", + "L7", + "L7H", + "L7HP", + "L8" + ] + }, + { + "id": "magnolia", + "nombre": "Magnolia", + "enlaces": [ + "L8" + ] + }, + { + "id": "orden-alta", + "nombre": "Orden Alta", + "enlaces": [ + "L4" + ] + }, + { + "id": "gonzalo-berceo-alto", + "nombre": "Gonzalo de Berceo (Alto)", + "enlaces": [ + "L8" + ] + }, + { + "id": "gonzalo-berceo-bajo", + "nombre": "Gonzalo de Berceo (Bajo)", + "enlaces": [ + "L8" + ] + }, + { + "id": "orden-baja", + "nombre": "Orden Baja", + "enlaces": [ + "L1", + "L3", + "L4", + "L8" + ] + }, + { + "id": "legion-espanola", + "nombre": "Legión Española", + "enlaces": [] + }, + { + "id": "cardenas", + "nombre": "Cardeñas", + "enlaces": [] + }, + { + "id": "humilladero", + "nombre": "Humilladero", + "enlaces": [] + }, + { + "id": "barriada-carmen", + "nombre": "Barriada del Carmen", + "enlaces": [] + }, + { + "id": "santa-lucia", + "nombre": "Santa Lucía", + "enlaces": [] + }, + { + "id": "santa-eulalia", + "nombre": "Santa Eulalia", + "enlaces": [] + }, + { + "id": "barriada-navidad", + "nombre": "Bda. Navidad", + "enlaces": [] + }, + { + "id": "molino-vega", + "nombre": "Molino de la Vega", + "enlaces": [ + "L3", + "L4", + "L6" + ] + }, + { + "id": "paseo-palmeras", + "nombre": "Paseo de las Palmeras", + "enlaces": [ + "L3", + "L4", + "L6" + ] + }, + { + "id": "aqualon", + "nombre": "Julio Caro Baroja (Aqualon)", + "enlaces": [] + }, + { + "id": "zafra", + "nombre": "Zafra", + "enlaces": [ + "todas" + ] + } + ] + } +} \ No newline at end of file diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..f7e6685 --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,682 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/counter.js b/src/counter.js new file mode 100644 index 0000000..881e2d7 --- /dev/null +++ b/src/counter.js @@ -0,0 +1,9 @@ +export function setupCounter(element) { + let counter = 0 + const setCounter = (count) => { + counter = count + element.innerHTML = `count is ${counter}` + } + element.addEventListener('click', () => setCounter(counter + 1)) + setCounter(0) +} diff --git a/src/javascript.svg b/src/javascript.svg new file mode 100644 index 0000000..f9abb2b --- /dev/null +++ b/src/javascript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..b2921d7 --- /dev/null +++ b/src/main.js @@ -0,0 +1,118 @@ +import '@material/web/all.js'; +import "@fontsource/roboto"; + +let dbInt = {}, dbExt = {}; +let audio = null; +const get = (id) => document.getElementById(id); + +async function init() { + try { + const [rI, rE] = await Promise.all([ + fetch('/data/lineas.json'), + fetch('/data/exterior.json') + ]); + dbInt = await rI.json(); + dbExt = await rE.json(); + + // 1. Rellenar Líneas (Interior y Exterior) + const lineas = Object.keys(dbInt); + const opts = lineas.map(id => `
${id}
`).join(''); + + if(get('int-linea')) get('int-linea').innerHTML = opts; + if(get('ext-linea')) get('ext-linea').innerHTML = opts; + + // 2. Generar Coches + let coches = []; + for (let i = 315; i <= 334; i++) coches.push(i); + for (let i = 400; i <= 409; i++) coches.push(i); + if(get('ext-coche')) { + get('ext-coche').innerHTML = coches.map(c => `
${c}
`).join(''); + } + + } catch (e) { + console.error("Error cargando TsSAEx:", e); + } + + // Quitar Splash + setTimeout(() => { + const splash = get('loading-screen'); + if(splash) splash.style.opacity = '0'; + setTimeout(() => { + if(splash) splash.style.display = 'none'; + const app = get('app'); + if(app) app.style.display = 'flex'; + }, 500); + }, 2000); +} + +// REPRODUCTOR +function play(lista, volumen) { + if (audio) { audio.pause(); audio.currentTime = 0; } + if (!lista || lista.length === 0) return; + const file = lista.shift(); + audio = new Audio(`${file}?t=${Date.now()}`); + audio.volume = volumen; + audio.play().catch(() => play(lista, volumen)); + audio.onended = () => play(lista, volumen); +} + +// --- EVENTO CLAVE: CAMBIO DE LÍNEA INTERIOR --- +get('int-linea')?.addEventListener('change', (e) => { + const lineaSeleccionada = e.target.value; + const paradas = dbInt[lineaSeleccionada] || []; + const selectorParadas = get('int-parada'); + + if (selectorParadas) { + // Insertar nuevas paradas + selectorParadas.innerHTML = paradas.map(p => + `
${p.nombre}
` + ).join(''); + + // IMPORTANTE: Resetear valor y habilitar + selectorParadas.value = ""; + selectorParadas.disabled = false; + } +}); + +// BOTÓN ANUNCIAR +get('btn-int')?.addEventListener('click', () => { + const lineaId = get('int-linea').value; + const paradaId = get('int-parada').value; + const tipo = document.querySelector('md-radio[name="tipo"][checked]')?.value || "actual"; + + if(!lineaId || !paradaId) return alert("Selecciona línea y parada"); + + const p = dbInt[lineaId]?.find(x => x.id === paradaId); + if (!p) return; + + let cola = [`/audio/parada_${tipo}.wav`, `/audio/${p.id}.wav` ]; + if (p.enlaces?.length > 0) { + cola.push(`/audio/correspondencia.wav`); + p.enlaces.includes("todas") ? cola.push(`/audio/todas_las_lineas.wav`) : p.enlaces.forEach(e => cola.push(`/audio/linea_${e}.wav`)); + } + play(cola, get('vol').value); +}); + +// LOGICA EXTERIOR (POPUP) +get('btn-abrir-exterior').onclick = () => get('dialog-exterior').show(); + +get('ext-linea')?.addEventListener('change', (e) => { + const d = dbExt.lineas[e.target.value]?.destinos || []; + get('ext-destino').innerHTML = d.map(x => `
${x}
`).join(''); + get('ext-destino').disabled = false; +}); + +get('btn-reproducir-ext').onclick = () => { + const c = get('ext-coche').value, l = get('ext-linea').value, d = get('ext-destino').value; + if (!c || !l || !d) return; + const destFile = d.toLowerCase().replace(/ /g, "_"); + play(['/audio/linea.wav', `/audio/${l}.wav`, '/audio/autobus.wav', `/audio/${c}.wav`, '/audio/destino.wav', `/audio/${destFile}.wav`], get('vol-ext').value); +}; + +// BOTONES ESPECIALES +get('btn-colision').onclick = () => play(['/audio/colision.wav'], get('vol').value); +get('btn-hora').onclick = () => play(['/audio/hora_salida.wav'], get('vol').value); +get('btn-saldo').onclick = () => play(['/audio/atencion_saldo.wav'], get('vol').value); +get('btn-insuficiente').onclick = () => play(['/audio/saldo_insuficiente.wav'], get('vol').value); + +init(); \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..e7bd88e --- /dev/null +++ b/src/style.css @@ -0,0 +1,144 @@ +:root { + --md-sys-color-primary: #6d5e00; + --md-sys-color-on-primary: #ffffff; + --md-sys-color-surface: #fefcf3; + --md-sys-color-surface-container: #f5f4e8; + --md-sys-color-surface-container-high: #ecebe0; + --md-sys-color-secondary-container: #e8e2d0; + --md-sys-color-error: #ba1a1a; + --md-sys-color-error-container: #ffdad6; + --md-sys-color-on-error-container: #410002; + font-family: 'Roboto', sans-serif; +} + +* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } + +body { + margin: 0; + background-color: var(--md-sys-color-surface); + color: #1c1c16; + overflow-x: hidden; +} + +md-icon { font-family: 'Material Symbols Outlined' !important; } + +/* --- MARCA Megafonías TsSAEx --- */ +.brand-name { + color: var(--md-sys-color-primary); + text-transform: none !important; + font-variant: normal !important; + letter-spacing: -0.5px; +} + +/* --- SPLASH SCREEN RESPONSIVE --- */ +#loading-screen { + position: fixed; + inset: 0; + background-color: var(--md-sys-color-surface); + display: flex; + justify-content: center; + align-items: center; + z-index: 2000; + transition: opacity 0.5s ease; +} + +.loading-content { + display: flex; + flex-direction: column; + align-items: center; + width: 90%; + max-width: 400px; +} + +.splash-logo { + width: 100%; + max-width: 250px; + height: auto; + margin-bottom: 30px; + animation: pulse 2s infinite ease-in-out; +} + +.loading-title { + font-size: 2rem; + margin-bottom: 24px; + text-align: center; +} + +@keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } + +/* --- LAYOUT GRID --- */ +#app { + display: none; /* Controlado por JS */ + flex-direction: column; + padding: 24px; + max-width: 1400px; + margin: 0 auto; + gap: 24px; +} + +.top-app-bar h1 { font-size: 2.2rem; font-weight: 400; margin: 0; } + +.dashboard-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); + gap: 20px; + align-items: start; +} + +.m3-card { + background-color: var(--md-sys-color-surface-container); + border-radius: 28px; + padding: 24px; + display: flex; + flex-direction: column; + gap: 20px; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); +} + +.m3-card.secondary { background-color: var(--md-sys-color-secondary-container); } +.m3-card.specials-card { background-color: #fceee9; } + +.vol-header { display: flex; align-items: center; gap: 10px; font-weight: 500; opacity: 0.8; } + +.radio-container { + display: flex; + flex-direction: column; + gap: 12px; + background: rgba(0,0,0,0.04); + padding: 16px; + border-radius: 20px; +} +.radio-container label { display: flex; align-items: center; gap: 12px; cursor: pointer; } + +.button-grid-specials { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } +.danger-btn { --md-filled-tonal-button-container-color: var(--md-sys-color-error-container); } + +/* --- EDITOR Y DIALOG --- */ +.editor-controls { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } +.parada-row { + display: grid; + grid-template-columns: 1fr 1fr 1fr 40px; + gap: 8px; + margin-top: 10px; + align-items: center; +} +.editor-actions { display: flex; gap: 10px; margin-top: 10px; } + +.dialog-layout { display: flex; flex-direction: column; gap: 16px; min-width: 300px; padding-top: 12px; } + +.json-preview { + background: #1e1e1e; color: #c5e1a5; padding: 15px; border-radius: 12px; + font-size: 0.8rem; overflow-x: auto; display: none; +} + +/* Responsividad extra */ +@media (min-width: 1100px) { + .editor-card { grid-column: span 2; } +} + +@media (max-width: 480px) { + .dashboard-grid { grid-template-columns: 1fr; } + .editor-controls { grid-template-columns: 1fr; } + .parada-row { grid-template-columns: 1fr 1fr; } + .top-app-bar h1 { font-size: 1.8rem; } +} \ No newline at end of file