From dc7a92f040056de66a86080e9892b8d33cf5066d Mon Sep 17 00:00:00 2001 From: aramesh-site deploy Date: Mon, 28 Sep 2026 09:41:11 +0000 Subject: [PATCH] =?UTF-8?q?revert(ui):=20=D8=A8=D8=A7=D8=B2=DA=AF=D8=B1?= =?UTF-8?q?=D8=AF=D8=A7=D9=86=DB=8C=20=DA=A9=D8=A7=D9=85=D9=BE=D9=88=D9=86?= =?UTF-8?q?=D9=86=D8=AA=20Button=20(ButtonLink)=20=E2=80=94=20=D9=88=D8=A7?= =?UTF-8?q?=D8=A8=D8=B3=D8=AA=DA=AF=DB=8C=20=D8=B3=D8=A7=D8=AE=D8=AA=D8=A7?= =?UTF-8?q?=D8=B1=20=D9=82=D8=AF=DB=8C=D9=85=DB=8C=20=D8=AC=D8=B2=D8=A6?= =?UTF-8?q?=DB=8C=D8=A7=D8=AA=20=D9=BE=D8=B1=D9=88=DA=98=D9=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UI v1 این کامپوننت را حذف کرده بود؛ ساختار قدیمی صفحهٔ جزئیات پروژه به آن وابسته است (دکمهٔ بازگشت به فهرست پروژه‌ها). --- frontend/src/components/Button.tsx | 110 +++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 frontend/src/components/Button.tsx diff --git a/frontend/src/components/Button.tsx b/frontend/src/components/Button.tsx new file mode 100644 index 0000000..b80958d --- /dev/null +++ b/frontend/src/components/Button.tsx @@ -0,0 +1,110 @@ +import React from 'react' +import { Link } from 'react-router-dom' + +type Variant = 'copper' | 'outline' | 'dark' | 'dark-ivory' + +type BaseProps = { + children: React.ReactNode + variant?: Variant + className?: string +} + +// استایل‌های فوق‌لوکس شیشه‌ای (Glassmorphic) با رنگ‌های اختصاصی پروژه +const STYLES: Record = { + copper: { + // دکمه اصلی: شیشه دودی تیره با خط نوری مسی، هاله بازتاب و حاشیه کریستالی + base: 'bg-char/75 backdrop-blur-xl text-ivory border border-copper/50 shadow-[inset_0_1px_1px_rgba(255,255,255,0.25),0_8px_20px_rgba(0,0,0,0.4)]', + fill: 'bg-gradient-to-r from-copper via-[#d89f6e] to-copper', + text: 'group-hover:text-char font-semibold', + glow: 'hover:border-copper hover:shadow-[0_0_30px_rgba(197,143,92,0.5)]', + }, + outline: { + // دکمه ثانویه: شیشه دودی کاملاً مات (Frosted Smoked Glass) با بازتاب لبه‌ها + base: 'bg-white/[0.04] backdrop-blur-xl border border-white/20 text-ivory shadow-[inset_0_1px_1px_rgba(255,255,255,0.15),0_8px_20px_rgba(0,0,0,0.3)]', + fill: 'bg-white/10', + text: 'group-hover:text-copper', + glow: 'hover:border-copper/70 hover:bg-white/[0.08] hover:shadow-[0_0_25px_rgba(197,143,92,0.25)]', + }, + dark: { + base: 'bg-ink/85 backdrop-blur-xl text-ivory border border-white/10 shadow-[inset_0_1px_1px_rgba(255,255,255,0.1)]', + fill: 'bg-copper', + text: 'group-hover:text-char', + glow: 'hover:border-copper/50 hover:shadow-[0_0_20px_rgba(197,143,92,0.3)]', + }, + 'dark-ivory': { + base: 'bg-ink/85 backdrop-blur-xl text-ivory border border-white/10 shadow-[inset_0_1px_1px_rgba(255,255,255,0.1)]', + fill: 'bg-ivory', + text: 'group-hover:text-char', + glow: 'hover:shadow-[0_0_20px_rgba(255,255,255,0.2)]', + }, +} + +function Inner({ children, variant = 'copper' }: { children: React.ReactNode; variant?: Variant }) { + const style = STYLES[variant] + return ( + <> + {/* خط انعکاس نوری شیشه در بالای دکمه */} + + + {/* انیمیشن پر شدن موجی و نرم */} +