diff --git a/frontend/src/App.css b/frontend/src/App.css
index f7a040c..1a8cfb7 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -37,6 +37,12 @@
font-display: swap;
}
+@font-face {
+ font-family: "NerdFontSymbols";
+ src: url("./assets/fonts/nerd-fonts-symbols.woff2") format("woff2");
+ font-display: block;
+}
+
.ui-btn {
@apply text-ctp-text border border-ctp-text rounded px-3 py-1 cursor-pointer transition-colors;
}
diff --git a/frontend/src/assets/fonts/nerd-fonts-symbols.woff2 b/frontend/src/assets/fonts/nerd-fonts-symbols.woff2
new file mode 100644
index 0000000..f9efb3b
Binary files /dev/null and b/frontend/src/assets/fonts/nerd-fonts-symbols.woff2 differ
diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx
index 5552dd6..16ec2ef 100644
--- a/frontend/src/components/Header.tsx
+++ b/frontend/src/components/Header.tsx
@@ -52,8 +52,8 @@ export default function Header({ theme }: HeaderProps) {
-
diff --git a/frontend/src/components/MdProcessor.tsx b/frontend/src/components/MdProcessor.tsx
index 1554ef4..a05a7be 100644
--- a/frontend/src/components/MdProcessor.tsx
+++ b/frontend/src/components/MdProcessor.tsx
@@ -1,5 +1,6 @@
import {
useEffect,
+ useRef,
useState,
useMemo,
type ComponentPropsWithoutRef,
@@ -196,6 +197,8 @@ export default function MdProcessor({
})
: null;
+ const copyRef = useRef(null);
+
if (highlighted) {
return (
@@ -204,6 +207,32 @@ export default function MdProcessor({
{lang}
)}
+
{
+ navigator.clipboard
+ .writeText(code)
+ .then(() => {
+ if (copyRef.current) {
+ copyRef.current.textContent =
+ "Copied!";
+ setTimeout(
+ () => {
+ if (
+ copyRef.current
+ )
+ copyRef.current.textContent =
+ "\uf0c5";
+ },
+ 1500,
+ );
+ }
+ });
+ }}
+ className="absolute top-1 right-1 px-2 py-1 text-base font-mono text-ctp-subtext0 hover:text-ctp-green transition-colors cursor-pointer select-none z-10 font-[NerdFontSymbols]"
+ >
+
+