Skip to content

Commit c0d7493

Browse files
authored
Add copyable code block for install custom node. (#7)
* Remove unused page. * Remove unused page. * Add copyable code block.
1 parent ce88455 commit c0d7493

File tree

4 files changed

+60
-153
lines changed

4 files changed

+60
-153
lines changed

components/CodeBlock/CodeBlock.tsx

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import React, { useState } from 'react'
2+
import { IoIosInformationCircle } from 'react-icons/io'
3+
4+
const CopyableCodeBlock = ({ code }) => {
5+
const [isCopied, setIsCopied] = useState(false)
6+
7+
const handleCopy = async () => {
8+
try {
9+
await navigator.clipboard.writeText(code)
10+
setIsCopied(true)
11+
setTimeout(() => setIsCopied(false), 2000) // Reset copied state after 2 seconds
12+
} catch (err) {
13+
console.error('Failed to copy!', err)
14+
}
15+
}
16+
17+
return (
18+
<div className="relative p-4 bg-gray-800 text-white rounded-lg font-mono text-sm">
19+
<div className="flex items-center gap-1">
20+
<a
21+
target="_blank"
22+
href="https://www.comfydocs.org/comfy-cli/getting-started#install-cli"
23+
rel="noopener noreferrer"
24+
>
25+
<IoIosInformationCircle
26+
className="h-5 w-5"
27+
title="Install Comfy CLI with: npm install -g comfy-cli"
28+
/>
29+
</a>
30+
<pre>{code}</pre>
31+
<button
32+
onClick={handleCopy}
33+
className={`absolute top-4 right-4 text-xs py-1 px-2 rounded ${
34+
isCopied ? 'bg-green-500' : 'bg-blue-500'
35+
} hover:bg-blue-700 transition duration-300 ease`}
36+
>
37+
{isCopied ? 'Copied!' : 'Copy'}
38+
</button>
39+
</div>
40+
</div>
41+
)
42+
}
43+
44+
export default CopyableCodeBlock

components/nodes/NodeDetails.tsx

+16-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import NodeVDrawer from './NodeVDrawer'
77
import Link from 'next/link'
88
import { NodeEditModal } from './NodeEditModal'
99
import { NodeVersion, useGetNode, useListNodeVersions } from 'src/api/generated'
10+
import CopyableCodeBlock from '../CodeBlock/CodeBlock'
1011

1112
export function formatRelativeDate(dateString: string) {
1213
const date = new Date(dateString)
@@ -118,8 +119,8 @@ const NodeDetails = () => {
118119
)}
119120
</div>
120121
</div>
121-
<div className="flex flex-col mt-6 mb-10 ">
122-
{data.license && (
122+
<div className="flex flex-col mt-6 mb-6 ">
123+
{/* {data.license && (
123124
<p className="flex items-center py-2 mt-1 text-xs text-center text-gray-400">
124125
<svg
125126
className="w-6 h-6 "
@@ -161,7 +162,7 @@ const NodeDetails = () => {
161162
{data.rating} rating
162163
</span>
163164
</p>
164-
)}
165+
)} */}
165166
{data.downloads && (
166167
<p className="flex items-center py-2 mt-1 text-xs text-gray-400">
167168
<svg
@@ -187,6 +188,11 @@ const NodeDetails = () => {
187188
</p>
188189
)}
189190
</div>
191+
<div className="mt-5 mb-10">
192+
<CopyableCodeBlock
193+
code={`comfy node install ${nodeId}`}
194+
/>
195+
</div>
190196
<div>
191197
<h2 className="mb-2 text-xl font-bold">
192198
Description
@@ -264,6 +270,13 @@ const NodeDetails = () => {
264270
<span>Edit details</span>
265271
</Button>
266272
)}
273+
{data.latest_version?.downloadUrl && (
274+
<Button className="flex-shrink-0 px-4 text-white bg-blue-500 rounded whitespace-nowrap text-[16px]">
275+
<Link href={data.latest_version?.downloadUrl}>
276+
Download Latest
277+
</Link>
278+
</Button>
279+
)}
267280
</div>
268281
</div>
269282
<NodeEditModal

components/nodes/NodesPublisherDetail.tsx

-138
This file was deleted.

pages/nodes/publisher-detail/[id].tsx

-12
This file was deleted.

0 commit comments

Comments
 (0)