CodeBlock

Syntax-highlighted codeblock component built on top of react-syntax-highlighter.

scrollx-uisrchome.tsx
src/home.tsx
1import React, { useState } from 'react'; 2import { NextPage } from 'next'; 3import Header from '../components/Header'; 4 5const Home: NextPage = () => { 6 const [theme, setTheme] = useState('dark'); 7 8 return ( 9 <div className="min-h-screen bg-gray-50 dark:bg-gray-900"> 10 <Header /> 11 <main className="container mx-auto px-4 py-12"> 12 <section className="text-center"> 13 <h1 className="text-5xl font-bold text-gray-800 dark:text-white"> 14 ScrollX UI 15 </h1> 16 </section> 17 </main> 18 </div> 19 ); 20}; 21 22export default Home;
TSX
UTF-8

Installation

npx scrollx-ui@latest add codeblock

Usage

import { CodeBlock } from "@/components/ui/codeblock";
<CodeBlock
  language="typescript"
  filename="main.tsx"
  tabs={[
    { name: 'api.ts', code: "fetchData()" },
    { name: 'styles.css', code: ".card { padding: 1rem }", language: 'css' }
  ]}
  breadcrumb={['src', 'components']}
/>

Examples


CodeBlock with Light theme

scriptsdeploy.sh
deploy.sh
1#!/bin/bash 2echo "Starting deployment..." 3npm run build 4npm run test 5 6if [ $? -eq 0 ]; then 7 echo "Tests passed, deploying..." 8 npm run deploy 9 echo "Deployment complete!" 10else 11 echo "Tests failed, aborting deployment" 12 exit 1 13fi
BASH
UTF-8

CodeBlock with Multitabs

scrollx-ui
1import React, { useState } from 'react'; 2import { NextPage } from 'next'; 3import Header from '../components/Header'; 4 5const Home: NextPage = () => { 6 const [theme, setTheme] = useState('dark'); 7 8 return ( 9 <div className="min-h-screen bg-gray-50 dark:bg-gray-900"> 10 <Header /> 11 <main className="container mx-auto px-4 py-12"> 12 <section className="text-center"> 13 <h1 className="text-5xl font-bold text-gray-800 dark:text-white"> 14 ScrollX UI 15 </h1> 16 </section> 17 </main> 18 </div> 19 ); 20}; 21 22export default Home;
TSX
UTF-8

API Reference

CodeBlock

Syntax-highlighted code block with tabs, stats, and file navigation.

Props

language string (required)
filename string (required)
code string (required without tabs)
tabs Array<{name: string; code: string; language?: string}> (required without code)
highlightLines number[] (default [])
breadcrumb string[] (default [])
showStats boolean (default true)
theme 'dark' | 'light' (default 'dark')