Font changes & adjustments in size, remove jenkins file & less tasks to runners.
All checks were successful
Deploy NPM app / Deploy NPM (push) Successful in 53s

This commit is contained in:
Antoni Nuñez Romeu
2026-03-19 18:16:44 +01:00
parent ba4e76058e
commit 445e1570b4
17 changed files with 84 additions and 79 deletions

View File

@@ -8,8 +8,6 @@ jobs:
steps:
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: SSH to remote server
uses: appleboy/ssh-action@v1.0.3
with:
@@ -20,7 +18,6 @@ jobs:
script: |
cd /home/zouklambadabcn.com/public_html/
git pull
npm install
npm run build
pm2 restart ZLB
- run: echo "🍏 This job's status is ${{ job.status }}."

54
Jenkinsfile vendored
View File

@@ -1,54 +0,0 @@
pipeline {
agent any
environment {
REMOTE_HOST = '192.168.1.102'
REMOTE_DIR = '/home/zouklambadabcn.com/public_html'
PM2_APP = 'ZLB'
// Name of Jenkins Credentials (Username with private key) to SSH
SSH_CREDS = 'root_ssh' // <-- configure this in Jenkins Credentials
}
options {
timestamps()
}
stages {
stage('Deploy over SSH') {
steps {
script {
// Validate Jenkins has the required credential
withCredentials([sshUserPrivateKey(credentialsId: env.SSH_CREDS, keyFileVariable: 'SSH_KEY', usernameVariable: 'SSH_USER')]) {
// Build the remote command to run
def remoteCmd = """
set -e
cd "${env.REMOTE_DIR}"
git pull
npm install
npm run build
pm2 restart ${env.PM2_APP}
""".stripIndent()
// SSH options for non-interactive, secure connection
def sshOpts = '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes'
// Execute remote command via ssh
sh label: 'Run remote deployment', script: "ssh -i \"${SSH_KEY}\" ${sshOpts} \"${SSH_USER}@${REMOTE_HOST}\" 'bash -lc '\''" + remoteCmd.replace("'", "'\''") + "'\'' '"
}
}
}
}
}
post {
success {
echo 'Deployment completed successfully.'
}
failure {
echo 'Deployment failed.'
}
always {
cleanWs(deleteDirs: true, notFailBuild: true)
}
}
}

View File

@@ -30,7 +30,7 @@ const AboutSection = () => (
viewport={{ once: false, amount: 0.15 }}
transition={{ duration: 0.6 }}
>
<h2 className="font-display text-4xl md:text-5xl font-bold mb-6 text-gradient">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-6 leading-normal mb-6 text-gradient">
{ABOUT_EVENT.title}
</h2>
<p className="text-muted-foreground mb-6 leading-relaxed whitespace-pre-line">

View File

@@ -161,7 +161,7 @@ const BookingSection = () => {
className="max-w-lg mx-auto text-center bg-card rounded-2xl p-10 shadow-elevated"
>
<CheckCircle className="w-16 h-16 text-primary mx-auto mb-4" />
<h3 className="font-display text-2xl font-bold text-foreground mb-2">
<h3 className="font-display text-4xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-2">
¡Reserva recibida!
</h3>
<p className="text-muted-foreground">
@@ -186,7 +186,7 @@ const BookingSection = () => {
viewport={{ once: false, amount: 0.15 }}
className="text-center mb-10"
>
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-4">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-10 leading-[1.8] text-gradient">
Reserva tu pase
</h2>
<p className="text-muted-foreground">

View File

@@ -17,7 +17,7 @@ const FooterSection = () => (
<div className="grid md:grid-cols-3 gap-8 mb-8">
{/* Brand */}
<div>
<h3 className="font-display text-2xl font-bold mb-3">ZoukLambadaBCN</h3>
<h3 className="font-display text-5xl pt-3 pb-6 leading-[1.6] font-bold mb-2">ZoukLambadaBCN</h3>
<p className="text-primary-foreground/70 text-sm">
<img src={hacecalor} alt="Hacecalor" className="inline-block w-auto h-12 mr-1" />
<img src={activat} alt="Activat" className="inline-block w-auto h-12 mr-1" />
@@ -26,7 +26,7 @@ const FooterSection = () => (
{/* Contacto */}
<div>
<h4 className="font-display text-lg font-semibold mb-3">Contacto</h4>
<h4 className="font-display text-3xl pt-3 pb-5 leading-[1.6] font-semibold mb-2">Contacto</h4>
<a
href={`mailto:${FOOTER.email}`}
className="flex items-center gap-2 text-sm text-primary-foreground/70 hover:text-primary transition-colors"
@@ -38,7 +38,7 @@ const FooterSection = () => (
{/* Redes */}
<div>
<h4 className="font-display text-lg font-semibold mb-3">Síguenos</h4>
<h4 className="font-display text-3xl pt-3 pb-5 leading-[1.6] font-semibold mb-2">Síguenos</h4>
<div className="flex gap-3">
{ABOUT_ORG.socials.instagram && (
<a href={ABOUT_ORG.socials.instagram} target="_blank" rel="noopener noreferrer" aria-label="Instagram"

View File

@@ -15,7 +15,7 @@ const GallerySection = () => (
viewport={{ once: false, amount: 0.15 }}
className="text-center mb-12"
>
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-4">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-10 leading-[1.8] text-gradient">
Galería
</h2>
</motion.div>

View File

@@ -60,7 +60,7 @@ const HeroSection = () => {
initial={{ opacity: 0, y: 30 }}
animate={{ opacity: 1, y: 0 }}
transition={{ delay: 0.4 }}
className="font-display text-5xl md:text-7xl lg:text-8xl font-bold text-primary-foreground mb-4 leading-tight"
className="font-hero text-5xl md:text-7xl lg:text-8xl font-black text-primary-foreground mb-4 leading-tight"
>
{EVENT_INFO.name}
</motion.h1>
@@ -84,7 +84,7 @@ const HeroSection = () => {
{countdownItems.map((item) => (
<div key={item.label} className="text-center">
<div className="bg-primary-foreground/10 backdrop-blur-sm border border-primary-foreground/20 rounded-lg px-4 py-3 md:px-6 md:py-4 min-w-[60px] md:min-w-[80px]">
<span className="text-2xl md:text-4xl font-display font-bold text-primary-foreground">
<span className="text-2xl md:text-4xl font-hero font-bold text-primary-foreground">
{String(item.value).padStart(2, "0")}
</span>
</div>

View File

@@ -16,7 +16,7 @@ const HotelSection = () => (
viewport={{ once: false, amount: 0.15 }}
className="text-center mb-12"
>
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-4">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-10 leading-[1.8] text-gradient">
Alojamiento
</h2>
<p className="text-muted-foreground max-w-2xl mx-auto">
@@ -44,7 +44,7 @@ const HotelSection = () => (
</div>
<div className="p-5">
<h3 className="font-display text-lg font-bold text-foreground mb-1">
<h3 className="font-display text-3xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-1">
{room.name}
</h3>
<p className="text-primary font-bold text-xl mb-2">{room.price}</p>

View File

@@ -83,7 +83,7 @@ const Navbar = () => {
exit={{ opacity: 0, y: 30 }}
transition={{ delay: 0.1 * i }}
onClick={() => setMenuOpen(false)}
className="text-3xl font-display font-medium text-foreground hover:text-primary transition-colors"
className="text-5xl pt-3 pb-6 leading-[1.6] font-display font-medium text-foreground hover:text-primary transition-colors"
>
{link.label}
</motion.a>

View File

@@ -19,7 +19,7 @@ const OrgSection = () => (
viewport={{ once: false, amount: 0.15 }}
transition={{ duration: 0.6 }}
>
<h2 className="font-display text-4xl md:text-5xl font-bold mb-6 text-gradient">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-6 leading-normal mb-6 text-gradient">
{ABOUT_ORG.title}
</h2>
<div className="space-y-4 text-muted-foreground leading-relaxed">

View File

@@ -15,7 +15,7 @@ const PracticalSection = () => (
viewport={{ once: false, amount: 0.15 }}
className="text-center mb-12"
>
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-4">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-6 leading-normal text-gradient mb-4">
Información Práctica
</h2>
</motion.div>
@@ -57,7 +57,7 @@ const PracticalSection = () => (
>
{/* Aeropuertos */}
<div>
<h3 className="font-display text-xl font-bold text-foreground mb-4 flex items-center gap-2">
<h3 className="font-display text-4xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-2 flex items-center gap-2">
<Plane className="w-5 h-5 text-primary" /> Aeropuertos Cercanos
</h3>
<div className="space-y-3">
@@ -72,7 +72,7 @@ const PracticalSection = () => (
{/* Cómo llegar */}
<div>
<h3 className="font-display text-xl font-bold text-foreground mb-4 flex items-center gap-2">
<h3 className="font-display text-4xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-2 flex items-center gap-2">
<Train className="w-5 h-5 text-primary" /> Cómo Llegar
</h3>
<div className="space-y-3">

View File

@@ -29,7 +29,7 @@ const ScheduleSection = () => (
viewport={{ once: false, amount: 0.15 }}
className="text-center mb-12"
>
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-4">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-10 leading-[1.8] text-gradient">
Programa
</h2>
<p className="text-muted-foreground max-w-2xl mx-auto">
@@ -46,7 +46,7 @@ const ScheduleSection = () => (
viewport={{ once: false, amount: 0.15 }}
transition={{ delay: di * 0.15 }}
>
<h3 className="font-display text-xl font-bold text-foreground mb-6 pb-3 border-b-2 border-primary">
<h3 className="font-display text-4xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-4 pb-3 border-b-2 border-primary">
{day.day}
</h3>
<div className="space-y-3">

View File

@@ -40,7 +40,7 @@ const StaffSection = () => {
className="flex items-end justify-between gap-4 mb-6 md:mb-8"
>
<div className="text-center md:text-left w-full">
<h2 className="font-display text-4xl md:text-5xl font-bold text-gradient mb-2">
<h2 className="font-display text-6xl md:text-7xl font-bold pt-4 pb-6 leading-normal text-gradient mb-2">
Staff del Evento
</h2>
<p className="text-muted-foreground max-w-2xl mx-auto md:mx-0">
@@ -110,7 +110,7 @@ const StaffSection = () => {
{member.role}
</span>
<h3 className="font-display text-lg font-bold text-foreground mb-2">
<h3 className="font-display text-3xl pt-3 pb-5 leading-[1.6] font-bold text-foreground mb-1">
{member.name}
</h3>
<p className="text-sm text-muted-foreground mb-4">

View File

@@ -1,4 +1,4 @@
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700;800&family=Inter:wght@300;400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;700;800&family=Pacifico&family=Inter:wght@300;400;500;600;700&display=swap');
@tailwind base;
@tailwind components;
@@ -120,6 +120,9 @@
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
padding-bottom: 0.3em; /* Prevents descenders like j, g, p from being clipped! */
margin-bottom: -0.3em;
line-height: normal;
}
/* Tropical gradient background */

View File

@@ -14,7 +14,8 @@ export default {
},
extend: {
fontFamily: {
display: ['"Noto"', "system-ui", "sans-serif"],
display: ['"Pacifico"', "cursive"],
hero: ['"Noto Sans"', "sans-serif"],
body: ['"Inter"', "system-ui", "sans-serif"],
},
colors: {

35
update_sizes.mjs Normal file
View File

@@ -0,0 +1,35 @@
import fs from 'fs';
import path from 'path';
const dir = 'src/components';
const files = fs.readdirSync(dir).filter(f => f.endsWith('.tsx'));
for (const file of files) {
if (file === 'HeroSection.tsx') continue;
const filePath = path.join(dir, file);
let content = fs.readFileSync(filePath, 'utf8');
let original = content;
// For main H2s
content = content.replaceAll('text-4xl md:text-5xl font-bold', 'text-5xl md:text-6xl font-bold py-2 leading-[1.3] pb-4');
// For smaller H2s/H3s
content = content.replaceAll('text-lg font-bold text-foreground mb-2', 'text-2xl py-2 leading-relaxed font-bold text-foreground mb-1');
content = content.replaceAll('text-xl font-bold text-foreground mb-6', 'text-3xl py-2 leading-relaxed font-bold text-foreground mb-4');
content = content.replaceAll('text-lg font-bold text-foreground mb-1', 'text-2xl py-2 leading-relaxed font-bold text-foreground mb-1');
content = content.replaceAll('text-xl font-bold text-foreground mb-4', 'text-3xl py-2 leading-relaxed font-bold text-foreground mb-2');
content = content.replaceAll('text-2xl font-bold text-foreground mb-2', 'text-3xl py-2 leading-relaxed font-bold text-foreground mb-2');
// Footer H3/H4
content = content.replaceAll('text-2xl font-bold mb-3', 'text-4xl py-2 leading-relaxed font-bold mb-2');
content = content.replaceAll('text-lg font-semibold mb-3', 'text-2xl py-2 leading-relaxed font-semibold mb-2');
// Navbar
content = content.replaceAll('text-3xl font-display font-medium', 'text-4xl py-2 leading-relaxed font-display font-medium');
if (original !== content) {
fs.writeFileSync(filePath, content);
console.log(`Updated sizes in ${file}`);
}
}

23
update_sizes_2.mjs Normal file
View File

@@ -0,0 +1,23 @@
import fs from 'fs';
import path from 'path';
const dir = 'src/components';
const files = fs.readdirSync(dir).filter(f => f.endsWith('.tsx'));
for (const file of files) {
if (file === 'HeroSection.tsx') continue;
const filePath = path.join(dir, file);
let content = fs.readFileSync(filePath, 'utf8');
let original = content;
content = content.replaceAll('text-5xl md:text-6xl font-bold py-2 leading-[1.3] pb-4', 'text-6xl md:text-7xl font-bold pt-4 pb-6 leading-normal');
content = content.replaceAll('text-3xl py-2 leading-relaxed', 'text-4xl pt-3 pb-5 leading-[1.6]');
content = content.replaceAll('text-2xl py-2 leading-relaxed', 'text-3xl pt-3 pb-5 leading-[1.6]');
content = content.replaceAll('text-4xl py-2 leading-relaxed', 'text-5xl pt-3 pb-6 leading-[1.6]');
if (original !== content) {
fs.writeFileSync(filePath, content);
console.log(`Updated sizes in ${file}`);
}
}