Code
animate-ui/components-animate-codeFreeComponent
A code component that animates the code as it is written.
Install it
npx shadcn@latest add https://animate-ui.com/r/components-animate-code.jsonSource
1'use client';23import * as React from 'react';4import { useTheme } from 'next-themes';56import {7 CodeBlock as CodeBlockPrimitive,8 type CodeBlockProps as CodeBlockPropsPrimitive,9} from '@/components/animate-ui/primitives/animate/code-block';10import { cn } from '@/lib/utils';11import { CopyButton } from '@/components/animate-ui/components/buttons/copy';12import { getStrictContext } from '@/lib/get-strict-context';1314type CodeContextType = {15 code: string;16};1718const [CodeProvider, useCode] =19 getStrictContext<CodeContextType>('CodeContext');2021type CodeProps = React.ComponentProps<'div'> & {22 code: string;23};2425function Code({ className, code, ...props }: CodeProps) {26 return (27 <CodeProvider value={{ code }}>28 <div29 className={cn(30 'relative flex flex-col overflow-hidden border bg-accent/50 rounded-lg',31 className,32 )}33 {...props}34 />35 </CodeProvider>36 );37}3839type CodeHeaderProps = React.ComponentProps<'div'> & {40 icon?: React.ElementType;41 copyButton?: boolean;42};4344function CodeHeader({45 className,46 children,47 icon: Icon,48 copyButton = false,49 ...props50}: CodeHeaderProps) {51 const { code } = useCode();5253 return (54 <div55 className={cn(56 'bg-accent shrink-0 gap-x-2 border-b border-border/75 dark:border-border/50 text-sm flex text-muted-foreground items-center px-4 w-full h-10',57 className,58 )}59 {...props}60 >61 {Icon && <Icon className="size-4" />}62 {children}63 {copyButton && (64 <CopyButton65 content={code}66 size="xs"67 variant="ghost"68 className="ml-auto w-auto h-auto p-2 -mr-2"69 />70 )}71 </div>72 );73}7475type CodeBlockProps = Omit<CodeBlockPropsPrimitive, 'code'> & {76 cursor?: boolean;77};7879function CodeBlock({ cursor, className, ...props }: CodeBlockProps) {80 const { resolvedTheme } = useTheme();81 const { code } = useCode();82 const scrollRef = React.useRef<HTMLDivElement>(null);8384 return (85 <CodeBlockPrimitive86 ref={scrollRef}87 theme={resolvedTheme === 'dark' ? 'dark' : 'light'}88 scrollContainerRef={scrollRef}89 className={cn(90 'relative text-sm p-4 overflow-auto',91 '[&>pre,_&_code]:!bg-transparent [&>pre,_&_code]:[background:transparent_!important] [&>pre,_&_code]:border-none [&_code]:!text-[13px] [&_code_.line]:!px-0',92 cursor &&93// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from Animate UI
All 580 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Avatar Groupcomponents-animate-avatar-group | Animate UI | Components | Free | 1 dep | |
| Code Tabscomponents-animate-code-tabs | Animate UI | Components | Free | 1 dep | |
| Cursorcomponents-animate-cursor | Animate UI | Components | Free | no deps | |
| GitHub Stars Wheelcomponents-animate-github-stars-wheel | Animate UI | Components | Free | 1 dep | |
| Tabscomponents-animate-tabs | Animate UI | Components | Free | no deps | |
| Tooltipcomponents-animate-tooltip | Animate UI | Components | Free | 1 dep | |
| Bubble Backgroundcomponents-backgrounds-bubble | Animate UI | Components | Free | 1 dep | |
| Fireworks Backgroundcomponents-backgrounds-fireworks | Animate UI | Components | Free | no deps |
