diff --git a/package-lock.json b/package-lock.json
index 44d3238..b6bdd2f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@tanstack/react-query": "^5.100.14",
"apexcharts": "^5.13.0",
"clsx": "^2.1.1",
+ "cobe": "^2.0.1",
"dotted-map": "^3.1.0",
"framer-motion": "^12.40.0",
"gsap": "^3.15.0",
@@ -1712,6 +1713,12 @@
"node": ">=6"
}
},
+ "node_modules/cobe": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/cobe/-/cobe-2.0.1.tgz",
+ "integrity": "sha512-aaa6vcIlaC8C1SF50LDH0Anybo/EAXnrxqe+bwvr4+YUtZydqjeBjTTD7ziCCkbRrRGSns3I3F6cZsf3W+L+ag==",
+ "license": "MIT"
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -3318,6 +3325,17 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
+ "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/vazir-font": {
"version": "30.1.0",
"resolved": "https://registry.npmjs.org/vazir-font/-/vazir-font-30.1.0.tgz",
diff --git a/package.json b/package.json
index 195fad3..14261f7 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@tanstack/react-query": "^5.100.14",
"apexcharts": "^5.13.0",
"clsx": "^2.1.1",
+ "cobe": "^2.0.1",
"dotted-map": "^3.1.0",
"framer-motion": "^12.40.0",
"gsap": "^3.15.0",
diff --git a/src/app/layout/Footer.tsx b/src/app/layout/Footer.tsx
index a23d8d7..daadf12 100644
--- a/src/app/layout/Footer.tsx
+++ b/src/app/layout/Footer.tsx
@@ -1,68 +1,92 @@
import { useState } from 'react'
+import { Send, Share2, AtSign, MessageCircle, MapPin, Phone, Mail } from 'lucide-react'
-function SocialIcon({ label, name, href }: { label: string; name: string; href: string }) {
+const NAVY = '#071d49'
+const GOLD = '#c9a227'
+
+/* round social buttons (gold filled, like the screenshot) */
+const SOCIALS = [
+ { Icon: Send, name: 'تلگرام', href: '#' },
+ { Icon: Share2, name: 'لینکدین', href: '#' },
+ { Icon: AtSign, name: 'توییتر', href: '#' },
+ { Icon: MessageCircle, name: 'آپارات', href: '#' },
+]
+
+function SocialIcon({ Icon, name, href }: { Icon: typeof Send; name: string; href: string }) {
const [hovered, setHovered] = useState(false)
return (
setHovered(true)}
- onMouseLeave={() => setHovered(false)}
+ onMouseEnter={() => setHovered(true)} onMouseLeave={() => setHovered(false)}
style={{
- width: 36, height: 36, borderRadius: 8,
- border: `1px solid ${hovered ? 'rgba(255,255,255,0.4)' : 'rgba(255,255,255,0.15)'}`,
- background: hovered ? 'rgba(255,255,255,0.08)' : 'transparent',
- display: 'flex', alignItems: 'center', justifyContent: 'center',
- fontSize: 11, fontWeight: 700, textDecoration: 'none',
- color: hovered ? '#fff' : 'rgba(255,255,255,0.5)',
- cursor: 'pointer', transition: 'all 150ms', flexShrink: 0,
+ width: 42, height: 42, borderRadius: '50%', flexShrink: 0,
+ background: GOLD, color: NAVY, display: 'flex', alignItems: 'center', justifyContent: 'center',
+ textDecoration: 'none', cursor: 'pointer', transition: 'transform 150ms, opacity 150ms',
+ transform: hovered ? 'translateY(-3px)' : 'none', opacity: hovered ? 0.9 : 1,
}}
- >{label}
+ >
+
+
)
}
-const SOCIALS = [
- { label: 'in', name: 'لینکدین', href: '#' },
- { label: 'X', name: 'توییتر', href: '#' },
- { label: 'آپ', name: 'آپارات', href: '#' },
- { label: 'tg', name: 'تلگرام', href: '#' },
+/* center nav — the navbar items */
+const NAV_LINKS = [
+ { label: 'رادار آینده', href: '/radar' },
+ { label: 'آمار و داده', href: '#' },
+ { label: 'چندرسانهای', href: '#' },
+ { label: 'در یک نگاه', href: '/at-a-glance' },
+ { label: 'شبکه خبرگان', href: '#' },
+ { label: 'درباره ما', href: '#' },
+]
+
+function NavItem({ href, label }: { href: string; label: string }) {
+ const [hovered, setHovered] = useState(false)
+ return (
+ setHovered(true)} onMouseLeave={() => setHovered(false)}
+ style={{
+ display: 'flex', alignItems: 'center', gap: 8, padding: '6px 0',
+ fontSize: 13.5, color: hovered ? '#fff' : 'rgba(255,255,255,0.6)',
+ textDecoration: 'none', transition: 'color 150ms', flexDirection: 'row-reverse', justifyContent: 'flex-end',
+ }}
+ >
+ {label}
+
+
+ )
+}
+
+/* contact rows */
+const CONTACT = [
+ { Icon: MapPin, label: 'نشانی:', value: 'اصفهان، خیابان سعادتآباد' },
+ { Icon: Phone, label: 'شماره تماس:', value: '۰۳۱ - ۳۸۸۸۴۵۳۹', ltr: true },
+ { Icon: Mail, label: 'پست الکترونیک:', value: 'info@steelfutures.com', ltr: true, accent: true },
]
function NewsletterBox() {
const [email, setEmail] = useState('')
const [done, setDone] = useState(false)
return (
-
-
- خبرنامه فولاد آینده
-
-
+
+
عضویت در خبرنامه اندیشکده
+
setEmail(e.target.value)}
- placeholder="ایمیل خود را وارد کنید..."
- disabled={done}
+ type="email" value={email} onChange={e => setEmail(e.target.value)}
+ placeholder="ایمیل خود را وارد کنید..." disabled={done}
style={{
- flex: 1, border: 'none', padding: '10px 14px', fontSize: 13,
- fontFamily: 'inherit', background: 'rgba(255,255,255,0.07)',
- color: '#fff', outline: 'none', direction: 'rtl', minWidth: 0,
+ flex: 1, border: 'none', padding: '11px 14px', fontSize: 13, fontFamily: 'inherit',
+ background: 'transparent', color: '#fff', outline: 'none', direction: 'rtl', minWidth: 0,
}}
/>
@@ -71,53 +95,72 @@ function NewsletterBox() {
export function Footer() {
return (
-