commit inicial
|
@ -0,0 +1,12 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/build
|
||||||
|
/.svelte-kit
|
||||||
|
/package
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
.vercel
|
||||||
|
.output
|
||||||
|
vite.config.js.timestamp-*
|
||||||
|
vite.config.ts.timestamp-*
|
|
@ -0,0 +1,73 @@
|
||||||
|
# CMS Transporte
|
||||||
|
|
||||||
|
|
||||||
|
## Developing
|
||||||
|
|
||||||
|
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# or start the server and open the app in a new browser tab
|
||||||
|
npm run dev -- --open
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To create a production version of your app:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
You can preview the production build with `npm run preview`.
|
||||||
|
|
||||||
|
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
||||||
|
|
||||||
|
|
||||||
|
## file: docker-compose.yml (desarrollo)
|
||||||
|
|
||||||
|
~~~yml
|
||||||
|
version: '3'
|
||||||
|
name: transporte-cms
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
app:
|
||||||
|
image: node:20-alpine
|
||||||
|
volumes:
|
||||||
|
- ./app:/app
|
||||||
|
working_dir: /app
|
||||||
|
ports:
|
||||||
|
- 4002:4002
|
||||||
|
environment:
|
||||||
|
- PORT=4002
|
||||||
|
command: sh -c "
|
||||||
|
[ -d node_modules ] || (npm install) ;
|
||||||
|
npm run dev
|
||||||
|
"
|
||||||
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
## file: docker-compose.yml (producción)
|
||||||
|
|
||||||
|
~~~yml
|
||||||
|
version: '3'
|
||||||
|
name: transporte-cms
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
app:
|
||||||
|
image: node:20-alpine
|
||||||
|
volumes:
|
||||||
|
- ./app:/app
|
||||||
|
working_dir: /app
|
||||||
|
ports:
|
||||||
|
- 4002:4002
|
||||||
|
environment:
|
||||||
|
- PORT=4002
|
||||||
|
command: sh -c "
|
||||||
|
[ -d node_modules ] || (npm install) ;
|
||||||
|
npm run build && npm run preview
|
||||||
|
"
|
||||||
|
~~~
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"name": "app",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite dev --host --port=$PORT",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview --host --port=$PORT"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@fontsource/fira-mono": "^4.5.10",
|
||||||
|
"@neoconfetti/svelte": "^1.0.0",
|
||||||
|
"@sveltejs/adapter-auto": "^3.0.0",
|
||||||
|
"@sveltejs/kit": "^2.0.0",
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
||||||
|
"svelte": "^4.2.7",
|
||||||
|
"vite": "^5.0.3"
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"dependencies": {
|
||||||
|
"bootstrap": "^5.3.3"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
%sveltekit.head%
|
||||||
|
</head>
|
||||||
|
<body data-sveltekit-preload-data="hover">
|
||||||
|
<div style="display: contents">%sveltekit.body%</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-3 -3 30 30">
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M12 2C6.47715 2 2 6.47715 2 12C2 17.5229 6.47715 22 12 22C17.5229 22 22 17.5229 22 12C22 6.47715 17.5229 2 12 2ZM0 12C0 5.3726 5.3726 0 12 0C18.6274 0 24 5.3726 24 12C24 18.6274 18.6274 24 12 24C5.3726 24 0 18.6274 0 12Z"
|
||||||
|
fill="rgba(0,0,0,0.7)"
|
||||||
|
stroke="none"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
clip-rule="evenodd"
|
||||||
|
d="M9.59162 22.7357C9.49492 22.6109 9.49492 21.4986 9.59162 19.399C8.55572 19.4347 7.90122 19.3628 7.62812 19.1833C7.21852 18.9139 6.80842 18.0833 6.44457 17.4979C6.08072 16.9125 5.27312 16.8199 4.94702 16.6891C4.62091 16.5582 4.53905 16.0247 5.84562 16.4282C7.15222 16.8316 7.21592 17.9303 7.62812 18.1872C8.04032 18.4441 9.02572 18.3317 9.47242 18.1259C9.91907 17.9201 9.88622 17.1538 9.96587 16.8503C10.0666 16.5669 9.71162 16.5041 9.70382 16.5018C9.26777 16.5018 6.97697 16.0036 6.34772 13.7852C5.71852 11.5669 6.52907 10.117 6.96147 9.49369C7.24972 9.07814 7.22422 8.19254 6.88497 6.83679C8.11677 6.67939 9.06732 7.06709 9.73672 7.99999C9.73737 8.00534 10.6143 7.47854 12.0001 7.47854C13.386 7.47854 13.8777 7.90764 14.2571 7.99999C14.6365 8.09234 14.94 6.36699 17.2834 6.83679C16.7942 7.79839 16.3844 8.99999 16.6972 9.49369C17.0099 9.98739 18.2372 11.5573 17.4833 13.7852C16.9807 15.2706 15.9927 16.1761 14.5192 16.5018C14.3502 16.5557 14.2658 16.6427 14.2658 16.7627C14.2658 16.9427 14.4942 16.9624 14.8233 17.8058C15.0426 18.368 15.0585 19.9739 14.8708 22.6234C14.3953 22.7445 14.0254 22.8257 13.7611 22.8673C13.2924 22.9409 12.7835 22.9822 12.2834 22.9982C11.7834 23.0141 11.6098 23.0123 10.9185 22.948C10.4577 22.9051 10.0154 22.8343 9.59162 22.7357Z"
|
||||||
|
fill="rgba(0,0,0,0.7)"
|
||||||
|
stroke="none"
|
||||||
|
/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="107" height="128" viewBox="0 0 107 128"><title>svelte-logo</title><path d="M94.1566,22.8189c-10.4-14.8851-30.94-19.2971-45.7914-9.8348L22.2825,29.6078A29.9234,29.9234,0,0,0,8.7639,49.6506a31.5136,31.5136,0,0,0,3.1076,20.2318A30.0061,30.0061,0,0,0,7.3953,81.0653a31.8886,31.8886,0,0,0,5.4473,24.1157c10.4022,14.8865,30.9423,19.2966,45.7914,9.8348L84.7167,98.3921A29.9177,29.9177,0,0,0,98.2353,78.3493,31.5263,31.5263,0,0,0,95.13,58.117a30,30,0,0,0,4.4743-11.1824,31.88,31.88,0,0,0-5.4473-24.1157" style="fill:#ff3e00"/><path d="M45.8171,106.5815A20.7182,20.7182,0,0,1,23.58,98.3389a19.1739,19.1739,0,0,1-3.2766-14.5025,18.1886,18.1886,0,0,1,.6233-2.4357l.4912-1.4978,1.3363.9815a33.6443,33.6443,0,0,0,10.203,5.0978l.9694.2941-.0893.9675a5.8474,5.8474,0,0,0,1.052,3.8781,6.2389,6.2389,0,0,0,6.6952,2.485,5.7449,5.7449,0,0,0,1.6021-.7041L69.27,76.281a5.4306,5.4306,0,0,0,2.4506-3.631,5.7948,5.7948,0,0,0-.9875-4.3712,6.2436,6.2436,0,0,0-6.6978-2.4864,5.7427,5.7427,0,0,0-1.6.7036l-9.9532,6.3449a19.0329,19.0329,0,0,1-5.2965,2.3259,20.7181,20.7181,0,0,1-22.2368-8.2427,19.1725,19.1725,0,0,1-3.2766-14.5024,17.9885,17.9885,0,0,1,8.13-12.0513L55.8833,23.7472a19.0038,19.0038,0,0,1,5.3-2.3287A20.7182,20.7182,0,0,1,83.42,29.6611a19.1739,19.1739,0,0,1,3.2766,14.5025,18.4,18.4,0,0,1-.6233,2.4357l-.4912,1.4978-1.3356-.98a33.6175,33.6175,0,0,0-10.2037-5.1l-.9694-.2942.0893-.9675a5.8588,5.8588,0,0,0-1.052-3.878,6.2389,6.2389,0,0,0-6.6952-2.485,5.7449,5.7449,0,0,0-1.6021.7041L37.73,51.719a5.4218,5.4218,0,0,0-2.4487,3.63,5.7862,5.7862,0,0,0,.9856,4.3717,6.2437,6.2437,0,0,0,6.6978,2.4864,5.7652,5.7652,0,0,0,1.602-.7041l9.9519-6.3425a18.978,18.978,0,0,1,5.2959-2.3278,20.7181,20.7181,0,0,1,22.2368,8.2427,19.1725,19.1725,0,0,1,3.2766,14.5024,17.9977,17.9977,0,0,1-8.13,12.0532L51.1167,104.2528a19.0038,19.0038,0,0,1-5.3,2.3287" style="fill:#fff"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 113 KiB |
|
@ -0,0 +1,23 @@
|
||||||
|
<script>
|
||||||
|
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||||
|
import Header from './Header.svelte';
|
||||||
|
import Footer from './Footer.svelte';
|
||||||
|
import Navigator from './Navigator.svelte';
|
||||||
|
|
||||||
|
if (typeof document !== 'undefined') {
|
||||||
|
import('bootstrap/dist/js/bootstrap.min.js')
|
||||||
|
.then(data => globalThis.bootstrap = data)
|
||||||
|
.catch(error => console.log({ error }));
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="app">
|
||||||
|
<Header />
|
||||||
|
<Navigator />
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<slot />
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<Footer />
|
||||||
|
</div>
|
|
@ -0,0 +1,3 @@
|
||||||
|
// since there's no dynamic data here, we can prerender
|
||||||
|
// it so that it gets served as a static asset in production
|
||||||
|
export const prerender = true;
|
|
@ -0,0 +1,17 @@
|
||||||
|
<script>
|
||||||
|
import Carousel from "./Carousel.svelte";
|
||||||
|
import Articulo from "./Articulo.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svelte:head>
|
||||||
|
<title>Transformación digital</title>
|
||||||
|
<meta name="description" content="TRANSFORMACIÓN DIGITAL DEL TRANSPORTE EN GRAN CONCEPCIÓN" />
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<Carousel />
|
||||||
|
|
||||||
|
<section class="container">
|
||||||
|
<article class="py-5">
|
||||||
|
<Articulo />
|
||||||
|
</article>
|
||||||
|
</section>
|
|
@ -0,0 +1,102 @@
|
||||||
|
<h1 class="display-1 my-5">TRANSFORMACIÓN DIGITAL DEL TRANSPORTE EN GRAN CONCEPCIÓN</h1>
|
||||||
|
|
||||||
|
<p class="text-center py-5">
|
||||||
|
Iniciativa financiada por el Gobierno Regional del Biobío a través del Fondo de Innovación para la Competitividad
|
||||||
|
(FIC-R) y ejecutada por la Universidad Técnica Federico Santa María.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h3>DESCRIPCIÓN GENERAL</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Esta iniciativa se enmarca el eje de “Gobierno Digital, una oferta de valor para la ciudadanía”, que pretende impulsar el uso estratégico y coordinado de herramientas como las Tecnologías de Información y Comunicación (TIC), y la innovación del Estado, como claves para mejorar la experiencia ciudadana al interactuar con los servicios públicos en todas sus dimensiones. La propuesta de transformación digital se basa en tres pilares: Gobernanza, Diseño de plataformas de servicios de información y un Modelo de brechas de capacidad.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
El Programa FIC Transformación digital del transporte en Gran Concepción elabora una propuesta de transformación digital del sistema de transporte público del Gran Concepción junto con proponer el desarrollo de un modelo de brechas de capacidad para sistemas de transporte inteligente, aportando con ello a una mejora en la toma de decisiones de medidas de corto, mediano y largo plazo del sistema de transporte público y al grupo objetivo y que además contribuye dejar una herramienta que permita definir políticas públicas macro respecto de la movilidad del gran Concepción.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>PROBLEMA QUE ABORDA LA INICIATIVA</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
El problema en el que se centra el proyecto responde a los desafíos en torno a la movilidad tales como los atochamientos, falta de frecuencias en el sistema de transporte público, falta de información a los usuarios del sistema de transporte, la sensación de inseguridad tanto de los usuarios del sistema como de los mismos choferes del transporte público y la falta de una gobernanza que permita enfrentar estos problemas de forma integral y coordinada.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Luego son desafíos:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>La falta de una instancia de coordinación entre las distintas autoridades y actores de los sistemas de transporte que permita la articulación de políticas marco del transporte del Gran Concepción.</li>
|
||||||
|
<li>La falta de análisis de los requerimientos de información de los actores del sistema, que guíen la identificación de fuentes de datos de la operación actual del sistema de transporte, el diseño del proceso de integración de datos y la definición de la funcionalidad de las plataformas de servicios de información.</li>
|
||||||
|
<li>La falta de una propuesta de diseño, basada en los requerimientos analizados, para las plataformas de servicios de información.</li>
|
||||||
|
<li>La falta de un modelo de brechas de capacidad para Sistemas de Transporte Inteligente, que permita evaluar a las comunas del Gran Concepción en cuanto a sus posibilidades de adoptar un modelo de movilidad inteligente de referencia.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
El proyecto pretende elaborar una propuesta de transformación digital del sistema de transporte público del Gran Concepción junto con proponer el desarrollo de un modelo de brechas de capacidad para sistemas de transporte inteligente.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>PROPÓSITO</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
La región del Biobío cuenta con una propuesta de transformación digital del sistema de transporte público del Gran Concepción.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>COMPONENTES</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Instalación de una instancia que involucre a los actores del sistema de transporte del Gran Concepción para la coordinación de políticas marco.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Entrega de una propuesta de diseño de plataformas de servicios de información del sistema de transporte acorde a las necesidades de información de los actores del sistema, con foco no excluyente en pago, horarios, frecuencias, integración con sistema de seguridad ciudadana, e información de apoyo a la toma de decisiones
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Realización de un estudio de experiencias de instalación de sistemas de transporte inteligente de carácter internacional en ciudades que reúnan las características del Gran Concepción que permita evaluar el desarrollo e implementación de un modelo de brechas de capacidad para Sistemas de Transporte Inteligente con medidas de corto, mediano y largo plazo.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3>EQUIPO DE PROYECTO</h3>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Israel Figueroa Pedreros - Director encargado programa FIC</li>
|
||||||
|
<li>Alex Zúñiga Espinoza - Coordinador programa FIC</li>
|
||||||
|
<li>Cristian Lara Valenzuela - Analista Funcional</li>
|
||||||
|
<li>Javier Maldonado Carmona - Analista, redes telecomunicaciones e integración de datos</li>
|
||||||
|
<li>Gastón Márquez Ortega - Arquitecto de Software</li>
|
||||||
|
<li>Rhoddy Viveros Muñoz - Científico de datos</li>
|
||||||
|
<li>Carlos Castro Valdebenito - Consultor benchmarkig ITS y optimización</li>
|
||||||
|
<li>Hernán Astudillo Rojas - Consultor modelos de brechas de capacidad</li>
|
||||||
|
<li>Gastón Concha Fariña - Consultor experto transporte inteligente</li>
|
||||||
|
<li>Carlos Essmann Rojas - Asesor levantamiento necesidades de información Gremios y Gobernanza</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="py-4"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
h1, h3 {
|
||||||
|
color: #001b3b;
|
||||||
|
text-rendering: geometricPrecision;
|
||||||
|
text-wrap: balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
text-align: left;
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
line-height: 2rem;
|
||||||
|
text-align: left;
|
||||||
|
text-wrap: balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
p, li {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,73 @@
|
||||||
|
<script>
|
||||||
|
import { base } from '$app/paths';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div id="carousel-home" class="carousel slide" data-bs-ride="carousel">
|
||||||
|
<div class="carousel-indicators">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide-to="0"
|
||||||
|
class="active"
|
||||||
|
aria-current="true"
|
||||||
|
aria-label="Slide 1"
|
||||||
|
></button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide-to="1"
|
||||||
|
aria-label="Slide 2"
|
||||||
|
></button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide-to="2"
|
||||||
|
aria-label="Slide 3"
|
||||||
|
></button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide-to="3"
|
||||||
|
aria-label="Slide 4"
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div class="carousel-inner">
|
||||||
|
<div class="carousel-item active" data-bs-interval="10000">
|
||||||
|
<img src={`${base}/images/imagen-1.jpg`} class="d-block w-100" alt={"..."} loading="lazy" />
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<img src={`${base}/images/imagen-2.jpg`} class="d-block w-100" alt={"..."} loading="lazy" />
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<img src={`${base}/images/imagen-3.jpg`} class="d-block w-100" alt={"..."} loading="lazy" />
|
||||||
|
</div>
|
||||||
|
<div class="carousel-item">
|
||||||
|
<img src={`${base}/images/imagen-4.jpg`} class="d-block w-100" alt={"..."} loading="lazy" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
class="carousel-control-prev"
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide="prev">
|
||||||
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
||||||
|
<span class="visually-hidden">Previous</span>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="carousel-control-next"
|
||||||
|
type="button"
|
||||||
|
data-bs-target="#carousel-home"
|
||||||
|
data-bs-slide="next">
|
||||||
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
||||||
|
<span class="visually-hidden">Next</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
img {
|
||||||
|
max-height: 500px;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,102 @@
|
||||||
|
<script>
|
||||||
|
import { spring } from 'svelte/motion';
|
||||||
|
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
const displayed_count = spring();
|
||||||
|
$: displayed_count.set(count);
|
||||||
|
$: offset = modulo($displayed_count, 1);
|
||||||
|
|
||||||
|
function modulo(n, m) {
|
||||||
|
// handle negative numbers
|
||||||
|
return ((n % m) + m) % m;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="counter">
|
||||||
|
<button on:click={() => (count -= 1)} aria-label="Decrease the counter by one">
|
||||||
|
<svg aria-hidden="true" viewBox="0 0 1 1">
|
||||||
|
<path d="M0,0.5 L1,0.5" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div class="counter-viewport">
|
||||||
|
<div class="counter-digits" style="transform: translate(0, {100 * offset}%)">
|
||||||
|
<strong class="hidden" aria-hidden="true">{Math.floor($displayed_count + 1)}</strong>
|
||||||
|
<strong>{Math.floor($displayed_count)}</strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button on:click={() => (count += 1)} aria-label="Increase the counter by one">
|
||||||
|
<svg aria-hidden="true" viewBox="0 0 1 1">
|
||||||
|
<path d="M0,0.5 L1,0.5 M0.5,0 L0.5,1" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.counter {
|
||||||
|
display: flex;
|
||||||
|
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter button {
|
||||||
|
width: 2em;
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
border: 0;
|
||||||
|
background-color: transparent;
|
||||||
|
touch-action: manipulation;
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter button:hover {
|
||||||
|
background-color: var(--color-bg-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
svg {
|
||||||
|
width: 25%;
|
||||||
|
height: 25%;
|
||||||
|
}
|
||||||
|
|
||||||
|
path {
|
||||||
|
vector-effect: non-scaling-stroke;
|
||||||
|
stroke-width: 2px;
|
||||||
|
stroke: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter-viewport {
|
||||||
|
width: 8em;
|
||||||
|
height: 4em;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter-viewport strong {
|
||||||
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
font-weight: 400;
|
||||||
|
color: var(--color-theme-1);
|
||||||
|
font-size: 4rem;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.counter-digits {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
top: -100%;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<script>
|
||||||
|
import { base } from '$app/paths';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<footer class="footer1">
|
||||||
|
|
||||||
|
<div class="container py-3">
|
||||||
|
<img src={`${base}/images/Biobio-Puede-Mas.png`} alt="Biobio puede más" height="137">
|
||||||
|
<img src={`${base}/images/gobierno-regional.png`} alt="Gobierno regional" height="137">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer2">
|
||||||
|
<div class="container text-light py-2">
|
||||||
|
<p>© EMPRESA S.A. - Concepción - Región del Biobío - Chile.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.footer1 {
|
||||||
|
background-color: #001b3b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer2 {
|
||||||
|
background-color: #00142b;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<script>
|
||||||
|
import { base } from "$app/paths";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<header class="container py-3">
|
||||||
|
<div class="grid align-items-center">
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
src={base + "/images/auspiciador1.png"}
|
||||||
|
alt="Gobierno Regional"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
src={base + "/images/auspiciador2.jpg"}
|
||||||
|
alt="Fondo de Innovación para la Competitividad"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
src={base + "/images/auspiciador3.png"}
|
||||||
|
alt="Transformación Digital del Transporte"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="text-end">
|
||||||
|
<img src={base + "/images/auspiciador4.png"} alt="UTFSM" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-rows: repeat(var(--bs-rows, 1), 1fr);
|
||||||
|
grid-template-columns: repeat(var(--bs-columns, 4), 1fr);
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<script>
|
||||||
|
import { base } from "$app/paths";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="bg-dark text-light py-2 sticky-top">
|
||||||
|
<div class="container">
|
||||||
|
<a href={`${base}/#top`}>Inicio</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.bg-dark {
|
||||||
|
background: linear-gradient(90deg, #0477d1, #0023);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-dark a {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.bg-dark a:hover {
|
||||||
|
border-bottom: 1px solid #fff;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { dev } from '$app/environment';
|
||||||
|
|
||||||
|
// we don't need any JS on this page, though we'll load
|
||||||
|
// it in dev so that we get hot module replacement
|
||||||
|
export const csr = dev;
|
||||||
|
|
||||||
|
// since there's no dynamic data here, we can prerender
|
||||||
|
// it so that it gets served as a static asset in production
|
||||||
|
export const prerender = true;
|
|
@ -0,0 +1,26 @@
|
||||||
|
<svelte:head>
|
||||||
|
<title>About</title>
|
||||||
|
<meta name="description" content="About this app" />
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="text-column">
|
||||||
|
<h1>About this app</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This is a <a href="https://kit.svelte.dev">SvelteKit</a> app. You can make your own by typing the
|
||||||
|
following into your command line and following the prompts:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre>npm create svelte@latest</pre>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The page you're looking at is purely static HTML, with no client-side interactivity needed.
|
||||||
|
Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening
|
||||||
|
the devtools network panel and reloading.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The <a href="/sverdle">Sverdle</a> page illustrates SvelteKit's data loading and form handling. Try
|
||||||
|
using it with JavaScript disabled!
|
||||||
|
</p>
|
||||||
|
</div>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 990 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 135 KiB |
After Width: | Height: | Size: 178 KiB |
|
@ -0,0 +1,3 @@
|
||||||
|
# https://www.robotstxt.org/robotstxt.html
|
||||||
|
User-agent: *
|
||||||
|
Disallow:
|
|
@ -0,0 +1,13 @@
|
||||||
|
import adapter from '@sveltejs/adapter-auto';
|
||||||
|
|
||||||
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
|
const config = {
|
||||||
|
kit: {
|
||||||
|
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
||||||
|
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
|
||||||
|
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
||||||
|
adapter: adapter()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [sveltekit()]
|
||||||
|
});
|