Blog Typography
tripled/blog-typography-shadcnuiFreeComponent
Beautiful blog post typography with text, links, images, blockquotes, and code examples
Install it
npx shadcn@latest add https://ui.tripled.work/r/blog-typography-shadcnui.jsonSource
1"use client";23import { motion, type Variants } from "framer-motion";4import { Code, ExternalLink, Quote } from "lucide-react";5import Image from "next/image";6import type React from "react";78// ============================================================================9// TYPES & INTERFACES10// ============================================================================1112interface LinkProps {13 href: string;14 children: React.ReactNode;15 external?: boolean;16}1718interface ImageCardProps {19 src: string;20 alt: string;21 caption?: string;22}2324interface CalloutProps {25 children: React.ReactNode;26 type?: "info" | "warning" | "success";27}2829// ============================================================================30// ANIMATION VARIANTS31// ============================================================================3233const containerVariants: Variants = {34 hidden: { opacity: 0 },35 visible: {36 opacity: 1,37 transition: {38 staggerChildren: 0.1,39 delayChildren: 0.1,40 },41 },42};4344const itemVariants: Variants = {45 hidden: { opacity: 0, y: 20 },46 visible: {47 opacity: 1,48 y: 0,49 transition: { duration: 0.5 },50 },51};5253// ============================================================================54// SUB-COMPONENTS55// ============================================================================5657// Animated Link Component58function AnimatedLink({ href, children, external = false }: LinkProps) {59 return (60 <motion.a61 href={href}62 target={external ? "_blank" : undefined}63 rel={external ? "noopener noreferrer" : undefined}64 className="group relative inline-flex items-center gap-1 text-primary font-medium transition-colors hover:text-primary/80"65 whileHover={{ x: 2 }}66 transition={{ duration: 0.2 }}67 aria-label={68 external ? `${children} (opens in new tab)` : `Navigate to ${children}`69 }70 >71 <span className="relative">72 {children}73 <span className="absolute bottom-0 left-0 h-[1px] w-0 bg-primary transition-all duration-300 group-hover:w-full" />74 </span>75 {external && (76 <ExternalLink className="h-3 w-3 opacity-70" aria-hidden="true" />77 )}78 </motion.a>79 );80}8182// Image Card Component83function ImageCard({ src, alt, caption }: ImageCardProps) {84 return (85 <motion.figure86 variants={itemVariants}87// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from tripled
All 282 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| AI Chat Interfaceai-chat-interface-shadcnui | tripled | Components | Free | 2 deps | |
| AI Glow Inputai-glow-input-shadcnui | tripled | Components | Free | 2 deps | |
| AI Loading Skeletonai-loading-skeleton-shadcnui | tripled | Components | Free | 2 deps | |
| AI Response Typing Streamai-response-typing-shadcnui | tripled | Components | Free | 2 deps | |
| AI Unlock Animationai-unlock-animation-shadcnui | tripled | Components | Free | 2 deps | |
| Animated Accordionanimated-accordion-shadcnui | tripled | Components | Free | 2 deps | |
| Animated Card Stackanimated-card-stack-baseui | tripled | Components | Free | 2 deps | |
| Animated Card Stackanimated-card-stack-shadcnui | tripled | Components | Free | 2 deps |
