Code Block
optics/code-blockFreeComponent
A syntax-highlighted code block component with copy functionality.
See it running
Open the demo on optics
optics.agusmayol.com.ar/components/code-blockInstall it
npx shadcn@latest add https://optics.agusmayol.com.ar/r/code-block.jsonSource
1"use client";23import { useControlledState } from "@/registry/optics/hooks/use-controlled-state";4import {5 transformerNotationDiff,6 transformerNotationErrorLevel,7 transformerNotationFocus,8 transformerNotationHighlight,9 transformerNotationWordHighlight,10} from "@shikijs/transformers";11import { CheckIcon, CopyIcon, Loader2 } from "lucide-react";12import {13 createContext,14 useContext,15 useEffect,16 useState,17 useLayoutEffect,18 useRef,19} from "react";20import { useRender } from "@base-ui/react/use-render";21import { mergeProps } from "@base-ui/react/merge-props";22import { motion, AnimatePresence } from "motion/react";23import {24 SiAstro,25 SiBiome,26 SiBower,27 SiBun,28 SiC,29 SiCircleci,30 SiCoffeescript,31 SiCplusplus,32 SiCss3,33 SiCssmodules,34 SiDart,35 SiDocker,36 SiDocusaurus,37 SiDotenv,38 SiEditorconfig,39 SiEslint,40 SiGatsby,41 SiGitignoredotio,42 SiGnubash,43 SiGo,44 SiGraphql,45 SiGrunt,46 SiGulp,47 SiHandlebarsdotjs,48 SiHtml5,49 SiJavascript,50 SiJest,51 SiJson,52 SiLess,53 SiMarkdown,54 SiMdx,55 SiMintlify,56 SiMocha,57 SiMysql,58 SiNextdotjs,59 SiPerl,60 SiPhp,61 SiPostcss,62 SiPrettier,63 SiPrisma,64 SiPug,65 SiPython,66 SiR,67 SiReact,68 SiReadme,69 SiRedis,70 SiRemix,71 SiRive,72 SiRollupdotjs,73 SiRuby,74 SiSanity,75 SiSass,76 SiScala,77 SiSentry,78 SiShadcnui,79 SiStorybook,80 SiStylelint,81 SiSublimetext,82 SiSvelte,83 SiSvg,84 SiSwift,85 SiTailwindcss,86 SiToml,87 SiTypescript,88 SiVercel,89 SiVite,90 SiVuedotjs,91 SiWebassembly,92} from "react-icons/si";93import { codeToHtml } from "shiki";94import { Button } from "@/registry/optics/button";95import {96 Select,97 SelectContent,98 SelectItem,99 SelectTrigger,100 SelectValue,101} from "@/registry/optics/select";102import { toast } from "@/registry/optics/sonner";103import { ScrollArea, ScrollBar } from "@/registry/optics/scroll-area";104import { cn } from "@/registry/optics/lib/utils";105106const filenameIconMap = {107 ".env": SiDotenv,108 "*.astro": SiAstro,109 "biome.json": SiBiome,110 ".bowerrc": SiBower,111 "bun.lockb": SiBun,112 "*.c": SiC,113 "*.cpp": SiCplusplus,114 ".circleci/config.yml": SiCircleci,115 "*.coffee": SiCoffeescript,116 "*.module.css": SiCssmodules,117 "*.css": SiCss3,118 "*.dart": SiDart,119 Dockerfile: SiDocker,120 "docusaurus.config.js": SiDocusaurus,121 ".editorconfig": SiEditorconfig,122 ".eslintrc": SiEslint,123 "eslint.config.*": SiEslint,124 "gatsby-config.*": SiGatsby,125 ".gitignore": SiGitignoredotio,126 "*.go": SiGo,127 "*.graphql": SiGraphql,128 "*.sh": SiGnubash,129 "Gruntfile.*": SiGrunt,130 "gulpfile.*": SiGulp,131 "*.hbs": SiHandlebarsdotjs,132 "*.html": SiHtml5,133 "*.js": SiJavascript,134// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from optics
All 79 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | optics | Components | Free | 5 deps | |
| Alertalert | optics | Components | Free | 4 deps | |
| Alert Dialogalert-dialog | optics | Components | Free | 4 deps | |
| Aspect Ratioaspect-ratio | optics | Components | Free | 2 deps | |
| Auto Heightauto-height | optics | Components | Free | 3 deps | |
| Avataravatar | optics | Components | Free | 3 deps | |
| Badgebadge | optics | Components | Free | 4 deps | |
| Breadcrumbbreadcrumb | optics | Components | Free | 4 deps |
