Skip to content

Instantly share code, notes, and snippets.

@ericviana
Created February 6, 2024 20:34
Show Gist options
  • Save ericviana/a7e0dc89570ab96630b2fe1c88219419 to your computer and use it in GitHub Desktop.
Save ericviana/a7e0dc89570ab96630b2fe1c88219419 to your computer and use it in GitHub Desktop.
Centerrrrrrrr
'use client';
import * as React from 'react';
import Image from 'next/image';
import * as AccordionPrimitive from '@radix-ui/react-accordion';
import { cn } from '@/lib/utils';
import Pl from '../../../public/hands/Plus.svg';
const Accordion = AccordionPrimitive.Root;
const AccordionItem = React.forwardRef<
React.ElementRef<typeof AccordionPrimitive.Item>,
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
>(({ className, ...props }, ref) => (
<AccordionPrimitive.Item ref={ref} className={cn('border-b', className)} {...props} />
));
AccordionItem.displayName = 'AccordionItem';
const AccordionTrigger = React.forwardRef<
React.ElementRef<typeof AccordionPrimitive.Trigger>,
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
>(({ className, children, ...props }, ref) => (
<AccordionPrimitive.Header className="flex">
<AccordionPrimitive.Trigger
ref={ref}
className={cn(
'flex flex-1 text-right items-center justify-between py-4 font-medium transition-all [&[data-state=open]>svg]:rotate-45',
className,
)}
{...props}
>
<Image
src={Pl}
className="size-4 flex-initial shrink-0 text-destructive transition-transform duration-200"
alt=""
/>
{children}
<div className="invisible"></div>
</AccordionPrimitive.Trigger>
</AccordionPrimitive.Header>
));
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
const AccordionContent = React.forwardRef<
React.ElementRef<typeof AccordionPrimitive.Content>,
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
>(({ className, children, ...props }, ref) => (
<AccordionPrimitive.Content
ref={ref}
className="overflow-hidden font-body text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down md:text-center"
{...props}
>
<div className={cn('pb-4 pt-0', className)}>{children}</div>
</AccordionPrimitive.Content>
));
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment