diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..643577d
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,9 @@
+
+
+# This is NOT the Next.js you know
+
+This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices.
+
+This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean.
+
+
diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..43c994c
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1 @@
+@AGENTS.md
diff --git a/components.json b/components.json
new file mode 100644
index 0000000..38c51b4
--- /dev/null
+++ b/components.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "default",
+ "rsc": true,
+ "tsx": true,
+ "tailwind": {
+ "config": "",
+ "css": "src/app/globals.css",
+ "baseColor": "slate",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
+ }
+}
diff --git a/next-env.d.ts b/next-env.d.ts
index ce4e94a..a419cbe 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,7 +1,7 @@
///
+ {art.summary}
+
+ {art.publishedAt
+ ? new Date(art.publishedAt).toLocaleDateString(
+ "es-MX",
+ { day: "2-digit", month: "long", year: "numeric" },
+ )
+ : "Próximamente"}
+
+ Sin artículos publicados.
+ {
+ (e.currentTarget as HTMLImageElement).style.display = "none";
+ }}
+ />
+ ) : (
+
+ {art.title}
+
+
+ {line} +
+ ); + }); +} + +export default function ArticlePage() { + const params = useParams(); + const router = useRouter(); + const slug = + typeof params.slug === "string" ? params.slug : (params.slug?.[0] ?? ""); + + const { data: post, isLoading, isError } = useBlogPost(slug); + + useEffect(() => { + if (post) document.title = `${post.title} | Blog`; + }, [post]); + + if (isLoading) return+ ARTÍCULO NO ENCONTRADO +
+ ++ {post.summary} +
+ )} + + {/* Meta */} +Hubo un error al enviar. Intenta de nuevo o escríbenos a contacto@rynext.com.mx
@@ -202,12 +202,12 @@ export const ContactModal = ({ isOpen, onClose, isNavyBg }: ModalProps) => { > {status === 'loading' ? ( <> -+
Usamos cookies para mejorar tu experiencia en el sitio. Al continuar, aceptas su uso.{' '} - + Política de privacidad
diff --git a/src/app/components/FloatingButtons.tsx b/src/app/(landing)/components/FloatingButtons.tsx similarity index 88% rename from src/app/components/FloatingButtons.tsx rename to src/app/(landing)/components/FloatingButtons.tsx index 5a9e2ff..c9ff91e 100644 --- a/src/app/components/FloatingButtons.tsx +++ b/src/app/(landing)/components/FloatingButtons.tsx @@ -1,7 +1,7 @@ 'use client'; -import { ArrowUp } from 'lucide-react'; +import { Icon } from '@iconify/react'; import { motion, AnimatePresence } from 'framer-motion'; -import type { ThemeProps } from '@/app/types/ui'; +import type { ThemeProps } from '@/app/(landing)/types/ui'; import { type Dispatch, type SetStateAction, useState, useEffect } from 'react'; const WHATSAPP_NUMBER = '529984814889'; @@ -11,12 +11,12 @@ interface FloatingButtonsProps extends ThemeProps { setIsNavyBg: Dispatch