This commit is contained in:
tuz 2025-10-17 00:23:19 -05:00
commit e3cf1eb82d
45 changed files with 3615 additions and 0 deletions

351
README.md Normal file
View File

@ -0,0 +1,351 @@
# HTML CSS JS
`html`
`HyperText Markup Language`
`css`
`Cascading Style Sheets`
`js`
## Basic reset
```css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
```
## !
```html
```
## div
```html
<header></header>
<nav></nav>
<aside></aside>
<main></main>
```
<iframe alt="" src="" frameborder="0"></iframe>
## Sources
### Link
```html
<link rel="shortcut icon" href="favicon.ico" type="image/vnd.microsoft.icon">
<link type="text/css" rel="stylesheet" href="/main.css" />
<script src="/main.js"></script>
```
### Video
```html
<video alt=>
<source src="evento.mp4" type="video/mp4">
<source src="evento.mp4" type="video/webm">
</video>
```
### Audio
```html
<audio src=""></audio>
```
```html
<a href="" target="_blank" rel="noopener noreferrer"></a>
<a href="#" target="_blank" rel="noopener noreferrer"></a>
<img src="" alt="">
<hr>
<br>
<figure>
<img src="" alt="">
<figcaption></figcaption>
</figure>
<a href="" target="_blank" rel="noopener noreferrer"></a>
<dl>
<dt>HTML</dt>
<dd>Lenguaje de marcado para crear páginas web</dd>
<dt>CSS</dt>
<dd>Lenguaje para dar estilo a las páginas web</dd>
</dl>
<h1>Título Principal</h1>
<h2>Subtítulo</h2>
<h3>Sección</h3>
<h4>Subsección</h4>
<h5>Apartado</h5>
<h6>Subapartado</h6>
Formato de Texto
<strong>Texto importante</strong>
<em>Texto enfatizado</em>
<mark>Texto resaltado</mark>
<small>Texto pequeño</small>
<del>Texto eliminado</del>
<ins>Texto insertado</ins>
<sub>subíndice</sub>
<sup>superíndice</sup>
Enlaces y Navegación
<!-- Enlace externo -->
<a href="https://www.google.com">Ir a Google</a>
<!-- Enlace interno -->
<a href="contacto.html">Contacto</a>
<!-- Enlace a sección de la misma página -->
<a href="#seccion-importante">Ir a sección</a>
<!-- Enlace de correo -->
<a href="mailto:correo@ejemplo.com">Enviar correo</a>
<!-- Enlace de teléfono -->
<a href="tel:+5071234567">Llamar</a>
<i class="material-icons">cloud</i>
<a href="Your facebook link"><i class="fab fa-facebook"></i></a>
<a href="FB Link" class="fab fa-facebook"></a>
<span class="material-icons">home</span>
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/link
<a href="https://example.com"><i class="fas fa-home"></i>Home</a>
<a href="https://example.com"><i class="fas fa-home"></i>Home</a>
https://stackoverflow.com/questions/68838248/how-do-you-add-a-link-inside-an-svg-image-file
https://www.w3schools.com/graphics/svg_hyperlinks.asp
```
(Noopener noreferrer)[https://stackoverflow.com/questions/79600136/when-adding-target-blank-to-a-html-link-is-it-still-necessary-to-add-rel-no]
<form action="/submit_form" method="post">
<label for="name">Name:</label><br>
<input type="text" id="name" name="name"><br>
<label for="email">Email:</label><br>
<input type="email" id="email" name="email"><br><br>
<input type="submit" value="Submit">
</form>
<form action="">
<fieldset>
<legend>Ubicación</legend>
<label for="facultades">Facultades</label>
<input list="facultades" name="facultad">
<datalist id="facultades">
<option value="Ingeniería de Sistemas">
<option value="Ingeniería Civil">
<option value="Ingeniería Industrial">
</datalist>
<button type="submit">Buscar</button>
</fieldset>
</form>
<input type="text" id="username" name="username" required>
<input type="text" id="username" name="username" required>
<a href="#" target="_blank" rel="noopener noreferrer"></a>
# Web
## Lang
- html
- css
- js
Link:
http://fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion
http://fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion/public/
---------------------------------------------
nginx
https://nginx.org/en/
command:
taskkill /IM nginx.exe /F
Tor Browser
https://www.torproject.org/
https://www.torproject.org/download/
command:
taskkill /IM tor.exe /F
---------------------------------------------
Config:
Tor
1:
C:\root\src\zarga\TorBrowser\Browser\TorBrowser\Data\Tor\torrc
torrc.txt =
HiddenServiceDir C:\root\src\zarga\TorBrowser\hidden_service
HiddenServicePort 80 127.0.0.1:8080
---------------------------------------------
nginx
2:
nginx/conf =
Check url:
hidden_Service = Hotname = fngggljygpsc653xd22hyyvubyxeubymaomjqjwnd5tjo64mwo73fsad.onion
Start:
win + r, sysdm.cpl
path =
C:\root\src\zarga\nginx
Descartado [
NGINX_CONF_PATH=C:\root\src\zarga\nginx\conf\nginx.conf
Set Variable Name: NGINX_CONF_PATH
Set Variable Value: C:\root\src\zarga\nginx\conf\nginx.conf
C:/root/src/zarga/nginx/conf/nginx.conf
C:\root\src\zarga\TorBrowser\Browser
]
firefox.exe
cd C:\root\src\zarga\nginx
nginx.exe
////////////////////////////////////////////////////////////
path:
C:\root\src\zarga\php-8.4.3-nts-Win32-vs17-x64
Build web server:
php:
https://windows.php.net/download
VS17 x64 Non Thread Safe (2025-Jan-15 11:07:36)
php/php.ini-production
cd C:\root\src\zarga\php-8.4.3-nts-Win32-vs17-x64
php-cgi.exe -b 127.0.0.1:9000
nginx -s reload
Execute compile:
php-cgi.exe -b 127.0.0.1:9000
cd C:\root\src\zarga\nginx>
nginx.exe
firefox.exe
Stop run:
taskkill /IM nginx.exe /F
taskkill /F /IM tor.exe
---------------------------------------------
https://www.apachefriends.org/es/index.html
https://www.apachefriends.org/es/download_success.html
https://www.apachefriends.org/es/download.html
C:\xampp\htdocs\
taskkill /IM xampp-control.exe /F
DocumentRoot "C:/xampp/htdocs" to
C:/root/src/php/htdocss
DocumentRoot "C:/root/src/php/htdocs"
<Directory "C:/root/src/php/htdocs">
Listen 80
ServerName localhost:80
Listen 8080
ServerName localhost:8080
http://localhost:80/

6
lang/css.border.md Normal file
View File

@ -0,0 +1,6 @@
# border
```css
border-radius
```

46
lang/css.flex.md Normal file
View File

@ -0,0 +1,46 @@
# Flex
```css
.div-flex {
display: flex;
}
```
## flex tag
`Flex equivalent`
```css
flex: 1;
flex: 1 1 0%;
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
```
## Order
```css
justify-content: center;
align-items: center;
```
### Example
```css
Center horizontal
<--------x-------->
justify-content: center;
Center vertical
^
|
|
x
|
|
v
align-items: center;
```

0
lang/css.grid.md Normal file
View File

34
lang/css.template.md Normal file
View File

@ -0,0 +1,34 @@
# Template
```css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
```
```css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* Movil */
/* Tablet */
@media (min-width: 600px) {
}
/* Desktop 1 */
@media (min-width: 900px) {
}
/* Desktop 2 */
@media (min-width: 1200px) {
}
```

22
lang/css.zoom.md Normal file
View File

@ -0,0 +1,22 @@
# Zoom
```css
/* <percentage> values */
zoom: 50%;
zoom: 200%;
/* <number> values */
zoom: 1.1;
zoom: 0.7;
/* Non-standard keyword values */
zoom: normal;
zoom: reset;
/* Global values */
zoom: inherit;
zoom: initial;
zoom: revert;
zoom: revert-layer;
zoom: unset;
```

1
lang/html.deprecate.md Normal file
View File

@ -0,0 +1 @@
br

4
lang/html.div.md Normal file
View File

@ -0,0 +1,4 @@
<header></header>
<nav></nav>
<aside></aside>
<main></main>

58
lang/html.form.md Normal file
View File

@ -0,0 +1,58 @@
## Upload files
`multiple files`
```html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<button type="submit">Upload</button>
</form>
```
<form method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">Upload & Get Hash</button>
</form>
```html
<form>
</form>
<input type="date" required>
<input type="date">
<input type="time">
<input type="email">
<input type="tel">
<input type="color">
<input type="range">
<input type="number">
<input type="submit" value="Submit">
<input type="email">
<input type="tel">
<input type="range">
<input type="submit" value="Submit">
<form>
<input type="date" required>
<input type="date">
<input type="time">
<input type="email">
<input type="tel">
<input type="color">
<input type="range">
<input type="number">
<input list="facultades" name="facultad">
<datalist id="facultades">
<option value="Ingeniería de Sistemas">
<option value="Ingeniería Civil">
<option value="Ingeniería Industrial">
</datalist>
</form>
```

25
lang/html.import.md Normal file
View File

@ -0,0 +1,25 @@
# CSS import
```html
<link rel="stylesheet" href="styles.css">
```
## Example
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<main>
<div class="main"></div>
</main>
</body>
</html>
```

11
lang/html.template.md Normal file
View File

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body>
</body>
</html>

321
server/caddy/README.md Normal file
View File

@ -0,0 +1,321 @@
# Caddy
## Remove
### Apache
```sh
sudo lsof -i :80
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo apt remove --purge apache2 apache2-utils apache2-bin apache2.2-common -y
sudo apt autoremove -y
sudo rm -rf /etc/apache2
```
## Install
```sh
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
sudo chown -R caddy:caddy /var/lib/caddy
sudo chmod -R 700 /var/lib/caddy
sudo chown root:caddy /etc/caddy/Caddyfile
sudo chmod 640 /etc/caddy/Caddyfile
ufw allow 80
ufw allow 443
```
## Commands
```sh
sudo systemctl start caddy
sudo systemctl enable caddy
sudo systemctl stop caddy
sudo systemctl daemon-reload
sudo systemctl status caddy
sudo systemctl reload caddy
sudo systemctl restart caddy
sudo systemctl status caddy
journalctl -u caddy -f
sudo caddy validate --config /etc/caddy/Caddyfile
sudo caddy fmt --overwrite /etc/caddy/Caddyfile
sudo nano /etc/caddy/Caddyfile
sudo systemctl stop caddy
sudo caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
Server
sudo nano /etc/caddy/Caddyfile
http://your.server.ip:8080 {
root * /var/www/my-site
file_server
}
sudo chown -R caddy:caddy /var/www/xmpp.chat.local
sudo chmod -R 755 /var/www/xmpp.chat.local
sudo chown -R caddy:caddy /var/www/www.ts
sudo chmod -R 755 /var/www/www.ts
```
echo Markdown::code("
tls internal
tls /etc/caddy/certs/xmpp.chat.local.crt /etc/caddy/certs/xmpp.chat.local.key
cd /var/lib/caddy
ls ~/.local/share/caddy/pki/authorities/local
sudo chown -R caddy:caddy /var/lib/caddy
sudo chmod 700 /var/lib/caddy
/var/lib/caddy
~/.local/share/caddy
sudo chown caddy:caddy /etc/ssl/certs/yourcert.pem /etc/ssl/private/yourkey.pem
sudo chmod 600 /etc/ssl/private/yourkey.pem
sudo chmod 644 /etc/ssl/certs/yourcert.pem
sudo chown -R navide:navide /home/navide/share/
cp ~/.local/share/caddy/pki/authorities/local/root.crt /home/navide/share/root.crt
");
sudo caddy adapt --config /etc/caddy/Caddyfile --pretty
sudo cat ~/.ssh/id_ed25519.pub
```shell
nano /etc/caddy/Caddyfile
php_fastcgi unix//run/php/php8.2-fpm.sock
composer dump-autoload
composer --version
-->
cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/
rm -r /var/www/www.ruchimi.panama_paradise/
caddy fmt --overwrite /home/nabide/code
cp /home/nabide/code/Caddyfile /etc/caddy/
sudo systemctl restart caddy
cd /var/www/
sudo nano /etc/hosts
cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/
rm -r /var/www/www.ruchimi.panama_paradise/
sudo systemctl restart caddy
caddy fmt --overwrite /home/nabide/code
cd /var/www/
sudo nano /etc/hosts
cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/
rm -r /var/www/www.ruchimi.panama_paradise/
sudo systemctl restart caddy
caddy fmt --overwrite /home/nabide/code
sudo chown -R nabide:nabide /home/nabide/code
cp /home/nabide/code/Caddyfile /etc/caddy/
cp /etc/caddy/Caddyfile /home/nabide/code
cp /home/nabide/code/Caddyfile /etc/caddy/
sudo systemctl restart caddy
cd /var/www/
sudo nano /etc/hosts
cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/
rm -r /var/www/www.ruchimi.panama_paradise/
sudo systemctl restart caddy
caddy fmt --overwrite /home/nabide/code
sudo chown -R nabide:nabide /home/nabide/code
cp /home/nabide/code/Caddyfile /etc/caddy/
cp /etc/caddy/Caddyfile /home/nabide/code
cp /home/nabide/code/Caddyfile /etc/caddy/
sudo systemctl restart caddy
cd /var/www/
sudo nano /etc/hosts
cp -r /home/nabide/code/www.ruchimi.panama_paradise /var/www/www.ruchimi.panama_paradise/
rm -r /var/www/www.ruchimi.panama_paradise/
cp /etc/hosts /home/nabide/code/hosts
cp /home/nabide/code/hosts /etc/hosts
sudo systemctl restart caddy
## Caddy
```shell
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
```
```shell
mkdir -p /var/www/my-site
echo "Hello from Caddy!" > /var/www/my-site/index.html
```
# Import the GPG key
sudo apt install -y debian-keyring debian-archive-keyring curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-archive-keyring.gpg
# Add the Caddy repo
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sed 's/^deb /deb [signed-by=\/usr\/share\/keyrings\/caddy-archive-keyring.gpg] /' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | \
sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
```
xmpp.chat.local {
# encode gzip zstd
tls internal
root * /var/www/www.ts/src/public/xmpp
file_server
reverse_proxy 127.0.0.1:5280
# WebSocket for Converse.js
reverse_proxy /ws 127.0.0.1:5280 {
transport http {
versions 1.1
}
header_up -Origin
}
reverse_proxy /bosh 127.0.0.1:5280
reverse_proxy /upload 127.0.0.1:5280
}
sudo systemctl restart caddy
sudo systemctl reload caddy
sudo nvim /etc/hosts
sudo nvim /etc/caddy/Caddyfile

0
server/nginex/README.md Normal file
View File

View File

@ -0,0 +1,2 @@
# Panama paradise

View File

@ -0,0 +1,56 @@
<?php
$site = "Panamá Paradise"
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo $page . " - " . $site?></title>
<link rel="shortcut icon" href="/assets/img/Imagen2.webp">
<link rel="preload" as="image" href="/assets/img/waterfall.webp">
<link rel="stylesheet" href="assets/css/base.css">
<link rel="stylesheet" href="assets/css/header.css">
</head>
<body>
<div class="bg-wrap">
<img src="/assets/img/waterfall.webp" alt="" class="bg-img">
<div class="bg-cristal"> </div>
</div>
<input type="checkbox" id="menu-toggle" hidden>
<header>
<div class="logo"><a href="/"><img src="assets/img/panama-logo.png" alt="logo"></a></div>
<nav>
<ul>
<li><a href="#">Sobre nosotros</a></li>
<li><a href="planifica">Planifica</a></li>
<li><a href="promociones">Promociones</a></li>
<li><a href="#">Contactanos</a></li>
<li><a href="#">Configuraciòn</a></li>
</ul>
</nav>
<label for="menu-toggle" class="menu-acordeon"></label>
</header>
<aside>
<ul>
<li><a href="#">Sobre nosotros</a></li>
<li><a href="planifica">Planifica</a></li>
<li><a href="promociones">Promociones</a></li>
<li><a href="#">Contactanos</a></li>
<li><a href="#">Configuraciòn</a></li>
</ul>
</aside>

View File

@ -0,0 +1,105 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body {
height: 100%;
width: 100%;
font-family: "Times New Roman", Times, serif;
font-size: 12px;
position: relative;
overflow-x: hidden;
color: whitesmoke;
overflow-x: hidden;
}
.background-wrap {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: -1;
pointer-events: none;
}
.background {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
filter: blur(2px);
background-image: url('../img/waterfall.webp');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: #222;
transform: scale(1.1);
will-change: transform;
opacity: 0;
animation: fadeIn 1.2s ease-in-out forwards;
}
@keyframes fadeIn {
to { opacity: 1; }
}
.background::after {
background-color: rgba(0, 0, 0, 0.4);
top: 0;
left: 0;
width: 100%;
height: 100%;
content: "";
position: fixed;
z-index: -1;
}
.bg-cristal {
position: absolute;
inset: 0;
background-color: rgba(0, 0, 0, 0.4);
backdrop-filter: blur(3px);
-webkit-backdrop-filter: blur(3px);
z-index: 1;
}
.bg-wrap {
position: fixed;
inset: 0;
z-index: -1;
overflow: hidden;
}
.bg-img {
position: absolute;
top: -5%;
left: -5%;
width: 110%;
height: 110%;
object-fit: cover;
filter: blur(8px);
transform: scale(1.05);
opacity: 0;
animation: fadeIn 1.2s ease-in-out forwards;
}

View File

@ -0,0 +1,148 @@
header {
display: flex;
justify-content: space-between;
align-items: center;
color: whitesmoke;
position: relative;
background-color: #051F40;
font-weight: bolder;
padding: 0.8rem;
padding-top: 0rem;
padding-bottom: 0rem;
z-index: 1002;
}
header .logo img {
height: 50px;
}
header nav {
display: none;
}
header nav ul {
display: flex;
list-style: none;
gap: 20px;
margin-left: auto;
}
header nav ul a {
color: whitesmoke;
white-space: nowrap;
text-decoration: none;
font-weight: bold;
font-size: 1.2em;
padding: 18px 10px;
}
header .menu-acordeon {
font-size: 3rem;
cursor: pointer;
user-select: none;
}
aside {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: #051F40;
color: whitesmoke;
display: flex;
justify-content: center;
align-items: center;
transform: translateX(-100%);
transition: transform 0.3s ease;
z-index: 1001;
}
aside ul {
display: flex;
flex-direction: column;
list-style: none;
text-align: center;
gap: 0.5rem;
width: 100%;
}
aside ul li {
width: 100%;
}
aside ul li a {
padding: 0.4rem 1rem;
text-decoration: none;
display: inline-block;
width: 100%;
font-size: 1.7rem;
color: inherit;
}
aside ul li a:hover {
background-color: #036;
}
.cristal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
z-index: 1001;
}
#menu-toggle:checked ~ aside {
transform: translateX(0);
}
#menu-toggle:checked ~ .overlay {
opacity: 1;
pointer-events: auto;
}
@media (min-width: 768px) {
header nav {
display: block;
}
header nav ul a:hover {
background-color: #069;
}
header .menu-acordeon {
display: none;
}
header nav ul a {
font-size: 1.1em;
}
}
@media (min-width: 1024px) {
header nav ul a {
font-size: 1.5em;
}
}

View File

@ -0,0 +1,305 @@
main {
display: flex;
padding: 10px;
height: 85%;
gap: 25px;
}
main .suscripcion {
padding: 5px;
padding-bottom: 0;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
gap: 15px;
color: whitesmoke;
background: rgba(78, 78, 78, 0.514);
border-radius: 3px;
}
main .suscripcion h2 {
font-size: 2.2em;
}
main .suscripcion p {
font-size: 1.4em;
}
main .suscripcion-form {
display: flex;
flex-direction: column;
}
main .suscripcion-form input[type="email"] {
padding: 14px 18px;
font-size: 1.2em;
border-radius: 4px;
outline: none;
transition: border-color 0.3s, box-shadow 0.3s;
}
main .suscripcion-form input[type="email"]:focus {
border-color: #006BFF;
box-shadow: 0 0 4px rgba(0, 123, 255, 0.5);
}
main .suscripcion-form button {
border: none;
outline: none;
box-shadow: none;
padding: 12px 16px;
font-size: 1.4em;
font-weight: bolder;
background-color: #036;
color: whitesmoke;
border-radius: 2px;
cursor: pointer;
}
main .suscripcion-form button:hover {
background-color: #0056b3;
transform: scale(1.01);
}
main .buscador {
padding: 10px;
text-align: center;
display: flex;
flex: 1;
flex-direction: column;
justify-content: center;
gap: 40%;
color: whitesmoke;
/* background: rgba(78, 78, 78, 0.514); */
border-radius: 3px;
}
main .buscador .buscador-buscar .buscador-titulo {
margin-bottom: 0.5rem;
white-space: nowrap;
font-weight: bolder;
font-size: 3.0em;
}
main .buscador .buscador-buscar input[type="text"] {
width: 70%;
font-style: italic;
padding: 14px 18px;
font-size: 1.2em;
border-radius: 4px;
outline: none;
transition: border-color 0.3s, box-shadow 0.3s;
border: none;
outline: none;
box-shadow: none;
cursor: pointer;
}
main .buscador .buscador-buscar button {
border: none;
outline: none;
box-shadow: none;
background-color: #036;
color: whitesmoke;
border-radius: 2px;
cursor: pointer;
font-size: 1.4em;
font-weight: bolder;
padding: 12px 16px;
}
main .buscador .buscador-buscar button:hover {
background-color: #069;
transform: scale(1.01);
}
footer {
justify-content: center;
display: flex;
bottom: 2rem;
z-index: 1000;
}
footer .contacta-un-asesor {
white-space: nowrap;
background-color: #036;
padding: 1rem 2rem;
font-size: 1.5em;
border: none;
outline: none;
box-shadow: none;
cursor: pointer;
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
color: whitesmoke;
}
footer .contacta-un-asesor:hover {
background-color: #096;
}
footer .contacta-un-asesor:hover .lucide-phone-icon {
transform: translateY(4px);
opacity: 1;
}
.lucide-phone-icon {
opacity: 0.6;
width: 16px;
height: 16px;
color: whitesmoke;
transition: opacity 0.3s ease;
transform: translateY(2px);
}
@media (orientation: landscape) {
main {
display: flex;
flex-direction: row;
}
footer {
position: fixed;
bottom: 1rem;
right: 1rem;
z-index: 1000;
}
}
@media (orientation: portrait) {
main {
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
footer {
position: fixed;
bottom: 1rem;
right: 1rem;
z-index: 1000;
}
}
@media (min-width: 768px) and (max-width: 1023px) and (orientation: portrait) {
main {
display: flex;
flex-direction: column;
}
main .suscripcion {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
}
}
@media (min-width: 768px) {
main .suscripcion-form {
gap: 22px;
}
}
@media (min-width: 820px) {
main {
display: flex;
}
main .suscripcion {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
gap: 22px;
}
main .buscador {
flex-basis: auto;
}
}

View File

@ -0,0 +1,216 @@
main {
display: flex;
flex-direction: column;
align-items: center;
background: rgba(78, 78, 78, 0.514);
padding-top: 20px;
padding: 30px;
gap: 30px;
}
textarea {
width: 100%;
max-width: 100%;
min-height: 150px;
overflow-x: hidden;
resize: vertical;
border: 2px solid;
transition: border-color 0.3s ease;
outline: none;
box-shadow: none;
background-color: whitesmoke;
padding: 10px 14px;
font-size: 1.5em;
border-radius: 2px;
}
textarea::placeholder {
font-style: italic;
}
textarea:hover {
border-color: #069;
}
textarea:focus {
border-color: #069;
}
h1 {
font-weight: bold;
font-size: 1.3em;
white-space: nowrap;
}
h2 {
font-weight: bold;
font-size: 1.6em;
padding-bottom: 10px;
text-align: center;
}
form {
display: flex;
flex-direction: column;
gap: 20px;
}
.lista-de-deseos {
display: flex;
flex-direction: column;
gap: 10px;
}
ul {
list-style: none;
}
.selector-multiple {
max-width: 100%;
position: relative;
padding-top: 20px;
border-radius: 6px;
background-color: rgba(78, 78, 78, 0.514);
}
.selector-multiple-label {
display: block;
font-weight: bold;
padding-bottom: 10px;
width: 100%;
font-size: 1.6em;
text-align: center;
}
.multi-select-option {
list-style: none;
display: flex;
flex-direction: column;
align-items: center;
font-size: 20px;
cursor: pointer;
white-space: nowrap;
gap: 12px;
}
.multi-select-option li {
width: 100%;
}
.multi-select-option li label {
display: flex;
justify-content: space-between;
padding: 12px 15px;
cursor: pointer;
font-size: 1em;
gap: 20px;
width: 100%;
align-items: center;
text-align: center;
}
.multi-select-option li label:hover {
background-color: #069;
}
.multi-select-option input[type="checkbox"] {
width: 18px;
height: 18px;
accent-color: #007bff;
}
.multi-select-option .checkbox {
flex-shrink: 0;
}
.multi-select-option .txt {
flex: 1;
text-align: center;
transform: translateX(-5%);
}
main .mostrar-sugerencias button {
width: 100%;
border: none;
outline: none;
box-shadow: none;
padding: 12px 16px;
font-size: 1.4em;
font-weight: bolder;
background-color: #036;
color: whitesmoke;
border-radius: 2px;
cursor: pointer;
}
main .mostrar-sugerencias button:hover {
background-color: #069;
transform: scale(1.01);
}
.multi-select-option li label {
justify-content: center;
width: 100%;
}
@media (min-width: 768px) {
h1 {
font-size: 2em;
}
h2 {
display: block;
}
.lista-de-deseos {
flex-direction: row;
}
.multi-select-option li label {
justify-content: center;
}
}
@media (min-width: 768px) and (orientation: portrait) {
.lista-de-deseos {
display: flex;
flex-direction: column;
}
.multi-select-option li label {
justify-content: center;
width: 100%;
}
}

View File

@ -0,0 +1,381 @@
main {
display: flex;
/* height: 90vh; */
flex-direction: column;
gap: 5px;
}
main .section-promo {
flex: 1;
padding: 10px;
background: rgba(78, 78, 78, 0.514);
background: rgba(70, 70, 85, 0.6);
}
main .section-promo .promo {
display: flex;
justify-content: space-between;
border-radius: 10px;
padding: 15px;
margin-bottom: 10px;
background-color: rgba(100, 138, 160, 0.95);
background-color: #051c3a52;
}
a {
color: whitesmoke;
text-decoration: none;
}
h2 {
color: whitesmoke;
font-size: 2em;
display: inline;
text-align: center;
}
.filtro {
flex: 0;
display: flex;
color: whitesmoke;
background: rgba(70, 70, 85, 0.6);
background-color: #051c3a52;
}
.form-filtro {
display: flex;
flex-direction: column;
gap: 10px;
}
.buscar-btn {
width: 100%;
border: none;
outline: none;
box-shadow: none;
padding: 12px 16px;
font-size: 1.4em;
font-weight: bolder;
background-color: #036;
color: whitesmoke;
border-radius: 2px;
cursor: pointer;
}
.buscar-btn button:hover {
background-color: #069;
transform: scale(1.01);
}
input::placeholder {
font-style: italic;
color: #888;
}
strong {
font-size: 1.7em;
}
.fecha-title {
font-size: 1.8em;
}
.div-fecha {
padding-top: 4px;
padding-bottom: 4px;
}
.labell {
margin-bottom: 10px;
}
main .section-promo .promo .promo-contenido {
flex: 1;
display: flex;
justify-content: space-between;
flex-direction: column;
gap: 10px;
}
.puntuacion {
color: gold;
font-size: 2em;
}
.promo-img {
width: 200px;
height: 200px;
object-fit: cover;
border-radius: 1px;
transform: translateY(10px);
}
.promo-contenido-txt {
font-size: 1.5em;
}
.promo-content-a {
display: flex
}
/* --------------------------------------------------- */
a {
color: whitesmoke;
text-decoration: none;
}
h3 {
color: whitesmoke;
font-size: 2.2em;
display: inline;
}
.puntuacion {
color: gold;
font-size: 2.2em;
}
.promo-img {
width: 150px;
height: 150px;
object-fit: cover;
padding: 10px;
border-radius: 1px;
}
.promo-contenido-txt {
font-size: 1.5em;
}
.promo-content-a {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
font-size: 0.5em;
}
.promo-contenido-mostrar {
font-size: 1.3em;
font-style: italic;
text-align: end;
}
p {
text-align: justify;
font-size: 0.1em;
max-height: 85px;
overflow: hidden;
}
.promo-contenido-titulo {
font-size: 0.6em;
}
.filtro {
/* display: none; */
color: whitesmoke;
display: flex;
flex-direction: column;
}
input[type="text"],
input[type="number"],
input[type="date"] {
width: 100%;
padding: 10px 14px;
font-size: 1em;
border: 1px solid #ccc;
border-radius: 8px;
background: whitesmoke;
transition: border-color 0.3s, box-shadow 0.3s;
}
input[type="date"] {
padding: 10px 14px;
border: 1px solid #ccc;
border-radius: 4px;
background-color: whitesmoke;
font-size: 12px;
box-shadow: 0.2px 4px rgba(78, 78, 78, 0.5);
transition: border-color 0.3s, box-shadow 0.3s;
width: 100%;
max-width: 100px;
}
input[type="date"]focus {
border-color: #069;
outline: none;
background-color: rgba(78, 78, 78, 0.8);
}
ul {
list-style: none;
}
.selector-multiple {
max-width: 100%;
position: relative;
padding-top: 20px;
border-radius: 6px;
background-color: rgba(78, 78, 78, 0.514);
}
.selector-multiple-label {
display: block;
font-weight: bold;
padding-bottom: 10px;
width: 100%;
font-size: 1.3em;
text-align: center;
}
.multi-select-option {
list-style: none;
display: flex;
flex-direction: column;
align-items: center;
font-size: 20px;
cursor: pointer;
white-space: nowrap;
gap: 12px;
}
.multi-select-option li {
width: 100%;
}
.multi-select-option li label {
display: flex;
justify-content: space-between;
padding: 12px 15px;
cursor: pointer;
font-size: 1em;
gap: 20px;
width: 100%;
align-items: center;
text-align: center;
}
.multi-select-option li label:hover {
background-color: #069;
}
.filtro-titulo {
padding-top: 10px;
}
.multi-select-option input[type="checkbox"] {
width: 18px;
height: 18px;
accent-color: #007bff;
}
.multi-select-option .checkbox {
flex-shrink: 0;
}
.multi-select-option .txt {
flex: 1;
text-align: center;
transform: translateX(-5%);
}
@media (min-width: 768px) {
main {
/* overflow: hidden; */
flex-direction: row;
padding: 10px;
}
.promo-contenido-txt {
font-size: 3em;
}
.promo-contenido-mostrar {
font-size: 1.7em;
}
h3 {
color: whitesmoke;
font-size: 2.7em;
display: inline;
}
.filtro {
/* overflow-y: auto; */
padding: 10px;
}
.puntuacion {
color: gold;
font-size: 2.6em;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1 @@
404

View File

@ -0,0 +1,51 @@
<?php
$page = "Inicio";
include_once "../private/template/header.php";
?>
<link rel="stylesheet" href="assets/css/page-home.css">
<label for="menu-toggle" class="cristal"></label>
<main>
<section class="suscripcion">
<div>
<h2>"Panamá es tu casa"</h2>
</div>
<div>
<p>Suscríbete y recibe las últimas notificaciones directamente en tu correo: eventos especiales, temporadas de viaje, promociones exclusivas y mucho más. ¡Viaja con comodidad y descubre todo lo que Panamá tiene para ti!.</p>
</div>
<form class="suscripcion-form" action="" method="post" enctype="multipart/form-data" name="suscribirse">
<input type="email" name="" id="" placeholder="Ejemplo@suscribete.com" required>
<button type="submit">suscribirse</button>
</form>
</section>
<section class="buscador">
<div class="buscador-buscar">
<div class="buscador-titulo">Todos los destinos</div>
<form action="" method="post" name="todos_los_destinos">
<input type="text" name="" id="">
<button type="submit">Buscar</button>
</form>
</div>
</section>
</main>
<footer>
<button class="contacta-un-asesor">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-phone-icon lucide-phone"><path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"/></svg>
<span>Contacta un asesor</span>
</button>
</footer>
</body>
</html>

View File

@ -0,0 +1,78 @@
<?php
$page = "Planifica";
include_once "../private/template/header.php";
?>
<link rel="stylesheet" href="assets/css/page-planifica.css">
<main>
<h1>Planea las vacaciones de tus sueños</h1>
<form>
<div>
<h2>¿Que estas buscando?</h2>
</div>
<div>
<textarea name="" id="" placeholder="Describe lo que buscas en tus próximas vacaciones..."></textarea>
</div>
<div>
<h2>Lista de deseos</h2>
</div>
<div class="lista-de-deseos">
<div class="selector-multiple">
<label for="multi-select-option" class="selector-multiple-label">Lista de destinos</label>
<ul class="multi-select-option">
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 1</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 2</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 3</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 4</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 5</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="destino[]" value="1"></span><span class="txt">Destino 6</span></label></li>
</ul>
</div>
<div class="selector-multiple">
<label for="Temporada" class="selector-multiple-label">Temporada</label>
<ul class="multi-select-option" >
<li>
<label class="multi-select-option-date">
<input type="date" name="emporada[]" value="1">
</label>
</li>
</ul>
</div>
<div class="selector-multiple">
<label for="quiero" class="selector-multiple-label">Quiero</label>
<ul class="multi-select-option">
<li><label><span class="checkbox"><input type="checkbox" name="quiero[]" value="1"></span><span class="txt">Tortugas</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="quiero[]" value="2"></span><span class="txt">Cascada</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="quiero[]" value="3"></span><span class="txt">Naturaleza</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="quiero[]" value="4"></span><span class="txt">Comida Típica</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="quiero[]" value="5"></span><span class="txt">Viaje en lancha</span></label></li>
</ul>
</div>
<div class="selector-multiple">
<label for="servicios-extras" class="selector-multiple-label">Servicios extras</label>
<ul class="multi-select-option">
<li><label><span class="checkbox"><input type="checkbox" name="servicios-extras[]" value="1"></span><span class="txt">Guarderia</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="servicios-extras[]" value="2"></span><span class="txt">Atención a capacidades diferentes</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="servicios-extras[]" value="3"></span><span class="txt">Dieta especial</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="servicios-extras[]" value="4"></span><span class="txt">Cuidado de mascotas</span></label></li>
</ul>
</div>
<div class="mostrar-sugerencias">
<button type="submit">Mostrar sugerencias</button>
</div>
</form>
</main>
</body>
</html>

View File

@ -0,0 +1,106 @@
<?php
$page = "Promociones";
include_once "../private/template/header.php";
?>
<link rel="stylesheet" href="assets/css/page-promociones.css">
<main>
<section class="filtro">
<h2 class="filtro-titulo">Filtros de busqueda</h2>
<form class="form-filtro" action="">
<div>
<label class="labell" for="">
<strong>Destino</strong>
<input type="text" name="" id="" placeholder="Ejemplo: Playa">
</label>
</div>
<div>
<label class="labell" for="">
<strong>Precio minimo</strong>
<input type="number" name="" id="" placeholder="100$ - 1000$">
</label>
</div>
<div>
<label class="labell" for="">
<strong>Precio maximo</strong>
<input type="number" name="" id="" placeholder="2000$ - 5000$">
</label>
</div>
<div class="div-fecha">
<label class="labell" for="">
<strong class="fecha-title">Fecha por reservar</strong>
<input type="date" name="" id="">
</label>
</div>
<div>
<label class="labell" for="">
<strong>Numero de acompañantes</strong>
<input type="number" name="" id="" placeholder="1 - 5">
</label>
</div>
<div>
<label for="Temporada" class="selector-multiple-label"><strong>Etiquetas</strong></label>
<div class="selector-multiple">
<ul class="multi-select-option">
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="1"></span><span class="txt">Tortuga</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="2"></span><span class="txt">Zoo</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="3"></span><span class="txt">Cascada</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="4"></span><span class="txt">Viaje en lancha</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="5"></span><span class="txt">Comida</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="6"></span><span class="txt">Historia</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="7"></span><span class="txt">Acampar</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="8"></span><span class="txt">En oferta</span></label></li>
<li><label><span class="checkbox"><input type="checkbox" name="emporada[]" value="9"></span><span class="txt">Lechuga</span></label></li>
</ul>
</div>
</div>
<button class="buscar-btn" type="submit">Buscar</button>
</form>
</section>
<section class="section-promo">
<?php
for($i = 1; $i <= 9; $i++) {
echo "
<div class='promo'>
<div class='promo-contenido'>
<div class='promo-contenido-titulo'>
<a href='#'>
<h3>Promo $i</h3>
<span class='puntuacion'>⭐️ 5</span>
</a>
</div>
<div class='promo-content-a'>
<a href='#'><p class='promo-contenido-txt'>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corporis, dolores tempora, distinctio sed maiores nemo odio dignissimos voluptate dolorum asperiores velit neque illum suscipit nam, sit ratione dolore dolor minima. Lorem ipsum dolor sit amet consectetur adipisicing elit. Sed nihil quisquam accusamus sint</p></a>
<a href='#'><p class='promo-contenido-mostrar'>Mostrar mas</p></a>
</div>
</div>
<a href='#'>
<img class='promo-img' src='/assets/img/promo/$i.webp' alt='preview'>
</a>
</div>
";
}?>
</section>
</main>
</body>
</html>

17
tool/package/nodejs.md Normal file
View File

@ -0,0 +1,17 @@
npm init -y
npm -v
sudo npm install -g npm@latest
sudo npm install -g npm@latest
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt-get install -y nodejs

35
tool/responsively.md Normal file
View File

@ -0,0 +1,35 @@
# Responsively
## Install
[Responsively](https://responsively.app/)
```sh
wget https://github.com/responsively-org/responsively-app-releases/releases/download/v1.16.0/ResponsivelyApp-1.16.0.AppImage
chmod +x ResponsivelyApp-1.16.0.AppImage
mv ResponsivelyApp-1.16.0.AppImage ResponsivelyApp.AppImage
mkdir -p ~/.local/bin/
mv ResponsivelyApp.AppImage ~/.local/bin/
```
## Config
```sh
nano ~/.local/share/applications/responsively.desktop
[Desktop Entry]
Name=Responsively App
Exec=/home/your-username/.local/bin/ResponsivelyApp.AppImage
Icon=web
Type=Application
Categories=Development;
```
## Execute
```
~/.local/bin/ResponsivelyApp.AppImage
```

20
tool/selenium/README.md Normal file
View File

@ -0,0 +1,20 @@
# Selenium
## Install
```sh
pip install selenium
pip3 install selenium
```
https://www.selenium.dev/
https://sites.google.com/chromium.org/driver/
the Chrome for Testing availability dashboard.
https://googlechromelabs.github.io/chrome-for-testing/#stable
chromedriver

24
tool/vite/.gitignore vendored Normal file
View File

@ -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?

View File

@ -0,0 +1,3 @@
* {
background-color: brown;
}

View File

View File

@ -0,0 +1,4 @@
import '../css/style.css'
console.log("VIte php");

View File

@ -0,0 +1,31 @@
// import { Strophe } from "strophe.js";
// const connection = new Strophe.Connection("wss://xmpp.chat.local/xmpp-websocket");
// connection.connect("user@xmpp.chat.local", "password", function (status) {
// console.log("Status:", status);
// });
// <link rel="stylesheet" href="https://cdn.conversejs.org/10.1.6/converse.min.css">
// <script src="https://cdn.conversejs.org/10.1.6/converse.min.js"></script>
// import '/node_modules/converse.js/dist/converse.min.css';
// import converse from '/node_modules/converse.js/dist/converse.min.js';
// // import '/node_modules/converse.js/dist/converse-omemo.min.js';
// import './plugins/omemo';
// <link rel="stylesheet" href="https://cdn.conversejs.org/dist/converse.min.css">
// <script src="https://cdn.conversejs.org/dist/converse.min.js"></script>
// <script src="https://cdn.conversejs.org/dist/converse-omemo.min.js"></script>
// converse.initialize({
// bosh_service_url: 'https://xmpp.chat.local/http-bind',
// authentication: 'login',
// auto_login: false,
// allow_omemo: true,
// whitelisted_plugins: ['converse-omemo'],
// view_mode: 'fullscreen'
// });

13
tool/vite/index.html Normal file
View File

@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

971
tool/vite/package-lock.json generated Normal file
View File

@ -0,0 +1,971 @@
{
"name": "vite",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "vite",
"version": "0.0.0",
"devDependencies": {
"vite": "^7.1.2"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
"integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
"cpu": [
"ppc64"
],
"dev": true,
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
"integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
"integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
"integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
"integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
"integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
"integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
"integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
"integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
"integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
"integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
"integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
"cpu": [
"loong64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
"integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
"cpu": [
"mips64el"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
"integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
"cpu": [
"ppc64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
"integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
"cpu": [
"riscv64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
"integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
"cpu": [
"s390x"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
"integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
"integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
"integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
"integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
"integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openharmony-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
"integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"openharmony"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
"integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
"integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
"integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
"integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz",
"integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz",
"integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz",
"integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz",
"integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz",
"integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz",
"integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz",
"integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz",
"integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==",
"cpu": [
"arm"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz",
"integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz",
"integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz",
"integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==",
"cpu": [
"loong64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz",
"integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==",
"cpu": [
"ppc64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz",
"integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==",
"cpu": [
"riscv64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz",
"integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==",
"cpu": [
"riscv64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz",
"integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==",
"cpu": [
"s390x"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz",
"integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz",
"integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz",
"integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==",
"cpu": [
"arm64"
],
"dev": true,
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz",
"integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==",
"cpu": [
"ia32"
],
"dev": true,
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz",
"integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==",
"cpu": [
"x64"
],
"dev": true,
"optional": true,
"os": [
"win32"
]
},
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"dev": true
},
"node_modules/esbuild": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
"integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
"dev": true,
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.25.9",
"@esbuild/android-arm": "0.25.9",
"@esbuild/android-arm64": "0.25.9",
"@esbuild/android-x64": "0.25.9",
"@esbuild/darwin-arm64": "0.25.9",
"@esbuild/darwin-x64": "0.25.9",
"@esbuild/freebsd-arm64": "0.25.9",
"@esbuild/freebsd-x64": "0.25.9",
"@esbuild/linux-arm": "0.25.9",
"@esbuild/linux-arm64": "0.25.9",
"@esbuild/linux-ia32": "0.25.9",
"@esbuild/linux-loong64": "0.25.9",
"@esbuild/linux-mips64el": "0.25.9",
"@esbuild/linux-ppc64": "0.25.9",
"@esbuild/linux-riscv64": "0.25.9",
"@esbuild/linux-s390x": "0.25.9",
"@esbuild/linux-x64": "0.25.9",
"@esbuild/netbsd-arm64": "0.25.9",
"@esbuild/netbsd-x64": "0.25.9",
"@esbuild/openbsd-arm64": "0.25.9",
"@esbuild/openbsd-x64": "0.25.9",
"@esbuild/openharmony-arm64": "0.25.9",
"@esbuild/sunos-x64": "0.25.9",
"@esbuild/win32-arm64": "0.25.9",
"@esbuild/win32-ia32": "0.25.9",
"@esbuild/win32-x64": "0.25.9"
}
},
"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,
"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,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"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"
}
],
"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
},
"node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
"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"
}
],
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/rollup": {
"version": "4.46.2",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz",
"integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==",
"dev": true,
"dependencies": {
"@types/estree": "1.0.8"
},
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=18.0.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.46.2",
"@rollup/rollup-android-arm64": "4.46.2",
"@rollup/rollup-darwin-arm64": "4.46.2",
"@rollup/rollup-darwin-x64": "4.46.2",
"@rollup/rollup-freebsd-arm64": "4.46.2",
"@rollup/rollup-freebsd-x64": "4.46.2",
"@rollup/rollup-linux-arm-gnueabihf": "4.46.2",
"@rollup/rollup-linux-arm-musleabihf": "4.46.2",
"@rollup/rollup-linux-arm64-gnu": "4.46.2",
"@rollup/rollup-linux-arm64-musl": "4.46.2",
"@rollup/rollup-linux-loongarch64-gnu": "4.46.2",
"@rollup/rollup-linux-ppc64-gnu": "4.46.2",
"@rollup/rollup-linux-riscv64-gnu": "4.46.2",
"@rollup/rollup-linux-riscv64-musl": "4.46.2",
"@rollup/rollup-linux-s390x-gnu": "4.46.2",
"@rollup/rollup-linux-x64-gnu": "4.46.2",
"@rollup/rollup-linux-x64-musl": "4.46.2",
"@rollup/rollup-win32-arm64-msvc": "4.46.2",
"@rollup/rollup-win32-ia32-msvc": "4.46.2",
"@rollup/rollup-win32-x64-msvc": "4.46.2",
"fsevents": "~2.3.2"
}
},
"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,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tinyglobby": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
"dependencies": {
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/vite": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.2.tgz",
"integrity": "sha512-J0SQBPlQiEXAF7tajiH+rUooJPo0l8KQgyg4/aMunNtrOa7bwuZJsJbDWzeljqQpgftxuq5yNJxQ91O9ts29UQ==",
"dev": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.6",
"picomatch": "^4.0.3",
"postcss": "^8.5.6",
"rollup": "^4.43.0",
"tinyglobby": "^0.2.14"
},
"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",
"jiti": ">=1.21.0",
"less": "^4.0.0",
"lightningcss": "^1.21.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
},
"jiti": {
"optional": true
},
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
},
"tsx": {
"optional": true
},
"yaml": {
"optional": true
}
}
}
}
}

14
tool/vite/package.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "vite",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"devDependencies": {
"vite": "^7.1.2"
}
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

9
tool/vite/src/counter.js Normal file
View File

@ -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)
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path fill="#F7DF1E" d="M0 0h256v256H0V0Z"></path><path d="m67.312 213.932l19.59-11.856c3.78 6.701 7.218 12.371 15.465 12.371c7.905 0 12.89-3.092 12.89-15.12v-81.798h24.057v82.138c0 24.917-14.606 36.259-35.916 36.259c-19.245 0-30.416-9.967-36.087-21.996m85.07-2.576l19.588-11.341c5.157 8.421 11.859 14.607 23.715 14.607c9.969 0 16.325-4.984 16.325-11.858c0-8.248-6.53-11.17-17.528-15.98l-6.013-2.58c-17.357-7.387-28.87-16.667-28.87-36.257c0-18.044 13.747-31.792 35.228-31.792c15.294 0 26.292 5.328 34.196 19.247l-18.732 12.03c-4.125-7.389-8.591-10.31-15.465-10.31c-7.046 0-11.514 4.468-11.514 10.31c0 7.217 4.468 10.14 14.778 14.608l6.014 2.577c20.45 8.765 31.963 17.7 31.963 37.804c0 21.654-17.012 33.51-39.867 33.51c-22.339 0-36.774-10.654-43.819-24.574"></path></svg>

After

Width:  |  Height:  |  Size: 995 B

24
tool/vite/src/main.js Normal file
View File

@ -0,0 +1,24 @@
import './style.css'
import javascriptLogo from './javascript.svg'
import viteLogo from '/vite.svg'
import { setupCounter } from './counter.js'
document.querySelector('#app').innerHTML = `
<div>
<a href="https://vite.dev" target="_blank">
<img src="${viteLogo}" class="logo" alt="Vite logo" />
</a>
<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" target="_blank">
<img src="${javascriptLogo}" class="logo vanilla" alt="JavaScript logo" />
</a>
<h1>Hello Vite!</h1>
<div class="card">
<button id="counter" type="button"></button>
</div>
<p class="read-the-docs">
Click on the Vite logo to learn more
</p>
</div>
`
setupCounter(document.querySelector('#counter'))

96
tool/vite/src/style.css Normal file
View File

@ -0,0 +1,96 @@
:root {
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
line-height: 1.5;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
transition: filter 300ms;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vanilla:hover {
filter: drop-shadow(0 0 2em #f7df1eaa);
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}

15
tool/vite/vite.config.js Normal file
View File

@ -0,0 +1,15 @@
import { defineConfig } from 'vite';
import path from 'path';
export default defineConfig({
build: {
manifest: true,
outDir: './dist',
rollupOptions: {
input: {
'main.js': path.resolve(__dirname, './assets/js/main.js'),
}
}
}
});

9
tool/web_platform.md Normal file
View File

@ -0,0 +1,9 @@
regex101
wappalyze.com
https://builtwith.com/es/
whois.domaintools.com
ipinfo