From e40944a8a2cc93bb179d6c62005326542b1d94cb Mon Sep 17 00:00:00 2001 From: fatemeh sane Date: Thu, 20 Aug 2026 10:20:42 +0330 Subject: [PATCH] update --- src/components/ArticleCard.tsx | 40 +-- src/components/Header.tsx | 72 ++--- src/components/PageHero.tsx | 39 +-- src/components/ProjectCard.tsx | 97 +++---- src/components/home/Faq.tsx | 78 +++--- src/components/home/Hero.tsx | 62 ++--- src/components/home/Services.tsx | 24 +- src/components/home/Story.tsx | 57 ++-- src/components/home/Team.tsx | 36 +-- src/data/site.ts | 436 ++++++------------------------- src/pages/About.tsx | 36 ++- src/pages/Blog.tsx | 47 ++-- src/pages/ContactPage.tsx | 47 ++-- src/pages/FaqPage.tsx | 21 +- src/pages/Investment.tsx | 94 +++---- src/pages/ServicesPage.tsx | 52 ++-- tailwind.config.js | 4 +- 17 files changed, 507 insertions(+), 735 deletions(-) diff --git a/src/components/ArticleCard.tsx b/src/components/ArticleCard.tsx index 431b5bd..9ebdc73 100644 --- a/src/components/ArticleCard.tsx +++ b/src/components/ArticleCard.tsx @@ -1,29 +1,37 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { ArrowLeftIcon, ClockIcon } from 'lucide-react'; -import type { Article } from '../data/site'; +import React from 'react' +import { Link } from 'react-router-dom' +import { ArrowLeftIcon, ClockIcon } from 'lucide-react' +import type { Article } from '../data/site' -export function ArticleCard({ article }: {article: Article;}) { +export function ArticleCard({ article }: { article: Article }) { return ( - + className="group flex h-full flex-col border border-ivory/10 bg-char transition-[transform,box-shadow,border-color] duration-300 ease-lux hover:-translate-y-2 hover:border-copper/50 hover:shadow-lift focus:outline-none focus-visible:ring-2 focus-visible:ring-copper" + aria-label={`خواندن مقاله ${article.title}`} + >
{`تصویر - + className="h-52 w-full object-cover transition-transform duration-500 ease-lux group-hover:scale-105" + />
-
+ + {/* پدینگ کلی از p-7 به p-9 افزایش یافت تا فاصله متن از لبه‌های عکس و کارت بیشتر شود */} +

{article.category}

-

+ + {/* فاصله از بالا (mt-4) و ارتفاع خط (leading-9) برای تیتر افزایش یافت */} +

{article.title}

-

{article.excerpt}

-
+ + {/* فاصله از تیتر (mt-4)، فاصله حداقلی از خط پایین (mb-6) و ارتفاع خطوط بازتر (leading-9) */} +

{article.excerpt}

+ + {/* فاصله محتوای پایینی از خط جداکننده (pt-6) بیشتر شد */} +
{article.date} @@ -37,6 +45,6 @@ export function ArticleCard({ article }: {article: Article;}) {
- ); - + + ) } \ No newline at end of file diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 876b1cf..bcd6a07 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -1,6 +1,5 @@ import React, { useEffect, useState } from 'react' import { Link, NavLink, useLocation } from 'react-router-dom' -import { AnimatePresence, motion } from 'framer-motion' import { MenuIcon, PhoneIcon, XIcon } from 'lucide-react' import { BRAND, NAV } from '../data/site' @@ -20,12 +19,10 @@ export function Header() { setOpen(false) }, [pathname]) - const isSolid = scrolled || open - return (
@@ -46,7 +43,7 @@ export function Header() { - `group relative py-2 text-[0.95rem] font-light transition-colors duration-300 ease-lux hover:text-copper ${ + `group relative py-2 text-[0.95rem] font-light transition-colors duration-200 ease-lux hover:text-copper ${ isActive ? 'text-copper' : 'text-ivory/80' }` } @@ -54,10 +51,8 @@ export function Header() { {({ isActive }) => ( <> {item.label} - {/* خط زیرین که از وسط باز می‌شود */}
- - {open && ( - -
    - {NAV.map((item, i) => ( - +
      + {NAV.map((item) => ( +
    • + + `block border-b border-ivory/5 py-3 text-base font-light transition-colors duration-200 ease-lux ${ + isActive ? 'text-copper' : 'text-ivory/80' + }` + } > - - `block border-b border-ivory/5 py-3 text-base font-light transition-colors duration-200 ease-lux ${ - isActive ? 'text-copper' : 'text-ivory/80 hover:text-copper' - }` - } - > - {item.label} - - - ))} -
    - - )} - + {item.label} + + + ))} +
+ + )}
) } \ No newline at end of file diff --git a/src/components/PageHero.tsx b/src/components/PageHero.tsx index 7e91876..068c64b 100644 --- a/src/components/PageHero.tsx +++ b/src/components/PageHero.tsx @@ -1,23 +1,28 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { motion } from 'framer-motion'; -import { ChevronLeftIcon } from 'lucide-react'; +import React from 'react' +import { Link } from 'react-router-dom' +import { motion } from 'framer-motion' +import { ChevronLeftIcon } from 'lucide-react' type PageHeroProps = { - title: string; - lead: string; - image: string; -}; + title: string + lead: string + image: string +} export function PageHero({ title, lead, image }: PageHeroProps) { return (
-
); - + + ) } \ No newline at end of file diff --git a/src/components/ProjectCard.tsx b/src/components/ProjectCard.tsx index dfe3d77..7c00e6a 100644 --- a/src/components/ProjectCard.tsx +++ b/src/components/ProjectCard.tsx @@ -1,55 +1,56 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { ArrowLeftIcon } from 'lucide-react'; -import { STATUS_LABEL, type Project } from '../data/site'; +import React from 'react' +import { Link } from 'react-router-dom' -type ProjectCardProps = { - project: Project; - imageClass?: string; -}; - -export function ProjectCard({ project, imageClass = 'h-72' }: ProjectCardProps) { - const isDone = project.status === 'done'; +export function ProjectCard({ project }: any) { + // اینجا کد بر اساس دیتا بیس اصلی شما تصمیم می‌گیرد + const isOngoing = project.status === 'progress' + + // متنی که کاربر روی عکس می‌بیند + const statusText = isOngoing ? 'در حال انجام' : 'انجام شده' + + // تنظیم رنگ‌ها: در حال انجام = مسی با افکت چشمک‌زن | انجام شده = شیری (سفید) + const dotColor = isOngoing ? 'bg-copper animate-pulse' : 'bg-ivory/60' + const textColor = isOngoing ? 'text-copper' : 'text-ivory/90' return ( - - -
- {`تصویر +
+ - - - مشاهده پروژه - - - - - -
-
-

- {project.title} -

-

{project.location}

-
- سال: {project.year} - {project.area} + {/* بخش تصویر */} +
+ {project.title} + {/* لیبل وضعیت پروژه */} +
+ + {statusText} +
-
- ); + {/* بخش متن */} +
+ +
+

+ {project.title} +

+

+ {project.location} +

+
+ +
+ +
+ سال: {project.year} + {project.area} متر مربع +
+ +
+ + + ) } \ No newline at end of file diff --git a/src/components/home/Faq.tsx b/src/components/home/Faq.tsx index ee79853..5464c63 100644 --- a/src/components/home/Faq.tsx +++ b/src/components/home/Faq.tsx @@ -1,27 +1,35 @@ -import React, { useState } from 'react'; -import { AnimatePresence, motion } from 'framer-motion'; -import { PlusIcon } from 'lucide-react'; -import { Reveal } from '../Reveal'; -import { SectionHeading } from '../SectionHeading'; -import { FAQS } from '../../data/site'; +import React, { useState } from 'react' +import { AnimatePresence, motion } from 'framer-motion' +import { PlusIcon } from 'lucide-react' +import { Reveal } from '../Reveal' +import { SectionHeading } from '../SectionHeading' +import { FAQS } from '../../data/site' -export function Faq() { - const [open, setOpen] = useState(0); +type FaqProps = { + hideHeading?: boolean; +} + +export function Faq({ hideHeading = false }: FaqProps) { + const [open, setOpen] = useState(0) return (
-
-
- - -
+ {/* تغییر چیدمان بر اساس داشتن یا نداشتن تیتر */} +
+ + {!hideHeading && ( +
+ +
+ )} -
+
    {FAQS.map((faq, i) => { - const isOpen = open === i; + const isOpen = open === i return (
  • @@ -29,37 +37,37 @@ export function Faq() { type="button" onClick={() => setOpen(isOpen ? null : i)} aria-expanded={isOpen} - className="flex w-full items-center justify-between gap-6 py-6 text-right transition-colors duration-200 ease-lux hover:text-copper"> - + className="flex w-full items-center justify-between gap-6 py-6 text-right transition-colors duration-200 ease-lux hover:text-copper" + > {faq.q} - + isOpen ? 'rotate-45' : '' + }`} + /> - {isOpen && - - + {isOpen && ( +

    {faq.a}

    - } + )}
  • -
    ); - + + ) })}
-
); - + + ) } \ No newline at end of file diff --git a/src/components/home/Hero.tsx b/src/components/home/Hero.tsx index d9001f3..762d52a 100644 --- a/src/components/home/Hero.tsx +++ b/src/components/home/Hero.tsx @@ -1,14 +1,14 @@ -import React from 'react'; -import { motion, useScroll, useTransform } from 'framer-motion'; -import { ArrowLeftIcon, ChevronDownIcon } from 'lucide-react'; -import { ButtonLink } from '../Button'; -import { BRAND } from '../../data/site'; +import React from 'react' +import { motion, useScroll, useTransform } from 'framer-motion' +import { ArrowLeftIcon, ChevronDownIcon } from 'lucide-react' +import { ButtonLink } from '../Button' +import { BRAND } from '../../data/site' export function Hero() { - const { scrollY } = useScroll(); - const imageY = useTransform(scrollY, [0, 700], [0, 110]); - const contentY = useTransform(scrollY, [0, 700], [0, -55]); - const overlay = useTransform(scrollY, [0, 600], [0.5, 0.78]); + const { scrollY } = useScroll() + const imageY = useTransform(scrollY, [0, 700], [0, 110]) + const contentY = useTransform(scrollY, [0, 700], [0, -55]) + const overlay = useTransform(scrollY, [0, 600], [0.5, 0.78]) return (
@@ -16,29 +16,29 @@ export function Hero() { src={BRAND.hero} alt="نمای شبانه برج مسکونی ساخته‌شده توسط آرامش پلازا" style={{ y: imageY }} - className="absolute inset-0 h-[114%] w-full object-cover" /> - + className="absolute inset-0 h-[114%] w-full object-cover" + />
); - -} \ No newline at end of file + + ) +} diff --git a/src/components/home/Services.tsx b/src/components/home/Services.tsx index 7e55d71..11b1eba 100644 --- a/src/components/home/Services.tsx +++ b/src/components/home/Services.tsx @@ -1,22 +1,32 @@ import React from 'react' import { Reveal } from '../Reveal' import { ServiceIcon } from '../ServiceIcon' -import { SectionHeading } from '../SectionHeading' import { SERVICES } from '../../data/site' -export function Services() { +type ServicesProps = { + showLabel?: boolean +} + +export function Services({ showLabel = true }: ServicesProps) { return (
- + + {/* لیبل "خدمات" فقط در صورتی نمایش داده می‌شود که showLabel برابر true باشد */} +

+ خدمات +

+

+ از نخستین خط روی کاغذ تا تحویل کلید، مدیریت سرمایه و طراحی محوطه؛ همه مراحل در یک مجموعه و زیر یک نظام + کنترل کیفیت. +

+
+
{SERVICES.map((service, i) => ( -
+
-
+
- {/* اینجا متن کوچک بالای تیتر حذف شد تا کاملاً یکدست بشه */} - - + {showLabel && ( + +

+ درباره ی ما +

+
+ + )} + -

- آرامش پلازا با یک دفتر کوچک معماری آغاز شد و امروز یکی از مجموعه‌های شناخته‌شده ساخت‌وساز لوکس در ایران است. در تمام این سال‌ها یک اصل تغییر نکرده است: ساختمان باید برای زندگی ساخته شود، نه برای فروش سریع. +

+ آرامش پلازا با یک دفتر کوچک معماری آغاز شد و امروز یکی از مجموعه‌های شناخته‌شده ساخت‌وساز لوکس در ایران + است. در تمام این سال‌ها یک اصل تغییر نکرده است: ساختمان باید برای زندگی ساخته شود، نه برای فروش سریع.

- هر پروژه با مطالعه زمین، نور، اقلیم و الگوی زندگی ساکنان آغاز می‌شود؛ سپس تیم طراحی، سازه و اجرا در یک فرآیند واحد آن را تا تحویل کلید پیش می‌برند. + هر پروژه با مطالعه زمین، نور، اقلیم و الگوی زندگی ساکنان آغاز می‌شود؛ سپس تیم طراحی، سازه و اجرا در یک + فرآیند واحد آن را تا تحویل کلید پیش می‌برند.

+
@@ -42,12 +55,22 @@ export function Story() {
- - - داستان کامل ما - - - + + {showLink && ( + + + داستان کامل ما + + + + )} + + {/* محتوای اختصاصی صفحه درباره ما اینجا قرار می‌گیرد */} + {children && ( + + {children} + + )}
diff --git a/src/components/home/Team.tsx b/src/components/home/Team.tsx index c030320..10a9805 100644 --- a/src/components/home/Team.tsx +++ b/src/components/home/Team.tsx @@ -1,7 +1,7 @@ -import React from 'react'; -import { Reveal } from '../Reveal'; -import { SectionHeading } from '../SectionHeading'; -import { TEAM } from '../../data/site'; +import React from 'react' +import { Reveal } from '../Reveal' +import { SectionHeading } from '../SectionHeading' +import { TEAM } from '../../data/site' export function Team() { return ( @@ -10,24 +10,26 @@ export function Team() { - + align="center" + /> -
- {TEAM.map((member, i) => - -
-
+
+ {TEAM.map((member, i) => ( + +
+
{member.name.trim().charAt(0)}
-

{member.name}

-

{member.role}

-

{member.bio}

+

{member.name}

+

{member.role}

+

+ {member.bio} +

- )} + ))}
-
); - + + ) } \ No newline at end of file diff --git a/src/data/site.ts b/src/data/site.ts index d6ca6b0..ff239cd 100644 --- a/src/data/site.ts +++ b/src/data/site.ts @@ -10,23 +10,23 @@ export const BRAND = { }; export const IMAGES = [ -'https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png', -'https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png', -'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png', -'https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png', -'https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png']; - + 'https://i.postimg.cc/wTQ0QFkG/Gemini-Generated-Image-1tjszd1tjszd1tjs.png', + 'https://i.postimg.cc/1zfBPS1G/Gemini-Generated-Image-at69yhat69yhat69.png', + 'https://i.postimg.cc/BbccNQHr/Gemini-Generated-Image-dafc2hdafc2hdafc.png', + 'https://i.postimg.cc/4xFvW0HX/Gemini-Generated-Image-n7mhonn7mhonn7mh.png', + 'https://i.postimg.cc/N036cr4s/Gemini-Generated-Image-ytbhvvytbhvvytbh.png' +]; export const NAV = [ -{ label: 'صفحه اصلی', to: '/' }, -{ label: 'درباره ما', to: '/about' }, -{ label: 'خدمات', to: '/services' }, -{ label: 'پروژه‌ها', to: '/projects' }, -{ label: 'سرمایه‌گذاری', to: '/investment' }, -{ label: 'وبلاگ', to: '/blog' }, -{ label: 'سوالات متداول', to: '/faq' }, -{ label: 'تماس با ما', to: '/contact' }]; - + { label: 'صفحه اصلی', to: '/' }, + { label: 'درباره ما', to: '/about' }, + { label: 'خدمات', to: '/services' }, + { label: 'پروژه‌ها', to: '/projects' }, + { label: 'سرمایه‌گذاری', to: '/investment' }, + { label: 'وبلاگ', to: '/blog' }, + { label: 'سوالات متداول', to: '/faq' }, + { label: 'تماس با ما', to: '/contact' } +]; export type Service = { title: string; @@ -35,54 +35,22 @@ export type Service = { }; export const SERVICES: Service[] = [ -{ - title: 'طراحی معماری', - desc: 'خلق فرم‌های معاصر با نگاه ایرانی؛ از کانسپت اولیه تا نقشه‌های اجرایی و جزئیات نما.', - icon: 'draft' -}, -{ - title: 'ساخت برج‌های مسکونی', - desc: 'اجرای برج‌های بلندمرتبه با استانداردهای سازه‌ای بین‌المللی و کیفیت تحویل بی‌نقص.', - icon: 'tower' -}, -{ - title: 'مجتمع‌های تجاری', - desc: 'طراحی و ساخت مراکز تجاری با مطالعه دقیق جریان مخاطب و بازدهی بلندمدت سرمایه.', - icon: 'mall' -}, -{ - title: 'ویلاسازی', - desc: 'ویلاهای اختصاصی هم‌نشین با طبیعت؛ محرمانگی، نور طبیعی و مصالح ماندگار.', - icon: 'villa' -}, -{ - title: 'بازسازی', - desc: 'بازآفرینی ساختمان‌های موجود با ارتقای سازه، نما و تجربه زندگی در فضا.', - icon: 'renew' -}, -{ - title: 'مدیریت پروژه', - desc: 'کنترل هم‌زمان زمان، هزینه و کیفیت با گزارش‌دهی شفاف در تمام مراحل ساخت.', - icon: 'manage' -}, -{ - title: 'سرمایه‌گذاری ساختمانی', - desc: 'ساختارهای مشارکت شفاف، ارزیابی ریسک و طراحی سبد ملکی متناسب با سرمایه شما.', - icon: 'invest' -}, -{ - title: 'محوطه‌سازی و لنداسکیپ', - desc: 'طراحی حیاط، بام سبز و مسیرهای دسترسی؛ ادامه معماری در فضای باز پروژه.', - icon: 'landscape' -}]; - + { title: 'طراحی معماری', desc: 'خلق فرم‌های معاصر با نگاه ایرانی؛ از کانسپت اولیه تا نقشه‌های اجرایی و جزئیات نما.', icon: 'draft' }, + { title: 'ساخت برج‌های مسکونی', desc: 'اجرای برج‌های بلندمرتبه با استانداردهای سازه‌ای بین‌المللی و کیفیت تحویل بی‌نقص.', icon: 'tower' }, + { title: 'مجتمع‌های تجاری', desc: 'طراحی و ساخت مراکز تجاری با مطالعه دقیق جریان مخاطب و بازدهی بلندمدت سرمایه.', icon: 'mall' }, + { title: 'ویلاسازی', desc: 'ویلاهای اختصاصی هم‌نشین با طبیعت؛ محرمانگی، نور طبیعی و مصالح ماندگار.', icon: 'villa' }, + { title: 'بازسازی', desc: 'بازآفرینی ساختمان‌های موجود با ارتقای سازه، نما و تجربه زندگی در فضا.', icon: 'renew' }, + { title: 'مدیریت پروژه', desc: 'کنترل هم‌زمان زمان، هزینه و کیفیت با گزارش‌دهی شفاف در تمام مراحل ساخت.', icon: 'manage' }, + { title: 'سرمایه‌گذاری ساختمانی', desc: 'ساختارهای مشارکت شفاف، ارزیابی ریسک و طراحی سبد ملکی متناسب با سرمایه شما.', icon: 'invest' }, + { title: 'محوطه‌سازی و لنداسکیپ', desc: 'طراحی حیاط، بام سبز و مسیرهای دسترسی؛ ادامه معماری در فضای باز پروژه.', icon: 'landscape' } +]; export const STATS = [ -{ value: 21, suffix: '+', label: 'سال تجربه ساخت' }, -{ value: 47, suffix: '', label: 'پروژه تحویل‌شده' }, -{ value: 860, suffix: 'هزار', label: 'مترمربع زیربنا' }, -{ value: 1200, suffix: '+', label: 'خانواده ساکن' }]; - + { value: 21, suffix: '+', label: 'سال تجربه ساخت' }, + { value: 47, suffix: '', label: 'پروژه تحویل‌شده' }, + { value: 860, suffix: 'هزار', label: 'مترمربع زیربنا' }, + { value: 1200, suffix: '+', label: 'خانواده ساکن' } +]; export type ProjectStatus = 'done' | 'progress'; @@ -108,122 +76,13 @@ export const STATUS_LABEL: Record = { }; export const PROJECTS: Project[] = [ -{ - slug: 'aramesh-elahieh', - title: 'برج آرامش الهیه', - location: 'تهران، الهیه', - year: '۱۴۰۲', - status: 'done', - image: IMAGES[0], - gallery: [IMAGES[0], IMAGES[3], IMAGES[1]], - area: '۲۴٬۰۰۰ متر مربع', - floors: '۱۸ طبقه', - units: '۵۶ واحد', - client: 'سرمایه‌گذاری خصوصی', - summary: - 'یک برج مسکونی لوکس با نمای سنگ تراورتن و پوسته دوپوسته‌ای که مصرف انرژی را تا ۳۵ درصد کاهش داده است.', - body: [ - 'برج آرامش الهیه روی زمینی با شیب طبیعی شمالی طراحی شد؛ همین شیب فرصت داد تا لابی، استخر و فضاهای مشترک در سه تراز مختلف بنشینند و همه واحدها دید بی‌واسطه به شهر داشته باشند.', - 'پوسته بیرونی ترکیبی از سنگ تراورتن روشن و پنجره‌های قدی با شیشه سه‌جداره است. سایه‌بان‌های عمودی مسی‌رنگ، نور مستقیم تابستان را می‌شکنند و در زمستان اجازه ورود کامل نور را می‌دهند.', - 'اجرای پروژه در سی‌ودو ماه به پایان رسید و تمام واحدها پیش از تحویل کلید به فروش رسیدند.'] - -}, -{ - slug: 'parseh-mall', - title: 'مجتمع تجاری پارسه', - location: 'اصفهان، مرکز شهر', - year: '۱۴۰۱', - status: 'done', - image: IMAGES[1], - gallery: [IMAGES[1], IMAGES[2], IMAGES[4]], - area: '۳۸٬۵۰۰ متر مربع', - floors: '۷ طبقه', - units: '۱۴۰ واحد تجاری', - client: 'گروه سرمایه‌گذاری پارسه', - summary: - 'مرکز تجاری با آتریوم مرکزی و نورگیر سقفی که جریان مخاطب را به‌صورت طبیعی در همه ترازها توزیع می‌کند.', - body: [ - 'مطالعه رفتار مخاطب پیش از طراحی نشان داد کوتاه‌ترین مسیر عمودی، کلید موفقیت تجاری این مجموعه است؛ بنابراین آتریوم مرکزی با پله‌برقی‌های قطری در قلب پلان قرار گرفت.', - 'نورگیر سقفی با شیشه لو-ای، روشنایی روز را تا تراز منفی دو می‌رساند و مصرف روشنایی مصنوعی را به‌طور محسوس کاهش می‌دهد.', - 'مجموعه دو ماه پیش از موعد قراردادی به بهره‌برداری رسید.'] - -}, -{ - slug: 'daryakenar-villas', - title: 'ویلاهای دریاکنار', - location: 'مازندران، نوشهر', - year: '۱۴۰۰', - status: 'done', - image: IMAGES[2], - gallery: [IMAGES[2], IMAGES[4], IMAGES[0]], - area: '۹٬۲۰۰ متر مربع', - floors: '۲ طبقه', - units: '۱۲ ویلا', - client: 'مجموعه خصوصی دریاکنار', - summary: - 'دوازده ویلای اختصاصی با چیدمان شانه‌ای که برای هر واحد، دید مستقیم به دریا و محرمانگی کامل فراهم می‌کند.', - body: [ - 'چیدمان شانه‌ای ویلاها نتیجه ده‌ها بررسی زاویه دید بود؛ هیچ ویلایی در دید ویلای دیگر نیست و همه به دریا باز می‌شوند.', - 'مصالح، پاسخی به اقلیم مرطوب شمال است: چوب ترموود، بتن اکسپوز و پوشش‌های ضد نمک برای فلزات نما.', - 'محوطه با گیاهان بومی طراحی شد تا نیاز آبیاری در طول سال حداقل باشد.'] - -}, -{ - slug: 'niavaran-twins', - title: 'برج دوقلوی نیاوران', - location: 'تهران، نیاوران', - year: '۱۳۹۹', - status: 'done', - image: IMAGES[3], - gallery: [IMAGES[3], IMAGES[0], IMAGES[2]], - area: '۳۱٬۷۰۰ متر مربع', - floors: '۲۰ طبقه', - units: '۸۰ واحد', - client: 'مشارکت با مالکان زمین', - summary: 'دو برج همسان با پادست مشترک که فضاهای رفاهی و پارکینگ‌ها را در یک تراز واحد ادغام می‌کند.', - body: [ - 'دو برج روی یک پادست مشترک نشسته‌اند؛ این تصمیم اجازه داد فضاهای رفاهی، سالن اجتماعات و پارکینگ‌ها بین دو ساختمان مشترک شوند و سطح اشغال باغ کاهش یابد.', - 'سازه با سیستم دیوار برشی و دال پس‌کشیده اجرا شد تا دهانه‌های داخلی آزاد و پلان‌ها قابل شخصی‌سازی باشند.'] - -}, -{ - slug: 'kish-garden-tower', - title: 'باغ‌برج کیش', - location: 'کیش، مروارید', - year: '۱۴۰۵ (پیش‌بینی)', - status: 'progress', - image: IMAGES[4], - gallery: [IMAGES[4], IMAGES[1], IMAGES[3]], - area: '۱۸٬۴۰۰ متر مربع', - floors: '۱۴ طبقه', - units: '۶۲ واحد اقامتی', - client: 'صندوق پروژه‌محور آرامش', - summary: - 'باغ‌برجی اقامتی با تراس‌های سبز پیوسته که در حال ساخت است؛ پیشرفت فیزیکی پروژه ۴۸ درصد.', - body: [ - 'تراس‌های سبز پیوسته، پوسته‌ای زنده برای ساختمان می‌سازند که در اقلیم گرم جزیره، دمای سطح نما را به‌طور محسوس پایین می‌آورد.', - 'در حال حاضر سازه تا تراز طبقه نهم اجرا شده و نصب نما از ضلع جنوبی آغاز شده است.'] - -}, -{ - slug: 'aramesh-business-center', - title: 'مرکز تجاری آرامش تهران', - location: 'تهران، سعادت‌آباد', - year: '۱۴۰۶ (پیش‌بینی)', - status: 'progress', - image: IMAGES[1], - gallery: [IMAGES[1], IMAGES[3], IMAGES[4]], - area: '۲۷٬۳۰۰ متر مربع', - floors: '۱۲ طبقه', - units: '۹۰ دفتر اداری', - client: 'مشارکت با هلدینگ آرامش', - summary: 'مجتمع اداری-تجاری با هسته مرکزی شفاف و لابی دوبلکس؛ در مرحله اجرای سفت‌کاری.', - body: [ - 'برنامه‌ریزی فضایی این مجموعه بر اساس دفاتر انعطاف‌پذیر انجام شد؛ هر تراز می‌تواند به دو، سه یا شش دفتر مستقل تقسیم شود.', - 'اجرای تأسیسات مکانیکی به‌صورت هم‌زمان با سفت‌کاری پیش می‌رود تا زمان کل پروژه کوتاه‌تر شود.'] - -}]; - + { slug: 'aramesh-elahieh', title: 'برج آرامش الهیه', location: 'تهران، الهیه', year: '۱۴۰۲', status: 'done', image: IMAGES[0], gallery: [IMAGES[0], IMAGES[3], IMAGES[1]], area: '۲۴٬۰۰۰ متر مربع', floors: '۱۸ طبقه', units: '۵۶ واحد', client: 'سرمایه‌گذاری خصوصی', summary: 'یک برج مسکونی لوکس با نمای سنگ تراورتن و پوسته دوپوسته‌ای که مصرف انرژی را تا ۳۵ درصد کاهش داده است.', body: ['برج آرامش الهیه روی زمینی با شیب طبیعی شمالی طراحی شد؛ همین شیب فرصت داد تا لابی، استخر و فضاهای مشترک در سه تراز مختلف بنشینند و همه واحدها دید بی‌واسطه به شهر داشته باشند.', 'پوسته بیرونی ترکیبی از سنگ تراورتن روشن و پنجره‌های قدی با شیشه سه‌جداره است. سایه‌بان‌های عمودی مسی‌رنگ، نور مستقیم تابستان را می‌شکنند و در زمستان اجازه ورود کامل نور را می‌دهند.', 'اجرای پروژه در سی‌ودو ماه به پایان رسید و تمام واحدها پیش از تحویل کلید به فروش رسیدند.'] }, + { slug: 'parseh-mall', title: 'مجتمع تجاری پارسه', location: 'اصفهان، مرکز شهر', year: '۱۴۰۱', status: 'done', image: IMAGES[1], gallery: [IMAGES[1], IMAGES[2], IMAGES[4]], area: '۳۸٬۵۰۰ متر مربع', floors: '۷ طبقه', units: '۱۴۰ واحد تجاری', client: 'گروه سرمایه‌گذاری پارسه', summary: 'مرکز تجاری با آتریوم مرکزی و نورگیر سقفی که جریان مخاطب را به‌صورت طبیعی در همه ترازها توزیع می‌کند.', body: ['مطالعه رفتار مخاطب پیش از طراحی نشان داد کوتاه‌ترین مسیر عمودی، کلید موفقیت تجاری این مجموعه است؛ بنابراین آتریوم مرکزی با پله‌برقی‌های قطری در قلب پلان قرار گرفت.', 'نورگیر سقفی با شیشه لو-ای، روشنایی روز را تا تراز منفی دو می‌رساند و مصرف روشنایی مصنوعی را به‌طور محسوس کاهش می‌دهد.', 'مجموعه دو ماه پیش از موعد قراردادی به بهره‌برداری رسید.'] }, + { slug: 'daryakenar-villas', title: 'ویلاهای دریاکنار', location: 'مازندران، نوشهر', year: '۱۴۰۰', status: 'done', image: IMAGES[2], gallery: [IMAGES[2], IMAGES[4], IMAGES[0]], area: '۹٬۲۰۰ متر مربع', floors: '۲ طبقه', units: '۱۲ ویلا', client: 'مجموعه خصوصی دریاکنار', summary: 'دوازده ویلای اختصاصی با چیدمان شانه‌ای که برای هر واحد، دید مستقیم به دریا و محرمانگی کامل فراهم می‌کند.', body: ['چیدمان شانه‌ای ویلاها نتیجه ده‌ها بررسی زاویه دید بود؛ هیچ ویلایی در دید ویلای دیگر نیست و همه به دریا باز می‌شوند.', 'مصالح، پاسخی به اقلیم مرطوب شمال است: چوب ترموود، بتن اکسپوز و پوشش‌های ضد نمک برای فلزات نما.', 'محوطه با گیاهان بومی طراحی شد تا نیاز آبیاری در طول سال حداقل باشد.'] }, + { slug: 'niavaran-twins', title: 'برج دوقلوی نیاوران', location: 'تهران، نیاوران', year: '۱۳۹۹', status: 'done', image: IMAGES[3], gallery: [IMAGES[3], IMAGES[0], IMAGES[2]], area: '۳۱٬۷۰۰ متر مربع', floors: '۲۰ طبقه', units: '۸۰ واحد', client: 'مشارکت با مالکان زمین', summary: 'دو برج همسان با پادست مشترک که فضاهای رفاهی و پارکینگ‌ها را در یک تراز واحد ادغام می‌کند.', body: ['دو برج روی یک پادست مشترک نشسته‌اند؛ این تصمیم اجازه داد فضاهای رفاهی، سالن اجتماعات و پارکینگ‌ها بین دو ساختمان مشترک شوند و سطح اشغال باغ کاهش یابد.', 'سازه با سیستم دیوار برشی و دال پس‌کشیده اجرا شد تا دهانه‌های داخلی آزاد و پلان‌ها قابل شخصی‌سازی باشند.'] }, + { slug: 'kish-garden-tower', title: 'باغ‌برج کیش', location: 'کیش، مروارید', year: '۱۴۰۵ (پیش‌بینی)', status: 'progress', image: IMAGES[4], gallery: [IMAGES[4], IMAGES[1], IMAGES[3]], area: '۱۸٬۴۰۰ متر مربع', floors: '۱۴ طبقه', units: '۶۲ واحد اقامتی', client: 'صندوق پروژه‌محور آرامش', summary: 'باغ‌برجی اقامتی با تراس‌های سبز پیوسته که در حال ساخت است؛ پیشرفت فیزیکی پروژه ۴۸ درصد.', body: ['تراس‌های سبز پیوسته، پوسته‌ای زنده برای ساختمان می‌سازند که در اقلیم گرم جزیره، دمای سطح نما را به‌طور محسوس پایین می‌آورد.', 'در حال حاضر سازه تا تراز طبقه نهم اجرا شده و نصب نما از ضلع جنوبی آغاز شده است.'] }, + { slug: 'aramesh-business-center', title: 'مرکز تجاری آرامش تهران', location: 'تهران، سعادت‌آباد', year: '۱۴۰۶ (پیش‌بینی)', status: 'progress', image: IMAGES[1], gallery: [IMAGES[1], IMAGES[3], IMAGES[4]], area: '۲۷٬۳۰۰ متر مربع', floors: '۱۲ طبقه', units: '۹۰ دفتر اداری', client: 'مشارکت با هلدینگ آرامش', summary: 'مجتمع اداری-تجاری با هسته مرکزی شفاف و لابی دوبلکس؛ در مرحله اجرای سفت‌کاری.', body: ['برنامه‌ریزی فضایی این مجموعه بر اساس دفاتر انعطاف‌پذیر انجام شد؛ هر تراز می‌تواند به دو، سه یا شش دفتر مستقل تقسیم شود.', 'اجرای تأسیسات مکانیکی به‌صورت هم‌زمان با سفت‌کاری پیش می‌رود تا زمان کل پروژه کوتاه‌تر شود.'] } +]; export const BEFORE_AFTER = { title: 'از کانسپت تا خلق واقعیت', @@ -235,202 +94,53 @@ export const BEFORE_AFTER = { }; export const TIMELINE = [ -{ - year: '۱۳۸۳', - title: 'آغاز مسیر', - desc: 'تأسیس دفتر معماری آرامش با تیمی چهارنفره و نخستین پروژه بازسازی در تهران.', - image: IMAGES[2] -}, -{ - year: '۱۳۸۵', - title: 'نخستین ساخت مستقل', - desc: 'تحویل اولین ساختمان مسکونی هفت‌طبقه؛ آغاز همکاری با پیمانکاران سازه‌ای بزرگ.', - image: IMAGES[0] -}, -{ - year: '۱۳۸۷', - title: 'ورود به بازار تجاری', - desc: 'طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.', - image: IMAGES[1] -}, -{ - year: '۱۳۸۹', - title: 'استاندارد بین‌المللی', - desc: 'استقرار نظام کنترل کیفیت و دریافت گواهی‌نامه‌های مدیریت پروژه.', - image: IMAGES[4] -}, -{ - year: '۱۳۹۵', - title: 'بلندمرتبه‌سازی', - desc: 'آغاز ساخت نخستین برج بیست‌طبقه شرکت در شمال تهران.', - image: IMAGES[3] -}, -{ - year: '۱۴۰۳', - title: 'آرامش پلازا امروز', - desc: 'پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایه‌گذاری ساختمانی اختصاصی.', - image: IMAGES[0] -}]; - + { year: '۱۳۸۳', title: 'آغاز مسیر', desc: 'تأسیس دفتر معماری آرامش با تیمی چهارنفره و نخستین پروژه بازسازی در تهران.', image: IMAGES[2] }, + { year: '۱۳۸۵', title: 'نخستین ساخت مستقل', desc: 'تحویل اولین ساختمان مسکونی هفت‌طبقه؛ آغاز همکاری با پیمانکاران سازه‌ای بزرگ.', image: IMAGES[0] }, + { year: '۱۳۸۷', title: 'ورود به بازار تجاری', desc: 'طراحی و اجرای اولین مجتمع تجاری با رویکرد بازدهی سرمایه و جریان مخاطب.', image: IMAGES[1] }, + { year: '۱۳۸۹', title: 'استاندارد بین‌المللی', desc: 'استقرار نظام کنترل کیفیت و دریافت گواهی‌نامه‌های مدیریت پروژه.', image: IMAGES[4] }, + { year: '۱۳۹۵', title: 'بلندمرتبه‌سازی', desc: 'آغاز ساخت نخستین برج بیست‌طبقه شرکت در شمال تهران.', image: IMAGES[3] }, + { year: '۱۴۰۳', title: 'آرامش پلازا امروز', desc: 'پرتفوی ۴۷ پروژه، دفاتر در سه شهر و صندوق سرمایه‌گذاری ساختمانی اختصاصی.', image: IMAGES[0] } +]; export const WHY = [ -{ title: 'کیفیت بدون مصالحه', desc: 'انتخاب مصالح و مجریان بر اساس ماندگاری چنددهه‌ای، نه سریع‌ترین تحویل.' }, -{ title: 'شفافیت مالی کامل', desc: 'گزارش ماهانه هزینه‌ها و پیشرفت فیزیکی برای همه شرکای پروژه.' }, -{ title: 'تحویل به‌موقع', desc: '۹۴٪ پروژه‌های ما در بازه زمانی قراردادی یا زودتر تحویل داده شده‌اند.' }, -{ title: 'طراحی اختصاصی', desc: 'هیچ نقشه‌ای دو بار اجرا نمی‌شود؛ هر پروژه هویت معماری خودش را دارد.' }, -{ title: 'خدمات پس از تحویل', desc: 'پنج سال پشتیبانی فنی و نگهداری تأسیسات پس از تحویل کلید.' }, -{ title: 'پایداری و انرژی', desc: 'طراحی پوسته و تأسیسات با هدف کاهش مصرف انرژی تا ۳۵ درصد.' }]; - + { title: 'کیفیت بدون مصالحه', desc: 'انتخاب مصالح و مجریان بر اساس ماندگاری چنددهه‌ای، نه سریع‌ترین تحویل.' }, + { title: 'شفافیت مالی کامل', desc: 'گزارش ماهانه هزینه‌ها و پیشرفت فیزیکی برای همه شرکای پروژه.' }, + { title: 'تحویل به‌موقع', desc: '۹۴٪ پروژه‌های ما در بازه زمانی قراردادی یا زودتر تحویل داده شده‌اند.' }, + { title: 'طراحی اختصاصی', desc: 'هیچ نقشه‌ای دو بار اجرا نمی‌شود؛ هر پروژه هویت معماری خودش را دارد.' }, + { title: 'خدمات پس از تحویل', desc: 'پنج سال پشتیبانی فنی و نگهداری تأسیسات پس از تحویل کلید.' }, + { title: 'پایداری و انرژی', desc: 'طراحی پوسته و تأسیسات با هدف کاهش مصرف انرژی تا ۳۵ درصد.' } +]; export const TESTIMONIALS = [ -{ - name: 'مهندس سارا کیانی', - role: 'سرمایه‌گذار پروژه پارسه', - quote: - 'گزارش‌های ماهانه آرامش پلازا آن‌قدر دقیق بود که هیچ‌وقت نیاز نشد نگران سرمایه‌ام باشم. پروژه دو ماه زودتر از موعد به بهره‌برداری رسید.' -}, -{ - name: 'دکتر امیرحسین راد', - role: 'ساکن برج الهیه', - quote: - 'کیفیت اجرا در جزئیاتی دیده می‌شود که معمولاً کسی به آن‌ها فکر نمی‌کند؛ از عایق صوتی پنجره‌ها تا نور غیرمستقیم راهروها.' -}, -{ - name: 'مریم دلاور', - role: 'مدیر مجموعه ویلاهای دریاکنار', - quote: - 'همکاری با تیم طراحی، تجربه‌ای واقعاً حرفه‌ای بود. ایده‌های ما را شنیدند و به زبان معماری ترجمه کردند.' -}]; - + { name: 'مهندس سارا کیانی', role: 'سرمایه‌گذار پروژه پارسه', quote: 'گزارش‌های ماهانه آرامش پلازا آن‌قدر دقیق بود که هیچ‌وقت نیاز نشد نگران سرمایه‌ام باشم. پروژه دو ماه زودتر از موعد به بهره‌برداری رسید.' }, + { name: 'دکتر امیرحسین راد', role: 'ساکن برج الهیه', quote: 'کیفیت اجرا در جزئیاتی دیده می‌شود که معمولاً کسی به آن‌ها فکر نمی‌کند؛ از عایق صوتی پنجره‌ها تا نور غیرمستقیم راهروها.' }, + { name: 'مریم دلاور', role: 'مدیر مجموعه ویلاهای دریاکنار', quote: 'همکاری با تیم طراحی، تجربه‌ای واقعاً حرفه‌ای بود. ایده‌های ما را شنیدند و به زبان معماری ترجمه کردند.' } +]; export const TEAM = [ -{ name: 'کامران آرامش', role: 'بنیان‌گذار و مدیرعامل', bio: 'بیش از سه دهه تجربه در ساخت بلندمرتبه.' }, -{ name: 'نگار شریفی', role: 'مدیر ارشد طراحی', bio: 'معمار ارشد، فارغ‌التحصیل دانشگاه تهران و میلان.' }, -{ name: 'بهزاد مرادی', role: 'مدیر اجرایی پروژه‌ها', bio: 'مسئول کنترل کیفیت و زمان‌بندی همه کارگاه‌ها.' }, -{ name: 'الهام نیک‌آیین', role: 'مدیر سرمایه‌گذاری', bio: 'طراح ساختارهای مشارکت و تحلیل بازدهی ملکی.' }]; - + { name: 'کامران آرامش', role: 'بنیان‌گذار و مدیرعامل', bio: 'بیش از سه دهه تجربه در ساخت بلندمرتبه.' }, + { name: 'نگار شریفی', role: 'مدیر ارشد طراحی', bio: 'معمار ارشد، فارغ‌التحصیل دانشگاه تهران و میلان.' }, + { name: 'بهزاد مرادی', role: 'مدیر اجرایی پروژه‌ها', bio: 'مسئول کنترل کیفیت و زمان‌بندی همه کارگاه‌ها.' }, + { name: 'الهام نیک‌آیین', role: 'مدیر سرمایه‌گذاری', bio: 'طراح ساختارهای مشارکت و تحلیل بازدهی ملکی.' } +]; export type Article = { - slug: string; - title: string; - date: string; - category: string; - image: string; - read: string; - excerpt: string; - body: string[]; + slug: string; title: string; date: string; category: string; image: string; read: string; excerpt: string; body: string[]; }; export const ARTICLES: Article[] = [ -{ - slug: 'natural-light', - title: 'معماری آرام: چرا نور طبیعی گران‌ترین مصالح ساختمان است؟', - date: '۲۴ مرداد ۱۴۰۳', - category: 'معماری', - image: IMAGES[1], - read: '۶ دقیقه', - excerpt: - 'نور طبیعی نه‌تنها کیفیت زندگی در فضا را تعیین می‌کند، بلکه مستقیماً بر مصرف انرژی و ارزش بلندمدت ملک اثر می‌گذارد.', - body: [ - 'در بازار ساخت‌وساز، ارزش یک واحد اغلب با متراژ سنجیده می‌شود؛ اما تجربه ما در بیست سال گذشته نشان داده کیفیت نور، تعیین‌کننده‌تر از چند متر اضافه است.', - 'جهت‌گیری ساختمان، عمق دهانه و ارتفاع کف تا سقف، سه متغیر اصلی نور طبیعی هستند. تصمیم درباره هر سه، پیش از ترسیم اولین پلان گرفته می‌شود و بعد از آن تقریباً برگشت‌پذیر نیست.', - 'در برج آرامش الهیه، چرخش ۱۲ درجه‌ای توده ساختمان نسبت به شمال، دو ساعت نور مفید بیشتر در روزهای زمستان به واحدها اضافه کرد؛ تصمیمی بی‌هزینه با اثری چنددهه‌ای.', - 'برای انتخاب یک واحد، پیشنهاد ما ساده است: بازدید را در ساعت‌های میانی صبح و اواخر بعدازظهر انجام دهید و کیفیت نور را در همان ساعت‌هایی بسنجید که واقعاً در خانه هستید.'] - -}, -{ - slug: 'real-estate-portfolio', - title: 'راهنمای انتخاب سبد سرمایه‌گذاری ملکی در بازار امروز', - date: '۱۰ مرداد ۱۴۰۳', - category: 'سرمایه‌گذاری', - image: IMAGES[3], - read: '۹ دقیقه', - excerpt: 'سه معیار کلیدی برای تشکیل سبدی متعادل از دارایی ملکی، بر اساس افق زمانی و سطح ریسک شما.', - body: [ - 'سبد ملکی متعادل، ترکیبی از دارایی‌های با نقدشوندگی متفاوت است؛ نه همه سرمایه در یک پروژه بلندمدت، نه همه در واحدهای آماده.', - 'افق زمانی، نخستین معیار است. اگر برنامه شما کمتر از دو سال است، پیش‌خرید در پروژه‌ای که تازه شروع شده انتخاب پرریسکی خواهد بود.', - 'معیار دوم شفافیت گزارش‌دهی است. بدون گزارش ماهانه پیشرفت فیزیکی و مالی، ارزیابی وضعیت سرمایه شما عملاً غیرممکن است.', - 'معیار سوم، تنوع کاربری است. ترکیب مسکونی و تجاری، نوسان بازدهی سبد را در دوره‌های رکود محسوس کاهش می‌دهد.'] - -}, -{ - slug: 'facade-quality', - title: 'پنج نکته فنی که کیفیت نما را پس از ده سال مشخص می‌کند', - date: '۲۸ تیر ۱۴۰۳', - category: 'اجرا', - image: IMAGES[4], - read: '۵ دقیقه', - excerpt: 'نمای ساختمان در سال اول زیبا به نظر می‌رسد؛ تفاوت کیفیت اجرا در سال دهم آشکار می‌شود.', - body: [ - 'اتصالات مکانیکی سنگ نما، مهم‌تر از خود سنگ است. اتصال چسبی در اقلیم سردوگرم ایران عمر کوتاهی دارد.', - 'درزهای انقباضی باید در نقشه دیده شوند، نه در کارگاه تصمیم‌گیری شوند؛ نبودشان اولین دلیل ترک‌های افقی نما است.', - 'آب‌بندی دور پنجره، پرتکرارترین نقطه شکست است. اجرای نوار آب‌بند پیش از نصب قرنیز، این ریسک را حذف می‌کند.', - 'زیرسازی گالوانیزه گرم، در برابر زیرسازی رنگ‌شده، تفاوت قیمت اندکی دارد و تفاوت عمر بسیار زیادی.', - 'در پایان، برنامه بازدید دوره‌ای سالانه نما را جدی بگیرید؛ ترمیم یک درز، هزینه‌ای در حد هیچ در برابر بازسازی کل نما است.'] - -}, -{ - slug: 'commercial-yield', - title: 'چگونه بازدهی یک پروژه تجاری را پیش از ساخت تخمین بزنیم؟', - date: '۱۵ تیر ۱۴۰۳', - category: 'سرمایه‌گذاری', - image: IMAGES[2], - read: '۷ دقیقه', - excerpt: 'مدل ساده‌ای برای برآورد بازدهی، بر پایه جریان مخاطب، ترکیب واحدها و نرخ اجاره منطقه.', - body: [ - 'برآورد بازدهی تجاری با سه عدد آغاز می‌شود: جریان روزانه مخاطب، نرخ اجاره هر مترمربع در منطقه و نسبت سطح مفید به کل.', - 'خطای رایج، نادیده‌گرفتن ترازهای بالاتر است. بدون طراحی درست مسیر عمودی، ترازهای سه به بالا معمولاً نیمی از نرخ تراز همکف را هم به‌دست نمی‌آورند.', - 'در نهایت، سناریوی محافظه‌کارانه را هم بنویسید؛ اگر پروژه در سناریوی بدبینانه هم توجیه داشت، سرمایه‌گذاری منطقی است.'] - -}, -{ - slug: 'facade-materials', - title: 'مصالح نما: مقایسه سنگ، کامپوزیت و ترموود در اقلیم ایران', - date: '۲ تیر ۱۴۰۳', - category: 'اجرا', - image: IMAGES[0], - read: '۸ دقیقه', - excerpt: 'هر مصالح نما در اقلیم متفاوتی درست کار می‌کند؛ انتخاب اشتباه، هزینه نگهداری را چند برابر می‌کند.', - body: [ - 'سنگ در اقلیم خشک، بهترین ماندگاری را دارد؛ اما وزن آن نیازمند زیرسازی دقیق و محاسبه سازه‌ای است.', - 'کامپوزیت انتخاب سریع و سبکی است، مشروط بر انتخاب گرید ضد آتش و درنظرگرفتن انقباض حرارتی در طول ورق.', - 'ترموود در اقلیم مرطوب شمال، بهترین پاسخ زیبایی‌شناسانه است، ولی برنامه نگهداری دوسالانه دارد.'] - -}, -{ - slug: 'renovate-or-rebuild', - title: 'بازسازی یا نوسازی؟ معیارهای تصمیم‌گیری برای مالکان', - date: '۲۰ خرداد ۱۴۰۳', - category: 'معماری', - image: IMAGES[1], - read: '۶ دقیقه', - excerpt: 'اگر عمر سازه و ضوابط شهری اجازه دهند، بازسازی می‌تواند بازدهی بالاتری از تخریب کامل داشته باشد.', - body: [ - 'نخست وضعیت سازه ارزیابی می‌شود؛ اگر مقاوم‌سازی هزینه‌ای بیش از ۴۰ درصد ساخت نو دارد، نوسازی منطقی‌تر است.', - 'دومین معیار، ضوابط شهری روز است. گاهی تخریب، سطح زیربنای مجاز کمتری به شما می‌دهد و این تصمیم را کاملاً تغییر می‌دهد.', - 'در بازسازی، بیشترین ارزش افزوده از سه جا می‌آید: نما، ورودی و بازآرایی پلان داخلی.'] - -}]; - + { slug: 'natural-light', title: 'معماری آرام: چرا نور طبیعی گران‌ترین مصالح ساختمان است؟', date: '۲۴ مرداد ۱۴۰۳', category: 'معماری', image: IMAGES[1], read: '۶ دقیقه', excerpt: 'نور طبیعی نه‌تنها کیفیت زندگی در فضا را تعیین می‌کند، بلکه مستقیماً بر مصرف انرژی و ارزش بلندمدت ملک اثر می‌گذارد.', body: ['در بازار ساخت‌وساز، ارزش یک واحد اغلب با متراژ سنجیده می‌شود؛ اما تجربه ما در بیست سال گذشته نشان داده کیفیت نور، تعیین‌کننده‌تر از چند متر اضافه است.', 'جهت‌گیری ساختمان، عمق دهانه و ارتفاع کف تا سقف، سه متغیر اصلی نور طبیعی هستند. تصمیم درباره هر سه، پیش از ترسیم اولین پلان گرفته می‌شود و بعد از آن تقریباً برگشت‌پذیر نیست.', 'در برج آرامش الهیه، چرخش ۱۲ درجه‌ای توده ساختمان نسبت به شمال، دو ساعت نور مفید بیشتر در روزهای زمستان به واحدها اضافه کرد؛ تصمیمی بی‌هزینه با اثری چنددهه‌ای.', 'برای انتخاب یک واحد، پیشنهاد ما ساده است: بازدید را در ساعت‌های میانی صبح و اواخر بعدازظهر انجام دهید و کیفیت نور را در همان ساعت‌هایی بسنجید که واقعاً در خانه هستید.'] }, + { slug: 'real-estate-portfolio', title: 'راهنمای انتخاب سبد سرمایه‌گذاری ملکی در بازار امروز', date: '۱۰ مرداد ۱۴۰۳', category: 'سرمایه‌گذاری', image: IMAGES[3], read: '۹ دقیقه', excerpt: 'سه معیار کلیدی برای تشکیل سبدی متعادل از دارایی ملکی، بر اساس افق زمانی و سطح ریسک شما.', body: ['سبد ملکی متعادل، ترکیبی از دارایی‌های با نقدشوندگی متفاوت است؛ نه همه سرمایه در یک پروژه بلندمدت، نه همه در واحدهای آماده.', 'افق زمانی، نخستین معیار است. اگر برنامه شما کمتر از دو سال است، پیش‌خرید در پروژه‌ای که تازه شروع شده انتخاب پرریسکی خواهد بود.', 'معیار دوم شفافیت گزارش‌دهی است. بدون گزارش ماهانه پیشرفت فیزیکی و مالی، ارزیابی وضعیت سرمایه شما عملاً غیرممکن است.', 'معیار سوم، تنوع کاربری است. ترکیب مسکونی و تجاری، نوسان بازدهی سبد را در دوره‌های رکود محسوس کاهش می‌دهد.'] }, + { slug: 'facade-quality', title: 'پنج نکته فنی که کیفیت نما را پس از ده سال مشخص می‌کند', date: '۲۸ تیر ۱۴۰۳', category: 'اجرا', image: IMAGES[4], read: '۵ دقیقه', excerpt: 'نمای ساختمان در سال اول زیبا به نظر می‌رسد؛ تفاوت کیفیت اجرا در سال دهم آشکار می‌شود.', body: ['اتصالات مکانیکی سنگ نما، مهم‌تر از خود سنگ است. اتصال چسبی در اقلیم سردوگرم ایران عمر کوتاهی دارد.', 'درزهای انقباضی باید در نقشه دیده شوند، نه در کارگاه تصمیم‌گیری شوند؛ نبودشان اولین دلیل ترک‌های افقی نما است.', 'آب‌بندی دور پنجره، پرتکرارترین نقطه شکست است. اجرای نوار آب‌بند پیش از نصب قرنیز، این ریسک را حذف می‌کند.', 'زیرسازی گالوانیزه گرم، در برابر زیرسازی رنگ‌شده، تفاوت قیمت اندکی دارد و تفاوت عمر بسیار زیادی.', 'در پایان، برنامه بازدید دوره‌ای سالانه نما را جدی بگیرید؛ ترمیم یک درز، هزینه‌ای در حد هیچ در برابر بازسازی کل نما است.'] }, + { slug: 'commercial-yield', title: 'چگونه بازدهی یک پروژه تجاری را پیش از ساخت تخمین بزنیم؟', date: '۱۵ تیر ۱۴۰۳', category: 'سرمایه‌گذاری', image: IMAGES[2], read: '۷ دقیقه', excerpt: 'مدل ساده‌ای برای برآورد بازدهی، بر پایه جریان مخاطب، ترکیب واحدها و نرخ اجاره منطقه.', body: ['برآورد بازدهی تجاری با سه عدد آغاز می‌شود: جریان روزانه مخاطب، نرخ اجاره هر مترمربع در منطقه و نسبت سطح مفید به کل.', 'خطای رایج، نادیده‌گرفتن ترازهای بالاتر است. بدون طراحی درست مسیر عمودی، ترازهای سه به بالا معمولاً نیمی از نرخ تراز همکف را هم به‌دست نمی‌آورند.', 'در نهایت، سناریوی محافظه‌کارانه را هم بنویسید؛ اگر پروژه در سناریوی بدبینانه هم توجیه داشت، سرمایه‌گذاری منطقی است.'] }, + { slug: 'facade-materials', title: 'مصالح نما: مقایسه سنگ، کامپوزیت و ترموود در اقلیم ایران', date: '۲ تیر ۱۴۰۳', category: 'اجرا', image: IMAGES[0], read: '۸ دقیقه', excerpt: 'هر مصالح نما در اقلیم متفاوتی درست کار می‌کند؛ انتخاب اشتباه، هزینه نگهداری را چند برابر می‌کند.', body: ['سنگ در اقلیم خشک، بهترین ماندگاری را دارد؛ اما وزن آن نیازمند زیرسازی دقیق و محاسبه سازه‌ای است.', 'کامپوزیت انتخاب سریع و سبکی است، مشروط بر انتخاب گرید ضد آتش و درنظرگرفتن انقباض حرارتی در طول ورق.', 'ترموود در اقلیم مرطوب شمال، بهترین پاسخ زیبایی‌شناسانه است، ولی برنامه نگهداری دوسالانه دارد.'] }, + { slug: 'renovate-or-rebuild', title: 'بازسازی یا نوسازی؟ معیارهای تصمیم‌گیری برای مالکان', date: '۲۰ خرداد ۱۴۰۳', category: 'معماری', image: IMAGES[1], read: '۶ دقیقه', excerpt: 'اگر عمر سازه و ضوابط شهری اجازه دهند، بازسازی می‌تواند بازدهی بالاتری از تخریب کامل داشته باشد.', body: ['نخست وضعیت سازه ارزیابی می‌شود؛ اگر مقاوم‌سازی هزینه‌ای بیش از ۴۰ درصد ساخت نو دارد، نوسازی منطقی‌تر است.', 'دومین معیار، ضوابط شهری روز است. گاهی تخریب، سطح زیربنای مجاز کمتری به شما می‌دهد و این تصمیم را کاملاً تغییر می‌دهد.', 'در بازسازی، بیشترین ارزش افزوده از سه جا می‌آید: نما، ورودی و بازآرایی پلان داخلی.'] } +]; export const FAQS = [ -{ - q: 'حداقل سرمایه برای مشارکت در پروژه‌های آرامش پلازا چقدر است؟', - a: 'ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایه‌گذاری از سطح مشخصی آغاز می‌شوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه می‌شود.' -}, -{ - q: 'مدت زمان معمول ساخت یک برج مسکونی چقدر است؟', - a: 'بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است.' -}, -{ - q: 'آیا امکان تغییر نقشه داخلی واحد وجود دارد؟', - a: 'بله. تا پیش از پایان مرحله سفت‌کاری، امکان شخصی‌سازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است.' -}, -{ - q: 'خدمات پس از تحویل شامل چه مواردی می‌شود؟', - a: 'پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دوره‌ای سالانه و تضمین اجرای نما و عایق‌کاری.' -}, -{ - q: 'پروژه‌ها در چه شهرهایی اجرا می‌شوند؟', - a: 'در حال حاضر تهران، اصفهان و سواحل شمالی کشور مناطق اصلی فعالیت ما هستند و پروژه‌ای نیز در جزیره کیش در دست ساخت است.' -}]; \ No newline at end of file + { q: 'حداقل سرمایه برای مشارکت در پروژه‌های آرامش پلازا چقدر است؟', a: 'ساختار مشارکت هر پروژه متفاوت است، اما معمولاً واحدهای سرمایه‌گذاری از سطح مشخصی آغاز می‌شوند و جزئیات دقیق در جلسه ارزیابی اولیه ارائه می‌شود.' }, + { q: 'مدت زمان معمول ساخت یک برج مسکونی چقدر است؟', a: 'بسته به تعداد طبقات و شرایط زمین، میانگین اجرای یک برج مسکونی بین ۲۸ تا ۴۲ ماه از زمان صدور پروانه تا تحویل کلید است.' }, + { q: 'آیا امکان تغییر نقشه داخلی واحد وجود دارد؟', a: 'بله. تا پیش از پایان مرحله سفت‌کاری، امکان شخصی‌سازی پلان داخلی با هماهنگی تیم طراحی و تأیید سازه فراهم است.' }, + { q: 'خدمات پس از تحویل شامل چه مواردی می‌شود؟', a: 'پنج سال پشتیبانی فنی تأسیسات مکانیکی و برقی، بازدید دوره‌ای سالانه و تضمین اجرای نما و عایق‌کاری.' }, + { q: 'پروژه‌ها در چه شهرهایی اجرا می‌شوند؟', a: 'در حال حاضر تهران، اصفهان و سواحل شمالی کشور مناطق اصلی فعالیت ما هستند و پروژه‌ای نیز در جزیره کیش در دست ساخت است.' } +]; \ No newline at end of file diff --git a/src/pages/About.tsx b/src/pages/About.tsx index aa0e05b..828b2e9 100644 --- a/src/pages/About.tsx +++ b/src/pages/About.tsx @@ -1,12 +1,12 @@ -import React from 'react'; -import { PageHero } from '../components/PageHero'; -import { Story } from '../components/home/Story'; -import { Stats } from '../components/home/Stats'; -import { Timeline } from '../components/home/Timeline'; -import { WhyUs } from '../components/home/WhyUs'; -import { Team } from '../components/home/Team'; -import { ContactSection } from '../components/ContactSection'; -import { IMAGES } from '../data/site'; +import React from 'react' +import { PageHero } from '../components/PageHero' +import { Story } from '../components/home/Story' +import { Stats } from '../components/home/Stats' +import { Timeline } from '../components/home/Timeline' +import { WhyUs } from '../components/home/WhyUs' +import { Team } from '../components/home/Team' +import { ContactSection } from '../components/ContactSection' +import { IMAGES } from '../data/site' export function About() { return ( @@ -14,14 +14,24 @@ export function About() { + image={IMAGES[3]} + /> - + + {/* این باکس دقیقاً فضای خالی زیر آمار را پر می‌کند */} +
+

+ «ساختمان برای ما فقط آجر و بتن نیست؛ بلکه تعهدی است به کیفیت زندگی ساکنان. ما فضاهایی می‌سازیم که در گذر زمان ارزش و هویت خود را حفظ کنند.» +

+

کامران آرامش — مدیرعامل شرکت ساختمانی آرامش

+
+
+ - ); - + + ) } \ No newline at end of file diff --git a/src/pages/Blog.tsx b/src/pages/Blog.tsx index 59fbcb8..6f864c3 100644 --- a/src/pages/Blog.tsx +++ b/src/pages/Blog.tsx @@ -1,22 +1,22 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; -import { ArrowLeftIcon, ClockIcon } from 'lucide-react'; -import { PageHero } from '../components/PageHero'; -import { Reveal } from '../components/Reveal'; -import { ArticleCard } from '../components/ArticleCard'; -import { Newsletter } from '../components/home/Newsletter'; -import { ARTICLES, IMAGES } from '../data/site'; +import React from 'react' +import { Link } from 'react-router-dom' +import { ArrowLeftIcon, ClockIcon } from 'lucide-react' +import { PageHero } from '../components/PageHero' +import { Reveal } from '../components/Reveal' +import { ArticleCard } from '../components/ArticleCard' +import { Newsletter } from '../components/home/Newsletter' +import { ARTICLES, IMAGES } from '../data/site' export function Blog() { - const [featured, ...rest] = ARTICLES; + const [featured, ...rest] = ARTICLES return ( <> - + image={IMAGES[2]} + />
@@ -24,22 +24,23 @@ export function Blog() { - + aria-label={`خواندن مقاله ${featured.title}`} + >
{`تصویر - + className="h-full min-h-[20rem] w-full object-cover transition-transform duration-500 ease-lux group-hover:scale-105" + />

مقاله ویژه — {featured.category}

-

+ {/* تغییر اصلی: استفاده از leading-[2.2] و md:leading-[2.2] برای باز شدن فاصله خطوط تیتر */} +

{featured.title}

-

{featured.excerpt}

-
+

{featured.excerpt}

+
{featured.date} @@ -57,16 +58,16 @@ export function Blog() {
- {rest.map((article, i) => - + {rest.map((article, i) => ( + - )} + ))}
- ); - + + ) } \ No newline at end of file diff --git a/src/pages/ContactPage.tsx b/src/pages/ContactPage.tsx index ab9fb0c..5075be2 100644 --- a/src/pages/ContactPage.tsx +++ b/src/pages/ContactPage.tsx @@ -1,14 +1,14 @@ -import React from 'react'; -import { PageHero } from '../components/PageHero'; -import { ContactSection } from '../components/ContactSection'; -import { Reveal } from '../components/Reveal'; -import { IMAGES } from '../data/site'; +import React from 'react' +import { PageHero } from '../components/PageHero' +import { ContactSection } from '../components/ContactSection' +import { Reveal } from '../components/Reveal' +import { IMAGES } from '../data/site' const OFFICES = [ -{ city: 'تهران', address: 'خیابان ولیعصر، برج آرامش، طبقه هجدهم', hours: 'شنبه تا چهارشنبه، ۹ تا ۱۸' }, -{ city: 'اصفهان', address: 'خیابان چهارباغ بالا، مجتمع پارسه، طبقه ششم', hours: 'شنبه تا چهارشنبه، ۹ تا ۱۷' }, -{ city: 'نوشهر', address: 'بلوار دریا، دفتر پروژه دریاکنار', hours: 'شنبه تا پنجشنبه، ۱۰ تا ۱۶' }]; - + { city: 'تهران', address: 'خیابان ولیعصر، برج آرامش، طبقه هجدهم', hours: 'شنبه تا چهارشنبه، ۹ تا ۱۸' }, + { city: 'اصفهان', address: 'خیابان چهارباغ بالا، مجتمع پارسه، طبقه ششم', hours: 'شنبه تا چهارشنبه، ۹ تا ۱۷' }, + { city: 'نوشهر', address: 'بلوار دریا، دفتر پروژه دریاکنار', hours: 'شنبه تا پنجشنبه، ۱۰ تا ۱۶' }, +] export function ContactPage() { return ( @@ -16,26 +16,29 @@ export function ContactPage() { - + // عکس هدر از IMAGES[3] به IMAGES[1] تغییر یافت + image={IMAGES[1]} + />
- {OFFICES.map((office, i) => - -
-

{office.city}

-

{office.address}

-

- {office.hours} -

+ {OFFICES.map((office, i) => ( + +
+

{office.city}

+

{office.address}

+
+

+ {office.hours} +

+
- )} + ))}
- ); - + + ) } \ No newline at end of file diff --git a/src/pages/FaqPage.tsx b/src/pages/FaqPage.tsx index 0744e6d..036af73 100644 --- a/src/pages/FaqPage.tsx +++ b/src/pages/FaqPage.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { PageHero } from '../components/PageHero'; -import { Faq } from '../components/home/Faq'; -import { ContactSection } from '../components/ContactSection'; -import { IMAGES } from '../data/site'; +import React from 'react' +import { PageHero } from '../components/PageHero' +import { Faq } from '../components/home/Faq' +import { ContactSection } from '../components/ContactSection' +import { IMAGES } from '../data/site' export function FaqPage() { return ( @@ -10,10 +10,13 @@ export function FaqPage() { + image={IMAGES[1]} + /> + + {/* با پاس دادن hideHeading={true} تیتر تکراری حذف و چیدمان متمرکز می‌شود */} + - - ); - + + ) } \ No newline at end of file diff --git a/src/pages/Investment.tsx b/src/pages/Investment.tsx index 6e93d91..6bcf4ea 100644 --- a/src/pages/Investment.tsx +++ b/src/pages/Investment.tsx @@ -1,28 +1,28 @@ -import React from 'react'; -import { PageHero } from '../components/PageHero'; -import { Reveal } from '../components/Reveal'; -import { SectionHeading } from '../components/SectionHeading'; -import { Stats } from '../components/home/Stats'; -import { ContactSection } from '../components/ContactSection'; -import { IMAGES } from '../data/site'; +import React from 'react' +import { PageHero } from '../components/PageHero' +import { Reveal } from '../components/Reveal' +import { SectionHeading } from '../components/SectionHeading' +import { Stats } from '../components/home/Stats' +import { ContactSection } from '../components/ContactSection' +import { IMAGES } from '../data/site' const MODELS = [ -{ - title: 'مشارکت در ساخت', - desc: 'مالک زمین و آرامش پلازا در سود پروژه شریک می‌شوند؛ اجرا، مجوزها و فروش بر عهده ماست.', - points: ['ارزیابی رایگان زمین', 'قرارداد شفاف با ضمانت اجرا', 'گزارش ماهانه پیشرفت'] -}, -{ - title: 'صندوق پروژه‌محور', - desc: 'سرمایه‌گذاری روی یک پروژه مشخص با واحدهای قابل خرید و بازدهی محاسبه‌شده در پایان دوره.', - points: ['حداقل دوره ۲۴ ماه', 'گزارش ارزش‌گذاری فصلی', 'امکان انتقال واحد سرمایه'] -}, -{ - title: 'پیش‌خرید واحد', - desc: 'خرید واحد مسکونی یا تجاری در مراحل ابتدایی ساخت با قیمت پیش از تکمیل و پرداخت مرحله‌ای.', - points: ['پرداخت مرحله‌ای متناسب با پیشرفت', 'امکان شخصی‌سازی پلان', 'تضمین زمان تحویل'] -}]; - + { + title: 'مشارکت در ساخت', + desc: 'مالک زمین و آرامش پلازا در سود پروژه شریک می‌شوند؛ اجرا، مجوزها و فروش بر عهده ماست.', + points: ['ارزیابی رایگان زمین', 'قرارداد شفاف با ضمانت اجرا', 'گزارش ماهانه پیشرفت'], + }, + { + title: 'صندوق پروژه‌محور', + desc: 'سرمایه‌گذاری روی یک پروژه مشخص با واحدهای قابل خرید و بازدهی محاسبه‌شده در پایان دوره.', + points: ['حداقل دوره ۲۴ ماه', 'گزارش ارزش‌گذاری فصلی', 'امکان انتقال واحد سرمایه'], + }, + { + title: 'پیش‌خرید واحد', + desc: 'خرید واحد مسکونی یا تجاری در مراحل ابتدایی ساخت با قیمت پیش از تکمیل و پرداخت مرحله‌ای.', + points: ['پرداخت مرحله‌ای متناسب با پیشرفت', 'امکان شخصی‌سازی پلان', 'تضمین زمان تحویل'], + }, +] export function Investment() { return ( @@ -30,39 +30,45 @@ export function Investment() { - + image={IMAGES[4]} + />
- + lead="بسته به میزان سرمایه، افق زمانی و سطح ریسکی که می‌پذیرید، یکی از این سه مسیر مناسب شماست." + />
- {MODELS.map((model, i) => - -
-

۰{(i + 1).toLocaleString('fa-IR')}

-

{model.title}

-

{model.desc}

-
    - {model.points.map((point) => -
  • -
  • - )} -
+ {MODELS.map((model, i) => ( + +
+

۰{(i + 1).toLocaleString('fa-IR')}

+ +

{model.title}

+ +

{model.desc}

+ + {/* تغییر اصلی: اضافه شدن div با کلاس pt-10 برای ایجاد فاصله بالای خط */} +
+
    + {model.points.map((point) => ( +
  • +
  • + ))} +
+
- )} + ))}
- ); - + + ) } \ No newline at end of file diff --git a/src/pages/ServicesPage.tsx b/src/pages/ServicesPage.tsx index 40c057b..eae2707 100644 --- a/src/pages/ServicesPage.tsx +++ b/src/pages/ServicesPage.tsx @@ -1,18 +1,18 @@ -import React from 'react'; -import { PageHero } from '../components/PageHero'; -import { Services } from '../components/home/Services'; -import { Faq } from '../components/home/Faq'; -import { ContactSection } from '../components/ContactSection'; -import { Reveal } from '../components/Reveal'; -import { SectionHeading } from '../components/SectionHeading'; -import { IMAGES } from '../data/site'; +import React from 'react' +import { PageHero } from '../components/PageHero' +import { Services } from '../components/home/Services' +import { Faq } from '../components/home/Faq' +import { ContactSection } from '../components/ContactSection' +import { Reveal } from '../components/Reveal' +import { SectionHeading } from '../components/SectionHeading' +import { IMAGES } from '../data/site' const PROCESS = [ -{ step: '۰۱', title: 'مطالعه و امکان‌سنجی', desc: 'بررسی زمین، ضوابط شهری و تحلیل بازدهی اقتصادی پروژه.' }, -{ step: '۰۲', title: 'طراحی و فاز اجرایی', desc: 'کانسپت معماری، طراحی سازه و تأسیسات و تهیه نقشه‌های اجرایی.' }, -{ step: '۰۳', title: 'اجرا و کنترل کیفیت', desc: 'ساخت با نظارت مستمر، گزارش ماهانه پیشرفت و کنترل هزینه.' }, -{ step: '۰۴', title: 'تحویل و پشتیبانی', desc: 'تحویل کلید، آموزش بهره‌برداری و پنج سال پشتیبانی فنی.' }]; - + { step: '۰۱', title: 'مطالعه و امکان‌سنجی', desc: 'بررسی زمین، ضوابط شهری و تحلیل بازدهی اقتصادی پروژه.' }, + { step: '۰۲', title: 'طراحی و فاز اجرایی', desc: 'کانسپت معماری، طراحی سازه و تأسیسات و تهیه نقشه‌های اجرایی.' }, + { step: '۰۳', title: 'اجرا و کنترل کیفیت', desc: 'ساخت با نظارت مستمر، گزارش ماهانه پیشرفت و کنترل هزینه.' }, + { step: '۰۴', title: 'تحویل و پشتیبانی', desc: 'تحویل کلید، آموزش بهره‌برداری و پنج سال پشتیبانی فنی.' }, +] export function ServicesPage() { return ( @@ -20,29 +20,31 @@ export function ServicesPage() { - - + image={IMAGES[1]} + /> + {/* مخفی کردن کلمه تکراری "خدمات" */} +
- {PROCESS.map((item, i) => - -
-

{item.step}

-

{item.title}

-

{item.desc}

+ {PROCESS.map((item, i) => ( + + {/* تغییرات فاصله‌دهی: استفاده از py-12 برای فضای بیشتر بالا و پایین، mt-6 و mt-5 برای فاصله بین متون */} +
+

{item.step}

+

{item.title}

+

{item.desc}

- )} + ))}
- ); - + + ) } \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index d7bfa03..74d3c2e 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -18,8 +18,8 @@ export default { lift: '0 24px 50px -18px rgba(0, 0, 0, 0.75)', }, fontSize: { - // سایز این بخش یک درجه کوچکتر شد (حداکثر سایز از 4rem به 3.4rem کاهش یافت) - hero: ['clamp(1.75rem, 3.6vw, 3.4rem)', { lineHeight: '1.35' }], + // سایز این بخش یک درجه کوچک‌تر شد (هم در موبایل و هم در دسکتاپ) + hero: ['clamp(1.75rem, 3.8vw, 3.5rem)', { lineHeight: '1.35' }], section: ['clamp(1.6rem, 2.4vw, 2.4rem)', { lineHeight: '1.4' }], }, maxWidth: {