A lightweight, robust, and elegant syntax highlighting component for your next React apps.
- Themes
- Languages
- Plugins
next-prism is available on npm. It can be installed with the following command:
npm install next-prism --savenext-prism is available on yarn as well. It can be installed with the following command:
yarn add next-prismimport { usePrism } from 'next-prism'
// Import a theme.css
import 'next-prism/themes/tomorrow.css'
export default function App() {
const { Code } = usePrism()
return (
<Code language='javascript'>
{`<div className="example">
{Math.random()}
</div>`}
</Code>
)
}import { useState, useEffect } from 'react'
import { usePrism } from 'next-prism'
// Import a theme.css
import 'next-prism/themes/tomorrow.css'
function App() {
const [count, setCount] = useState(0)
const { Code, highlightAll } = usePrism()
useEffect(() => {
highlightAll()
}, [count])
return (
<>
<button onClick={() => setCount(count + 1)}>Click me</button>
<p>You clicked {count} times</p>
<Code language='javascript'>{`<p>You clicked ${count} times<p>`}</Code>
</>
)
}| Prop | Type | Description |
|---|---|---|
| Code | ReactNode | Code component. |
| highlightAll | function | Use to highlight all code elements. |
| Prop | Type | Default | Require | Description |
|---|---|---|---|---|
| children || content | ReactNode | ❌ | The content code | |
| language | string | ❌ | The supported language |
| coy | dark |
| funky | okaidia |
| prism | solarizedlight |
| tomorrow | twilight |
Markup - markup, html, xml, svg, mathml, ssml, atom, rss |
CSS - css |
JavaScript - javascript, js |
C-like - clike |
ABAP - abap |
ABNF - abnf |
ActionScript - actionscript |
Ada - ada |
Agda - agda |
AL - al |
ANTLR4 - antlr4, g4 |
Apache Configuration - apacheconf |
Apex - apex |
APL - apl |
AppleScript - applescript |
AQL - aql |
Arduino - arduino, ino |
ARFF - arff |
ARM Assembly - armasm, arm-asm |
Arturo - arturo, art |
AsciiDoc - asciidoc, adoc |
ASP.NET (C#) - aspnet |
6502 Assembly - asm6502 |
Atmel AVR Assembly - asmatmel |
AutoHotkey - autohotkey |
AutoIt - autoit |
AviSynth - avisynth, avs |
Avro IDL - avro-idl, avdl |
AWK - awk, gawk |
Bash - bash, sh, shell |
BASIC - basic |
Batch - batch |
BBcode - bbcode, shortcode |
BBj - bbj |
Bicep - bicep |
Birb - birb |
Bison - bison |
BNF - bnf, rbnf |
BQN - bqn |
Brainfuck - brainfuck |
BrightScript - brightscript |
Bro - bro |
BSL (1C:Enterprise) - bsl, oscript |
C - c |
C# - csharp, cs, dotnet |
C++ - cpp |
CFScript - cfscript, cfc |
ChaiScript - chaiscript |
CIL - cil |
Cilk/C - cilkc, cilk-c |
Cilk/C++ - cilkcpp, cilk-cpp, cilk |
Clojure - clojure |
CMake - cmake |
COBOL - cobol |
CoffeeScript - coffeescript, coffee |
Concurnas - concurnas, conc |
Content-Security-Policy - csp |
Cooklang - cooklang |
Coq - coq |
Crystal - crystal |
CSS Extras - css-extras |
CSV - csv |
CUE - cue |
Cypher - cypher |
D - d |
Dart - dart |
DataWeave - dataweave |
DAX - dax |
Dhall - dhall |
Diff - diff |
Django/Jinja2 - django, jinja2 |
DNS zone file - dns-zone-file, dns-zone |
Docker - docker, dockerfile |
DOT (Graphviz) - dot, gv |
EBNF - ebnf |
EditorConfig - editorconfig |
Eiffel - eiffel |
EJS - ejs, eta |
Elixir - elixir |
Elm - elm |
Embedded Lua templating - etlua |
ERB - erb |
Erlang - erlang |
Excel Formula - excel-formula, xlsx, xls |
F# - fsharp |
Factor - factor |
False - false |
Firestore security rules - firestore-security-rules |
Flow - flow |
Fortran - fortran |
FreeMarker Template Language - ftl |
GameMaker Language - gml, gamemakerlanguage |
GAP (CAS) - gap |
G-code - gcode |
GDScript - gdscript |
GEDCOM - gedcom |
gettext - gettext, po |
Gherkin - gherkin |
Git - git |
GLSL - glsl |
GN - gn, gni |
GNU Linker Script - linker-script, ld |
Go - go |
Go module - go-module, go-mod |
Gradle - gradle |
GraphQL - graphql |
Groovy - groovy |
Haml - haml |
Handlebars - handlebars, hbs, mustache |
Haskell - haskell, hs |
Haxe - haxe |
HCL - hcl |
HLSL - hlsl |
Hoon - hoon |
HTTP - http |
HTTP Public-Key-Pins - hpkp |
HTTP Strict-Transport-Security - hsts |
IchigoJam - ichigojam |
Icon - icon |
ICU Message Format - icu-message-format |
Idris - idris, idr |
.ignore - ignore, gitignore, hgignore, npmignore |
Inform 7 - inform7 |
Ini - ini |
Io - io |
J - j |
Java - java |
JavaDoc - javadoc |
JavaDoc-like - javadoclike |
Java stack trace - javastacktrace |
Jexl - jexl |
Jolie - jolie |
JQ - jq |
JSDoc - jsdoc |
JS Extras - js-extras |
JSON - json, webmanifest |
JSON5 - json5 |
JSONP - jsonp |
JS stack trace - jsstacktrace |
JS Templates - js-templates |
Julia - julia |
|
Keepalived Configure - keepalived |
Keyman - keyman |
Kotlin - kotlin, kt, kts |
KuMir (КуМир) - kumir, kum |
Kusto - kusto |
LaTeX - latex, tex, context |
Latte - latte |
Less - less |
LilyPond - lilypond, ly |
Liquid - liquid |
Lisp - lisp, emacs, elisp, emacs-lisp |
LiveScript - livescript |
LLVM IR - llvm |
Log file - log |
LOLCODE - lolcode |
Lua - lua |
Magma (CAS) - magma |
Makefile - makefile |
Markdown - markdown, md |
Markup templating - markup-templating |
Mata - mata |
MATLAB - matlab |
MAXScript - maxscript |
MEL - mel |
Mermaid - mermaid |
METAFONT - metafont |
Mizar - mizar |
MongoDB - mongodb |
Monkey - monkey |
MoonScript - moonscript, moon |
N1QL - n1ql |
N4JS - n4js, n4jsd |
Nand To Tetris HDL - nand2tetris-hdl |
Naninovel Script - naniscript, nani |
NASM - nasm |
NEON - neon |
Nevod - nevod |
nginx - nginx |
Nim - nim |
Nix - nix |
NSIS - nsis |
Objective-C - objectivec, objc |
OCaml - ocaml |
Odin - odin |
OpenCL - opencl |
OpenQasm - openqasm, qasm |
Oz - oz |
PARI/GP - parigp |
Parser - parser |
Pascal - pascal, objectpascal |
Pascaligo - pascaligo |
PATROL Scripting Language - psl |
PC-Axis - pcaxis, px |
PeopleCode - peoplecode, pcode |
Perl - perl |
PHP - php |
PHPDoc - phpdoc |
PHP Extras - php-extras |
PlantUML - plant-uml, plantuml |
PL/SQL - plsql |
PowerQuery - powerquery, pq, mscript |
PowerShell - powershell |
Processing - processing |
Prolog - prolog |
PromQL - promql |
.properties - properties |
Protocol Buffers - protobuf |
Pug - pug |
Puppet - puppet |
Pure - pure |
PureBasic - purebasic, pbfasm |
PureScript - purescript, purs |
Python - python, py |
Q# - qsharp, qs |
Q (kdb+ database) - q |
QML - qml |
Qore - qore |
R - r |
Racket - racket, rkt |
Razor C# - cshtml, razor |
React JSX - jsx |
React TSX - tsx |
Reason - reason |
Regex - regex |
Rego - rego |
Ren'py - renpy, rpy |
ReScript - rescript, res |
reST (reStructuredText) - rest |
Rip - rip |
Roboconf - roboconf |
Robot Framework - robotframework, robot |
Ruby - ruby, rb |
Rust - rust |
SAS - sas |
Sass (Sass) - sass |
Sass (SCSS) - scss |
Scala - scala |
Scheme - scheme |
Shell session - shell-session, sh-session, shellsession |
Smali - smali |
Smalltalk - smalltalk |
Smarty - smarty |
SML - sml, smlnj |
Solidity (Ethereum) - solidity, sol |
Solution file - solution-file, sln |
Soy (Closure Template) - soy |
SPARQL - sparql, rq |
Splunk SPL - splunk-spl |
SQF: Status Quo Function (Arma 3) - sqf |
SQL - sql |
Squirrel - squirrel |
Stan - stan |
Stata Ado - stata |
Structured Text (IEC 61131-3) - iecst |
Stylus - stylus |
SuperCollider - supercollider, sclang |
Swift - swift |
Systemd configuration file - systemd |
T4 templating - t4-templating |
T4 Text Templates (C#) - t4-cs, t4 |
T4 Text Templates (VB) - t4-vb |
TAP - tap |
Tcl - tcl |
Template Toolkit 2 - tt2 |
Textile - textile |
TOML - toml |
Tremor - tremor, trickle, troy |
Turtle - turtle, trig |
Twig - twig |
Twig - twig |
TypoScript - typoscript, tsconfig |
UnrealScript - unrealscript, uscript, uc |
UO Razor Script - uorazor |
URI - uri, url |
V - v |
Vala - vala |
VB.Net - vbnet |
Velocity - velocity |
Verilog - verilog |
VHDL - vhdl |
vim - vim |
Visual Basic - visual-basic, vb, vba |
WarpScript - warpscript |
WebAssembly - wasm |
Web IDL - web-idl, webidl |
WGSL - wgsl |
Wiki markup - wiki |
Wolfram language - wolfram, mathematica, nb, wl |
Wren - wren |
Xeora - xeora, xeoracube |
XML doc (.net) - xml-doc |
Xojo (REALbasic) - xojo |
XQuery - xquery |
YAML - yaml, yml |
YANG - yang |
Zig - zig |
Line number at the beginning of code lines.
import { usePrism } from 'next-prism'
// Import a theme.css
import 'next-prism/themes/tomorrow.css'
// Import line-numbers source
import 'next-prism/plugins/line-numbers/line-numbers'
// Import line-numbers.css
import 'next-prism/plugins/line-numbers/line-numbers.css'
export default function App() {
const { Code } = usePrism()
return (
<Code language='javascript' lineNumbers={true}>
{`<div className="example">
{Math.random()}
</div>`}
</Code>
)
}Show hidden characters such as tabs and line breaks.
import { usePrism } from 'next-prism'
// Import a theme.css
import 'next-prism/themes/tomorrow.css'
// Import show-invisibles source
import 'next-prism/plugins/show-invisibles/show-invisibles'
// Import show-invisibles.css
import 'next-prism/plugins/show-invisibles/show-invisibles.css'
export default function App() {
const { Code } = usePrism()
return (
<Code language='javascript'>
{`<div className="example">
{Math.random()}
</div>`}
</Code>
)
}Converts URLs and emails in code to clickable links. Parses Markdown links in comments.
import { usePrism } from 'next-prism'
// Import a theme.css
import 'next-prism/themes/tomorrow.css'
// Import autolinker source
import 'next-prism/plugins/autolinker/autolinker'
// Import autolinker.css
import 'next-prism/plugins/autolinker/autolinker.css'
function App() {
const { Code } = usePrism()
return (
<Code language="javascript">
{`<div className="example">
<a href="https://github.com/Bunlong/next-prism">next-prism</a>
</div>`}
</Code>
);
}Latest version 0.5.0 (2022-12-18):
- Add autolinker plugins
Details changes for each release are documented in the CHANGELOG.md.
If you think any of the next-prism can be improved, please do open a PR with any updates and submit any issues. Also, I will continue to improve this, so you might want to watch/star this repository to revisit.
We'd love to have your helping hand on contributions to next-prism by forking and sending a pull request!
Your contributions are heartily ♡ welcome, recognized and appreciated. (✿◠‿◠)
How to contribute:
- Open pull request with improvements
- Discuss ideas in issues
- Spread the word
- Reach out with any feedback
|
Bunlong |
You maybe interested.
- React Patterns – React patterns & techniques to use in development for React Developer.
- React Papaparse – The fastest in-browser CSV (or delimited text) parser for React.
- Next QRCode – React hooks for generating QR code for your next React apps.
- Next Share – Social media share buttons for your next React apps.
- Next Time Ago – A lightweight tiny time-ago component for your next React apps.