From 958425cbbae4dc966213a7e66c307535049ff646 Mon Sep 17 00:00:00 2001 From: akash3444 Date: Sun, 19 Oct 2025 14:47:21 +0530 Subject: [PATCH] feat: add new accordion particles - Introduced multiple accordion particles: "accordion-with-icon", "accordion-multi-level", "accordion-table", and "accordion-tabs". --- apps/ui/public/r/accordion-multi-level.json | 20 +++ apps/ui/public/r/accordion-table.json | 19 +++ apps/ui/public/r/accordion-tabs.json | 19 +++ apps/ui/public/r/accordion-with-icon.json | 19 +++ apps/ui/public/r/registry.json | 69 +++++++++ apps/ui/registry.json | 69 +++++++++ apps/ui/registry/__index__.tsx | 72 +++++++++ .../examples/accordion-multi-level.tsx | 138 ++++++++++++++++++ .../default/examples/accordion-table.tsx | 48 ++++++ .../default/examples/accordion-tabs.tsx | 39 +++++ .../default/examples/accordion-with-icon.tsx | 63 ++++++++ apps/ui/registry/default/particles/index.tsx | 32 ++++ apps/ui/registry/registry-examples.ts | 55 +++++++ 13 files changed, 662 insertions(+) create mode 100644 apps/ui/public/r/accordion-multi-level.json create mode 100644 apps/ui/public/r/accordion-table.json create mode 100644 apps/ui/public/r/accordion-tabs.json create mode 100644 apps/ui/public/r/accordion-with-icon.json create mode 100644 apps/ui/registry/default/examples/accordion-multi-level.tsx create mode 100644 apps/ui/registry/default/examples/accordion-table.tsx create mode 100644 apps/ui/registry/default/examples/accordion-tabs.tsx create mode 100644 apps/ui/registry/default/examples/accordion-with-icon.tsx diff --git a/apps/ui/public/r/accordion-multi-level.json b/apps/ui/public/r/accordion-multi-level.json new file mode 100644 index 000000000..aa69491b9 --- /dev/null +++ b/apps/ui/public/r/accordion-multi-level.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "accordion-multi-level", + "type": "registry:example", + "description": "Accordion with multiple levels", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json", + "https://coss.com/ui/r/collapsible.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-multi-level.tsx", + "content": "import { ChevronDownIcon } from \"lucide-react\"\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/default/ui/accordion\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/registry/default/ui/collapsible\"\n\nconst items = [\n {\n id: \"1\",\n title: \"What makes coss.com ui different?\",\n collapsibles: [\n {\n title: \"What about performance?\",\n content:\n \"We optimize every component for maximum performance and minimal bundle size.\",\n },\n {\n title: \"How is the documentation?\",\n content:\n \"Our documentation is comprehensive and includes live examples for every component.\",\n },\n ],\n },\n {\n id: \"2\",\n title: \"How can I customize the components?\",\n collapsibles: [\n {\n title: \"Can I use custom themes?\",\n content:\n \"Yes, our theming system is fully customizable and supports both light and dark modes.\",\n },\n {\n title: \"What about Tailwind support?\",\n content:\n \"We have first-class support for Tailwind CSS with custom utility classes.\",\n },\n ],\n },\n {\n id: \"3\",\n title: \"Is coss.com ui optimized for performance?\",\n collapsibles: [\n {\n title: \"What's the bundle size impact?\",\n content:\n \"Our components are tree-shakeable and typically add minimal overhead to your bundle.\",\n open: true,\n },\n {\n title: \"How is code splitting handled?\",\n content:\n \"We support automatic code splitting for optimal loading performance.\",\n },\n ],\n },\n {\n id: \"4\",\n title: \"How accessible are the components?\",\n collapsibles: [\n {\n title: \"Which screen readers are supported?\",\n content:\n \"We test with NVDA, VoiceOver, and JAWS to ensure broad compatibility.\",\n },\n {\n title: \"What about keyboard navigation?\",\n content:\n \"Full keyboard navigation support is implemented following WAI-ARIA best practices.\",\n },\n ],\n },\n]\n\nexport default function Component() {\n return (\n
\n

Multi-level

\n \n {items.map((item) => (\n \n \n {item.title}\n \n \n {item.collapsibles.map((collapsible, index) => (\n \n ))}\n \n \n ))}\n \n
\n )\n}\n\nfunction CollapsibleDemo({\n title,\n content,\n open,\n}: {\n title: string\n content: string\n open?: boolean\n}) {\n return (\n \n svg]:rotate-180\">\n \n {title}\n \n \n {content}\n \n \n )\n}\n", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] +} \ No newline at end of file diff --git a/apps/ui/public/r/accordion-table.json b/apps/ui/public/r/accordion-table.json new file mode 100644 index 000000000..c635e8309 --- /dev/null +++ b/apps/ui/public/r/accordion-table.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "accordion-table", + "type": "registry:example", + "description": "Accordion with table like layout", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-table.tsx", + "content": "import {\n Accordion,\n AccordionItem,\n AccordionPanel,\n AccordionTrigger,\n} from \"@/registry/default/ui/accordion\"\n\nexport default function AccordionTableDemo() {\n return (\n \n \n \n What is Base UI?\n \n \n Base UI is a library of high-quality unstyled React components for\n design systems and web apps.\n \n \n \n \n How do I get started?\n \n \n Head to the \"Quick start\" guide in the docs. If you've used unstyled\n libraries before, you'll feel at home.\n \n \n \n \n Can I use it for my project?\n \n \n Of course! Base UI is free and open source.\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] +} \ No newline at end of file diff --git a/apps/ui/public/r/accordion-tabs.json b/apps/ui/public/r/accordion-tabs.json new file mode 100644 index 000000000..80c336f56 --- /dev/null +++ b/apps/ui/public/r/accordion-tabs.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "accordion-tabs", + "type": "registry:example", + "description": "Accordion with tabs like layout", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-tabs.tsx", + "content": "import {\n Accordion,\n AccordionItem,\n AccordionPanel,\n AccordionTrigger,\n} from \"@/registry/default/ui/accordion\"\n\nexport default function AccordionTabsDemo() {\n return (\n \n \n \n What is Base UI?\n \n \n Base UI is a library of high-quality unstyled React components for\n design systems and web apps.\n \n \n \n \n How do I get started?\n \n \n Head to the \"Quick start\" guide in the docs. If you've used unstyled\n libraries before, you'll feel at home.\n \n \n \n \n Can I use it for my project?\n \n \n Of course! Base UI is free and open source.\n \n \n \n )\n}\n", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] +} \ No newline at end of file diff --git a/apps/ui/public/r/accordion-with-icon.json b/apps/ui/public/r/accordion-with-icon.json new file mode 100644 index 000000000..f84974067 --- /dev/null +++ b/apps/ui/public/r/accordion-with-icon.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://ui.shadcn.com/schema/registry-item.json", + "name": "accordion-with-icon", + "type": "registry:example", + "description": "Accordion with icon", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-with-icon.tsx", + "content": "import { AtSignIcon, CommandIcon, EclipseIcon, ZapIcon } from \"lucide-react\"\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/registry/default/ui/accordion\"\n\nconst items = [\n {\n id: \"1\",\n icon: CommandIcon,\n title: \"What makes coss.com ui different?\",\n content:\n \"coss.com ui focuses on developer experience and performance. Built with TypeScript, it offers excellent type safety, follows accessibility standards, and provides comprehensive documentation with regular updates.\",\n },\n {\n id: \"2\",\n icon: EclipseIcon,\n title: \"How can I customize the components?\",\n content:\n \"Use our CSS variables for global styling, or className and style props for component-specific changes. We support CSS modules, Tailwind, and dark mode out of the box.\",\n },\n {\n id: \"3\",\n icon: ZapIcon,\n title: \"Is coss.com ui optimized for performance?\",\n content:\n \"Yes, with tree-shaking, code splitting, and minimal runtime overhead. Most components are under 5KB gzipped.\",\n },\n {\n id: \"4\",\n icon: AtSignIcon,\n title: \"How accessible are the components?\",\n content:\n \"All components follow WAI-ARIA standards, featuring proper ARIA attributes, keyboard navigation, and screen reader support. Regular testing ensures compatibility with NVDA, VoiceOver, and JAWS.\",\n },\n]\n\nexport default function Component() {\n return (\n \n {items.map((item) => (\n \n \n \n \n {item.title}\n \n \n \n {item.content}\n \n \n ))}\n \n )\n}\n", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] +} \ No newline at end of file diff --git a/apps/ui/public/r/registry.json b/apps/ui/public/r/registry.json index c372275d2..3928cba72 100644 --- a/apps/ui/public/r/registry.json +++ b/apps/ui/public/r/registry.json @@ -693,6 +693,75 @@ "accordion" ] }, + { + "name": "accordion-with-icon", + "description": "Accordion with icon", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-with-icon.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-multi-level", + "description": "Accordion with multiple levels", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json", + "https://coss.com/ui/r/collapsible.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-multi-level.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-table", + "description": "Accordion with table like layout", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-table.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-tabs", + "description": "Accordion with tabs like layout", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-tabs.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, { "name": "accordion-single", "description": "Accordion with one panel open", diff --git a/apps/ui/registry.json b/apps/ui/registry.json index c372275d2..3928cba72 100644 --- a/apps/ui/registry.json +++ b/apps/ui/registry.json @@ -693,6 +693,75 @@ "accordion" ] }, + { + "name": "accordion-with-icon", + "description": "Accordion with icon", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-with-icon.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-multi-level", + "description": "Accordion with multiple levels", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json", + "https://coss.com/ui/r/collapsible.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-multi-level.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-table", + "description": "Accordion with table like layout", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-table.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, + { + "name": "accordion-tabs", + "description": "Accordion with tabs like layout", + "type": "registry:example", + "registryDependencies": [ + "https://coss.com/ui/r/accordion.json" + ], + "files": [ + { + "path": "registry/default/examples/accordion-tabs.tsx", + "type": "registry:example" + } + ], + "categories": [ + "accordion" + ] + }, { "name": "accordion-single", "description": "Accordion with one panel open", diff --git a/apps/ui/registry/__index__.tsx b/apps/ui/registry/__index__.tsx index b8d18eee6..762e50f0e 100644 --- a/apps/ui/registry/__index__.tsx +++ b/apps/ui/registry/__index__.tsx @@ -834,6 +834,78 @@ export const Index: Record = { categories: ["accordion"], meta: undefined, }, + "accordion-with-icon": { + name: "accordion-with-icon", + description: "Accordion with icon", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [{ + path: "registry/default/examples/accordion-with-icon.tsx", + type: "registry:example", + target: "" + }], + component: React.lazy(async () => { + const mod = await import("@/registry/default/examples/accordion-with-icon.tsx") + const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name + return { default: mod.default || mod[exportName] } + }), + categories: ["accordion"], + meta: undefined, + }, + "accordion-multi-level": { + name: "accordion-multi-level", + description: "Accordion with multiple levels", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json","https://coss.com/ui/r/collapsible.json"], + files: [{ + path: "registry/default/examples/accordion-multi-level.tsx", + type: "registry:example", + target: "" + }], + component: React.lazy(async () => { + const mod = await import("@/registry/default/examples/accordion-multi-level.tsx") + const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name + return { default: mod.default || mod[exportName] } + }), + categories: ["accordion"], + meta: undefined, + }, + "accordion-table": { + name: "accordion-table", + description: "Accordion with table like layout", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [{ + path: "registry/default/examples/accordion-table.tsx", + type: "registry:example", + target: "" + }], + component: React.lazy(async () => { + const mod = await import("@/registry/default/examples/accordion-table.tsx") + const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name + return { default: mod.default || mod[exportName] } + }), + categories: ["accordion"], + meta: undefined, + }, + "accordion-tabs": { + name: "accordion-tabs", + description: "Accordion with tabs like layout", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [{ + path: "registry/default/examples/accordion-tabs.tsx", + type: "registry:example", + target: "" + }], + component: React.lazy(async () => { + const mod = await import("@/registry/default/examples/accordion-tabs.tsx") + const exportName = Object.keys(mod).find(key => typeof mod[key] === 'function' || typeof mod[key] === 'object') || item.name + return { default: mod.default || mod[exportName] } + }), + categories: ["accordion"], + meta: undefined, + }, "accordion-single": { name: "accordion-single", description: "Accordion with one panel open", diff --git a/apps/ui/registry/default/examples/accordion-multi-level.tsx b/apps/ui/registry/default/examples/accordion-multi-level.tsx new file mode 100644 index 000000000..b1182d837 --- /dev/null +++ b/apps/ui/registry/default/examples/accordion-multi-level.tsx @@ -0,0 +1,138 @@ +import { ChevronDownIcon } from "lucide-react" + +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/registry/default/ui/accordion" +import { + Collapsible, + CollapsibleContent, + CollapsibleTrigger, +} from "@/registry/default/ui/collapsible" + +const items = [ + { + id: "1", + title: "What makes coss.com ui different?", + collapsibles: [ + { + title: "What about performance?", + content: + "We optimize every component for maximum performance and minimal bundle size.", + }, + { + title: "How is the documentation?", + content: + "Our documentation is comprehensive and includes live examples for every component.", + }, + ], + }, + { + id: "2", + title: "How can I customize the components?", + collapsibles: [ + { + title: "Can I use custom themes?", + content: + "Yes, our theming system is fully customizable and supports both light and dark modes.", + }, + { + title: "What about Tailwind support?", + content: + "We have first-class support for Tailwind CSS with custom utility classes.", + }, + ], + }, + { + id: "3", + title: "Is coss.com ui optimized for performance?", + collapsibles: [ + { + title: "What's the bundle size impact?", + content: + "Our components are tree-shakeable and typically add minimal overhead to your bundle.", + open: true, + }, + { + title: "How is code splitting handled?", + content: + "We support automatic code splitting for optimal loading performance.", + }, + ], + }, + { + id: "4", + title: "How accessible are the components?", + collapsibles: [ + { + title: "Which screen readers are supported?", + content: + "We test with NVDA, VoiceOver, and JAWS to ensure broad compatibility.", + }, + { + title: "What about keyboard navigation?", + content: + "Full keyboard navigation support is implemented following WAI-ARIA best practices.", + }, + ], + }, +] + +export default function Component() { + return ( +
+

Multi-level

+ + {items.map((item) => ( + + + {item.title} + + + {item.collapsibles.map((collapsible, index) => ( + + ))} + + + ))} + +
+ ) +} + +function CollapsibleDemo({ + title, + content, + open, +}: { + title: string + content: string + open?: boolean +}) { + return ( + + + + + {content} + + + ) +} diff --git a/apps/ui/registry/default/examples/accordion-table.tsx b/apps/ui/registry/default/examples/accordion-table.tsx new file mode 100644 index 000000000..ca95ff5ea --- /dev/null +++ b/apps/ui/registry/default/examples/accordion-table.tsx @@ -0,0 +1,48 @@ +import { + Accordion, + AccordionItem, + AccordionPanel, + AccordionTrigger, +} from "@/registry/default/ui/accordion" + +export default function AccordionTableDemo() { + return ( + + + + What is Base UI? + + + Base UI is a library of high-quality unstyled React components for + design systems and web apps. + + + + + How do I get started? + + + Head to the "Quick start" guide in the docs. If you've used unstyled + libraries before, you'll feel at home. + + + + + Can I use it for my project? + + + Of course! Base UI is free and open source. + + + + ) +} diff --git a/apps/ui/registry/default/examples/accordion-tabs.tsx b/apps/ui/registry/default/examples/accordion-tabs.tsx new file mode 100644 index 000000000..1a4b0602d --- /dev/null +++ b/apps/ui/registry/default/examples/accordion-tabs.tsx @@ -0,0 +1,39 @@ +import { + Accordion, + AccordionItem, + AccordionPanel, + AccordionTrigger, +} from "@/registry/default/ui/accordion" + +export default function AccordionTabsDemo() { + return ( + + + + What is Base UI? + + + Base UI is a library of high-quality unstyled React components for + design systems and web apps. + + + + + How do I get started? + + + Head to the "Quick start" guide in the docs. If you've used unstyled + libraries before, you'll feel at home. + + + + + Can I use it for my project? + + + Of course! Base UI is free and open source. + + + + ) +} diff --git a/apps/ui/registry/default/examples/accordion-with-icon.tsx b/apps/ui/registry/default/examples/accordion-with-icon.tsx new file mode 100644 index 000000000..909d57f0a --- /dev/null +++ b/apps/ui/registry/default/examples/accordion-with-icon.tsx @@ -0,0 +1,63 @@ +import { AtSignIcon, CommandIcon, EclipseIcon, ZapIcon } from "lucide-react" + +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from "@/registry/default/ui/accordion" + +const items = [ + { + id: "1", + icon: CommandIcon, + title: "What makes coss.com ui different?", + content: + "coss.com ui focuses on developer experience and performance. Built with TypeScript, it offers excellent type safety, follows accessibility standards, and provides comprehensive documentation with regular updates.", + }, + { + id: "2", + icon: EclipseIcon, + title: "How can I customize the components?", + content: + "Use our CSS variables for global styling, or className and style props for component-specific changes. We support CSS modules, Tailwind, and dark mode out of the box.", + }, + { + id: "3", + icon: ZapIcon, + title: "Is coss.com ui optimized for performance?", + content: + "Yes, with tree-shaking, code splitting, and minimal runtime overhead. Most components are under 5KB gzipped.", + }, + { + id: "4", + icon: AtSignIcon, + title: "How accessible are the components?", + content: + "All components follow WAI-ARIA standards, featuring proper ARIA attributes, keyboard navigation, and screen reader support. Regular testing ensures compatibility with NVDA, VoiceOver, and JAWS.", + }, +] + +export default function Component() { + return ( + + {items.map((item) => ( + + + + + + + {item.content} + + + ))} + + ) +} diff --git a/apps/ui/registry/default/particles/index.tsx b/apps/ui/registry/default/particles/index.tsx index cfa5a24b3..84c2c0cd7 100644 --- a/apps/ui/registry/default/particles/index.tsx +++ b/apps/ui/registry/default/particles/index.tsx @@ -2,8 +2,12 @@ import * as React from "react" import AccordionControlled from "@/registry/default/examples/accordion-controlled" import AccordionDemo from "@/registry/default/examples/accordion-demo" +import AccordionMultiLevel from "@/registry/default/examples/accordion-multi-level" import AccordionMultiple from "@/registry/default/examples/accordion-multiple" import AccordionSingle from "@/registry/default/examples/accordion-single" +import AccordionTable from "@/registry/default/examples/accordion-table" +import AccordionTabs from "@/registry/default/examples/accordion-tabs" +import AccordionWithIcon from "@/registry/default/examples/accordion-with-icon" import AlertDemo from "@/registry/default/examples/alert-demo" import AlertDialogDemo from "@/registry/default/examples/alert-dialog-demo" import AlertError from "@/registry/default/examples/alert-error" @@ -1143,6 +1147,34 @@ export const particles: ParticleItem[] = [ className: "**:data-[slot=particle-wrapper]:w-full sm:**:data-[slot=particle-wrapper]:max-w-[80%]", }, + { + id: "accordion-tabs", + component: AccordionTabs, + category: ["accordion"], + className: + "**:data-[slot=particle-wrapper]:w-full sm:**:data-[slot=particle-wrapper]:max-w-[80%]", + }, + { + id: "accordion-table", + component: AccordionTable, + category: ["accordion"], + className: + "**:data-[slot=particle-wrapper]:w-full sm:**:data-[slot=particle-wrapper]:max-w-[80%]", + }, + { + id: "accordion-with-icon", + component: AccordionWithIcon, + category: ["accordion"], + className: + "**:data-[slot=particle-wrapper]:w-full sm:**:data-[slot=particle-wrapper]:max-w-[80%]", + }, + { + id: "accordion-multi-level", + component: AccordionMultiLevel, + category: ["accordion"], + className: + "**:data-[slot=particle-wrapper]:w-full sm:**:data-[slot=particle-wrapper]:max-w-[80%]", + }, { id: "tooltip-demo", component: TooltipDemo, diff --git a/apps/ui/registry/registry-examples.ts b/apps/ui/registry/registry-examples.ts index 0521d1c5a..cc0a6d0fe 100644 --- a/apps/ui/registry/registry-examples.ts +++ b/apps/ui/registry/registry-examples.ts @@ -43,6 +43,61 @@ export const examples: Registry["items"] = [ ], categories: ["accordion"], }, + { + name: "accordion-with-icon", + description: "Accordion with icon", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [ + { + path: "examples/accordion-with-icon.tsx", + type: "registry:example", + }, + ], + categories: ["accordion"], + }, + { + name: "accordion-multi-level", + description: "Accordion with multiple levels", + type: "registry:example", + registryDependencies: [ + "https://coss.com/ui/r/accordion.json", + "https://coss.com/ui/r/collapsible.json", + ], + files: [ + { + path: "examples/accordion-multi-level.tsx", + type: "registry:example", + }, + ], + categories: ["accordion"], + }, + { + name: "accordion-table", + description: "Accordion with table like layout", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [ + { + path: "examples/accordion-table.tsx", + type: "registry:example", + }, + ], + categories: ["accordion"], + }, + { + name: "accordion-tabs", + description: "Accordion with tabs like layout", + type: "registry:example", + registryDependencies: ["https://coss.com/ui/r/accordion.json"], + files: [ + { + path: "examples/accordion-tabs.tsx", + type: "registry:example", + }, + ], + categories: ["accordion"], + }, { name: "accordion-single", description: "Accordion with one panel open",