mirror of
https://github.com/Hackdex-App/hackdex-website.git
synced 2026-05-07 13:41:18 -05:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
"use client";
|
|
|
|
import React, { useState } from "react";
|
|
import { FiShare2 } from "react-icons/fi";
|
|
import ShareModal from "@/components/Hack/ShareModal";
|
|
|
|
interface HackShareButtonProps {
|
|
title: string;
|
|
url: string;
|
|
author: string | null;
|
|
}
|
|
|
|
export default function HackShareButton({ title, url, author }: HackShareButtonProps) {
|
|
const [showShareModal, setShowShareModal] = useState(false);
|
|
|
|
return (
|
|
<>
|
|
<button
|
|
type="button"
|
|
onClick={() => setShowShareModal(true)}
|
|
aria-label="Share hack"
|
|
title="Share"
|
|
className="group inline-flex px-3 md:px-2 h-8 items-center justify-center rounded-md ring-1 ring-[var(--border)] bg-[var(--surface-2)] text-foreground/80 hover:bg-[var(--surface-3)] hover:text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border)]"
|
|
>
|
|
<FiShare2 size={18} />
|
|
<span className="ml-2 font-semibold text-sm">Share</span>
|
|
</button>
|
|
{showShareModal && (
|
|
<ShareModal title={title} url={url} author={author} onClose={() => setShowShareModal(false)} />
|
|
)}
|
|
</>
|
|
);
|
|
}
|