From 31835cda52f8e2c619f9e861b6875c63c0e13bdb Mon Sep 17 00:00:00 2001 From: "[dyad]" Date: Tue, 20 Jan 2026 13:36:25 +0100 Subject: [PATCH] [dyad] Added skeleton loader and improved UI - wrote 3 file(s) --- src/components/meta-form.tsx | 7 +++- src/components/results-skeleton.tsx | 63 +++++++++++++++++++++++++++++ src/components/serp-preview.tsx | 2 +- 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/components/results-skeleton.tsx diff --git a/src/components/meta-form.tsx b/src/components/meta-form.tsx index a1279d6..35d9cda 100644 --- a/src/components/meta-form.tsx +++ b/src/components/meta-form.tsx @@ -10,6 +10,7 @@ import { extractMetaData } from "@/app/actions"; import { LengthIndicator } from "./length-indicator"; import { CopyButton } from "./copy-button"; import { SerpPreview } from "./serp-preview"; +import { ResultsSkeleton } from "./results-skeleton"; interface MetaData { title: string; @@ -105,7 +106,9 @@ export function MetaForm() { )} - {error && ( + {loading && } + + {!loading && error && (

{error}

@@ -113,7 +116,7 @@ export function MetaForm() {
)} - {metaData && ( + {!loading && metaData && ( diff --git a/src/components/results-skeleton.tsx b/src/components/results-skeleton.tsx new file mode 100644 index 0000000..1a74823 --- /dev/null +++ b/src/components/results-skeleton.tsx @@ -0,0 +1,63 @@ +"use client"; + +import { Card, CardContent, CardHeader } from "@/components/ui/card"; +import { Skeleton } from "@/components/ui/skeleton"; + +export function ResultsSkeleton() { + return ( + + + + + +
+
+
+ +
+
+ +
+ + +
+
+ + + +
+
+
+ + +
+
+
+
+
+ +
+ + +
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/serp-preview.tsx b/src/components/serp-preview.tsx index 44e48a8..7d5967a 100644 --- a/src/components/serp-preview.tsx +++ b/src/components/serp-preview.tsx @@ -43,7 +43,7 @@ export function SerpPreview({ title, description, url }: SerpPreviewProps) {

{title || "Meta Title Preview"}

-

+

{description || "This is where the meta description will be displayed. It provides a brief summary of the page's content for search engine users."}