Files
Aurora-SpotiRip/components/Collapsible.tsx
T
R3ap3r 3178b8f4f7 Aurora SpotiRip desktop and web app
- Spotify playlist, library, album and artist browsing with in-app playback
- Song, playlist and album downloads via spotdl with YouTube and Bandcamp fallbacks
- Electron desktop app (castLabs Widevine) with a permanent sidebar layout
- Linux and Windows packaging scripts
2026-09-25 23:20:57 -05:00

44 lines
1.3 KiB
TypeScript

"use client";
import * as React from "react";
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
import { ChevronDown } from "lucide-react";
import styles from "./Collapsible.module.css";
const Collapsible = CollapsiblePrimitive.Root;
interface CollapsibleTriggerProps
extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger> {
icon?: React.ReactNode;
}
const CollapsibleTrigger = React.forwardRef<
React.ElementRef<typeof CollapsiblePrimitive.Trigger>,
CollapsibleTriggerProps
>(({ className, children, ...props }, ref) => (
<CollapsiblePrimitive.Trigger
ref={ref}
className={`${styles.trigger} ${className || ""}`}
{...props}
>
{children}
</CollapsiblePrimitive.Trigger>
));
CollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName;
const CollapsibleContent = React.forwardRef<
React.ElementRef<typeof CollapsiblePrimitive.Content>,
React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>
>(({ className, children, ...props }, ref) => (
<CollapsiblePrimitive.Content
ref={ref}
className={`${styles.content} ${className || ""}`}
{...props}
>
{children}
</CollapsiblePrimitive.Content>
));
CollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName;
export { Collapsible, CollapsibleTrigger, CollapsibleContent };