Skip to content

Commit 7feb126

Browse files
committed
Added Copy component
1 parent 4a9ea72 commit 7feb126

File tree

2 files changed

+38
-3
lines changed
  • docs/app/docs

2 files changed

+38
-3
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"use client";
2+
import { useState,useEffect } from "react"
3+
4+
5+
function Copy(props) {
6+
const [isCopied, setIsCopied] = useState(false)
7+
8+
const handleCopy = () => {
9+
navigator.clipboard.writeText(props.children)
10+
setIsCopied(true)
11+
12+
}
13+
14+
useEffect(() => {
15+
let timeout;
16+
if (isCopied) {
17+
timeout = setTimeout(() => {
18+
setIsCopied(false);
19+
}, 2000);
20+
}
21+
return () => clearTimeout(timeout);
22+
}, [isCopied]);
23+
const tickSvg = <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg>
24+
const copySvg = <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 9.50006C1 10.3285 1.67157 11.0001 2.5 11.0001H4L4 10.0001H2.5C2.22386 10.0001 2 9.7762 2 9.50006L2 2.50006C2 2.22392 2.22386 2.00006 2.5 2.00006L9.5 2.00006C9.77614 2.00006 10 2.22392 10 2.50006V4.00002H5.5C4.67158 4.00002 4 4.67159 4 5.50002V12.5C4 13.3284 4.67158 14 5.5 14H12.5C13.3284 14 14 13.3284 14 12.5V5.50002C14 4.67159 13.3284 4.00002 12.5 4.00002H11V2.50006C11 1.67163 10.3284 1.00006 9.5 1.00006H2.5C1.67157 1.00006 1 1.67163 1 2.50006V9.50006ZM5 5.50002C5 5.22388 5.22386 5.00002 5.5 5.00002H12.5C12.7761 5.00002 13 5.22388 13 5.50002V12.5C13 12.7762 12.7761 13 12.5 13H5.5C5.22386 13 5 12.7762 5 12.5V5.50002Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg>
25+
26+
return(
27+
<span style={{display:"flex",alignItems:"center"}}>
28+
{props.children} <button onClick={handleCopy} className=" m-0.5 mr-0 ml-2 px-1.5 py-1.5 text-sm font-bold rounded shadow-md text-white bg-gray-900 backdrop-blur-xl hover:bg-gray-800 ;">{isCopied ? tickSvg : copySvg}</button>
29+
</span>
30+
31+
)
32+
}
33+
34+
export default Copy

docs/app/docs/first-steps/installation/page.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Text from "@radui/ui/Text"
44
import Heading from "@radui/ui/Heading"
55
import Link from "@radui/ui/Link"
66
import Code from "@radui/ui/Code"
7+
import Copy from "\\docs\\app\\docs\\components\\copy-code\\page.js"
78

89

910
const PAGE_NAME = 'INSTALLATION'
@@ -23,12 +24,12 @@ const Introduction = () => {
2324
</Text>
2425

2526
<Text className="mt-4 mb-1 font-medium">Using Yarn</Text>
26-
<Code>
27-
yarn add @radui/ui
27+
<Code >
28+
<Copy>yarn add @radui/ui </Copy>
2829
</Code>
2930
<Text className="mt-4 mb-1 font-medium">Using npm</Text>
3031
<Code>
31-
npm install @radui/ui --save
32+
<Copy>npm install @radui/ui --save</Copy>
3233
</Code>
3334
</Documentation.Section>
3435
</Documentation>

0 commit comments

Comments
 (0)