Skip to content

Commit e77a053

Browse files
author
Daveed
committed
Esqueleto del contenido y páginas
1 parent 79b91ae commit e77a053

File tree

9 files changed

+1081
-142
lines changed

9 files changed

+1081
-142
lines changed

src/components/navbar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const Navbar = () => {
2323
</a>
2424
<ul className="dropdown-menu" aria-labelledby="pagesExample">
2525
<li><a className="dropdown-item" href="/astro-ecommerce/landing/">Landing Page</a></li>
26-
<li><a className="dropdown-item" href="/astro-ecommerce/product/">Product Page</a></li>
26+
<li><a className="dropdown-item" href="/astro-ecommerce/servicios/">Product Page</a></li>
2727
<li><a className="dropdown-item" href="/astro-ecommerce/shopping-cart/">Shopping Cart</a></li>
2828
</ul>
2929
</li>

src/components/simpleFooter.tsx

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
import React from 'react';
2+
3+
interface SimpleFooterProps {
4+
store?: any;
5+
}
6+
7+
const SimpleFooter: React.FC<SimpleFooterProps> = ({ store = {} }) => {
8+
const currentYear = new Date().getFullYear();
9+
10+
// Extract store information with fallbacks
11+
const storeName = store?.title || "Markkët Express";
12+
const storeDescription = store?.Description || "Tu tienda online de confianza";
13+
const storeSettings = store?.settings || {};
14+
const storeMeta = storeSettings?.meta || {};
15+
const storeContact = { email: store?.settings?.support_email };
16+
const storeSocial = storeMeta?.social || {};
17+
18+
return (
19+
<footer className="bg-dark text-light py-5 mt-5">
20+
<div className="container">
21+
<div className="row">
22+
{/* Store Info */}
23+
<div className="col-md-4 mb-4">
24+
<h5 className="fw-bold mb-3">{storeName}</h5>
25+
<p className="text-light opacity-75">{storeDescription}</p>
26+
<div className="d-flex gap-3">
27+
{storeSocial?.facebook && (
28+
<a href={storeSocial.facebook} className="text-light" target="_blank" rel="noopener noreferrer">
29+
<i className="bi bi-facebook fs-5"></i>
30+
</a>
31+
)}
32+
{storeSocial?.instagram && (
33+
<a href={storeSocial.instagram} className="text-light" target="_blank" rel="noopener noreferrer">
34+
<i className="bi bi-instagram fs-5"></i>
35+
</a>
36+
)}
37+
{storeSocial?.twitter && (
38+
<a href={storeSocial.twitter} className="text-light" target="_blank" rel="noopener noreferrer">
39+
<i className="bi bi-twitter fs-5"></i>
40+
</a>
41+
)}
42+
{/* Fallback social links if no store social data */}
43+
{!storeSocial?.facebook && !storeSocial?.instagram && !storeSocial?.twitter && (
44+
<>
45+
<a href="#" className="text-light">
46+
<i className="bi bi-facebook fs-5"></i>
47+
</a>
48+
<a href="#" className="text-light">
49+
<i className="bi bi-instagram fs-5"></i>
50+
</a>
51+
<a href="#" className="text-light">
52+
<i className="bi bi-twitter fs-5"></i>
53+
</a>
54+
</>
55+
)}
56+
</div>
57+
</div>
58+
59+
{/* Quick Links */}
60+
<div className="col-md-2 mb-4">
61+
<h6 className="fw-bold mb-3 text-white">Enlaces</h6>
62+
<ul className="list-unstyled">
63+
<li><a href="/" className="text-light text-decoration-none opacity-75 hover-opacity-100">Inicio</a></li>
64+
<li><a href="/servicios" className="text-light text-decoration-none opacity-75 hover-opacity-100">Servicios</a></li>
65+
<li><a href="/blog" className="text-light text-decoration-none opacity-75 hover-opacity-100">Blog</a></li>
66+
<li><a href="/about" className="text-light text-decoration-none opacity-75 hover-opacity-100">Acerca de</a></li>
67+
</ul>
68+
</div>
69+
70+
{/* Support */}
71+
<div className="col-md-2 mb-4">
72+
<h6 className="fw-bold mb-3 text-white">Soporte</h6>
73+
<ul className="list-unstyled">
74+
<li><a href="/contact" className="text-light text-decoration-none opacity-75 hover-opacity-100">Contacto</a></li>
75+
<li><a href="/help" className="text-light text-decoration-none opacity-75 hover-opacity-100">Ayuda</a></li>
76+
<li><a href="/terms" className="text-light text-decoration-none opacity-75 hover-opacity-100">Términos</a></li>
77+
<li><a href="/privacy" className="text-light text-decoration-none opacity-75 hover-opacity-100">Privacidad</a></li>
78+
</ul>
79+
</div>
80+
81+
{/* Contact Info */}
82+
<div className="col-md-4 mb-4">
83+
<h6 className="fw-bold mb-3 text-white">Contacto</h6>
84+
<div className="text-light opacity-75">
85+
<div className="mb-2">
86+
<i className="bi bi-envelope me-2"></i>
87+
{storeContact?.email || "info@markketexpress.com"}
88+
</div>
89+
<div className="mb-2">
90+
<i className="bi bi-phone me-2"></i>
91+
{storeContact?.phone || "+1 (555) 123-4567"}
92+
</div>
93+
<div>
94+
<i className="bi bi-geo-alt me-2"></i>
95+
{storeContact?.address || "Ciudad, País"}
96+
</div>
97+
</div>
98+
</div>
99+
</div>
100+
101+
<hr className="my-4 border-light opacity-25" />
102+
103+
{/* Copyright */}
104+
<div className="row">
105+
<div className="col-12 text-center">
106+
<p className="text-light opacity-75 mb-0">
107+
© {currentYear} {storeName}. Todos los derechos reservados.
108+
<span className="ms-2">
109+
Desarrollado con <i className="bi bi-heart-fill text-danger"></i> usando Astro
110+
</span>
111+
</p>
112+
</div>
113+
</div>
114+
</div>
115+
</footer>
116+
);
117+
};
118+
119+
export default SimpleFooter;

src/components/simpleNavbar.tsx

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import React from 'react';
2+
3+
interface SimpleNavbarProps {
4+
storeName?: string;
5+
storeLogo?: string;
6+
}
7+
8+
const SimpleNavbar: React.FC<SimpleNavbarProps> = ({ storeName = "Markkët Express", storeLogo }) => {
9+
return (
10+
<nav className="navbar navbar-expand-lg navbar-light bg-white shadow-sm">
11+
<div className="container">
12+
{/* Logo/Brand */}
13+
<a className="navbar-brand d-flex align-items-center" href="/">
14+
{storeLogo && (
15+
<img
16+
src={storeLogo}
17+
alt={`${storeName} Logo`}
18+
height="40"
19+
className="me-2"
20+
style={{ objectFit: 'contain' }}
21+
/>
22+
)}
23+
<span className="fw-bold fs-4">{storeName}</span>
24+
</a>
25+
26+
{/* Mobile toggle */}
27+
<button
28+
className="navbar-toggler"
29+
type="button"
30+
data-bs-toggle="collapse"
31+
data-bs-target="#navbarNav"
32+
aria-controls="navbarNav"
33+
aria-expanded="false"
34+
aria-label="Toggle navigation"
35+
>
36+
<span className="navbar-toggler-icon"></span>
37+
</button>
38+
39+
{/* Navigation Links */}
40+
<div className="collapse navbar-collapse" id="navbarNav">
41+
<ul className="navbar-nav ms-auto">
42+
<li className="nav-item">
43+
<a className="nav-link" href="/">
44+
<i className="bi bi-house me-1"></i>
45+
Inicio
46+
</a>
47+
</li>
48+
<li className="nav-item">
49+
<a className="nav-link" href="/servicios">
50+
<i className="bi bi-briefcase me-1"></i>
51+
Servicios
52+
</a>
53+
</li>
54+
<li className="nav-item">
55+
<a className="nav-link" href="/blog">
56+
<i className="bi bi-journal-text me-1"></i>
57+
Blog
58+
</a>
59+
</li>
60+
<li className="nav-item">
61+
<a className="nav-link" href="/about">
62+
<i className="bi bi-info-circle me-1"></i>
63+
Acerca de
64+
</a>
65+
</li>
66+
<li className="nav-item">
67+
<a className="nav-link" href="/contact">
68+
<i className="bi bi-envelope me-1"></i>
69+
Contacto
70+
</a>
71+
</li>
72+
</ul>
73+
</div>
74+
</div>
75+
</nav>
76+
);
77+
};
78+
79+
export default SimpleNavbar;

src/layouts/Layout.astro

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const { title, canonical, description, keywords, author, ogImage, favicon } =
1919
---
2020

2121
<!doctype html>
22-
<html lang="en">
22+
<html lang="es">
2323
<head>
2424
<meta charset="UTF-8" />
2525
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@@ -54,17 +54,20 @@ const { title, canonical, description, keywords, author, ogImage, favicon } =
5454
href={favicon || `${import.meta.env.BASE_URL}favicon.svg`}
5555
/>
5656

57-
<!-- Fonts -->
57+
<!-- Bootstrap CSS -->
5858
<link
59-
href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|Noto+Sans:300,400,500,600,700,800|PT+Mono:300,400,500,600,700"
59+
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
6060
rel="stylesheet"
61+
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
62+
crossorigin="anonymous"
6163
/>
6264

6365
<!-- Bootstrap Icons -->
6466
<link
6567
rel="stylesheet"
6668
href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"
6769
/>
70+
6871
<!-- Head Scripts from Store Settings -->
6972
{
7073
store?.settings?.meta?.head_scripts?.map(
@@ -80,27 +83,13 @@ const { title, canonical, description, keywords, author, ogImage, favicon } =
8083
</head>
8184
<body>
8285
<slot />
83-
</body><!-- Bootstrap JavaScript Bundle with Popper -->
84-
<script
85-
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
86-
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
87-
crossorigin="anonymous"
88-
></script>
89-
<!-- Product JavaScript -->
90-
<script>
91-
import "/assets/js/astro-ecommerce.js";
92-
</script>
86+
87+
<!-- Bootstrap JavaScript Bundle with Popper -->
88+
<script
89+
src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
90+
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
91+
crossorigin="anonymous"
92+
>
93+
</script>
94+
</body>
9395
</html>
94-
<style is:global>
95-
code {
96-
font-family:
97-
Menlo,
98-
Monaco,
99-
Lucida Console,
100-
Liberation Mono,
101-
DejaVu Sans Mono,
102-
Bitstream Vera Sans Mono,
103-
Courier New,
104-
monospace;
105-
}
106-
</style>

0 commit comments

Comments
 (0)