mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-02 23:06:36 +08:00
refactor(repo): consolidate openflare-server to root and move subprojects to internal/apps
- Merge all files inside openflare-server to the repository root directory. - Relocate agent, relay, and flared subprojects from internal/ to internal/apps/. - Combine docker-compose files and update build context paths to root. - Update GitHub workflows and Dockerfiles to refer to new directories and package names. - Rewrite Go package imports across all files. - Resolve database renew test race condition and clean up docs.
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import {Check, Copy} from "lucide-react"
|
||||
import {cn} from "@/lib/utils"
|
||||
|
||||
interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
|
||||
code: string
|
||||
language?: string
|
||||
showLineNumbers?: boolean
|
||||
}
|
||||
|
||||
export function CodeBlock({
|
||||
code,
|
||||
language = "bash",
|
||||
className,
|
||||
...props
|
||||
}: CodeBlockProps) {
|
||||
const [hasCopied, setHasCopied] = React.useState(false)
|
||||
|
||||
const onCopy = () => {
|
||||
navigator.clipboard.writeText(code)
|
||||
setHasCopied(true)
|
||||
setTimeout(() => setHasCopied(false), 2000)
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
"relative rounded-xl overflow-hidden bg-[#1e1e1e] dark:bg-[#0d0d0d] border border-border/40 shadow-sm my-4",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<div className="flex items-center justify-between px-4 py-3 bg-[#1e1e1e] dark:bg-[#0d0d0d] border-b border-white/5">
|
||||
<div className="flex items-center gap-1.5">
|
||||
<div className="w-3 h-3 rounded-full bg-[#ff5f56] border border-[#e0443e]/50" />
|
||||
<div className="w-3 h-3 rounded-full bg-[#ffbd2e] border border-[#dea123]/50" />
|
||||
<div className="w-3 h-3 rounded-full bg-[#27c93f] border border-[#1aab29]/50" />
|
||||
</div>
|
||||
<button
|
||||
onClick={onCopy}
|
||||
className="text-muted-foreground hover:text-white transition-colors"
|
||||
>
|
||||
{hasCopied ? (
|
||||
<Check className="w-3.5 h-3.5" />
|
||||
) : (
|
||||
<Copy className="w-3.5 h-3.5" />
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
<div className="p-4 overflow-x-auto bg-transparent">
|
||||
<pre className="font-mono text-xs leading-relaxed text-[#e0e0e0] !bg-transparent !p-0 !m-0 !border-0 shadow-none whitespace-pre-wrap break-all">
|
||||
<code className={cn("!bg-transparent !p-0 !m-0 !border-0 shadow-none font-mono", language && `language-${ language }`)}>
|
||||
{code}
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user