Repository: midudev/lolalolitaland.com
Branch: main
Commit: ea0cc3c2c2aa
Files: 44
Total size: 136.1 KB
Directory structure:
gitextract_oiw4y92l/
├── .editorconfig
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .vscode/
│ ├── css_custom_tailwind.json
│ ├── extensions.json
│ ├── launch.json
│ └── settings.json
├── CONTRIBUTING.md
├── README.md
├── astro.config.mjs
├── package.json
├── public/
│ ├── events/
│ │ └── event-lolalolita.ics
│ └── googlee0d1fc8a4713db25.html
├── pull_request_template.md
├── src/
│ ├── components/
│ │ ├── BackToTop.astro
│ │ ├── BubbleBackground.astro
│ │ ├── DotBackground.astro
│ │ ├── Header.astro
│ │ ├── HeaderLink.astro
│ │ ├── LeafletMap.astro
│ │ ├── Marquee.astro
│ │ ├── Sponsor.astro
│ │ ├── SponsorsBar.astro
│ │ ├── StarryBackground.astro
│ │ └── WaveSeparator.astro
│ ├── consts/
│ │ ├── galleryImages.ts
│ │ ├── geoJSONData.ts
│ │ └── map-styles.js
│ ├── layouts/
│ │ └── Layout.astro
│ ├── pages/
│ │ ├── 404.astro
│ │ └── index.astro
│ ├── sections/
│ │ ├── ComoLlegar.astro
│ │ ├── FAQ.astro
│ │ ├── Footer.astro
│ │ ├── Gallery.astro
│ │ ├── Hero.astro
│ │ ├── Info.astro
│ │ ├── Map.astro
│ │ ├── Rides.astro
│ │ └── Tickets.astro
│ └── styles/
│ └── global.css
├── tailwind.config.js
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
================================================
FILE: .gitignore
================================================
# build output
dist/
# generated types
.astro/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
# jetbrains setting folder
.idea/
package-lock.json
bun.lock
bun.lockb
yarn.lock
================================================
FILE: .prettierignore
================================================
# build output
dist/
.output/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
# Astro generated files
.astro/
# Lock files
package-lock.json
yarn.lock
pnpm-lock.yaml
================================================
FILE: .prettierrc
================================================
{
"printWidth": 100,
"semi": false,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "es5",
"useTabs": false,
"plugins": ["prettier-plugin-astro", "prettier-plugin-tailwindcss"],
"overrides": [
{
"files": "*.astro",
"options": {
"parser": "astro"
}
}
]
}
================================================
FILE: .vscode/css_custom_tailwind.json
================================================
{
"version": 4.0,
"atDirectives": [
{
"name": "@theme",
"description": "Use the `@theme` directive to define your project's custom design tokens, like fonts, colors, and breakpoints",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#theme-directive"
}
]
},
{
"name": "@source",
"description": "Use the `@source` directive to explicitly specify source files that aren't picked up by Tailwind's automatic content detection",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#source-directive"
}
]
},
{
"name": "@utility",
"description": "Use the `@utility` directive to add custom utilities to your project that work with variants like `hover`, `focus` and `lg`",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#utility-directive"
}
]
},
{
"name": "@variant",
"description": "Use the `@variant` directive to apply a Tailwind variant to styles in your CSS",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#variant-directive"
}
]
},
{
"name": "@custom-variant",
"description": "Use the `@custom-variant` directive to add a custom variant in your project",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#custom-variant-directive"
}
]
},
{
"name": "@apply",
"description": "Use the `@apply` directive to inline any existing utility classes into your own custom CSS",
"references": [
{
"name": "Tailwind Documentation — Functions and directives",
"url": "https://tailwindcss.com/docs/functions-and-directives#apply-directive"
}
]
},
{
"name": "@reference",
"description": "If you want to use `@apply` or `@variant` in the `
================================================
FILE: src/components/BubbleBackground.astro
================================================
---
const bubbles = Array.from({ length: 30 }, (_, i) => ({
id: i + 1,
size: `${Math.random() * 30 + 10}px`,
left: `${Math.random() * 95}%`,
top: `${Math.random() * 95}%`,
delay: `${Math.random() * 3}s`, // Minimal delay for faster start
duration: `${Math.random() * 3 + 2}s`, // Super fast animations (2-5s)
}))
const instanceId = Math.random().toString(36).substring(2, 9)
---
{
bubbles.map(({ size, left, duration, delay }) => (
))
}
================================================
FILE: src/components/DotBackground.astro
================================================
================================================
FILE: src/components/Header.astro
================================================
---
import HeaderLink, { Device, Target } from "@/components/HeaderLink.astro"
---
================================================
FILE: src/components/HeaderLink.astro
================================================
---
export enum Device {
MOBILE = "MOBILE",
DESKTOP = "DESKTOP",
}
export enum Target {
BLANK = "_blank",
SELF = "_self",
PARENT = "_parent",
TOP = "_top",
}
export type Props = {
href: string
text: string
device: Device
target?: Target
extraClasses?: string
}
const { href, text, device, target, extraClasses } = Astro.props
const desktopClasses =
"relative text-sm/6 font-semibold text-white after:absolute after:bottom-[-2px] after:left-0 after:h-0.5 after:w-0 after:bg-white after:transition-all after:duration-300 hover:after:w-full"
const mobileClasses =
"hover:text-primary-light border-primary-light -mx-3 block rounded-lg px-3 py-2 text-base/7 font-semibold text-white hover:bg-white"
---
{text}
================================================
FILE: src/components/LeafletMap.astro
================================================
---
// Leaflet CSS and dependencies will be loaded dynamically
import type { FeatureCollection, Geometry, GeoJsonProperties } from "geojson"
export interface Props {
latitude: number
longitude: number
zoom: number
/** URL del tileLayer, ver: https://leafletjs.com/reference.html#tilelayer */
tileLayer: string
/** Atribución requerida por la mayoría de tile servers */
attribution: string
geoJSON?: { data: FeatureCollection; color: string }[]
}
const { latitude, longitude, zoom, tileLayer, attribution, geoJSON } = Astro.props
---
================================================
FILE: src/components/Marquee.astro
================================================
---
export type Props = {
content: Array
}
const { content } = Astro.props
---
{
content.map((item, index) => (
{item}
{index !== content.length - 1 && (
·
)}
))
}
================================================
FILE: src/components/Sponsor.astro
================================================
---
const { href } = Astro.props
---
================================================
FILE: src/components/SponsorsBar.astro
================================================
---
import Sponsor from "@/components/Sponsor.astro"
import Cerave from "@/assets/cerave.svg"
import Dkny from "@/assets/dkny.webp"
import Donettes from "@/assets/donettes.svg"
import InfoJobs from "@/assets/infojobs.svg"
import Trolli from "@/assets/trolli.svg"
import Grefusa from "@/assets/grefusa.webp"
import Snacking from "@/assets/snacking.svg"
import Novotel from "@/assets/novotel.webp"
import Flamingueo from "@/assets/flamingueo.webp"
import LOreal from "@/assets/loreal.webp"
import Uber from "@/assets/uber.webp"
import { Image } from "astro:assets"
---
================================================
FILE: src/components/StarryBackground.astro
================================================
---
const starCount = 120
const minDistance = 5
// Función para calcular la distancia entre dos puntos
const getDistance = (x1: number, y1: number, x2: number, y2: number) => {
return Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
}
const stars: any[] = []
while (stars.length < starCount) {
const newStar = {
top: Math.random() * 95,
left: Math.random() * 100,
size: Math.random() * 6 + 10, // Tamaño entre 10 y 16 px
opacity: Math.random() * 0.2 + 0.5, // Opacidad entre 0.5 y 1
rotation: Math.random() * 360, // Rotación entre 0 y 360 grados
}
// Verificar que la nueva estrella no esté demasiado cerca de otra
if (
stars.every(
(star) => getDistance(star.left, star.top, newStar.left, newStar.top) >= minDistance
)
) {
stars.push(newStar)
}
}
---
{
stars.map((star, index) => (
))
}
================================================
FILE: src/components/WaveSeparator.astro
================================================
---
const { bottomColor = "#ff0695", hasBubbles = false } = Astro.props
---
================================================
FILE: src/consts/galleryImages.ts
================================================
import GalleryImg1 from "@/assets/images/gallery/gallery_01.webp"
import GalleryImg2 from "@/assets/images/gallery/gallery_02.webp"
import GalleryImg3 from "@/assets/images/gallery/gallery_03.webp"
import GalleryImg5 from "@/assets/images/gallery/gallery_05.webp"
import GalleryImg6 from "@/assets/images/gallery/gallery_06.webp"
import GalleryImg7 from "@/assets/images/gallery/gallery_07.webp"
import GalleryImg8 from "@/assets/images/gallery/gallery_08.webp"
import GalleryImg9 from "@/assets/images/gallery/gallery_09.webp"
import GalleryImg10 from "@/assets/images/gallery/gallery_10.webp"
import GalleryImg11 from "@/assets/images/gallery/gallery_11.webp"
import GalleryImg12 from "@/assets/images/gallery/gallery_12.webp"
import GalleryImg13 from "@/assets/images/gallery/gallery_13.webp"
import GalleryImg14 from "@/assets/images/gallery/gallery_14.webp"
import GalleryImg15 from "@/assets/images/gallery/gallery_15.webp"
import GalleryImg16 from "@/assets/images/gallery/gallery_16.webp"
import GalleryImg17 from "@/assets/images/gallery/gallery_17.webp"
import GalleryImg18 from "@/assets/images/gallery/gallery_18.webp"
import GalleryImg19 from "@/assets/images/gallery/gallery_19.webp"
import GalleryImg20 from "@/assets/images/gallery/gallery_20.webp"
import GalleryImg21 from "@/assets/images/gallery/gallery_21.webp"
import GalleryImg22 from "@/assets/images/gallery/gallery_22.webp"
import GalleryImg23 from "@/assets/images/gallery/gallery_23.webp"
import GalleryImg24 from "@/assets/images/gallery/gallery_24.webp"
import GalleryImg25 from "@/assets/images/gallery/gallery_25.webp"
import GalleryImg26 from "@/assets/images/gallery/gallery_26.webp"
import GalleryImg27 from "@/assets/images/gallery/gallery_27.webp"
import GalleryImg28 from "@/assets/images/gallery/gallery_28.webp"
import GalleryImg29 from "@/assets/images/gallery/gallery_29.webp"
import GalleryImg30 from "@/assets/images/gallery/gallery_30.webp"
import GalleryImg31 from "@/assets/images/gallery/gallery_31.webp"
import GalleryImg32 from "@/assets/images/gallery/gallery_32.webp"
import GalleryImg33 from "@/assets/images/gallery/gallery_33.webp"
import GalleryImg34 from "@/assets/images/gallery/gallery_34.webp"
import GalleryImg35 from "@/assets/images/gallery/gallery_35.webp"
import GalleryImg36 from "@/assets/images/gallery/gallery_36.webp"
import GalleryImg37 from "@/assets/images/gallery/gallery_37.webp"
export const galleryImages = [
{
image: GalleryImg1,
alt: "Lola Lolita en un escenario con Carlos Baute.",
thumb: "thumb1",
},
{
image: GalleryImg2,
alt: "Lola Lolita Land, festival de música.",
thumb: "thumb2",
},
{
image: GalleryImg3,
alt: "Lola Índigo en un escenario en el festival de Lola Lolita Land.",
thumb: "thumb3",
},
{
image: GalleryImg5,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb4",
},
{
image: GalleryImg6,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb5",
},
{
image: GalleryImg7,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb6",
},
{
image: GalleryImg8,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb7",
},
{
image: GalleryImg9,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb8",
},
{
image: GalleryImg10,
alt: "Lola Lolita junto a un grupo de bailarines.",
thumb: "thumb9",
},
{
image: GalleryImg11,
alt: "Marina Reche en el evento de Lola Lolita Land.",
thumb: "thumb10",
},
{
image: GalleryImg12,
alt: "Marina Reche en el evento de Lola Lolita Land.",
thumb: "thumb11",
},
{
image: GalleryImg13,
alt: "DJ en el evento de Lola Lolita Land.",
thumb: "thumb12",
},
{
image: GalleryImg14,
alt: "DJ en el evento de Lola Lolita Land.",
thumb: "thumb13",
},
{
image: GalleryImg15,
alt: "Grupo de personas con tambores sobre un escenario.",
thumb: "thumb14",
},
{
image: GalleryImg16,
alt: "Grupo de personas con tambores sobre un escenario.",
thumb: "thumb15",
},
{
image: GalleryImg17,
alt: "Gente mirando hacia el escenario.",
thumb: "thumb16",
},
{
image: GalleryImg18,
alt: "Gente mirando hacia el escenario.",
thumb: "thumb17",
},
{
image: GalleryImg19,
alt: "Lola Lolita en un escenario cantando.",
thumb: "thumb18",
},
{
image: GalleryImg20,
alt: "Lola Lolita en un escenario bailando.",
thumb: "thumb19",
},
{
image: GalleryImg21,
alt: "Lola Lolita en un escenario bailando junto a Abraham Mateo cantando.",
thumb: "thumb20",
},
{
image: GalleryImg22,
alt: "Dos personas lanzando regalos al público.",
thumb: "thumb21",
},
{
image: GalleryImg23,
alt: "Lola Lolita dándose un abrazo con sus fans.",
thumb: "thumb22",
},
{ image: GalleryImg24, alt: "DJ en el evento.", thumb: "thumb23" },
{
image: GalleryImg25,
alt: "Gente de fiesta en el evento de Lola Lolita.",
thumb: "thumb24",
},
{
image: GalleryImg26,
alt: "Lola Lolita saliendo de una caja sorpresa.",
thumb: "thumb25",
},
{
image: GalleryImg27,
alt: "Gente sobre el escenario bailando y rapeando.",
thumb: "thumb26",
},
{
image: GalleryImg28,
alt: "Lola Lolita cantando y bailando junto a otras personas.",
thumb: "thumb27",
},
{ image: GalleryImg29, alt: "Lola Lolita Land.", thumb: "thumb28" },
{
image: GalleryImg30,
alt: "Lola Lolita cantando sobre un escenario con un traje azul.",
thumb: "thumb29",
},
{
image: GalleryImg31,
alt: "Lola Lolita celebrando junto a Carlos Baute.",
thumb: "thumb30",
},
{
image: GalleryImg32,
alt: "Lola Lolita tomándose una foto con un grupo de personas.",
thumb: "thumb31",
},
{
image: GalleryImg33,
alt: "Lola Índigo y otras dos chicas cantando y bailando sobre el escenario.",
thumb: "thumb32",
},
{
image: GalleryImg34,
alt: "Lola Índigo y otras dos chicas cantando y bailando sobre el escenario.",
thumb: "thumb33",
},
{
image: GalleryImg35,
alt: "Lola Índigo y otras dos chicas cantando y bailando sobre el escenario.",
thumb: "thumb34",
},
{
image: GalleryImg36,
alt: "El público mirando la coreografía de Lola Lolita junto a su grupo.",
thumb: "thumb35",
},
{ image: GalleryImg37, alt: "Imagen de la galería 37.", thumb: "thumb36" },
]
================================================
FILE: src/consts/geoJSONData.ts
================================================
import type { FeatureCollection, Geometry, GeoJsonProperties } from "geojson"
export const lolalolitalandGeoJSON: FeatureCollection = {
type: "FeatureCollection",
features: [
{
type: "Feature",
properties: {
name: "Aquopolis Villanueva de la Cañada",
amenity: "Parque Acuático",
popupContent: "Lolalolitaland",
},
geometry: {
coordinates: [
[
[-3.99076369718523, 40.45536289516917],
[-3.9903189790816214, 40.45554486964127],
[-3.990155158873449, 40.455574594431596],
[-3.9900581269040174, 40.4555765121593],
[-3.989746213601734, 40.45562017324792],
[-3.9891993962796732, 40.45577514093404],
[-3.9877151778341897, 40.4565245001821],
[-3.986617827976488, 40.45688371127795],
[-3.986762901959281, 40.45739742873948],
[-3.986874497331769, 40.458015158171435],
[-3.9871395363399245, 40.45832295937666],
[-3.9872399721744216, 40.45822531225053],
[-3.98763892562863, 40.458221066720256],
[-3.987895594983911, 40.458333573185996],
[-3.9883615793518743, 40.458009647005866],
[-3.9889269617388265, 40.458145917956614],
[-3.9890551384914943, 40.4581485899335],
[-3.989316473572501, 40.4581222396026],
[-3.9896014481069244, 40.458347573973214],
[-3.989959063207891, 40.458262542223935],
[-3.9901490462303855, 40.45801169793688],
[-3.9904675471792928, 40.45781187215661],
[-3.9911771896460095, 40.457905407701986],
[-3.9914006990829876, 40.45762054904381],
[-3.991830954751606, 40.45762054904381],
[-3.9919594726791843, 40.45739946387951],
[-3.9912386547409824, 40.45630253057408],
[-3.9908475132244234, 40.4562089927972],
[-3.990981618887105, 40.4558518473593],
[-3.990875451903719, 40.455826336897786],
[-3.990836337751716, 40.45589861651237],
[-3.9906072405783277, 40.45586460258619],
[-3.990646354730387, 40.45577531594671],
[-3.9908810396400725, 40.45557123175476],
[-3.99076369718523, 40.45536289516917],
],
],
type: "Polygon",
},
},
],
}
/**
* @type {GeoJSON.GeoJsonObject}
*/
export const potaBlavaGeoJSON: FeatureCollection = {
type: "FeatureCollection",
features: [
{
type: "Feature",
properties: {
name: "El Prat de Llobregat",
amenity: "Ciudad",
popupContent: "El Prat de Llobregat",
},
geometry: {
coordinates: [
[
[2.0945220342870527, 41.33458690034561],
[2.0847138915145536, 41.331468102419336],
[2.081260991679869, 41.32943896819731],
[2.0750558690643004, 41.32203576302666],
[2.0755562372234806, 41.32015665316527],
[2.080310170662699, 41.315308274548414],
[2.082662102693604, 41.31365447275482],
[2.0846137177570654, 41.31320342453546],
[2.092320172776084, 41.31218856656821],
[2.093220903020807, 41.3163606571309],
[2.0942717976104177, 41.31876607610627],
[2.0952225897980554, 41.319179499686044],
[2.0972242755620982, 41.319367415682706],
[2.0983251971485117, 41.31820231507206],
[2.09647364733749, 41.317300286831085],
[2.0974744877031526, 41.315721709910974],
[2.0983108585439822, 41.315862318781285],
[2.1006538515882767, 41.316724486417],
[2.104239102690798, 41.317362246919686],
[2.102879225001061, 41.31952810403456],
[2.1024426319370946, 41.32019650904729],
[2.1020899990773216, 41.32131890959104],
[2.1039539156197975, 41.3221007951754],
[2.1049950221570555, 41.322794395502854],
[2.105364447058065, 41.32256739984433],
[2.1080175895234277, 41.32522824370241],
[2.110737900153538, 41.326552319827016],
[2.11006621851638, 41.32806551673701],
[2.1088890598913395, 41.32946273622369],
[2.1069583312912243, 41.33144228403759],
[2.1048605204076125, 41.333491470875686],
[2.102502803751662, 41.33471816412478],
[2.0959865947252183, 41.33322661361933],
[2.0945220342870527, 41.33458690034561],
],
],
type: "Polygon",
},
},
],
}
================================================
FILE: src/consts/map-styles.js
================================================
export const MAP_STYLES =
[
{
"featureType": "all",
"elementType": "geometry.stroke",
"stylers": [
{
"visibility": "simplified"
}
]
},
{
"featureType": "administrative",
"elementType": "all",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "administrative",
"elementType": "labels",
"stylers": [
{
"visibility": "simplified"
},
{
"color": "#a31645"
}
]
},
{
"featureType": "landscape",
"elementType": "all",
"stylers": [
{
"weight": "3.79"
},
{
"visibility": "on"
},
{
"color": "#ffecf0"
}
]
},
{
"featureType": "landscape",
"elementType": "geometry",
"stylers": [
{
"visibility": "on"
}
]
},
{
"featureType": "landscape",
"elementType": "geometry.stroke",
"stylers": [
{
"visibility": "on"
}
]
},
{
"featureType": "poi",
"elementType": "all",
"stylers": [
{
"visibility": "simplified"
},
{
"color": "#a31645"
}
]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"saturation": "0"
},
{
"lightness": "0"
},
{
"visibility": "off"
}
]
},
{
"featureType": "poi",
"elementType": "geometry.stroke",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "poi.business",
"elementType": "all",
"stylers": [
{
"visibility": "simplified"
},
{
"color": "#d89ca8"
}
]
},
{
"featureType": "poi.business",
"elementType": "geometry",
"stylers": [
{
"visibility": "on"
}
]
},
{
"featureType": "poi.business",
"elementType": "geometry.fill",
"stylers": [
{
"visibility": "on"
},
{
"saturation": "0"
}
]
},
{
"featureType": "poi.business",
"elementType": "labels",
"stylers": [
{
"color": "#a31645"
}
]
},
{
"featureType": "poi.business",
"elementType": "labels.icon",
"stylers": [
{
"visibility": "simplified"
},
{
"lightness": "84"
}
]
},
{
"featureType": "road",
"elementType": "all",
"stylers": [
{
"saturation": -100
},
{
"lightness": 45
}
]
},
{
"featureType": "road.highway",
"elementType": "all",
"stylers": [
{
"visibility": "simplified"
}
]
},
{
"featureType": "road.arterial",
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "transit",
"elementType": "all",
"stylers": [
{
"visibility": "off"
}
]
},
{
"featureType": "water",
"elementType": "all",
"stylers": [
{
"color": "#d89ca8"
},
{
"visibility": "on"
}
]
},
{
"featureType": "water",
"elementType": "geometry.fill",
"stylers": [
{
"visibility": "on"
},
{
"color": "#fedce3"
}
]
},
{
"featureType": "water",
"elementType": "labels",
"stylers": [
{
"visibility": "off"
}
]
}
]
================================================
FILE: src/layouts/Layout.astro
================================================
---
import "@fontsource/poppins/400.css"
import "@fontsource/poppins/500.css"
import "@fontsource/poppins/600.css"
import "@fontsource/poppins/700.css"
import "@fontsource/poppins/900.css"
import Header from "@/components/Header.astro"
import BackToTop from "@/components/BackToTop.astro"
import "@/styles/global.css"
interface Props {
title?: string
}
const { title = "Lola Lolita Land · 14 y 15 de Junio en Aquopolis, Madrid" } = Astro.props
const preloadImg = "/images/hero.webp"
---
{title}
================================================
FILE: src/pages/404.astro
================================================
---
import Layout from "../layouts/Layout.astro"
import BubbleBackground from "../components/BubbleBackground.astro"
---
404
Página no encontrada
¡Hola! Lo sentimos, pero no pudimos encontrar lo que buscabas. Verifica que la dirección
URL sea correcta.
IR AL INICIO
================================================
FILE: src/pages/index.astro
================================================
---
import Layout from "@/layouts/Layout.astro"
import Hero from "@/sections/Hero.astro"
import Tickets from "@/sections/Tickets.astro"
import Map from "@/sections/Map.astro"
import Rides from "@/sections/Rides.astro"
import Gallery from "@/sections/Gallery.astro"
import FAQ from "@/sections/FAQ.astro"
import Footer from "@/sections/Footer.astro"
import Info from "@/sections/Info.astro"
import ComoLlegar from "@/sections/ComoLlegar.astro"
export const prerender = true
---
================================================
FILE: src/sections/ComoLlegar.astro
================================================
================================================
FILE: src/sections/FAQ.astro
================================================
---
// import FaqImage from "@/assets/images/faq.webp"
import FaqImage from "@/assets/images/gallery/gallery_04.webp"
import WaveSeparator from "@/components/WaveSeparator.astro"
import { Image } from "astro:assets"
---
¿Pueden ir menores de edad al evento?
Se prohíbe el acceso a los menores de 14 años que no vayan acompañados por un adulto
que se haga responsable de la custodia y comportamiento de los mismos.
¿Cuántos días va a durar?
Son dos días, el 14 y 15 de junio de 2025.
¿Dónde se celebra?
En el parque Aquopolis de Madrid, en Villanueva de la Cañada.
¿Asistirá Lola Lolita?
Sí, Lola Lolita estará allí con unas cuantas sorpresas.
¿Hay comida para celíacos, veganos y vegetarianos?
¡Por supuesto que sí! Hay opciones para todos los gustos y necesidades. ¡Nadie se
quedará sin disfrutar de este día!
================================================
FILE: src/sections/Footer.astro
================================================
---
import Sponsor from "@/components/Sponsor.astro"
import Instagram from "../../public/icons/instagram.svg"
import TikTok from "../../public/icons/tiktok.svg"
import InfoJobs from "../assets/infojobs.svg"
---
================================================
FILE: src/sections/Gallery.astro
================================================
---
import { galleryImages } from "@/consts/galleryImages"
import { Image } from "astro:assets"
import BubbleBackground from "@/components/BubbleBackground.astro"
import WaveSeparator from "@/components/WaveSeparator.astro"
---
¡Así fue el año pasado!
¡Así fue el año pasado!
Aquí tienes algunos recuerdos de la primera edición de Lola Lolita Land
{
galleryImages.map(({ image, alt, thumb }, index) => (
))
}
{
galleryImages.map(({ image, alt, thumb }, index) => (
))
}
Galería de imágenes de Lola Lolita Land
================================================
FILE: src/sections/Hero.astro
================================================
---
import DotBackground from "../components/DotBackground.astro"
---
================================================
FILE: src/sections/Info.astro
================================================
---
import { Image } from "astro:assets"
import CalendarImage from "@/assets/images/calendario.webp"
---
¿Estáis preparados para
pasar
dos días inolvidables ?
14 y 15 de junio
Apunta en tu calendario, porque LolaLolita Land abre sus puertas el 14 y 15 de junio
para darle la bienvenida al verano.
La experiencia más refrescante
Este año Lola Lolita Land se celebra en Aquopolis, Madrid, un parque acuático lleno de
toboganes y piscinas.
================================================
FILE: src/sections/Map.astro
================================================
---
import Uber from "@/assets/uber.webp"
import LeafletMap from "@/components/LeafletMap.astro"
import BubbleBackground from "@/components/BubbleBackground.astro"
import WaveSeparator from "@/components/WaveSeparator.astro"
import { lolalolitalandGeoJSON, potaBlavaGeoJSON } from "@/consts/geoJSONData.ts"
import { Image } from "astro:assets"
---
¡Nos vemos aquí!
OpenStreetMap`
geoJSON={[
{ data: lolalolitalandGeoJSON, color: "var(--color-primary)" },
{ data: potaBlavaGeoJSON, color: "green" },
]}
/>
Cómo llegar con
¿Primera vez con UBER Teens? ¡Tienes un 50% de descuento pillando tu viaje a Lola Lolita
land!
Código: UBER_X_LOLALOLITA
Te recogen en la entrada del Aquopolis. Más fácil, ¡ni hecho por nosotras!
{/* TRANSPORTE PÚBLICO */}
Llegar en transporte público
Coge el bus 627 desde Moncloa (nivel -1, isla 1) y en nada estás en el parque.
¿Vienes de fuera de Madrid?
Desde Atocha puedes pillar el bus 001 (¡gratis! ) hasta
Moncloa, o bajarte en metro directo al intercambiador.
{/* COCHE PROPIO */}
Cómo llegar en coche
M-600: conecta El Escorial con Brunete
M-501: une la M-40 / M-50 con la M-600
M-503: va desde Villanueva de la Cañada hasta la M-50 / Majadahonda
Y tranqui, ¡Aquopolis tiene parking!
Pon buena música, activa el GPS y... ¡nos vemos en Lola Lolita land!
================================================
FILE: src/sections/Rides.astro
================================================
================================================
FILE: src/sections/Tickets.astro
================================================
---
import Marquee from "@/components/Marquee.astro"
import SponsorsBar from "@/components/SponsorsBar.astro"
import Ticket from "public/icons/ticket.svg"
import Clock from "public/icons/clock.svg"
---
¡Gracias por asistir al evento! ¡Hasta el año que viene!
================================================
FILE: src/styles/global.css
================================================
@import "tailwindcss";
@plugin "@midudev/tailwind-animations";
@theme {
--color-primary-light: #ff99d1;
--color-primary: #ff0695;
--color-primary-dark: #a80060;
--color-theme-blue: #383acf;
--color-theme-blue-light: #66dfff;
--color-theme-cyan: #61e2e5;
--color-theme-green: #2b8364;
--color-theme-green-light: #98d354;
--font-special: "Amertha", sans-serif;
/* animations */
--animate-marquee: slide-left 10s linear infinite;
--animate-shiny: shiny 5s linear forwards infinite;
@keyframes slide-left {
0% {
transform: translateX(0);
}
100% {
transform: translateX(calc(-100% - 1rem));
}
}
@keyframes shiny {
from {
background-position: 0 0;
}
to {
background-position: -200% 0;
}
}
}
@layer {
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background-color: var(--color-primary-light);
border: 1px solid #fff;
border-radius: 3px;
}
::-webkit-scrollbar-thumb {
background-color: #ff0593a8;
border: 1px solid #fff;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background-color: var(--color-primary);
}
}
@font-face {
font-family: "Amertha";
src: url("/fonts/amertha.woff2") format("woff2");
font-weight: 400;
font-style: normal;
font-display: swap;
}
body {
font-family: "Poppins", sans-serif;
transition: background-color 1000ms;
}
.text-stroke {
-webkit-text-stroke: 0.1rem white;
}
================================================
FILE: tailwind.config.js
================================================
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
theme: {
extend: {
keyframes: {
shimmer: {
'0%': { backgroundPosition: '0% 0' },
'100%': { backgroundPosition: '200% 0' }
},
shine: {
'0%': { transform: 'translateX(-100%) rotate(30deg)' },
'100%': { transform: 'translateX(100%) rotate(30deg)' }
}
},
animation: {
shimmer: 'shimmer 3s linear infinite',
shine: 'shine 3s linear infinite'
},
rotate: {
'30': '30deg'
}
},
},
plugins: [],
}
================================================
FILE: tsconfig.json
================================================
{
"extends": "astro/tsconfigs/strict",
"include": [
".astro/types.d.ts",
"**/*"
],
"exclude": [
"dist"
],
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": [
"./src/*"
]
}
}
}