Commit Graph

27 Commits

Author SHA1 Message Date
alireza 7d7063b6e8 Pulse page: live market bar, price table, product coverage, form, i18n
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 15:16:46 +03:30
alireza 743888429b Security hardening + navbar restructure
Security fixes:
- JWT_SECRET/ADMIN_PASSWORD fail-fast on missing/weak values
- Switch admin auth from localStorage to httpOnly cookie
- Rate limiting on login (10/15min) and contact form (3/10min)
- CORS whitelist via ALLOWED_ORIGINS env var
- Helmet with CSP, frameguard
- Escape HTML in contact email and admin panel innerHTML
- Remove SVG from upload whitelist
- err.message no longer leaked in API responses
- MAIL_TO moved to env var
- JWT expiry 7d → 24h

Navbar:
- Rename: رادار آینده → آینده‌پژوهی و رصد هوشمند
- Rename: مرز فناوری → فناوری و نوآوری
- Rename: نبض صنعت → بازار و زنجیره فولاد
- Add: پایداری و فولاد سبز (/sustainability)
- Add: ژئوپلیتیک و اقتصاد جهانی (/geopolitics)
- Remove: رویدادها

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:37:30 +03:30
alireza 1f72b528d7 Hero subtitle: smaller font on mobile 2026-06-01 11:25:11 +03:30
alireza 780abc7f63 Hero title: single line on mobile with responsive font size 2026-06-01 11:24:27 +03:30
alireza 748b575c78 Fix unused animDir variable causing TS build error 2026-06-01 11:16:22 +03:30
alireza 54c4aa698b Risk slider: mobile 1-card + RiskCard component + padding tweaks 2026-06-01 10:55:50 +03:30
alireza 3c40a655de Risk slider, footer fix, global padding, mobile improvements 2026-06-01 10:51:45 +03:30
alireza c1f9563303 Fix duplicate className TS errors in PartnersSection and RiskSection 2026-06-01 10:41:59 +03:30
alireza 9e9dd96114 Fix mobile grid overrides — remove inline gridTemplateColumns blocking Tailwind breakpoints 2026-06-01 10:40:56 +03:30
alireza 10003c0ff3 Fix duplicate className on EventsSection event card 2026-06-01 10:37:09 +03:30
alireza dd7fbc2efc Responsive fixes across site — mobile padding, font sizes, hero text
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 10:35:57 +03:30
alireza b6ae3913f8 Fix video PiP icon, remove عضویت from nav, add EN translations to risk items
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:59:19 +03:30
alireza 9bb56e8795 Remove meta strip, replace subscribe with login+lang toggle, remove newsletter box from layout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:49:37 +03:30
alireza fe3b5b0f67 Footer cleanup, newsletter box, risk ticker fix, more newsletter items
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:40:29 +03:30
alireza 97da68f50c Remove section number badge boxes from home page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:30:19 +03:30
Mohammad Jebeli 7c9e2f55e3 fix: serve images and hero video locally (Iran geoblock-proof)
- Move hero-bg.mp4 to public/ so Vite serves it at /hero-bg.mp4
  (was at repo root => 404 in built site, video never loaded)
- Download 20 Unsplash images to public/news/ (LFS) and rewrite all
  34 refs to same-origin paths (images.unsplash.com blocked in Iran)
- Replace 2 globally-dead photo IDs with fitting industrial/tech images
2026-05-31 20:20:59 +03:30
Mohammad Jebeli 3f56f606b6 fix: remove now-unused useRef import in Pulse.tsx
Orphaned after ContactPanel removal. Fixes TS6133.
2026-05-31 20:05:20 +03:30
Mohammad Jebeli 8980c70233 fix: remove unused TS variables causing build failure
- Remove FACTORIES constant (SteelNewsletterSection.tsx)
- Remove unused lang param from ImageSlider (Pulse.tsx)
- Remove unused ContactPanel component (Pulse.tsx)
- Remove unused requested/setRequested state (Pulse.tsx)

Fixes TS6133 errors blocking Docker build.
2026-05-31 20:03:43 +03:30
alireza c934ee4ab5 Design system rebrand, image slider, contact form, new home sections
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 17:02:46 +03:30
alireza a72a3c61f9 Hero: centered layout, GSAP scroll, 1.5x video, remove CTA
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 13:00:00 +03:30
alireza 4e0f2e2a0e Add compressed hero background video (40MB → 10MB)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 12:23:22 +03:30
alireza 3643c5cfea Add mock risk data to RiskSection — expand fallback to 20 items
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 11:22:35 +03:30
alireza 60bf240cf5 Bilingual site (FA/EN), redesigned sections, new pages
- Full FA/EN toggle via LangContext across all pages and sections
- New pages: Radar, Technology, Pulse, Membership
- Home restructured: Hero → SnapshotBar → 5 chapters
- FactoryBentoSection: Mobarakeh Steel monthly reports (bento grid)
- SteelNewsletterSection: bilingual newsletter + factory list
- Section labels: Persian numerals, editorial rule style
- Header: LTR in EN mode, bilingual nav
- Footer: updated copyright and tagline
- Typography: consistent h2 sizes across sections
- BentoGrid: larger cards (p-8, 18px title)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 11:18:35 +03:30
zaza 070de3ac1e Brighten palette, rename to Andishkade Foolad Ayandeh, fix risk ticker loop
- Shift design tokens from warm beige/brown to cool off-white + slate inks
  with vivid corporate red/amber/green accents
- Rename brand from "اندیشکده فولاد ایران" / "Iran Steel Policy Institute"
  to "اندیشکده فولاد آینده" / "Future Steel Policy Institute"
- Replace JS-clone seamless-loop in RiskSection with JSX-doubled items,
  immune to StrictMode double-invocation that was leaving the ticker blank

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 18:39:17 +03:30
alireza 848f03374e Add Docker deployment for Hugging Face Spaces 2026-05-26 16:04:01 +03:30
alireza 8c5d2a9739 Refine homepage layout, typography, and component polish
- Header: replaced 3-bar masthead with slim dark meta strip + 68px main bar
  (brand · centered nav · search/CTA actions). ~60% shorter than before.
- Home: added numbered SectionLabel chapter markers (01–07) between
  sections with red accent bar; alternated paper/paper-2 backgrounds
  for clearer section separation.
- Typography: wrapped base h1–h4 and p element styles in @layer base so
  Tailwind utilities (text-white, etc.) can override defaults. Previously
  unlayered p { color: var(--ink-3) } was overriding all carousel white
  titles, making them appear grey-brown.
- Carousel: removed pagination arrows; strengthened title gradient,
  added top centered red category badge, text-shadow + generous padding
  so titles never crash into card edges. Modal hero received same
  treatment with overflow-safe inset positioning.
- PlansSection: rewrote with compact shadcn-pricing pattern; price
  reduced from 42px to 26px; featured plan elevated with translateY
  and shadow; star badge for "Popular" plan.
- TeamSection: redesigned member cards more compact (avatar 60→44px,
  reports count moved to top-end, line-clamp on bio).
- Removed inline padding overrides across all sections so Tailwind
  max-md:px-5 mobile responsiveness actually works.
2026-05-25 17:17:16 +03:30
alireza 2dd08650cf Initial commit 2026-05-25 16:07:58 +03:30