Skip to content

Commit

Permalink
Install rehype-prism-plus for code highlight
Browse files Browse the repository at this point in the history
  • Loading branch information
Kamigami55 committed Sep 3, 2022
1 parent 409be71 commit 5d97e41
Show file tree
Hide file tree
Showing 7 changed files with 274 additions and 9 deletions.
3 changes: 3 additions & 0 deletions contentlayer.config.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import rehypePrism from 'rehype-prism-plus';

import { defineDocumentType, makeSource } from './src/lib/contentLayerAdapter';

export const Post = defineDocumentType(() => ({
Expand Down Expand Up @@ -33,4 +35,5 @@ export const Post = defineDocumentType(() => ({
export default makeSource({
contentDirPath: 'content',
documentTypes: [Post],
mdx: { rehypePlugins: [[rehypePrism, { ignoreMissing: true }]] },
});
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
"next-contentlayer": "^0.2.7",
"next-themes": "^0.2.0",
"react": "18.2.0",
"react-dom": "18.2.0"
"react-dom": "18.2.0",
"rehype-prism-plus": "^1.5.0"
},
"devDependencies": {
"@babel/core": "^7.18.13",
Expand Down
94 changes: 94 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 0 additions & 8 deletions src/components/PostBody/PostBody.module.scss
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
.postBody {
:global(.rehype-code-title) {
@apply -mb-3 rounded-tl rounded-tr bg-slate-600 px-4 pt-1 pb-2 font-mono text-sm text-gray-200;
}

div:global(.rehype-code-title) + pre {
@apply rounded-tl-none rounded-tr-none;
}

img {
@apply ml-auto mr-auto;
}
Expand Down
2 changes: 2 additions & 0 deletions src/pages/_app.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import '@/styles/globals.css';
import '@/styles/prism-dracula.css';
import '@/styles/prism-plus.css';

import type { AppProps } from 'next/app';
import Head from 'next/head';
Expand Down
122 changes: 122 additions & 0 deletions src/styles/prism-dracula.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/**
* Dracula Theme originally by Zeno Rocha [@zenorocha]
* https://draculatheme.com/
*
* Ported for PrismJS by Albert Vallverdu [@byverdu]
*/

code[class*='language-'],
pre[class*='language-'] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}

/* Code blocks */
pre[class*='language-'] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}

:not(pre) > code[class*='language-'],
pre[class*='language-'] {
background: #282a36;
}

/* Inline code */
:not(pre) > code[class*='language-'] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}

.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #6272a4;
}

.token.punctuation {
color: #f8f8f2;
}

.namespace {
opacity: 0.7;
}

.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #ff79c6;
}

.token.boolean,
.token.number {
color: #bd93f9;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #50fa7b;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}

.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #f1fa8c;
}

.token.keyword {
color: #8be9fd;
}

.token.regex,
.token.important {
color: #ffb86c;
}

.token.important,
.token.bold {
font-weight: bold;
}

.token.italic {
font-style: italic;
}

.token.entity {
cursor: help;
}
51 changes: 51 additions & 0 deletions src/styles/prism-plus.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/* https://github.com/timlrx/rehype-prism-plus#styling */

pre {
overflow-x: auto;
}

/**
* Inspired by gatsby remark prism - https://www.gatsbyjs.com/plugins/gatsby-remark-prismjs/
* 1. Make the element just wide enough to fit its content.
* 2. Always fill the visible space in .code-highlight.
*/
.code-highlight {
float: left; /* 1 */
min-width: 100%; /* 2 */
}

.code-line {
display: block;
padding-left: 16px;
padding-right: 16px;
margin-left: -16px;
margin-right: -16px;
border-left-width: 4px;
border-left-color: rgba(31, 41, 55, 0); /* Set code block color */
}

.code-line.inserted {
background-color: rgba(16, 185, 129, 0.2); /* Set inserted line (+) color */
}

.code-line.deleted {
background-color: rgba(239, 68, 68, 0.2); /* Set deleted line (-) color */
}

.highlight-line {
margin-left: -16px;
margin-right: -16px;
background-color: rgba(55, 65, 81, 0.5); /* Set highlight bg color */
border-left-width: 4px;
border-left-color: rgb(59, 130, 246); /* Set highlight accent border color */
}

.line-number::before {
display: inline-block;
width: 1rem;
text-align: right;
margin-right: 16px;
margin-left: -8px;
color: rgb(156, 163, 175); /* Line number color */
content: attr(line);
}

0 comments on commit 5d97e41

Please sign in to comment.