chore: release v1.0.0

Added new blocks, registries, updated components and layouts, plus cleanup and key fixes
This commit is contained in:
neelbrahmakshatriya 2025-11-19 19:47:38 +05:30
parent 7a19d97967
commit b81b0590ca
1018 changed files with 59239 additions and 6669 deletions

View file

@ -1,2 +1,2 @@
BASEPATH=
NEXT_PUBLIC_APP_URL=
NEXT_PUBLIC_APP_URL=http://localhost:3000${BASEPATH}

View file

@ -4,6 +4,40 @@
All notable changes to this project will be documented in this file.
## v1.0.0 (2025-11-19)
### Added
- Added blocks
- Added registries for easier access to component variants, blocks and themes
- Added navigation pagination inside component pages
- Added functionality to show component variant name when hover inside a component variant section
- Added tags to component variants for better categorization and filtering in search
### Updated
- Updated shadcn/ui components
- Updated component variants to match the latest shadcn/ui components
- Updated shadcn/ui color theme from zinc to neutral
- Updated layouts including Sidebar, Header and Footer
- Updated animated button variant with heartbeat effect so that you can change the animation color via CSS variable. You can update the color of the animation using the `--heartbeat-color` CSS variable or inline styles like `style={{ '--heartbeat-color': 'var(--primary)' }}`
- Updated meta tags for the pages
- Updated fonts by removing Gamja Flower font and adding Kalam font
- Updated introduction docs
- Updated SVGs (including SVG component and namings) and data assets
- Updated hooks and utils
### Removed
- Removed unnecessary data assets
- Removed copy prompt and v0 components
- Removed `getMode` server utility function
- Removed roadmap section from the theme generator page as we have moved it to [GitHub](https://github.com/orgs/themeselection/projects/42/views/2)
### Fixed
- Fixed default selected item in theme presets dropdown
## v1.0.0-beta.3 (2025-07-04)
### Added

View file

@ -2,7 +2,7 @@
<img alt="shadcn/studio logo" width="800" src="https://cdn.shadcnstudio.com/ss-assets/smm/marketing/shadcn-studio-smm-banner.png">
</a><br/><br/>
[shadcn/studio](https://shadcnstudio.com) is an open-source collection of copy-and-paste shadcn components, blocks, and templates - paired with a powerful theme generator to craft, customize, and ship faster. 🚀
[shadcn/studio](https://shadcnstudio.com) is an open-source collection of copy-and-paste shadcn components, blocks, and templates - paired with a powerful theme generator & AI Tools to craft, customize, and ship faster. 🚀
<p>
<a href="https://github.com/themeselection/shadcn-studio/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
@ -49,7 +49,7 @@ Building on the solid foundation of the Shadcn components & blocks, we&apos;ve e
### Not a standard library, but a distribution of components
Following the philosophy of Shadcn, shadcn/studio isn&apos;t a conventional “install-from-NPM” library. Rather, it&apos;s an open-source distribution of components designed for maximum adaptability. You can copy the code, modify styles, adjust logic, or integrate it with other tools—free from the limitations of typical libraries. This &quot;open code&quot; model empowers you to customize with confidence and creativity.
Following the philosophy of Shadcn, shadcn/studio isn&apos;t a conventional &quot;install-from-NPM&quot; library. Rather, it&apos;s an open-source distribution of components designed for maximum adaptability. You can copy the code, modify styles, adjust logic, or integrate it with other tools—free from the limitations of typical libraries. This &quot;open code&quot; model empowers you to customize with confidence and creativity.
## Why should I use shadcn/studio? 💡
@ -59,12 +59,23 @@ While this approach offers flexibility and control, it comes with some limitatio
## This is where shadcn/studio shines ✨
An open-source collection of copy-and-paste shadcn components, blocks, and templates - paired with a powerful theme generator to craft, customize, and ship faster 🚀. It provides a robust toolkit for building stunning, interactive user interfaces with ease.
An open-source & premium collection of copy-and-paste shadcn components, blocks, and templates - paired with a powerful theme generator to craft, customize, and ship faster 🚀. It provides a robust toolkit for building stunning, interactive user interfaces with ease.
- **Open-source:** Dive into a growing, community-driven collection of copy-and-paste [shadcn/ui components]('https://shadcnstudio.com/components'), shadcn blocks, and templates.
- **Component & Blocks variants:** Access a diverse, collection of customizable [shadcn blocks](https://shadcnstudio.com/blocks) and component variants to quickly build and style your UI with ease.
- **Open-source:** Dive into a growing, community-driven collection of copy-and-paste components, blocks, and templates.
- **Component & Blocks variants:** Access a diverse, collection of customizable shadcn component and block variants to quickly build and style your UI with ease.
- **Animated variants with Motion:** Add smooth, modern animations to your components, enhancing user experiences with minimal effort.
- **Powerful theme generator:** Tailor your UI effortlessly with real-time previews, ensuring consistent, branded designs delivered faster.
- **Landing pages & Dashboards:** Explore 20+ premium & free [Shadcn templates](https://shadcnstudio.com/templates) for dashboards, landing pages & more. Fully customizable & easy to use.
- **shadcn/ui for Figma:** Speed up your workflow with [Shadcn Figma](https://shadcnstudio.com/figma) UI components, blocks & templates — a full design library inspired by shadcn/ui.
- **Powerful theme generator:** Customize your UI instantly with [Shadcn Theme Generator](https://shadcnstudio.com/theme-generator). Preview changes in real time and create consistent, on-brand designs faster.
- **shadcn/studio MCP:** Integrate [shadcn/studio MCP](https://shadcnstudio.com/mcp) Server directly into your favorite IDE and craft stunning shadcn/ui Components, Blocks and Pages inspired by shadcn/studio.
- **Shadcn Figma To Code Plugin:** Convert your Figma designs into production-ready code instantly with the [Shadcn Figma Plugin](https://shadcnstudio.com/figma-plugin).
## Features ✨
@ -110,7 +121,7 @@ shadcn/studio provides an open-source collection of copy-and-paste Shadcn Compon
</tr>
</table>
[Explore all components](https://shadcnstudio.com/docs/components/avatar)
[Explore all components](https://shadcnstudio.com/components)
## Community 🤝

View file

@ -13,6 +13,7 @@
"lint:fix": "next lint --fix",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,md,mdx}\"",
"check-types": "tsc --noEmit",
"registry:build": "shadcn build",
"clean": "rm -rf .next *.tsbuildinfo",
"clean:node_modules": "rm -rf .next node_modules *.tsbuildinfo"
},
@ -74,6 +75,7 @@
"react-use": "^17.6.0",
"recharts": "^2.15.3",
"server-only": "^0.0.1",
"shadcn": "^3.3.1",
"shepherd.js": "^14.5.0",
"sonner": "^2.0.5",
"tailwind-merge": "^3.3.1",

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,33 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "about-us-page-01",
"type": "registry:block",
"title": "About Us 1",
"description": "Centered header with video/image section and overlapping stats grid card displaying icons, values, and descriptions",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge",
"button",
"card"
],
"files": [
{
"path": "src/app/(blank)/preview/marketing-ui/about-us-page/about-us-page-01/page.tsx",
"content": "import { MedalIcon, SparklesIcon, StarIcon, TargetIcon } from 'lucide-react'\n\nimport AboutUs from '@/components/shadcn-studio/blocks/about-us-page-01/about-us-page-01'\n\nconst stats = [\n {\n icon: SparklesIcon,\n value: '20+',\n description: 'Years of Experience'\n },\n {\n icon: TargetIcon,\n value: '70+',\n description: 'Successful Projects'\n },\n {\n icon: StarIcon,\n value: '550+',\n description: 'Customer Reviews'\n },\n {\n icon: MedalIcon,\n value: '25',\n description: 'Achieve Awards'\n }\n]\n\nconst AboutUsPage = () => {\n return <AboutUs stats={stats} />\n}\n\nexport default AboutUsPage\n",
"type": "registry:page",
"target": "app/about-us-page-01/page.tsx"
},
{
"path": "src/components/shadcn-studio/blocks/about-us-page-01/about-us-page-01.tsx",
"content": "import type { ComponentType } from 'react'\n\nimport { ArrowRightIcon } from 'lucide-react'\n\nimport { Button } from '@/components/ui/button'\n\ntype StatItem = {\n icon: ComponentType\n value: string\n description: string\n}[]\n\nconst AboutUs = ({ stats }: { stats: StatItem }) => {\n return (\n <section className='bg-muted py-8 sm:py-16 lg:py-24'>\n <div className='mx-auto max-w-7xl px-4 sm:px-6 lg:px-8'>\n {/* Header */}\n <div className='mb-12 space-y-4 text-center md:mb-16 lg:mb-24'>\n <h2 className='text-2xl font-semibold tracking-tight md:text-3xl lg:text-4xl'>About Us</h2>\n <p className='text-muted-foreground text-xl'>\n Our achievement story stands as a powerful testament to teamwork and perseverance. United, we have faced\n challenges, celebrated victories, and woven a narrative of growth and success.\n </p>\n <Button size='lg' asChild className='group rounded-lg text-base has-[>svg]:px-6'>\n <a href='#'>\n Read more\n <ArrowRightIcon className='transition-transform duration-200 group-hover:translate-x-0.5' />\n </a>\n </Button>\n </div>\n\n {/* Video player and stats */}\n <div className='relative mb-8 h-full w-full max-lg:space-y-6 sm:mb-16 lg:mb-24'>\n <div className='aspect-video w-full overflow-hidden rounded-xl lg:h-[644px]'>\n <iframe\n width='100%'\n height='100%'\n src='https://www.youtube.com/embed/RQYZXwLBY8A?si=MvvPX6xaOdzySLfb'\n title='YouTube video player'\n frameBorder='0'\n allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'\n referrerPolicy='strict-origin-when-cross-origin'\n allowFullScreen\n ></iframe>\n </div>\n\n {/* Stats card overlapping the video section */}\n <div className='bg-background grid gap-10 rounded-md border p-8 sm:max-lg:grid-cols-2 lg:absolute lg:-bottom-25 lg:left-1/2 lg:w-3/4 lg:-translate-x-1/2 lg:grid-cols-4 lg:px-10 xl:w-max'>\n {stats.map((stat, index) => (\n <div key={index} className='flex flex-col items-center justify-center gap-2.5 text-center'>\n <div className='flex size-7 items-center justify-center [&>svg]:size-7'>\n <stat.icon />\n </div>\n <span className='text-2xl font-semibold'>{stat.value}</span>\n <p className='text-muted-foreground text-lg'>{stat.description}</p>\n </div>\n ))}\n </div>\n </div>\n </div>\n </section>\n )\n}\n\nexport default AboutUs\n",
"type": "registry:component",
"target": "components/shadcn-studio/blocks/about-us-page-01/about-us-page-01.tsx"
}
],
"meta": {
"category": "marketing-ui",
"section": "about-us-page"
}
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-01",
"type": "registry:component",
"title": "Accordion 1",
"description": "Basic accordion with default styling and collapsible FAQ items.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-01.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionTrigger>{item.title}</AccordionTrigger>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-01.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-02",
"type": "registry:component",
"title": "Accordion 2",
"description": "Card-style accordion with separated items, shadow effects, and rotated chevron icons.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-02.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionSplitDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full space-y-2' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n value={`item-${index + 1}`}\n className='bg-card rounded-md border-b-0 shadow-md data-[state=open]:shadow-lg'\n >\n <AccordionTrigger className='px-5 [&>svg]:rotate-90 [&[data-state=open]>svg]:rotate-0'>\n {item.title}\n </AccordionTrigger>\n <AccordionContent className='text-muted-foreground px-5'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionSplitDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-02.tsx"
}
]
}

View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-03",
"type": "registry:component",
"title": "Accordion 3",
"description": "Icon-enhanced accordion with category icons displayed before each item title.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-03.tsx",
"content": "import { HeadsetIcon, PackageIcon, RefreshCwIcon } from 'lucide-react'\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n icon: PackageIcon,\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n icon: RefreshCwIcon,\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n icon: HeadsetIcon,\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionLeftIconDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionTrigger className='justify-start [&>svg]:order-first'>\n <span className='flex items-center gap-4'>\n <item.icon className='text-muted-foreground size-4 shrink-0' />\n <span>{item.title}</span>\n </span>\n </AccordionTrigger>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionLeftIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-03.tsx"
}
]
}

View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-04",
"type": "registry:component",
"title": "Accordion 4",
"description": "Plus/minus icon accordion with animated icon transitions for expand/collapse states.",
"dependencies": [
"@radix-ui/react-accordion",
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-04.tsx",
"content": "import { PlusIcon } from 'lucide-react'\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\n\nimport { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionPlusMinusIconDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionPrimitive.Header className='flex'>\n <AccordionPrimitive.Trigger\n data-slot='accordion-trigger'\n className='focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 [&[data-state=open]>svg]:rotate-180 [&[data-state=open]>svg>path:last-child]:rotate-90 [&[data-state=open]>svg>path:last-child]:opacity-0'\n >\n {item.title}\n <PlusIcon className='text-muted-foreground pointer-events-none size-4 shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionPlusMinusIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-04.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-05",
"type": "registry:component",
"title": "Accordion 5",
"description": "Active state accordion with amber highlighting for expanded items and borders.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-05.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionActiveItemDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n value={`item-${index + 1}`}\n className='data-[state=open]:border-amber-600 not-last:data-[state=open]:border-b-2 dark:data-[state=open]:border-amber-400'\n >\n <AccordionTrigger className='data-[state=open]:text-amber-600 dark:data-[state=open]:text-amber-400 [&[data-state=open]>svg]:text-amber-600 dark:[&[data-state=open]>svg]:text-amber-400'>\n {item.title}\n </AccordionTrigger>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionActiveItemDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-05.tsx"
}
]
}

View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-06",
"type": "registry:component",
"title": "Accordion 6",
"description": "Icon and expand indicator accordion with category icons and plus icon for expand/collapse.",
"dependencies": [
"@radix-ui/react-accordion",
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-06.tsx",
"content": "import { HeadsetIcon, PackageIcon, PlusIcon, RefreshCwIcon } from 'lucide-react'\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\n\nimport { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'\n\nconst items = [\n {\n icon: PackageIcon,\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n icon: RefreshCwIcon,\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n icon: HeadsetIcon,\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionExpandIconDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionPrimitive.Header className='flex'>\n <AccordionPrimitive.Trigger\n data-slot='accordion-trigger'\n className='focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-45'\n >\n <span className='flex items-center gap-4'>\n <item.icon className='size-4 shrink-0' />\n <span>{item.title}</span>\n </span>\n <PlusIcon className='text-muted-foreground pointer-events-none size-4 shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionExpandIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-06.tsx"
}
]
}

View file

@ -0,0 +1,19 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-07",
"type": "registry:component",
"title": "Accordion 7",
"description": "Avatar-based accordion displaying user profiles with avatar images, names, and email addresses.",
"registryDependencies": [
"accordion",
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-07.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst items = [\n {\n name: 'Richard Payne',\n email: 'pwright@yahoo.com',\n avatarImage: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-1.png',\n content:\n 'Richard Payne is a remarkable individual known for his exceptional skills and expertise in various fields. With a strong background in technology and a passion for innovation, Richard has made significant contributions to the industry.'\n },\n {\n name: 'Jordan Stevenson',\n email: 'wramirez@outlook.com',\n avatarImage: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-2.png',\n content:\n 'Jordan Stevenson is a talented individual with a passion for technology and innovation. Jordan has made significant contributions to various projects and has a deep understanding of programming languages and frameworks.'\n },\n {\n name: 'Nicholas Tanner',\n email: 'snguyen@icloud.com',\n avatarImage: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n content:\n 'Nicholas Tanner is a highly skilled individual with a strong passion for technology and innovation. Nicholas has made significant contributions to numerous projects and possesses a deep understanding of various programming languages and frameworks.'\n }\n]\n\nconst AccordionAvatarDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionTrigger className='items-center hover:no-underline'>\n <span className='flex items-center gap-4'>\n <Avatar className='size-10.5 rounded-sm'>\n <AvatarImage src={item.avatarImage} alt={item.name} className='rounded-sm' />\n <AvatarFallback className='rounded-sm text-xs'>\n {item.name.split(/\\s/).reduce((response, word) => (response += word.slice(0, 1)), '')}\n </AvatarFallback>\n </Avatar>\n <span className='flex flex-col space-y-0.5'>\n <span>{item.name}</span>\n <span className='text-muted-foreground font-normal'>{item.email}</span>\n </span>\n </span>\n </AccordionTrigger>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionAvatarDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-07.tsx"
}
]
}

View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-08",
"type": "registry:component",
"title": "Accordion 8",
"description": "Enhanced icon accordion with circular icon containers and subtitle descriptions for each item.",
"dependencies": [
"@radix-ui/react-accordion",
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-08.tsx",
"content": "import { HeadsetIcon, PackageIcon, PlusIcon, RefreshCwIcon } from 'lucide-react'\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\n\nimport { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'\n\nconst items = [\n {\n icon: PackageIcon,\n title: 'How do I track my order?',\n subtitle: 'Shipping & Delivery',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n icon: RefreshCwIcon,\n title: 'What is your return policy?',\n subtitle: 'Returns & Refunds',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n icon: HeadsetIcon,\n title: 'How can I contact customer support?',\n subtitle: 'Help & Support',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionIconSubtitleDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionPrimitive.Header className='flex'>\n <AccordionPrimitive.Trigger\n data-slot='accordion-trigger'\n className='focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 [&[data-state=open]>svg]:rotate-180 [&[data-state=open]>svg>path:last-child]:rotate-90 [&[data-state=open]>svg>path:last-child]:opacity-0'\n >\n <span className='flex items-center gap-4'>\n <span\n className='flex size-10 shrink-0 items-center justify-center rounded-full border'\n aria-hidden='true'\n >\n <item.icon className='size-4' />\n </span>\n <span className='flex flex-col space-y-0.5'>\n <span>{item.title}</span>\n <span className='text-muted-foreground font-normal'>{item.subtitle}</span>\n </span>\n </span>\n <PlusIcon className='text-muted-foreground pointer-events-none size-4 shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionIconSubtitleDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-08.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-09",
"type": "registry:component",
"title": "Accordion 9",
"description": "Outline-style accordion with bordered items and spacing between each accordion item.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-09.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionOutlineDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full space-y-2' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`} className='rounded-md border!'>\n <AccordionTrigger className='px-5'>{item.title}</AccordionTrigger>\n <AccordionContent className='text-muted-foreground px-5'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionOutlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-09.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-10",
"type": "registry:component",
"title": "Accordion 10",
"description": "Box-style accordion with unified border container around all accordion items.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-10.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionBoxDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full rounded-md border' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionTrigger className='px-5'>{item.title}</AccordionTrigger>\n <AccordionContent className='text-muted-foreground px-5'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionBoxDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-10.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-11",
"type": "registry:component",
"title": "Accordion 11",
"description": "Tab-style accordion with accent background highlighting for expanded items.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-11.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionTabsDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n value={`item-${index + 1}`}\n className='data-[state=open]:bg-accent rounded-md border-none px-5 transition-colors duration-200'\n >\n <AccordionTrigger>{item.title}</AccordionTrigger>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionTabsDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-11.tsx"
}
]
}

View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-12",
"type": "registry:component",
"title": "Accordion 12",
"description": "Tab with outline accordion featuring bordered highlighting and shadow effects for expanded items.",
"dependencies": [
"@radix-ui/react-accordion",
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-12.tsx",
"content": "import { PlusIcon } from 'lucide-react'\n\nimport * as AccordionPrimitive from '@radix-ui/react-accordion'\n\nimport { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionTabsOutlineDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n value={`item-${index + 1}`}\n className='data-[state=open]:border-border rounded-md border border-transparent px-5 transition-colors duration-200 data-[state=open]:border data-[state=open]:shadow-md'\n >\n <AccordionPrimitive.Header className='flex'>\n <AccordionPrimitive.Trigger\n data-slot='accordion-trigger'\n className='focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 [&[data-state=open]>svg]:rotate-180 [&[data-state=open]>svg>path:last-child]:rotate-90 [&[data-state=open]>svg>path:last-child]:opacity-0'\n >\n {item.title}\n <PlusIcon className='text-muted-foreground pointer-events-none size-4 shrink-0 transition-transform duration-200' />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionContent className='text-muted-foreground'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionTabsOutlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-12.tsx"
}
]
}

View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-13",
"type": "registry:component",
"title": "Accordion 13",
"description": "Media content accordion with category icons and embedded images in accordion content.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-13.tsx",
"content": "import { HeadsetIcon, PackageIcon, RefreshCwIcon } from 'lucide-react'\n\nimport { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n icon: PackageIcon,\n title: 'How do I track my order?',\n content: \"You'll receive tracking information via email once your order ships.\",\n media: 'https://cdn.shadcnstudio.com/ss-assets/components/accordion/image-1.jpg?width=520&format=auto'\n },\n {\n icon: RefreshCwIcon,\n title: 'What is your return policy?',\n content: 'We offer a 30-day return policy for most items.',\n media: 'https://cdn.shadcnstudio.com/ss-assets/components/accordion/image-2.jpg?width=520&format=auto'\n },\n {\n icon: HeadsetIcon,\n title: 'How can I contact customer support?',\n content: 'You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567.',\n media: 'https://cdn.shadcnstudio.com/ss-assets/components/accordion/image-3.jpg?width=520&format=auto'\n }\n]\n\nconst AccordionMediaContentDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`}>\n <AccordionTrigger>\n <span className='flex items-center gap-4'>\n <item.icon className='size-4 shrink-0' />\n <span>{item.title}</span>\n </span>\n </AccordionTrigger>\n <AccordionContent className='space-y-4'>\n <p className='text-muted-foreground'>{item.content}</p>\n <img src={item.media} alt={item.title} className='w-full rounded-md' />\n </AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionMediaContentDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-13.tsx"
}
]
}

View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "accordion-14",
"type": "registry:component",
"title": "Accordion 14",
"description": "Filled header accordion with accent background triggers and separated content sections.",
"registryDependencies": [
"accordion"
],
"files": [
{
"path": "src/components/shadcn-studio/accordion/accordion-14.tsx",
"content": "import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion'\n\nconst items = [\n {\n title: 'How do I track my order?',\n content: `You can track your order by logging into your account and visiting the \"Orders\" section. You'll receive tracking information via email once your order ships. For real-time updates, you can also use the tracking number provided in your shipping confirmation email.`\n },\n {\n title: 'What is your return policy?',\n content:\n 'We offer a 30-day return policy for most items. Products must be unused and in their original packaging. To initiate a return, please contact our customer service team or use the return portal in your account dashboard.'\n },\n {\n title: 'How can I contact customer support?',\n content:\n 'Our customer support team is available 24/7. You can reach us via live chat, email at support@example.com, or by phone at 1-800-123-4567. For faster service, please have your order number ready when contacting us.'\n }\n]\n\nconst AccordionFilledDemo = () => {\n return (\n <Accordion type='single' collapsible className='w-full space-y-2' defaultValue='item-1'>\n {items.map((item, index) => (\n <AccordionItem key={index} value={`item-${index + 1}`} className='rounded-md border!'>\n <AccordionTrigger className='bg-accent px-5 data-[state=open]:rounded-b-none'>{item.title}</AccordionTrigger>\n <AccordionContent className='text-muted-foreground px-5 pt-4'>{item.content}</AccordionContent>\n </AccordionItem>\n ))}\n </Accordion>\n )\n}\n\nexport default AccordionFilledDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/accordion/accordion-14.tsx"
}
]
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

21
public/r/alert-01.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-01",
"type": "registry:component",
"title": "Alert 1",
"description": "Basic alert with circle alert icon and simple title message.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-01.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertDemo = () => {\n return (\n <Alert>\n <CircleAlertIcon />\n <AlertTitle>New message!</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-01.tsx"
}
]
}

22
public/r/alert-02.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-02",
"type": "registry:component",
"title": "Alert 2",
"description": "Avatar-enhanced alert with user profile image, and alert icon.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-02.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AlertWithAvatarDemo = () => {\n return (\n <Alert className='flex items-center justify-between'>\n <Avatar className='rounded-sm'>\n <AvatarImage\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='rounded-sm'\n />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <div className='flex-1 flex-col justify-center gap-1'>\n <AlertTitle className='flex-1'>Sara has replied on the uploaded image.</AlertTitle>\n <AlertDescription>12 unread messages. Tap to see.</AlertDescription>\n </div>\n <CircleAlertIcon />\n </Alert>\n )\n}\n\nexport default AlertWithAvatarDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-02.tsx"
}
]
}

21
public/r/alert-03.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-03",
"type": "registry:component",
"title": "Alert 3",
"description": "Closable alert with dismiss functionality using X icon and state management.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-03.tsx",
"content": "'use client'\n\nimport { useState } from 'react'\n\nimport { CircleAlertIcon, XIcon } from 'lucide-react'\n\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'\n\nconst AlertClosableDemo = () => {\n const [isActive, setIsActive] = useState(true)\n\n if (!isActive) return null\n\n return (\n <Alert className='flex justify-between'>\n <CircleAlertIcon />\n <div className='flex-1 flex-col justify-center gap-1'>\n <AlertTitle>New message!</AlertTitle>\n <AlertDescription>12 unread messages. Tap to see.</AlertDescription>\n </div>\n <button className='cursor-pointer' onClick={() => setIsActive(false)}>\n <XIcon className='size-5' />\n <span className='sr-only'>Close</span>\n </button>\n </Alert>\n )\n}\n\nexport default AlertClosableDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-03.tsx"
}
]
}

22
public/r/alert-04.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-04",
"type": "registry:component",
"title": "Alert 4",
"description": "Interactive alert with link button featuring arrow icon and styled border/text colors.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"button"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-04.tsx",
"content": "import { ArrowRightIcon, CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\nimport { Button } from '@/components/ui/button'\n\nconst AlertWithLinkDemo = () => {\n return (\n <Alert className='flex items-center justify-between border-sky-600 text-sky-600 dark:border-sky-400 dark:text-sky-400 [&>svg]:translate-y-0'>\n <CircleAlertIcon />\n <AlertTitle className='flex-1'>New message!</AlertTitle>\n <Button\n variant='outline'\n className='h-7 cursor-pointer rounded-md border-sky-600 px-2 text-sky-600! hover:bg-sky-600/10 focus-visible:border-sky-600 focus-visible:ring-sky-600/20 dark:border-sky-400 dark:text-sky-400! dark:hover:bg-sky-400/10 dark:focus-visible:border-sky-400 dark:focus-visible:ring-sky-400/40'\n asChild\n >\n <a href='#'>\n Link\n <ArrowRightIcon />\n </a>\n </Button>\n </Alert>\n )\n}\n\nexport default AlertWithLinkDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-04.tsx"
}
]
}

21
public/r/alert-05.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-05",
"type": "registry:component",
"title": "Alert 5",
"description": "Attached icon alert with separated icon section and destructive warning styling.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-05.tsx",
"content": "import { FileWarningIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertAttachedIconDemo = () => {\n return (\n <Alert className='flex items-stretch p-0'>\n <div className='bg-destructive/10 text-destructive flex items-center rounded-l-lg border-r p-2'>\n <FileWarningIcon className='size-4' />\n </div>\n <AlertTitle className='p-3'>This file contains virus!</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertAttachedIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-05.tsx"
}
]
}

22
public/r/alert-06.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-06",
"type": "registry:component",
"title": "Alert 6",
"description": "Focused icon alert with avatar-wrapped warning icon and destructive background styling.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-06.tsx",
"content": "import { FileWarningIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar'\n\nconst AlertFocusedIconDemo = () => {\n return (\n <Alert className='flex items-center gap-3'>\n <Avatar className='rounded-md'>\n <AvatarFallback className='bg-destructive dark:bg-destructive/60 rounded-md text-white'>\n <FileWarningIcon className='size-4' />\n </AvatarFallback>\n </Avatar>\n <AlertTitle>This file contains virus!</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertFocusedIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-06.tsx"
}
]
}

22
public/r/alert-07.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-07",
"type": "registry:component",
"title": "Alert 7",
"description": "File upload progress alert with animated progress bar, action buttons, and close functionality.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"button"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-07.tsx",
"content": "'use client'\n\nimport { useState, useEffect } from 'react'\n\nimport { UploadIcon, XIcon } from 'lucide-react'\n\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'\nimport { Button } from '@/components/ui/button'\nimport { Progress } from '@/components/ui/progress'\n\nconst AlertFileUploadDemo = () => {\n const [isActive, setIsActive] = useState(true)\n\n const [progress, setProgress] = useState(0)\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(50), 100)\n\n return () => clearTimeout(timer)\n }, [])\n\n if (!isActive) return null\n\n return (\n <Alert className='flex justify-between'>\n <UploadIcon />\n <div className='flex flex-1 flex-col gap-4'>\n <div className='flex-1 flex-col justify-center gap-1'>\n <AlertTitle>Uploading your &apos;Img-234.png&apos;</AlertTitle>\n <AlertDescription>Please wait While we upload your image.</AlertDescription>\n </div>\n <Progress\n value={progress}\n className='bg-sky-600/20 *:bg-sky-600 dark:bg-sky-400/20 dark:*:bg-sky-400'\n aria-label='Upload Progress'\n />\n <div className='flex items-center gap-4'>\n <Button variant='ghost' className='h-7 cursor-pointer rounded-md px-2'>\n Cancel\n </Button>\n <Button\n variant='ghost'\n disabled\n className='h-7 cursor-pointer rounded-md px-2 text-sky-600 hover:bg-sky-600/10 hover:text-sky-600 dark:text-sky-400 dark:hover:bg-sky-400/10 dark:hover:text-sky-400'\n >\n Upload another\n </Button>\n </div>\n </div>\n <button className='size-5 cursor-pointer' onClick={() => setIsActive(false)}>\n <XIcon className='size-5' />\n <span className='sr-only'>Close</span>\n </button>\n </Alert>\n )\n}\n\nexport default AlertFileUploadDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-07.tsx"
}
]
}

22
public/r/alert-08.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-08",
"type": "registry:component",
"title": "Alert 8",
"description": "Multi-action alert with primary background, multiple buttons, and dismissible interface.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"button"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-08.tsx",
"content": "'use client'\n\nimport { useState } from 'react'\n\nimport { CircleAlertIcon, XIcon } from 'lucide-react'\n\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'\nimport { Button } from '@/components/ui/button'\n\nconst AlertMultipleActionDemo = () => {\n const [isActive, setIsActive] = useState(true)\n\n if (!isActive) return null\n\n return (\n <Alert className='bg-primary text-primary-foreground flex justify-between border-none'>\n <CircleAlertIcon />\n <div className='flex flex-1 flex-col gap-4'>\n <div className='flex-1 flex-col justify-center gap-1'>\n <AlertTitle>A new update is available</AlertTitle>\n <AlertDescription className='text-primary-foreground/80'>\n Includes the at new dashboard View. Pages end exports will now load taster\n </AlertDescription>\n </div>\n <div className='flex items-center gap-4'>\n <Button className='bg-secondary/10 focus-visible:bg-secondary/20 hover:bg-secondary/20 h-7 cursor-pointer rounded-md px-2'>\n Skip this update\n </Button>\n <Button variant='secondary' className='h-7 cursor-pointer rounded-md px-2'>\n Install now\n </Button>\n </div>\n </div>\n <button className='size-5 cursor-pointer' onClick={() => setIsActive(false)}>\n <XIcon className='size-5' />\n <span className='sr-only'>Close</span>\n </button>\n </Alert>\n )\n}\n\nexport default AlertMultipleActionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-08.tsx"
}
]
}

23
public/r/alert-09.json Normal file
View file

@ -0,0 +1,23 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-09",
"type": "registry:component",
"title": "Alert 9",
"description": "Task progress alert with user avatar, progress indicator, and task completion tracking.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"avatar",
"progress"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-09.tsx",
"content": "'use client'\n\nimport { useState, useEffect } from 'react'\n\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Progress } from '@/components/ui/progress'\n\nconst AlertTaskDemo = () => {\n const [progress, setProgress] = useState(0)\n\n useEffect(() => {\n const timer = setTimeout(() => setProgress(50), 100)\n\n return () => clearTimeout(timer)\n }, [])\n\n return (\n <Alert className='flex gap-3'>\n <Avatar className='rounded-sm'>\n <AvatarImage\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='rounded-sm'\n />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <div className='flex flex-1 flex-col gap-2'>\n <div className='flex-1 flex-col justify-center gap-1'>\n <AlertTitle>@Rocky</AlertTitle>\n <AlertDescription>this projects task is remaining, deadline is near.</AlertDescription>\n </div>\n <Progress\n value={progress}\n className='bg-amber-600/20 *:bg-amber-600 dark:bg-amber-400/20 dark:*:bg-amber-400'\n aria-label='Task progress'\n />\n </div>\n </Alert>\n )\n}\n\nexport default AlertTaskDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-09.tsx"
}
]
}

23
public/r/alert-10.json Normal file
View file

@ -0,0 +1,23 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-10",
"type": "registry:component",
"title": "Alert 10",
"description": "Gradient background alert with email verification message and gradient styling.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"button",
"progress"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-10.tsx",
"content": "'use client'\n\nimport { useState } from 'react'\n\nimport { CircleAlertIcon, XIcon } from 'lucide-react'\n\nimport { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'\n\nconst AlertGradientDemo = () => {\n const [isActive, setIsActive] = useState(true)\n\n if (!isActive) return null\n\n return (\n <Alert className='border-accent-foreground/20 from-accent text-accent-foreground flex justify-between bg-gradient-to-b to-transparent to-60%'>\n <CircleAlertIcon />\n <div className='flex flex-1 flex-col gap-1'>\n <AlertTitle>Verify your email to activate your account</AlertTitle>\n <AlertDescription className='text-accent-foreground/60'>\n We&apos;ve sent a confirmation link to your inbox. Check your email to complete the sign-up.\n </AlertDescription>\n </div>\n <button className='cursor-pointer' onClick={() => setIsActive(false)}>\n <XIcon className='size-5' />\n <span className='sr-only'>Close</span>\n </button>\n </Alert>\n )\n}\n\nexport default AlertGradientDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-10.tsx"
}
]
}

21
public/r/alert-11.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-11",
"type": "registry:component",
"title": "Alert 11",
"description": "Success indicator alert with left border highlight and green success styling.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-11.tsx",
"content": "import { UserCheckIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertIndicatorSuccessDemo = () => {\n return (\n <Alert className='rounded-md border-l-6 border-green-600 bg-green-600/10 text-green-600 dark:border-green-400 dark:bg-green-400/10 dark:text-green-400'>\n <UserCheckIcon />\n <AlertTitle>Your request to join the team is approved.</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertIndicatorSuccessDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-11.tsx"
}
]
}

21
public/r/alert-12.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-12",
"type": "registry:component",
"title": "Alert 12",
"description": "Information/error indicator alert with destructive background styling and informational content.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-12.tsx",
"content": "import { UserRoundXIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertIndicatorDestructiveDemo = () => {\n return (\n <Alert className='border-destructive bg-destructive/10 text-destructive rounded-none border-0 border-l-6'>\n <UserRoundXIcon />\n <AlertTitle>Your request to join the team is denied.</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertIndicatorDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-12.tsx"
}
]
}

22
public/r/alert-13.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-13",
"type": "registry:component",
"title": "Alert 13",
"description": "displaying a minimal \"New message!\" notification with an attention icon and an actionable \"Open\" button",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert",
"button"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-13.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\nimport { Button } from '@/components/ui/button'\n\nconst AlertWithActionDemo = () => {\n return (\n <Alert className='flex items-center justify-between [&>svg]:translate-y-0'>\n <CircleAlertIcon />\n <AlertTitle className='flex-1'>New message!</AlertTitle>\n <Button variant='outline' className='h-7 cursor-pointer rounded-md px-2'>\n Open\n </Button>\n </Alert>\n )\n}\n\nexport default AlertWithActionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-13.tsx"
}
]
}

21
public/r/alert-14.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-14",
"type": "registry:component",
"title": "Alert 14",
"description": "Error indicator alert with red styling and destructive error message.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-14.tsx",
"content": "import { TriangleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertDestructiveDemo = () => {\n return (\n <Alert variant='destructive'>\n <TriangleAlertIcon />\n <AlertTitle>Something went wrong!</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-14.tsx"
}
]
}

21
public/r/alert-15.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-15",
"type": "registry:component",
"title": "Alert 15",
"description": "Pure destructive alert using built-in destructive variant with error styling.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-15.tsx",
"content": "import { TriangleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertPureDestructiveDemo = () => {\n return (\n <Alert variant='destructive' className='border-destructive'>\n <TriangleAlertIcon />\n <AlertTitle>Unable to process your payment.</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertPureDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-15.tsx"
}
]
}

18
public/r/alert-16.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-16",
"type": "registry:component",
"title": "Alert 16",
"description": "Minimal alert without icon displaying simple message text only.",
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-16.tsx",
"content": "import { Alert, AlertTitle } from '@/components/ui/alert'\n\nconst AlertWithoutIconDemo = () => {\n return (\n <Alert>\n <AlertTitle>New message!</AlertTitle>\n </Alert>\n )\n}\n\nexport default AlertWithoutIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-16.tsx"
}
]
}

21
public/r/alert-17.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-17",
"type": "registry:component",
"title": "Alert 17",
"description": "Standard alert with both title and description text providing detailed information.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-17.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertDescriptionDemo = () => {\n return (\n <Alert>\n <CircleAlertIcon />\n <AlertTitle>Creating your account</AlertTitle>\n <AlertDescription>Fill in your details to get started.</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertDescriptionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-17.tsx"
}
]
}

21
public/r/alert-18.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-18",
"type": "registry:component",
"title": "Alert 18",
"description": "Outline info alert with blue border and text styling for informational messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-18.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertOutlineInfoDemo = () => {\n return (\n <Alert className='border-sky-600 text-sky-600 dark:border-sky-400 dark:text-sky-400'>\n <CircleAlertIcon />\n <AlertTitle>Verify your email to activate your account</AlertTitle>\n <AlertDescription className='text-sky-600/80 dark:text-sky-400/80'>\n We&apos;ve sent a confirmation link to your inbox. Check your email to complete the sign-up.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertOutlineInfoDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-18.tsx"
}
]
}

21
public/r/alert-19.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-19",
"type": "registry:component",
"title": "Alert 19",
"description": "Outline success alert with green border and text for success messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-19.tsx",
"content": "import { CheckCheckIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertOutlineSuccessDemo = () => {\n return (\n <Alert className='border-green-600 text-green-600 dark:border-green-400 dark:text-green-400'>\n <CheckCheckIcon />\n <AlertTitle>Account created successfully</AlertTitle>\n <AlertDescription className='text-green-600/80 dark:text-green-400/80'>\n You are all set! You can now log in and start exploring your dashboard.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertOutlineSuccessDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-19.tsx"
}
]
}

21
public/r/alert-20.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-20",
"type": "registry:component",
"title": "Alert 20",
"description": "Outline warning alert with amber border and text for warning messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-20.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertOutlineWarningDemo = () => {\n return (\n <Alert className='border-amber-600 text-amber-600 dark:border-amber-400 dark:text-amber-400'>\n <CircleAlertIcon />\n <AlertTitle>Your password is too weak</AlertTitle>\n <AlertDescription className='text-amber-600/80 dark:text-amber-400/80'>\n Try using a mix of uppercase letters, numbers, and symbols for better security.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertOutlineWarningDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-20.tsx"
}
]
}

21
public/r/alert-21.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-21",
"type": "registry:component",
"title": "Alert 21",
"description": "Soft primary alert with subtle background and text styling for secondary messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-21.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSoftDemo = () => {\n return (\n <Alert className='bg-primary/10 border-none'>\n <CircleAlertIcon />\n <AlertTitle>File Should be PDF,DOCX,JPG, or PNG.</AlertTitle>\n <AlertDescription>If the file type is not one of this than we can&apos;t get your files</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSoftDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-21.tsx"
}
]
}

21
public/r/alert-22.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-22",
"type": "registry:component",
"title": "Alert 22",
"description": "Soft info alert with blue background and subtle styling for information.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-22.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSoftInfoDemo = () => {\n return (\n <Alert className='border-none bg-sky-600/10 text-sky-600 dark:bg-sky-400/10 dark:text-sky-400'>\n <CircleAlertIcon />\n <AlertTitle>Only certain file types are allowed</AlertTitle>\n <AlertDescription className='text-sky-600/80 dark:text-sky-400/80'>\n You can upload PDF, DOCX, JPG, or PNG files up to 20MB.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSoftInfoDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-22.tsx"
}
]
}

21
public/r/alert-23.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-23",
"type": "registry:component",
"title": "Alert 23",
"description": "Soft success alert with green background and subtle styling for success messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-23.tsx",
"content": "import { CheckCheckIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSoftSuccessDemo = () => {\n return (\n <Alert className='border-none bg-green-600/10 text-green-600 dark:bg-green-400/10 dark:text-green-400'>\n <CheckCheckIcon />\n <AlertTitle>File uploaded successfully</AlertTitle>\n <AlertDescription className='text-green-600/80 dark:text-green-400/80'>\n Your document has been saved and is now available in your files.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSoftSuccessDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-23.tsx"
}
]
}

21
public/r/alert-24.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-24",
"type": "registry:component",
"title": "Alert 24",
"description": "Soft warning alert with amber background and subtle styling for warnings.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-24.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSoftWarningDemo = () => {\n return (\n <Alert className='border-none bg-amber-600/10 text-amber-600 dark:bg-amber-400/10 dark:text-amber-400'>\n <CircleAlertIcon />\n <AlertTitle>This file might be too large</AlertTitle>\n <AlertDescription className='text-amber-600/80 dark:text-amber-400/80'>\n Uploading large files may take longer or fail. Consider compressing it first.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSoftWarningDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-24.tsx"
}
]
}

21
public/r/alert-25.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-25",
"type": "registry:component",
"title": "Alert 25",
"description": "Soft destructive alert with red background and subtle styling for errors.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-25.tsx",
"content": "import { TriangleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSoftDestructiveDemo = () => {\n return (\n <Alert className='bg-destructive/10 text-destructive border-none'>\n <TriangleAlertIcon />\n <AlertTitle>Upload failed</AlertTitle>\n <AlertDescription className='text-destructive/80'>\n Something went wrong. Please try again or use a different file format.\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSoftDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-25.tsx"
}
]
}

21
public/r/alert-26.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-26",
"type": "registry:component",
"title": "Alert 26",
"description": "Solid info alert with full primary background for prominent informational messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-26.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSolidDemo = () => {\n return (\n <Alert className='bg-primary text-primary-foreground border-none'>\n <CircleAlertIcon />\n <AlertTitle>Editing your profile</AlertTitle>\n <AlertDescription className='text-primary-foreground/80'>\n Changes won&apos;t be saved until you click &quot;Update.&quot;\n </AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSolidDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-26.tsx"
}
]
}

21
public/r/alert-27.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-27",
"type": "registry:component",
"title": "Alert 27",
"description": "Solid success alert with full green background for prominent success messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-27.tsx",
"content": "import { CheckCheckIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSolidSuccessDemo = () => {\n return (\n <Alert className='border-none bg-green-600 text-white dark:bg-green-400'>\n <CheckCheckIcon />\n <AlertTitle>Profile updated</AlertTitle>\n <AlertDescription className='text-white/80'>Your changes have been saved successfully.</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSolidSuccessDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-27.tsx"
}
]
}

21
public/r/alert-28.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-28",
"type": "registry:component",
"title": "Alert 28",
"description": "Solid warning alert with full amber background for prominent warning messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-28.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSolidWarningDemo = () => {\n return (\n <Alert className='border-none bg-amber-600 text-white dark:bg-amber-400'>\n <CircleAlertIcon />\n <AlertTitle>Some details are missing</AlertTitle>\n <AlertDescription className='text-white/80'>Complete your profile to get the best experience.</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSolidWarningDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-28.tsx"
}
]
}

21
public/r/alert-29.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-29",
"type": "registry:component",
"title": "Alert 29",
"description": "Solid info alert with full blue background for prominent informational messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-29.tsx",
"content": "import { CircleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSolidInfoDemo = () => {\n return (\n <Alert className='border-none bg-sky-600 text-white dark:bg-sky-400'>\n <CircleAlertIcon />\n <AlertTitle>Your profile is visible</AlertTitle>\n <AlertDescription className='text-white/80'>Anyone can view your basic information.</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSolidInfoDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-29.tsx"
}
]
}

21
public/r/alert-30.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "alert-30",
"type": "registry:component",
"title": "Alert 30",
"description": "Solid destructive alert with full red background for prominent error messages.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"alert"
],
"files": [
{
"path": "src/components/shadcn-studio/alert/alert-30.tsx",
"content": "import { TriangleAlertIcon } from 'lucide-react'\n\nimport { Alert, AlertTitle, AlertDescription } from '@/components/ui/alert'\n\nconst AlertSolidDestructiveDemo = () => {\n return (\n <Alert className='bg-destructive dark:bg-destructive/60 border-none text-white'>\n <TriangleAlertIcon />\n <AlertTitle>Couldn&apos;t save changes</AlertTitle>\n <AlertDescription className='text-white/80'>Please try again or reload the page.</AlertDescription>\n </Alert>\n )\n}\n\nexport default AlertSolidDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/alert/alert-30.tsx"
}
]
}

View file

@ -0,0 +1,29 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "app-integration-01",
"type": "registry:block",
"title": "App Integration 1",
"description": "Two-column layout with integration cards featuring tool logos, names, descriptions, and call-to-action for conversion-focused app showcases",
"registryDependencies": [
"button",
"card"
],
"files": [
{
"path": "src/app/(blank)/preview/marketing-ui/app-integration/app-integration-01/page.tsx",
"content": "import AppIntegration from '@/components/shadcn-studio/blocks/app-integration-01/app-integration-01'\n\nconst integrations = [\n {\n name: 'Microsoft',\n description: 'Empowering Innovation and Connectivity',\n image: 'https://cdn.shadcnstudio.com/ss-assets/brand-logo/microsoft-icon.png',\n alt: 'Microsoft'\n },\n {\n name: 'Spotify',\n description: 'Your soundtrack to every moment.',\n image: 'https://cdn.shadcnstudio.com/ss-assets/brand-logo/spotify-icon.png',\n alt: 'Spotify'\n },\n {\n name: 'Github',\n description: 'Your Hub for Open Source Innovation',\n image: 'https://cdn.shadcnstudio.com/ss-assets/brand-logo/github-white.png',\n alt: 'Github'\n }\n]\n\nconst AppIntegrationPage = () => {\n return <AppIntegration integrations={integrations} />\n}\n\nexport default AppIntegrationPage\n",
"type": "registry:page",
"target": "app/app-integration-01/page.tsx"
},
{
"path": "src/components/shadcn-studio/blocks/app-integration-01/app-integration-01.tsx",
"content": "import { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardDescription, CardTitle } from '@/components/ui/card'\n\ntype Integration = {\n name: string\n description: string\n image: string\n alt: string\n}[]\n\nconst AppIntegration = ({ integrations }: { integrations: Integration }) => {\n return (\n <section className='py-8 sm:py-16 lg:py-24'>\n <div className='mx-auto max-w-7xl px-4 sm:px-6 lg:px-8'>\n <div className='grid grid-cols-1 items-center gap-6 md:grid-cols-2'>\n <div className='space-y-4'>\n <h2 className='text-2xl font-semibold md:text-3xl lg:text-4xl'>\n Connects with your favourite tools to boost conversions!\n </h2>\n <p className='text-muted-foreground text-xl'>\n Harness the potential of seamless integration to boost your sales performance! Discover how connecting\n your tools can lead to greater efficiency and impressive results.\n </p>\n <Button size='lg' className='rounded-lg text-base'>\n Check all app\n </Button>\n </div>\n\n <div className='space-y-6'>\n {integrations.map((integration, index) => (\n <Card key={index} className='bg-transparent py-4 shadow-none'>\n <CardContent className='flex items-center gap-6'>\n <div className='flex size-17 shrink-0 items-center justify-center rounded-md border'>\n <img src={integration.image} alt={integration.alt} className='size-10' />\n </div>\n <div>\n <CardTitle className='text-xl font-medium'>{integration.name}</CardTitle>\n <CardDescription className='text-base'>{integration.description}</CardDescription>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n </div>\n </section>\n )\n}\n\nexport default AppIntegration\n",
"type": "registry:component",
"target": "components/shadcn-studio/blocks/app-integration-01/app-integration-01.tsx"
}
],
"meta": {
"category": "marketing-ui",
"section": "app-integration"
}
}

File diff suppressed because one or more lines are too long

131
public/r/art-deco.json Normal file
View file

@ -0,0 +1,131 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "art-deco",
"type": "registry:style",
"cssVars": {
"theme": {
"font-sans": "Delius Swash Caps",
"font-mono": "Delius Swash Caps",
"font-serif": "Delius Swash Caps",
"radius": "0.625rem",
"tracking-tighter": "calc(var(--tracking-normal) - 0.05em)",
"tracking-tight": "calc(var(--tracking-normal) - 0.025em)",
"tracking-wide": "calc(var(--tracking-normal) + 0.025em)",
"tracking-wider": "calc(var(--tracking-normal) + 0.05em)",
"tracking-widest": "calc(var(--tracking-normal) + 0.1em)"
},
"light": {
"background": "oklch(0.96 0.03 106.92)",
"foreground": "oklch(0.40 0.07 90.80)",
"card": "oklch(0.98 0.04 97.73)",
"card-foreground": "oklch(0.32 0 0)",
"popover": "oklch(0.98 0.04 97.73)",
"popover-foreground": "oklch(0.32 0 0)",
"primary": "oklch(0.77 0.14 91.27)",
"primary-foreground": "oklch(0 0 0)",
"secondary": "oklch(0.67 0.13 61.58)",
"secondary-foreground": "oklch(0 0 0)",
"muted": "oklch(0.93 0.03 106.94)",
"muted-foreground": "oklch(0.32 0 0)",
"accent": "oklch(0.89 0.18 95.47)",
"accent-foreground": "oklch(0.32 0 0)",
"destructive": "oklch(0.69 0.20 32.29)",
"border": "oklch(0.83 0.11 93.01)",
"input": "oklch(0.65 0.13 81.66)",
"ring": "oklch(0.75 0.15 84.05)",
"chart-1": "oklch(0.89 0.18 95.47)",
"chart-2": "oklch(0.67 0.13 61.58)",
"chart-3": "oklch(0.65 0.13 81.66)",
"chart-4": "oklch(0.75 0.15 84.05)",
"chart-5": "oklch(0.77 0.14 91.27)",
"sidebar": "oklch(0.96 0.03 106.92)",
"sidebar-foreground": "oklch(0.32 0 0)",
"sidebar-primary": "oklch(0.77 0.14 91.27)",
"sidebar-primary-foreground": "oklch(0.32 0 0)",
"sidebar-accent": "oklch(0.89 0.18 95.47)",
"sidebar-accent-foreground": "oklch(0.32 0 0)",
"sidebar-border": "oklch(0.65 0.13 81.66)",
"sidebar-ring": "oklch(0.75 0.15 84.05)",
"font-sans": "Delius Swash Caps",
"font-serif": "Delius Swash Caps",
"font-mono": "Delius Swash Caps",
"radius": "0.625rem",
"shadow-color": "oklch(0.70 0.17 28.12 / 30%)",
"shadow-opacity": "0.05",
"shadow-blur": "3px",
"shadow-spread": "0px",
"shadow-offset-x": "0px",
"shadow-offset-y": "1px",
"spacing": "0.25rem",
"shadow-2xs": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.03)",
"shadow-xs": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.03)",
"shadow-sm": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.05), 0px 1px 2px -1px oklch(0.70 0.17 28.12 / 0.05)",
"shadow": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.05), 0px 1px 2px -1px oklch(0.70 0.17 28.12 / 0.05)",
"shadow-md": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.05), 0px 2px 4px -1px oklch(0.70 0.17 28.12 / 0.05)",
"shadow-lg": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.05), 0px 4px 6px -1px oklch(0.70 0.17 28.12 / 0.05)",
"shadow-xl": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.05), 0px 8px 10px -1px oklch(0.70 0.17 28.12 / 0.05)",
"shadow-2xl": "0px 1px 3px 0px oklch(0.70 0.17 28.12 / 0.13)",
"tracking-normal": "0em"
},
"dark": {
"background": "oklch(0.32 0 0)",
"foreground": "oklch(0.96 0.03 106.92)",
"card": "oklch(0.41 0 0)",
"card-foreground": "oklch(0.96 0.03 106.92)",
"popover": "oklch(0.41 0 0)",
"popover-foreground": "oklch(0.96 0.03 106.92)",
"primary": "oklch(0.84 0.17 83.07)",
"primary-foreground": "oklch(0 0 0)",
"secondary": "oklch(0.47 0.11 50.64)",
"secondary-foreground": "oklch(0.96 0.03 106.92)",
"muted": "oklch(0.44 0 0)",
"muted-foreground": "oklch(0.96 0.03 106.92)",
"accent": "oklch(0.66 0.14 79.74)",
"accent-foreground": "oklch(0 0 0)",
"destructive": "oklch(0.66 0.23 35.22)",
"border": "oklch(0.47 0.11 50.64)",
"input": "oklch(0.47 0.11 50.64)",
"ring": "oklch(0.65 0.13 81.66)",
"chart-1": "oklch(0.75 0.15 84.05)",
"chart-2": "oklch(0.47 0.11 50.64)",
"chart-3": "oklch(0.65 0.13 81.66)",
"chart-4": "oklch(0.75 0.15 84.05)",
"chart-5": "oklch(0.65 0.13 81.66)",
"sidebar": "oklch(0.32 0 0)",
"sidebar-foreground": "oklch(1.00 0 0)",
"sidebar-primary": "oklch(0.61 0.13 79.65)",
"sidebar-primary-foreground": "oklch(1.00 0 0)",
"sidebar-accent": "oklch(0.75 0.15 84.05)",
"sidebar-accent-foreground": "oklch(0.96 0.03 106.92)",
"sidebar-border": "oklch(0.47 0.11 50.64)",
"sidebar-ring": "oklch(0.65 0.13 81.66)",
"radius": "0.625rem",
"shadow-color": "oklch(0.00 0 0 / 0.05)",
"shadow-opacity": "0.05",
"shadow-blur": "3px",
"shadow-spread": "0px",
"shadow-offset-x": "0px",
"shadow-offset-y": "1px",
"letter-spacing": "0em",
"spacing": "0.25rem",
"font-sans": "'Geist', 'Geist Fallback', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'",
"font-serif": "\"Geist\", \"Geist Fallback\", ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif",
"font-mono": "\"Geist Mono\", \"Geist Mono Fallback\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace",
"shadow-2xs": "0px 1px 3px 0px oklch(0 0 0 / 0.03)",
"shadow-xs": "0px 1px 3px 0px oklch(0 0 0 / 0.03)",
"shadow-sm": "0px 1px 3px 0px oklch(0 0 0 / 0.05), 0px 1px 2px -1px oklch(0 0 0 / 0.05)",
"shadow": "0px 1px 3px 0px oklch(0 0 0 / 0.05), 0px 1px 2px -1px oklch(0 0 0 / 0.05)",
"shadow-md": "0px 1px 3px 0px oklch(0 0 0 / 0.05), 0px 2px 4px -1px oklch(0 0 0 / 0.05)",
"shadow-lg": "0px 1px 3px 0px oklch(0 0 0 / 0.05), 0px 4px 6px -1px oklch(0 0 0 / 0.05)",
"shadow-xl": "0px 1px 3px 0px oklch(0 0 0 / 0.05), 0px 8px 10px -1px oklch(0 0 0 / 0.05)",
"shadow-2xl": "0px 1px 3px 0px oklch(0 0 0 / 0.13)"
}
},
"css": {
"@layer base": {
"body": {
"letter-spacing": "var(--tracking-normal)"
}
}
}
}

18
public/r/avatar-01.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-01",
"type": "registry:component",
"title": "Avatar 1",
"description": "Basic avatar with profile image and fallback initials.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-01.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarDemo = () => {\n return (\n <Avatar>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-01.tsx"
}
]
}

18
public/r/avatar-02.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-02",
"type": "registry:component",
"title": "Avatar 2",
"description": "Avatar with ring border highlighting for active or selected states.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-02.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarRingDemo = () => {\n return (\n <Avatar className='ring-ring ring-2'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarRingDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-02.tsx"
}
]
}

18
public/r/avatar-03.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-03",
"type": "registry:component",
"title": "Avatar 3",
"description": "Small sized avatar variant with compact dimensions.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-03.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarRoundedDemo = () => {\n return (\n <Avatar className='rounded-sm'>\n <AvatarImage\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='rounded-sm'\n />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarRoundedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-03.tsx"
}
]
}

18
public/r/avatar-04.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-04",
"type": "registry:component",
"title": "Avatar 4",
"description": "Large sized avatar variant with expanded dimensions.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-04.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarSizeDemo = () => {\n return (\n <Avatar className='size-12'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarSizeDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-04.tsx"
}
]
}

18
public/r/avatar-05.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-05",
"type": "registry:component",
"title": "Avatar 5",
"description": "Circular avatar with fallback initials.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-05.tsx",
"content": "import { Avatar, AvatarFallback } from '@/components/ui/avatar'\n\nconst AvatarFallbackDemo = () => {\n return (\n <Avatar>\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarFallbackDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-05.tsx"
}
]
}

21
public/r/avatar-06.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-06",
"type": "registry:component",
"title": "Avatar 6",
"description": "Icon avatar using Lucide icon with colored background.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-06.tsx",
"content": "import { HomeIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar'\n\nconst AvatarIconDemo = () => {\n return (\n <Avatar>\n <AvatarFallback className='bg-indigo-500/10 text-indigo-500'>\n <HomeIcon className='size-4' />\n </AvatarFallback>\n </Avatar>\n )\n}\n\nexport default AvatarIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-06.tsx"
}
]
}

18
public/r/avatar-07.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-07",
"type": "registry:component",
"title": "Avatar 7",
"description": "Status avatar with busy indicator showing red status dot.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-07.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarStatusBusyDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <span className='border-background bg-destructive absolute -right-0.5 -bottom-0.5 size-3 rounded-full border-2'>\n <span className='sr-only'>Busy</span>\n </span>\n </div>\n )\n}\n\nexport default AvatarStatusBusyDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-07.tsx"
}
]
}

21
public/r/avatar-08.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-08",
"type": "registry:component",
"title": "Avatar 8",
"description": "Status avatar with online indicator showing green status dot.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-08.tsx",
"content": "import { CheckIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarStatusRingDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='ring-offset-background ring-2 ring-green-600 ring-offset-2 dark:ring-green-400'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <span className='absolute -right-1.5 -bottom-1.5 inline-flex size-4 items-center justify-center rounded-full bg-green-600 dark:bg-green-400'>\n <CheckIcon className='size-3 text-white' />\n </span>\n </div>\n )\n}\n\nexport default AvatarStatusRingDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-08.tsx"
}
]
}

18
public/r/avatar-09.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-09",
"type": "registry:component",
"title": "Avatar 9",
"description": "Status avatar with away indicator showing amber status dot for absent/away state.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-09.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarStatusAwayDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='rounded-sm'>\n <AvatarImage\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='rounded-sm'\n />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <span className='border-background absolute -top-1.5 -right-1.5 size-3 rounded-full border-2 bg-amber-600 dark:bg-amber-400'>\n <span className='sr-only'>Away</span>\n </span>\n </div>\n )\n}\n\nexport default AvatarStatusAwayDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-09.tsx"
}
]
}

21
public/r/avatar-10.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-10",
"type": "registry:component",
"title": "Avatar 10",
"description": "Avatar with plus icon overlay for adding or editing profile functionality.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-10.tsx",
"content": "import { PlusCircleIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarPlusDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='size-10'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <button className='focus-visible:ring-ring/50 absolute -right-1 -bottom-1 inline-flex cursor-pointer items-center justify-center rounded-full focus-visible:ring-[3px] focus-visible:outline-none'>\n <PlusCircleIcon className='text-background size-5 fill-slate-400' />\n <span className='sr-only'>Add</span>\n </button>\n </div>\n )\n}\n\nexport default AvatarPlusDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-10.tsx"
}
]
}

19
public/r/avatar-11.json Normal file
View file

@ -0,0 +1,19 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-11",
"type": "registry:component",
"title": "Avatar 11",
"description": "Avatar with notification badge showing count number for alerts and messages.",
"registryDependencies": [
"avatar",
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-11.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Badge } from '@/components/ui/badge'\n\nconst AvatarNotificationBadgeDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='size-10 rounded-sm'>\n <AvatarImage\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='rounded-sm'\n />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <Badge className='absolute -top-2.5 -right-2.5 h-5 min-w-5 bg-indigo-500 px-1 tabular-nums'>8</Badge>\n </div>\n )\n}\n\nexport default AvatarNotificationBadgeDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-11.tsx"
}
]
}

21
public/r/avatar-12.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-12",
"type": "registry:component",
"title": "Avatar 12",
"description": "Avatar with verified badge showing check mark icon for verified accounts.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-12.tsx",
"content": "import { BadgeCheckIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst AvatarVerifiedDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='size-10'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback className='text-xs'>HR</AvatarFallback>\n </Avatar>\n <span className='absolute -top-1.5 -right-1.5'>\n <span className='sr-only'>Verified</span>\n <BadgeCheckIcon className='text-background size-5 fill-sky-500' />\n </span>\n </div>\n )\n}\n\nexport default AvatarVerifiedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-12.tsx"
}
]
}

18
public/r/avatar-13.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-13",
"type": "registry:component",
"title": "Avatar 13",
"description": "Avatar group displaying multiple overlapping users with ring borders.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-13.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupDemo = () => {\n return (\n <div className='flex -space-x-2'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n )\n}\n\nexport default AvatarGroupDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-13.tsx"
}
]
}

18
public/r/avatar-14.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-14",
"type": "registry:component",
"title": "Avatar 14",
"description": "Avatar group with count indicator showing additional users (+9) in overflow.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-14.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n }\n]\n\nconst AvatarGroupMaxDemo = () => {\n return (\n <div className='flex -space-x-2'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n <Avatar className='ring-background ring-2'>\n <AvatarFallback className='text-xs'>+9</AvatarFallback>\n </Avatar>\n </div>\n )\n}\n\nexport default AvatarGroupMaxDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-14.tsx"
}
]
}

18
public/r/avatar-15.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-15",
"type": "registry:component",
"title": "Avatar 15",
"description": "Large-sized avatar group with bigger dimensions for prominent display.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-15.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupSizeDemo = () => {\n return (\n <div className='flex -space-x-2'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background size-12 ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n )\n}\n\nexport default AvatarGroupSizeDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-15.tsx"
}
]
}

19
public/r/avatar-16.json Normal file
View file

@ -0,0 +1,19 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-16",
"type": "registry:component",
"title": "Avatar 16",
"description": "Avatar group with tooltip hover effects and elevation animation.",
"registryDependencies": [
"avatar",
"tooltip"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-16.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupTooltipDemo = () => {\n return (\n <div className='flex -space-x-2'>\n {avatars.map((avatar, index) => (\n <Tooltip key={index}>\n <TooltipTrigger asChild>\n <Avatar className='ring-background ring-2 transition-all duration-300 ease-in-out hover:z-1 hover:-translate-y-1 hover:shadow-md'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n </TooltipTrigger>\n <TooltipContent>{avatar.name}</TooltipContent>\n </Tooltip>\n ))}\n </div>\n )\n}\n\nexport default AvatarGroupTooltipDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-16.tsx"
}
]
}

18
public/r/avatar-17.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-17",
"type": "registry:component",
"title": "Avatar 17",
"description": "Avatar group with smooth spacing transition on hover interaction.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-17.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupTransitionDemo = () => {\n return (\n <div className='flex -space-x-2 hover:space-x-1'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background ring-2 transition-all duration-300 ease-in-out'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n )\n}\n\nexport default AvatarGroupTransitionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-17.tsx"
}
]
}

19
public/r/avatar-18.json Normal file
View file

@ -0,0 +1,19 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-18",
"type": "registry:component",
"title": "Avatar 18",
"description": "Avatar group with tooltip transitions and hover spacing effects.",
"registryDependencies": [
"avatar",
"tooltip"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-18.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupTooltipTransitionDemo = () => {\n return (\n <div className='flex -space-x-2 hover:space-x-1'>\n {avatars.map((avatar, index) => (\n <Tooltip key={index}>\n <TooltipTrigger asChild>\n <Avatar className='ring-background ring-2 transition-all duration-300 ease-in-out'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n </TooltipTrigger>\n <TooltipContent>{avatar.name}</TooltipContent>\n </Tooltip>\n ))}\n </div>\n )\n}\n\nexport default AvatarGroupTooltipTransitionDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-18.tsx"
}
]
}

22
public/r/avatar-19.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-19",
"type": "registry:component",
"title": "Avatar 19",
"description": "Avatar group with dropdown menu showing additional users and actions.",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar",
"dropdown-menu"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-19.tsx",
"content": "import { PlusIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-1.png',\n fallback: 'DR',\n name: 'Darlene Robertson'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-2.png',\n fallback: 'LA',\n name: 'Leslie Alexander'\n }\n]\n\nconst AvatarGroupDropdownDemo = () => {\n return (\n <div className='flex -space-x-2'>\n {avatars.slice(0, 3).map((avatar, index) => (\n <Avatar key={index} className='ring-background ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button className='bg-muted has-focus-visible:ring-ring/50 ring-background flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full ring-2'>\n <PlusIcon className='size-4' />\n <span className='sr-only'>Add</span>\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n {avatars.slice(3).map((avatar, index) => (\n <DropdownMenuItem key={index}>\n <Avatar>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n <span>{avatar.name}</span>\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )\n}\n\nexport default AvatarGroupDropdownDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-19.tsx"
}
]
}

18
public/r/avatar-20.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-20",
"type": "registry:component",
"title": "Avatar 20",
"description": "Avatar group with outlined container and background styling.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-20.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupOutlineDemo = () => {\n return (\n <div className='bg-background flex items-center rounded-full border p-1 shadow-sm'>\n <div className='flex -space-x-2'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n <span className='text-muted-foreground hover:text-foreground flex items-center justify-center rounded-full bg-transparent px-2 text-xs shadow-none hover:bg-transparent'>\n +3\n </span>\n </div>\n )\n}\n\nexport default AvatarGroupOutlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-20.tsx"
}
]
}

18
public/r/avatar-21.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "avatar-21",
"type": "registry:component",
"title": "Avatar 21",
"description": "Avatar group with popularity indicator styling and text showcasing community trust.",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/avatar/avatar-21.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst avatars = [\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-3.png',\n fallback: 'OS',\n name: 'Olivia Sparks'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-6.png',\n fallback: 'HL',\n name: 'Howard Lloyd'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png',\n fallback: 'HR',\n name: 'Hallie Richards'\n },\n {\n src: 'https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-16.png',\n fallback: 'JW',\n name: 'Jenny Wilson'\n }\n]\n\nconst AvatarGroupPopularityIndicatorDemo = () => {\n return (\n <div className='bg-background flex flex-wrap items-center justify-center rounded-full border p-1 shadow-sm'>\n <div className='flex -space-x-1'>\n {avatars.map((avatar, index) => (\n <Avatar key={index} className='ring-background size-6 ring-2'>\n <AvatarImage src={avatar.src} alt={avatar.name} />\n <AvatarFallback className='text-xs'>{avatar.fallback}</AvatarFallback>\n </Avatar>\n ))}\n </div>\n <p className='text-muted-foreground px-2 text-xs'>\n Loved by <strong className='text-foreground font-medium'>10K+</strong> developers.\n </p>\n </div>\n )\n}\n\nexport default AvatarGroupPopularityIndicatorDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/avatar/avatar-21.tsx"
}
]
}

18
public/r/badge-01.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-01",
"type": "registry:component",
"title": "Badge 1",
"description": "Default badge demonstrating basic styling with standard text display",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-01.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeDemo = () => {\n return <Badge>Default</Badge>\n}\n\nexport default BadgeDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-01.tsx"
}
]
}

18
public/r/badge-02.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-02",
"type": "registry:component",
"title": "Badge 2",
"description": "Secondary variant badge with muted styling for less prominent labels",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-02.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeSecondaryDemo = () => {\n return <Badge variant='secondary'>Secondary</Badge>\n}\n\nexport default BadgeSecondaryDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-02.tsx"
}
]
}

18
public/r/badge-03.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-03",
"type": "registry:component",
"title": "Badge 3",
"description": "Destructive variant badge with red styling for error or warning states",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-03.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeDestructiveDemo = () => {\n return <Badge variant='destructive'>Destructive</Badge>\n}\n\nexport default BadgeDestructiveDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-03.tsx"
}
]
}

18
public/r/badge-04.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-04",
"type": "registry:component",
"title": "Badge 4",
"description": "Outline variant badge with bordered styling for subtle emphasis",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-04.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeOutlineDemo = () => {\n return <Badge variant='outline'>Outline</Badge>\n}\n\nexport default BadgeOutlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-04.tsx"
}
]
}

15
public/r/badge-05.json Normal file
View file

@ -0,0 +1,15 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-05",
"type": "registry:component",
"title": "Badge 5",
"description": "Dot indicator badge with colored circle for compact status representation",
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-05.tsx",
"content": "const BadgeDotDemo = () => {\n return (\n <span className='inline-flex w-fit shrink-0 items-center justify-center gap-1 px-2 py-0.5 text-xs font-medium whitespace-nowrap'>\n <span className='bg-primary size-2 rounded-full' aria-hidden='true' />\n Dot Badge\n </span>\n )\n}\n\nexport default BadgeDotDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-05.tsx"
}
]
}

18
public/r/badge-06.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-06",
"type": "registry:component",
"title": "Badge 6",
"description": "Rounded badge with full border radius for pill-shaped appearance",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-06.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeRoundedDemo = () => {\n return <Badge className='rounded-sm'>Rounded</Badge>\n}\n\nexport default BadgeRoundedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-06.tsx"
}
]
}

18
public/r/badge-07.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-07",
"type": "registry:component",
"title": "Badge 7",
"description": "Number badge with circular design for count and notification displays",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-07.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeNumberDemo = () => {\n return <Badge className='h-5 min-w-5 px-1 tabular-nums'>8</Badge>\n}\n\nexport default BadgeNumberDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-07.tsx"
}
]
}

18
public/r/badge-08.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-08",
"type": "registry:component",
"title": "Badge 8",
"description": "Large size badge with increased padding for prominence",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-08.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeLargeDemo = () => {\n return <Badge className='px-3 py-1'>Large</Badge>\n}\n\nexport default BadgeLargeDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-08.tsx"
}
]
}

18
public/r/badge-09.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-09",
"type": "registry:component",
"title": "Badge 9",
"description": "Small size badge with reduced padding for compact display areas",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-09.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeSmallDemo = () => {\n return <Badge className='px-1.5 py-px'>Small</Badge>\n}\n\nexport default BadgeSmallDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-09.tsx"
}
]
}

18
public/r/badge-10.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-10",
"type": "registry:component",
"title": "Badge 10",
"description": "Badge with icon integration for enhanced visual context",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-10.tsx",
"content": "import { StarIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeWithIconDemo = () => {\n return (\n <Badge>\n <StarIcon className='size-3' />\n With Icon\n </Badge>\n )\n}\n\nexport default BadgeWithIconDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-10.tsx"
}
]
}

21
public/r/badge-11.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-11",
"type": "registry:component",
"title": "Badge 11",
"description": "Link badge that can be used as clickable navigation element",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-11.tsx",
"content": "import { ArrowRightIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeLinkDemo = () => {\n return (\n <Badge asChild>\n <a href='#' className='focus-visible:ring-ring/50 focus-visible:ring-2 focus-visible:outline-0'>\n Link <ArrowRightIcon className='size-3' />\n </a>\n </Badge>\n )\n}\n\nexport default BadgeLinkDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-11.tsx"
}
]
}

21
public/r/badge-12.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-12",
"type": "registry:component",
"title": "Badge 12",
"description": "Closable badge with X button for dismissible notifications",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-12.tsx",
"content": "'use client'\n\nimport { useState } from 'react'\n\nimport { XIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeClosableDemo = () => {\n const [isActive, setIsActive] = useState(true)\n\n if (!isActive) return null\n\n return (\n <Badge>\n Closable\n <button\n className='focus-visible:border-ring focus-visible:ring-ring/50 text-primary-foreground/60 hover:text-primary-foreground -my-px -ms-px -me-1.5 inline-flex size-4 shrink-0 cursor-pointer items-center justify-center rounded-[inherit] p-0 transition-[color,box-shadow] outline-none focus-visible:ring-[3px]'\n aria-label='Close'\n onClick={() => setIsActive(false)}\n >\n <XIcon className='size-3' aria-hidden='true' />\n </button>\n </Badge>\n )\n}\n\nexport default BadgeClosableDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-12.tsx"
}
]
}

22
public/r/badge-13.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-13",
"type": "registry:component",
"title": "Badge 13",
"description": "Selectable badge with checkbox functionality for interactive selection",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge",
"checkbox"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-13.tsx",
"content": "'use client'\n\nimport { useState, useId } from 'react'\n\nimport { CheckCircleIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\nimport { Checkbox } from '@/components/ui/checkbox'\n\nconst BadgeSelectableDemo = () => {\n const [selected, setSelected] = useState(false)\n\n const id = useId()\n\n return (\n <Badge\n variant={selected ? 'secondary' : 'outline'}\n className='has-focus-visible:border-ring/50 has-focus-visible:ring-ring/50 relative cursor-pointer rounded-sm outline-none has-focus-visible:ring-2'\n >\n <Checkbox\n id={id}\n className='peer sr-only after:absolute after:inset-0'\n checked={selected}\n onCheckedChange={checked => setSelected(!!checked)}\n />\n <CheckCircleIcon\n className='hidden size-3 text-green-600 peer-data-[state=checked]:block dark:text-green-400'\n aria-hidden='true'\n />\n <label htmlFor={id} className='cursor-pointer select-none after:absolute after:inset-0'>\n {selected ? 'Selected' : 'Selectable'}\n </label>\n </Badge>\n )\n}\n\nexport default BadgeSelectableDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-13.tsx"
}
]
}

18
public/r/badge-14.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-14",
"type": "registry:component",
"title": "Badge 14",
"description": "Gradient styled badge with vibrant indigo-to-pink color transition",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-14.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeGradientDemo = () => {\n return (\n <Badge className='rounded-sm border-transparent bg-gradient-to-r from-indigo-500 to-pink-500 [background-size:105%] bg-center text-white'>\n Gradient\n </Badge>\n )\n}\n\nexport default BadgeGradientDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-14.tsx"
}
]
}

18
public/r/badge-15.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-15",
"type": "registry:component",
"title": "Badge 15",
"description": "Gradient outline badge with bordered gradient effect",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-15.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeGradientOutlineDemo = () => {\n return (\n <div className='flex items-center justify-center rounded-full bg-gradient-to-r from-indigo-500 to-pink-500 p-0.5'>\n <Badge className='bg-background hover:bg-background text-foreground border-none'>Gradient Outline</Badge>\n </div>\n )\n}\n\nexport default BadgeGradientOutlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-15.tsx"
}
]
}

18
public/r/badge-16.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-16",
"type": "registry:component",
"title": "Badge 16",
"description": "In-progress status badge with amber color and dot indicator",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-16.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeInProgressDemo = () => {\n return (\n <Badge className='border-none bg-amber-600/10 text-amber-600 focus-visible:ring-amber-600/20 focus-visible:outline-none dark:bg-amber-400/10 dark:text-amber-400 dark:focus-visible:ring-amber-400/40 [a&]:hover:bg-amber-600/5 dark:[a&]:hover:bg-amber-400/5'>\n <span className='size-1.5 rounded-full bg-amber-600 dark:bg-amber-400' aria-hidden='true' />\n In Progress\n </Badge>\n )\n}\n\nexport default BadgeInProgressDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-16.tsx"
}
]
}

18
public/r/badge-17.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-17",
"type": "registry:component",
"title": "Badge 17",
"description": "Blocked status badge with destructive color and dot indicator",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-17.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeBlockedDemo = () => {\n return (\n <Badge className='bg-destructive/10 [a&]:hover:bg-destructive/5 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive border-none focus-visible:outline-none'>\n <span className='bg-destructive size-1.5 rounded-full' aria-hidden='true' />\n Blocked\n </Badge>\n )\n}\n\nexport default BadgeBlockedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-17.tsx"
}
]
}

18
public/r/badge-18.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-18",
"type": "registry:component",
"title": "Badge 18",
"description": "Completed status badge with green color and dot indicator",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-18.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeCompletedDemo = () => {\n return (\n <Badge className='border-none bg-green-600/10 text-green-600 focus-visible:ring-green-600/20 focus-visible:outline-none dark:bg-green-400/10 dark:text-green-400 dark:focus-visible:ring-green-400/40 [a&]:hover:bg-green-600/5 dark:[a&]:hover:bg-green-400/5'>\n <span className='size-1.5 rounded-full bg-green-600 dark:bg-green-400' aria-hidden='true' />\n Completed\n </Badge>\n )\n}\n\nexport default BadgeCompletedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-18.tsx"
}
]
}

21
public/r/badge-19.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-19",
"type": "registry:component",
"title": "Badge 19",
"description": "Pending status badge with amber outline and alert icon",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-19.tsx",
"content": "import { AlertCircleIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgePendingDemo = () => {\n return (\n <Badge\n variant='outline'\n className='rounded-sm border-amber-600 text-amber-600 dark:border-amber-400 dark:text-amber-400 [a&]:hover:bg-amber-600/10 [a&]:hover:text-amber-600/90 dark:[a&]:hover:bg-amber-400/10 dark:[a&]:hover:text-amber-400/90'\n >\n <AlertCircleIcon className='size-3' />\n Pending\n </Badge>\n )\n}\n\nexport default BadgePendingDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-19.tsx"
}
]
}

21
public/r/badge-20.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-20",
"type": "registry:component",
"title": "Badge 20",
"description": "Failed status badge with destructive outline and ban icon",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-20.tsx",
"content": "import { BanIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeFailedDemo = () => {\n return (\n <Badge\n variant='outline'\n className='text-destructive [a&]:hover:bg-destructive/10 [a&]:hover:text-destructive/90 border-destructive rounded-sm'\n >\n <BanIcon className='size-3' />\n Failed\n </Badge>\n )\n}\n\nexport default BadgeFailedDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-20.tsx"
}
]
}

21
public/r/badge-21.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-21",
"type": "registry:component",
"title": "Badge 21",
"description": "Successful status badge with green outline and check icon",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-21.tsx",
"content": "import { CheckCircleIcon } from 'lucide-react'\n\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeSuccessfulDemo = () => {\n return (\n <Badge\n variant='outline'\n className='rounded-sm border-green-600 text-green-600 dark:border-green-400 dark:text-green-400 [a&]:hover:bg-green-600/10 [a&]:hover:text-green-600/90 dark:[a&]:hover:bg-green-400/10 dark:[a&]:hover:text-green-400/90'\n >\n <CheckCircleIcon className='size-3' />\n Successful\n </Badge>\n )\n}\n\nexport default BadgeSuccessfulDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-21.tsx"
}
]
}

18
public/r/badge-22.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-22",
"type": "registry:component",
"title": "Badge 22",
"description": "Avatar badge combining user profile image with label text",
"registryDependencies": [
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-22.tsx",
"content": "import { Badge } from '@/components/ui/badge'\n\nconst BadgeAvatarDemo = () => {\n return (\n <Badge variant='outline' className='p-1 pr-2'>\n <img\n src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png'\n alt='Hallie Richards'\n className='size-6 rounded-full'\n />\n Avatar\n </Badge>\n )\n}\n\nexport default BadgeAvatarDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-22.tsx"
}
]
}

22
public/r/badge-23.json Normal file
View file

@ -0,0 +1,22 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-23",
"type": "registry:component",
"title": "Badge 23",
"description": "Cart notification badge with count display over shopping icon",
"dependencies": [
"lucide-react"
],
"registryDependencies": [
"avatar",
"badge"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-23.tsx",
"content": "import { ShoppingCartIcon } from 'lucide-react'\n\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar'\nimport { Badge } from '@/components/ui/badge'\n\nconst BadgeCartDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='size-9 rounded-sm'>\n <AvatarFallback className='rounded-sm'>\n <ShoppingCartIcon className='size-5' />\n </AvatarFallback>\n </Avatar>\n <Badge className='absolute -top-2.5 -right-2.5 h-5 min-w-5 px-1 tabular-nums'>8</Badge>\n </div>\n )\n}\n\nexport default BadgeCartDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-23.tsx"
}
]
}

18
public/r/badge-24.json Normal file
View file

@ -0,0 +1,18 @@
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "badge-24",
"type": "registry:component",
"title": "Badge 24",
"description": "Online status indicator badge with green dot over avatar",
"registryDependencies": [
"avatar"
],
"files": [
{
"path": "src/components/shadcn-studio/badge/badge-24.tsx",
"content": "import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'\n\nconst BadgeStatusOnlineDemo = () => {\n return (\n <div className='relative w-fit'>\n <Avatar className='size-10'>\n <AvatarImage src='https://cdn.shadcnstudio.com/ss-assets/avatar/avatar-5.png' alt='Hallie Richards' />\n <AvatarFallback>HR</AvatarFallback>\n </Avatar>\n <span className='border-background absolute -right-0.5 -bottom-0.5 size-3 rounded-full border-2 bg-green-600 dark:bg-green-400'>\n <span className='sr-only'>Online</span>\n </span>\n </div>\n )\n}\n\nexport default BadgeStatusOnlineDemo\n",
"type": "registry:component",
"target": "components/shadcn-studio/badge/badge-24.tsx"
}
]
}

Some files were not shown because too many files have changed in this diff Show more