diff --git a/public/svg/EntGamers.svg b/public/svg/EntGamers.svg
new file mode 100644
index 0000000..a5a3b17
--- /dev/null
+++ b/public/svg/EntGamers.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/svg/bsky.svg b/public/svg/bsky.svg
new file mode 100644
index 0000000..b60d51c
--- /dev/null
+++ b/public/svg/bsky.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/public/svg/comment-text.svg b/public/svg/comment-text.svg
new file mode 100644
index 0000000..debcbf5
--- /dev/null
+++ b/public/svg/comment-text.svg
@@ -0,0 +1,37 @@
+
+
diff --git a/public/svg/twitch.svg b/public/svg/twitch.svg
new file mode 100644
index 0000000..2d3d5d4
--- /dev/null
+++ b/public/svg/twitch.svg
@@ -0,0 +1,37 @@
+
+
diff --git a/public/svg/twitter.svg b/public/svg/twitter.svg
new file mode 100644
index 0000000..060e2ee
--- /dev/null
+++ b/public/svg/twitter.svg
@@ -0,0 +1,37 @@
+
+
diff --git a/public/svg/youtube.svg b/public/svg/youtube.svg
new file mode 100644
index 0000000..503da80
--- /dev/null
+++ b/public/svg/youtube.svg
@@ -0,0 +1,37 @@
+
+
diff --git a/src/components/SrJuggernautLogo.astro b/src/components/SrJuggernautLogo.astro
new file mode 100644
index 0000000..3ceab93
--- /dev/null
+++ b/src/components/SrJuggernautLogo.astro
@@ -0,0 +1,73 @@
+---
+export interface Props {
+ width?: number
+ height?: number
+ className?: string
+}
+
+const { width = 600, height = 600, className } = Astro.props
+---
+
+
diff --git a/src/components/layout/Landing.astro b/src/components/layout/Landing.astro
new file mode 100644
index 0000000..486590a
--- /dev/null
+++ b/src/components/layout/Landing.astro
@@ -0,0 +1,41 @@
+---
+export interface Props {
+ title?: string
+ description?: string
+ imageUrl?: string
+}
+
+const { title, description, imageUrl } = Astro.props
+const permalink = new URL(Astro.url.pathname, Astro.site).href
+const seoTitle =
+ title === undefined ? 'Juggernaut Plays' : `${title} | Juggernaut Plays`
+const seoDescription =
+ description === undefined
+ ? 'Oops, parece que no hay descripción.'
+ : description
+const seoImage =
+ imageUrl === undefined ? 'https://srjuggernaut.dev/DefaultOG.png' : imageUrl
+---
+
+
+
+
+
+
+
+
+
+ {seoTitle}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/pages/Home/Hero.astro b/src/components/pages/Home/Hero.astro
new file mode 100644
index 0000000..6afde78
--- /dev/null
+++ b/src/components/pages/Home/Hero.astro
@@ -0,0 +1,55 @@
+---
+import { css } from '@styled-system/css'
+import SrJuggernautLogo from '@/components/SrJuggernautLogo.astro'
+
+const heroSectionClass = css({
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ justifyContent: 'center',
+ minHeight: '50vh',
+ background:
+ 'linear-gradient(172deg, {colors.neutral.3} 0%, {colors.neutral.1} 78%)'
+})
+
+const heroContainerClass = css({
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ justifyContent: 'center',
+ gap: 'sm'
+})
+
+const heroLogoClass = css({
+ fill: 'neutral.12',
+ width: {
+ base: '100%',
+ sm: 'breakpoint-sm'
+ },
+ height: '100%'
+})
+
+const heroTitleClass = css({
+ fontFamily: 'orbitron',
+ fontSize: 'calc(2rem + 2vw)',
+ textAlign: 'center',
+ fontWeight: '900',
+ color: 'neutral.12'
+})
+
+const heroDescriptionClass = css({
+ color: 'neutral.11',
+ textAlign: 'center',
+ fontSize: 'large'
+})
+---
+
+
+
+
+
Juggernaut Plays
+
+ A veces hago cosas en internet, luego hablo de ellas.
+
+
+
diff --git a/src/components/pages/Home/Links.astro b/src/components/pages/Home/Links.astro
new file mode 100644
index 0000000..24efdbd
--- /dev/null
+++ b/src/components/pages/Home/Links.astro
@@ -0,0 +1,213 @@
+---
+import { css, cx } from '@styled-system/css'
+import { flex } from '@styled-system/patterns'
+import { button, details } from '@styled-system/recipes'
+import { srOnlyClass } from '@/styles/srOnly'
+
+const linksSectionClass = css({
+ display: 'flex',
+ alignItems: 'center',
+ justifyContent: 'center',
+ gap: 'md',
+ padding: 'md',
+ minHeight: '35vh'
+})
+
+const linksContainerClass = css({
+ margin: '0 auto',
+ width: {
+ base: '100%',
+ sm: 'breakpoint-sm',
+ md: 'breakpoint-md',
+ lg: 'breakpoint-lg',
+ xl: 'breakpoint-xl',
+ '2xl': 'breakpoint-2xl'
+ }
+})
+
+const linksCollectionClass = flex({ flexDirection: 'column', gap: 'md' })
+
+const linksGridClass = css({
+ display: 'grid',
+ gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))',
+ gap: 'md'
+})
+
+const detailsClasses = details({ color: 'neutral' })
+
+const detailsDetailsClass = cx(
+ detailsClasses.details,
+ css({
+ '&:is([open])': {
+ '& summary': {
+ flexDirection: 'column',
+ alignItems: 'center',
+ '& img': {
+ width: '75px'
+ },
+ '& a': {
+ opacity: 0,
+ display: 'none'
+ }
+ }
+ },
+ '&:not([open])': {
+ '& summary': {
+ flexDirection: 'row',
+ alignItems: 'center',
+ '& img': {
+ width: '1.75em'
+ },
+ '& a': {
+ opacity: 1,
+ display: 'inline-block'
+ }
+ }
+ }
+ })
+)
+
+const detailsTitleClass = css({
+ textAlign: 'center'
+})
+
+const detailsSummaryClass = cx(
+ css({
+ display: 'flex',
+ justifyContent: 'space-between',
+ flexDirection: 'row',
+ alignItems: 'center',
+ gap: 'sm',
+ transitionProperty: 'all',
+ transitionDuration: 'fast',
+ transitionTimingFunction: 'easeOutQuint',
+ transitionBehavior: 'allow-discrete',
+ '& img': {
+ width: '1.75em',
+ transitionProperty: 'width, height',
+ transitionDuration: 'normal',
+ transitionTimingFunction: 'easeOutQuint',
+ transitionBehavior: 'allow-discrete'
+ },
+ '& a': {
+ transitionProperty: 'display, opacity',
+ transitionDuration: '0',
+ transitionTimingFunction: 'easeOutQuint',
+ transitionBehavior: 'allow-discrete'
+ },
+ '& h3': {
+ transitionProperty: 'all',
+ transitionDuration: 'normal',
+ transitionTimingFunction: 'easeOutQuint',
+ transitionBehavior: 'allow-discrete'
+ }
+ }),
+ detailsClasses.summary
+)
+
+interface Link {
+ linkIconUrl?: string
+ label: string
+ url: string
+ description: string
+}
+
+interface LinkCollection {
+ title: string
+ links: Link[]
+}
+
+const links: LinkCollection[] = [
+ {
+ title: 'Proyectos',
+ links: [
+ {
+ label: 'Blog',
+ url: 'https://blog.juggernautplays.com',
+ description:
+ 'Me gusta escribir sobre las cosa con las que "juego", hablo sobre herramientas para creación de contenido y recientemente sobre IA.',
+ linkIconUrl: '/favicon.svg'
+ },
+ {
+ label: 'EntGamers',
+ url: 'https://entgamers.pro',
+ description: 'Comunidad de Gamers para Gamers.',
+ linkIconUrl: '/svg/EntGamers.svg'
+ }
+ ]
+ },
+ {
+ title: 'Redes Sociales',
+ links: [
+ {
+ label: 'Twitch',
+ url: 'https://www.twitch.tv/juggernautplays',
+ description:
+ 'Mi Canal de Twitch. Hago Streamings de Juegos sobre todo.',
+ linkIconUrl: '/svg/twitch.svg'
+ },
+ {
+ label: 'YouTube',
+ url: 'https://www.youtube.com/JuggernautPlays',
+ description:
+ 'Mi Canal de YouTube. Si les soy sincero, ha visto tiempos mejores. Ahora no estoy muy activo, pero me gustaría seguir creando contenido.',
+ linkIconUrl: '/svg/youtube.svg'
+ },
+ {
+ linkIconUrl: '/svg/bsky.svg',
+ label: 'BlueSky',
+ url: 'https://bsky.app/profile/jugger.srjuggernaut.dev',
+ description:
+ 'Mi Perfil en BlueSky. No publico mucho, pero puedes encontrarme ahí.'
+ },
+ {
+ label: 'Twitter',
+ url: 'https://twitter.com/juggernautplays',
+ description:
+ 'Mi cuenta de Twitter. Hago Streamings de Juegos sobre todo.',
+ linkIconUrl: '/svg/twitter.svg'
+ }
+ ]
+ }
+]
+---
+
+
+
+
Links
+ {links.map((linkCollection) => (
+
+
{linkCollection.title}
+
+ {linkCollection.links.map((link) => (
+
+
+ {(link.linkIconUrl !== undefined && link.linkIconUrl !== '') &&
}
+
+ {link.label}
+
+
+
+
+ Visitar
+
+
+
+
+
+ {link.description}
+
+
+
+
+ ))}
+
+
+ ))}
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
index c23d6ea..444d079 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -5,18 +5,15 @@ import '@fontsource/orbitron/900.css'
import '@fortawesome/fontawesome-free/css/fontawesome.min.css'
import '@fortawesome/fontawesome-free/css/solid.min.css'
import '@fortawesome/fontawesome-free/css/brands.min.css'
+import Landing from '@/components/layout/Landing.astro'
+import Hero from '@/components/pages/Home/Hero.astro'
+import Links from '@/components/pages/Home/Links.astro'
---
-
-
-
-
-
-
-
- Astro
-
-
- Astro
-
-
+
+
+
+