diff --git a/src/presentation/web/pages/landing/index.py b/src/presentation/web/pages/landing/index.py
index 1c813c5..203b8a2 100644
--- a/src/presentation/web/pages/landing/index.py
+++ b/src/presentation/web/pages/landing/index.py
@@ -2,10 +2,15 @@ import reflex as rx
class State(rx.State):
form_submitted: bool = False
+ domain_query: str = ""
def handle_submit(self):
self.form_submitted = True
return rx.toast.success("پیام شما با موفقیت ارسال شد!")
+
+ def search_domain(self):
+ if self.domain_query:
+ return rx.toast.info(f"جستجوی دامنه: {self.domain_query}")
def navbar() -> rx.Component:
return rx.box(
@@ -24,10 +29,6 @@ def navbar() -> rx.Component:
rx.spacer(),
rx.hstack(
rx.link("خدمات", href="#services", color="#E2E8F0", font_weight="600", font_size="16px", _hover={"color": "#6DD7E5", "transform": "translateY(-2px)"}, transition="all 0.2s"),
- # rx.link("قیمتها", href="#pricing", color="#E2E8F0", font_weight="600", font_size="16px", _hover={"color": "#6DD7E5", "transform": "translateY(-2px)"}, transition="all 0.2s"),
- # rx.link("سرورها", href="#servers", color="#E2E8F0", font_weight="600", font_size="16px", _hover={"color": "#6DD7E5", "transform": "translateY(-2px)"}, transition="all 0.2s"),
- # rx.link("نظرات", href="#testimonials", color="#E2E8F0", font_weight="600", font_size="16px", _hover={"color": "#6DD7E5", "transform": "translateY(-2px)"}, transition="all 0.2s"),
- # rx.link("تماس", href="#contact", color="#E2E8F0", font_weight="600", font_size="16px", _hover={"color": "#6DD7E5", "transform": "translateY(-2px)"}, transition="all 0.2s"),
rx.button(
rx.hstack(
rx.text("شروع رایگان", font_weight="800"),
@@ -64,10 +65,181 @@ def navbar() -> rx.Component:
box_shadow="0 8px 32px rgba(0, 0, 0, 0.4)",
)
+def domain_search() -> rx.Component:
+ return rx.box(
+ rx.vstack(
+ rx.text(
+ "دامنه خود را جستجو کنید",
+ font_size="20px",
+ font_weight="700",
+ color="#FFFFFF",
+ margin_bottom="16px",
+ ),
+ rx.box(
+ rx.hstack(
+ rx.input(
+ placeholder="نام دامنه خود را وارد کنید...",
+ value=State.domain_query,
+ on_change=State.set_domain_query,
+ size="3",
+ width="100%",
+ border="none",
+ background="transparent",
+ color="#FFFFFF",
+ font_size="16px",
+ padding="20px",
+ _placeholder={"color": "rgba(255, 255, 255, 0.5)"},
+ _focus={"outline": "none"},
+ ),
+ rx.button(
+ rx.hstack(
+ rx.icon("search", size=20),
+ rx.text("جستجو", font_weight="700", font_size="16px"),
+ spacing="2",
+ ),
+ on_click=State.search_domain,
+ size="3",
+ background="linear-gradient(135deg, #4DB8C4, #6DD7E5)",
+ color="#FFFFFF",
+ padding="20px 32px",
+ border_radius="12px",
+ _hover={"transform": "scale(1.05)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ spacing="4",
+ width="100%",
+ align="center",
+ ),
+ background="rgba(27, 75, 127, 0.15)",
+ backdrop_filter="blur(20px)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="16px",
+ padding="8px",
+ box_shadow="0 8px 32px rgba(0, 0, 0, 0.3)",
+ width="100%",
+ max_width="550px",
+ ),
+ rx.hstack(
+ rx.box(
+ rx.text(".ir", font_weight="600", color="#6DD7E5", font_size="14px"),
+ padding="8px 16px",
+ background="rgba(77, 184, 196, 0.1)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="10px",
+ _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ rx.box(
+ rx.text(".com", font_weight="600", color="#6DD7E5", font_size="14px"),
+ padding="8px 16px",
+ background="rgba(77, 184, 196, 0.1)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="10px",
+ _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ rx.box(
+ rx.text(".net", font_weight="600", color="#6DD7E5", font_size="14px"),
+ padding="8px 16px",
+ background="rgba(77, 184, 196, 0.1)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="10px",
+ _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ rx.box(
+ rx.text(".org", font_weight="600", color="#6DD7E5", font_size="14px"),
+ padding="8px 16px",
+ background="rgba(77, 184, 196, 0.1)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="10px",
+ _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ rx.box(
+ rx.text(".io", font_weight="600", color="#6DD7E5", font_size="14px"),
+ padding="8px 16px",
+ background="rgba(77, 184, 196, 0.1)",
+ border="1px solid rgba(77, 184, 196, 0.3)",
+ border_radius="10px",
+ _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
+ transition="all 0.3s ease",
+ ),
+ spacing="4",
+ margin_top="16px",
+ wrap="wrap",
+ justify="start",
+ ),
+ align="start",
+ width="100%",
+ ),
+ width="100%",
+ max_width="550px",
+ margin_top="32px",
+ style={"animation": "fadeInUp 0.8s ease-out 1.2s backwards"},
+ )
+
+binary_rain_script = """
+(function() {
+ function initBinaryRain() {
+ const canvas = document.getElementById('binary-rain-canvas');
+ if (!canvas) {
+ setTimeout(initBinaryRain, 100);
+ return;
+ }
+
+ const ctx = canvas.getContext('2d');
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+
+ const fontSize = 14;
+ const columns = canvas.width / fontSize;
+ const drops = [];
+
+ for (let i = 0; i < columns; i++) {
+ drops[i] = 1;
+ }
+
+ function draw() {
+ ctx.fillStyle = 'rgba(10, 18, 35, 0.1)';
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
+
+ ctx.font = fontSize + 'px monospace';
+
+ for (let i = 0; i < drops.length; i++) {
+ const text = Math.random() > 0.5 ? '1' : '0';
+ ctx.fillStyle = Math.random() > 0.95 ? '#4DB8C4' : '#1B4B7F';
+ ctx.fillText(text, i * fontSize, drops[i] * fontSize);
+
+ if (drops[i] * fontSize > canvas.height && Math.random() > 0.975) {
+ drops[i] = 0;
+ }
+ drops[i]++;
+ }
+ }
+
+ setInterval(draw, 50);
+
+ window.addEventListener('resize', () => {
+ canvas.width = window.innerWidth;
+ canvas.height = window.innerHeight;
+ });
+ }
+
+ initBinaryRain();
+})();
+"""
+
+# No canvas script - using static elements instead
+
def hero() -> rx.Component:
return rx.box(
+ rx.script(binary_rain_script),
# Background decorative layers
rx.box(
+ rx.html(
+ ''
+ ),
rx.box(
width="600px",
height="600px",
@@ -108,270 +280,99 @@ def hero() -> rx.Component:
z_index="0",
),
# Main content with floating cards
- rx.hstack(
- rx.vstack(
- rx.badge(
- rx.hstack(
- rx.icon("clock", size=20, color="#fbbf24"),
- rx.text("بزودی کنار شما خواهیم بود", font_weight="800", font_size="16px"),
- rx.icon("zap", size=20, color="#fbbf24"),
- spacing="3",
- align="center",
- ),
- variant="outline",
- padding="18px 42px",
- border_radius="full",
- background="linear-gradient(135deg, rgba(251, 191, 36, 0.25), rgba(245, 158, 11, 0.2))",
- border="3px solid rgba(251, 191, 36, 0.7)",
- box_shadow="0 12px 50px rgba(251, 191, 36, 0.6), 0 0 80px rgba(251, 191, 36, 0.3)",
- margin_bottom="32px",
- font_size="17px",
- style={"animation": "fadeInUp 0.8s ease-out 0.2s backwards"},
- ),
- rx.heading(
- "میزبانی وب و زیرساخت ابری ",
- rx.el.span("حرفهای",
- style={
- "background": "linear-gradient(135deg, #4DB8C4, #6DD7E5, #7CE3F2)",
- "background-clip": "text",
- "-webkit-background-clip": "text",
- "-webkit-text-fill-color": "transparent",
- "animation": "gradientShift 4s ease infinite",
- "background-size": "200% auto",
- }),
- size="9",
- font_weight="900",
- line_height="1.2",
- letter_spacing="-0.02em",
- margin_top="24px",
- color="#FFFFFF",
- style={"animation": "fadeInUp 0.8s ease-out 0.4s backwards"},
- ),
- rx.text(
- "اولین و تخصصیترین ارائهدهنده کلود اختصاصی وردپرس در ایران.",
- rx.el.span(" مدیریت پیشرفته و هوشمند سایتهای وردپرسی شما", style={"color": "#8B9EB8"}),
- color="#C7D2E8",
- font_size="20px",
- line_height="1.8",
- max_width="650px",
- font_weight="400",
- margin_top="28px",
- margin_bottom="16px",
- opacity="0.95",
- style={"animation": "fadeInUp 0.8s ease-out 0.6s backwards"},
- ),
- rx.hstack(
- rx.button(
+ rx.vstack(
+ rx.hstack(
+ rx.vstack(
+ rx.badge(
rx.hstack(
- rx.icon("message-circle", size=20),
- rx.text("مشاوره رایگان", font_weight="700", font_size="17px"),
+ rx.icon("clock", size=18, color="#fbbf24"),
+ rx.text("بزودی کنار شما خواهیم بود", font_weight="700", font_size="15px"),
+ rx.icon("zap", size=18, color="#fbbf24"),
spacing="2",
align="center",
),
- size="4",
- background="linear-gradient(135deg, #4DB8C4, #6DD7E5)",
- color="#FFFFFF",
- border_radius="12px",
- padding="24px 48px",
- box_shadow="0 10px 35px rgba(77, 184, 196, 0.5), 0 0 50px rgba(109, 215, 229, 0.3)",
- _hover={
- "transform": "translateY(-4px)",
- "box_shadow": "0 15px 50px rgba(77, 184, 196, 0.7), 0 0 70px rgba(109, 215, 229, 0.5)"
- },
- transition="all 0.3s ease",
- style={"animation": "fadeInUp 0.8s ease-out 0.8s backwards"},
- ),
- rx.button(
- rx.hstack(
- rx.icon("play", size=18),
- rx.text("مشاهده ویدیو", font_weight="700", font_size="17px"),
- spacing="2",
- align="center",
- ),
- size="4",
variant="outline",
- border="2px solid rgba(77, 184, 196, 0.5)",
- color="#6DD7E5",
- border_radius="12px",
- padding="24px 48px",
- background="rgba(77, 184, 196, 0.05)",
- backdrop_filter="blur(10px)",
- _hover={
- "background": "rgba(77, 184, 196, 0.15)",
- "transform": "translateY(-4px)",
- "border": "2px solid #6DD7E5"
- },
- transition="all 0.3s ease",
- style={"animation": "fadeInUp 0.8s ease-out 1s backwards"},
+ padding="10px 24px",
+ border_radius="full",
+ background="linear-gradient(135deg, rgba(251, 191, 36, 0.3), rgba(245, 158, 11, 0.25))",
+ border="2px solid rgba(251, 191, 36, 0.8)",
+ box_shadow="0 10px 40px rgba(251, 191, 36, 0.6), 0 0 60px rgba(251, 191, 36, 0.3)",
+ margin_bottom="20px",
+ style={"animation": "fadeInUp 0.8s ease-out 0.2s backwards, pulse 3s ease-in-out 1s infinite"},
),
- spacing="6",
- margin_top="56px",
- ),
- # Domain Search Box - BluisHost inspired
- rx.box(
- rx.vstack(
- rx.text(
- "دامنه خود را جستجو کنید",
- font_size="20px",
- font_weight="700",
- color="#FFFFFF",
- margin_bottom="16px",
- ),
- rx.box(
- rx.hstack(
- rx.input(
- placeholder="نام دامنه خود را وارد کنید...",
- size="3",
- width="100%",
- border="none",
- background="transparent",
- color="#FFFFFF",
- font_size="16px",
- padding="24px",
- _placeholder={"color": "rgba(255, 255, 255, 0.5)"},
- _focus={"outline": "none"},
- ),
- rx.button(
- rx.hstack(
- rx.icon("search", size=20),
- rx.text("جستجو", font_weight="700"),
- spacing="2",
- ),
- size="3",
- background="linear-gradient(135deg, #4DB8C4, #6DD7E5)",
- color="#FFFFFF",
- padding="24px 36px",
- border_radius="10px",
- _hover={"transform": "scale(1.05)"},
- transition="all 0.3s ease",
- ),
- spacing="0",
- width="100%",
- align="center",
- ),
- background="rgba(27, 75, 127, 0.15)",
- backdrop_filter="blur(20px)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="14px",
- padding="8px",
- box_shadow="0 8px 32px rgba(0, 0, 0, 0.3)",
- ),
- # Domain extensions
- rx.hstack(
- rx.box(
- rx.text(".ir", font_weight="600", color="#6DD7E5"),
- padding="8px 16px",
- background="rgba(77, 184, 196, 0.1)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="8px",
- _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
- transition="all 0.3s ease",
- ),
- rx.box(
- rx.text(".com", font_weight="600", color="#6DD7E5"),
- padding="8px 16px",
- background="rgba(77, 184, 196, 0.1)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="8px",
- _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
- transition="all 0.3s ease",
- ),
- rx.box(
- rx.text(".net", font_weight="600", color="#6DD7E5"),
- padding="8px 16px",
- background="rgba(77, 184, 196, 0.1)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="8px",
- _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
- transition="all 0.3s ease",
- ),
- rx.box(
- rx.text(".org", font_weight="600", color="#6DD7E5"),
- padding="8px 16px",
- background="rgba(77, 184, 196, 0.1)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="8px",
- _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
- transition="all 0.3s ease",
- ),
- rx.box(
- rx.text(".io", font_weight="600", color="#6DD7E5"),
- padding="8px 16px",
- background="rgba(77, 184, 196, 0.1)",
- border="1px solid rgba(77, 184, 196, 0.3)",
- border_radius="8px",
- _hover={"background": "rgba(77, 184, 196, 0.2)", "cursor": "pointer"},
- transition="all 0.3s ease",
- ),
- spacing="4",
- margin_top="16px",
- wrap="wrap",
- ),
- align="center",
+ rx.heading(
+ "میزبانی وب و زیرساخت ابری ",
+ rx.el.span("حرفهای",
+ style={
+ "background": "linear-gradient(135deg, #4DB8C4, #6DD7E5, #7CE3F2)",
+ "background-clip": "text",
+ "-webkit-background-clip": "text",
+ "-webkit-text-fill-color": "transparent",
+ "animation": "gradientShift 4s ease infinite",
+ "background-size": "200% auto",
+ }),
+ size="8",
+ font_weight="900",
+ line_height="1.2",
+ letter_spacing="-0.02em",
+ color="#FFFFFF",
+ style={"animation": "fadeInUp 0.8s ease-out 0.4s backwards"},
),
- max_width="700px",
- margin_top="48px",
- style={"animation": "fadeInUp 0.8s ease-out 1.2s backwards"},
- ),
- rx.hstack(
- rx.hstack(
- rx.icon("check", size=18, color="#10B981"),
- rx.text("پشتیبانی 24/7", color="#CBD5E1", font_size="15px", font_weight="600"),
- spacing="2",
- align="center",
- ),
- rx.hstack(
- rx.icon("check", size=18, color="#10B981"),
- rx.text("امنیت بالا", color="#CBD5E1", font_size="15px", font_weight="600"),
- spacing="2",
- align="center",
- ),
- rx.hstack(
- rx.icon("check", size=18, color="#10B981"),
- rx.text("سرعت فوقالعاده", color="#CBD5E1", font_size="15px", font_weight="600"),
- spacing="2",
- align="center",
+ rx.text(
+ "اولین و تخصصیترین ارائهدهنده کلود اختصاصی وردپرس در ایران.",
+ rx.el.span(" مدیریت پیشرفته و هوشمند سایتهای وردپرسی شما", style={"color": "#8B9EB8"}),
+ color="#C7D2E8",
+ font_size="18px",
+ line_height="1.8",
+ max_width="650px",
+ font_weight="400",
+ margin_top="28px",
+ margin_bottom="16px",
+ opacity="0.95",
+ style={"animation": "fadeInUp 0.8s ease-out 0.6s backwards"},
),
+ domain_search(),
spacing="8",
- margin_top="40px",
+ align="start",
+ width="100%",
+ position="relative",
+ z_index="1",
),
- spacing="8",
- align="start",
- width="100%",
- position="relative",
- z_index="1",
- ),
- rx.box(
rx.box(
- # Background glow
rx.box(
- width="500px",
- height="500px",
- background="radial-gradient(circle, rgba(77, 184, 196, 0.12) 0%, transparent 70%)",
- position="absolute",
- top="50%",
- left="50%",
- transform="translate(-50%, -50%)",
- border_radius="50%",
- filter="blur(50px)",
- style={"animation": "pulse 4s ease-in-out infinite"},
- ),
- # Main illustration - Server infrastructure GIF
- rx.box(
- rx.image(
- src="/banner-3.gif",
- width="600px",
- height="auto",
- filter="drop-shadow(0 20px 60px rgba(27, 75, 127, 0.4))",
- style={"animation": "fadeInScale 1s ease-out 0.3s backwards, scaleFloat 6s ease-in-out 1.5s infinite"},
+ # Background glow
+ rx.box(
+ width="650px",
+ height="650px",
+ background="radial-gradient(circle, rgba(77, 184, 196, 0.12) 0%, transparent 70%)",
+ position="absolute",
+ top="50%",
+ left="50%",
+ transform="translate(-50%, -50%)",
+ border_radius="50%",
+ filter="blur(50px)",
+ style={"animation": "pulse 4s ease-in-out infinite"},
+ ),
+ # Main illustration - Server infrastructure GIF
+ rx.box(
+ rx.image(
+ src="/banner-3.gif",
+ width="780px",
+ height="auto",
+ filter="drop-shadow(0 20px 60px rgba(27, 75, 127, 0.4))",
+ style={"animation": "fadeInRight 1s ease-out 0.3s backwards, scaleFloat 6s ease-in-out 1.5s infinite"},
+ ),
+ position="relative",
),
position="relative",
),
+ display=["none", "none", "none", "block"],
position="relative",
+ z_index="1",
),
- display=["none", "none", "none", "block"],
- position="relative",
- z_index="1",
+ spacing="9",
+ align="center",
+ width="100%",
),
spacing="9",
align="center",
@@ -379,6 +380,7 @@ def hero() -> rx.Component:
max_width="1500px",
margin="0 auto",
padding="200px 8% 160px",
+ position="relative",
),
width="100%",
background="linear-gradient(135deg, #0a1e3d 0%, #091428 30%, #050a14 60%, #020509 100%)",
@@ -388,6 +390,7 @@ def hero() -> rx.Component:
def wordpress_cloud_highlight() -> rx.Component:
return rx.box(
+ # Remove script call
rx.vstack(
rx.hstack(
rx.vstack(
@@ -415,7 +418,7 @@ def wordpress_cloud_highlight() -> rx.Component:
"-webkit-text-fill-color": "transparent"
}),
" در ایران",
- size="9",
+ size="8",
font_weight="900",
line_height="1.2",
letter_spacing="-0.03em",
@@ -430,26 +433,50 @@ def wordpress_cloud_highlight() -> rx.Component:
max_width="600px",
text_align=["center", "center", "right"],
),
- rx.vstack(
+ rx.vstack(
rx.hstack(
rx.box(
- rx.icon("check", size=24, color="#10B981"),
+ rx.icon("database", size=24, color="#6DD7E5"),
width="48px",
height="48px",
- background="linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(5, 150, 105, 0.2))",
+ background="linear-gradient(135deg, rgba(109, 215, 229, 0.2), rgba(77, 184, 196, 0.2))",
border_radius="12px",
display="flex",
align_items="center",
justify_content="center",
+ style={"animation": "fadeInScale 0.8s ease-out 0.4s backwards"},
),
rx.vstack(
- rx.text("مدیریت خودکار", font_weight="800", font_size="18px", color="white"),
- rx.text("بروزرسانی، بکاپ و امنیت به صورت کاملا اتوماتیک", color="#94A3B8", font_size="15px"),
+ rx.text("وردپرس کلود و دیتابیس کلاستر شده در چند سرور", font_weight="800", font_size="18px", color="white"),
+ rx.text("قابلیت افزارش ریسورس و کاهش ریسورس خودکار در مواقع پرترافیک و کمترافیک", color="#94A3B8", font_size="15px"),
spacing="1",
align="start",
),
spacing="4",
align="start",
+ style={"animation": "fadeInUp 0.8s ease-out 0.5s backwards"},
+ ),
+ rx.hstack(
+ rx.box(
+ rx.icon("layout-grid", size=24, color="#A78BFA"),
+ width="48px",
+ height="48px",
+ background="linear-gradient(135deg, rgba(167, 139, 250, 0.2), rgba(139, 92, 246, 0.2))",
+ border_radius="12px",
+ display="flex",
+ align_items="center",
+ justify_content="center",
+ style={"animation": "fadeInScale 0.8s ease-out 0.6s backwards"},
+ ),
+ rx.vstack(
+ rx.text("مدیریت چندین سایت وردپرس در یک پنل", font_weight="800", font_size="18px", color="white"),
+ rx.text("بروزرسانی، بکاپ و تغییرات و مانیترینگ جامع", color="#94A3B8", font_size="15px"),
+ spacing="1",
+ align="start",
+ ),
+ spacing="4",
+ align="start",
+ style={"animation": "fadeInUp 0.8s ease-out 0.7s backwards"},
),
rx.hstack(
rx.box(
@@ -461,6 +488,7 @@ def wordpress_cloud_highlight() -> rx.Component:
display="flex",
align_items="center",
justify_content="center",
+ style={"animation": "fadeInScale 0.8s ease-out 0.8s backwards"},
),
rx.vstack(
rx.text("بهینهسازی حرفهای", font_weight="800", font_size="18px", color="white"),
@@ -470,17 +498,19 @@ def wordpress_cloud_highlight() -> rx.Component:
),
spacing="4",
align="start",
+ style={"animation": "fadeInUp 0.8s ease-out 0.9s backwards"},
),
rx.hstack(
rx.box(
- rx.icon("shield", size=24, color="#4DB8C4"),
+ rx.icon("shield", size=24, color="#10B981"),
width="48px",
height="48px",
- background="linear-gradient(135deg, rgba(77, 184, 196, 0.2), rgba(109, 215, 229, 0.2))",
+ background="linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(5, 150, 105, 0.2))",
border_radius="12px",
display="flex",
align_items="center",
justify_content="center",
+ style={"animation": "fadeInScale 0.8s ease-out 1s backwards"},
),
rx.vstack(
rx.text("امنیت پیشرفته", font_weight="800", font_size="18px", color="white"),
@@ -490,143 +520,144 @@ def wordpress_cloud_highlight() -> rx.Component:
),
spacing="4",
align="start",
+ style={"animation": "fadeInUp 0.8s ease-out 1.1s backwards"},
),
spacing="6",
align="start",
width="100%",
),
- # Features Grid
- rx.box(
- rx.hstack(
- # Feature 1
- rx.box(
- rx.vstack(
- rx.box(
- rx.icon("server", size=32, color="#4DB8C4"),
- width="64px",
- height="64px",
- background="linear-gradient(135deg, rgba(77, 184, 196, 0.15), rgba(109, 215, 229, 0.1))",
- border_radius="16px",
- display="flex",
- align_items="center",
- justify_content="center",
- border="1px solid rgba(77, 184, 196, 0.3)",
- ),
- rx.text(
- "سرورهای SSD",
- font_weight="700",
- font_size="16px",
- color="#FFFFFF",
- ),
- rx.text(
- "سرعت بالا با NVMe",
- font_size="13px",
- color="#8B9EB8",
- ),
- spacing="3",
- align="center",
- ),
- background="rgba(27, 75, 127, 0.1)",
- backdrop_filter="blur(10px)",
- border="1px solid rgba(77, 184, 196, 0.2)",
- border_radius="14px",
- padding="24px",
- _hover={
- "background": "rgba(27, 75, 127, 0.18)",
- "border": "1px solid rgba(77, 184, 196, 0.4)",
- "transform": "translateY(-4px)",
- },
- transition="all 0.3s ease",
- flex="1",
- ),
- # Feature 2
- rx.box(
- rx.vstack(
- rx.box(
- rx.icon("rocket", size=32, color="#F59E0B"),
- width="64px",
- height="64px",
- background="linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 146, 60, 0.1))",
- border_radius="16px",
- display="flex",
- align_items="center",
- justify_content="center",
- border="1px solid rgba(245, 158, 11, 0.3)",
- ),
- rx.text(
- "سرعت 10 برابر",
- font_weight="700",
- font_size="16px",
- color="#FFFFFF",
- ),
- rx.text(
- "با کش پیشرفته",
- font_size="13px",
- color="#8B9EB8",
- ),
- spacing="3",
- align="center",
- ),
- background="rgba(27, 75, 127, 0.1)",
- backdrop_filter="blur(10px)",
- border="1px solid rgba(245, 158, 11, 0.2)",
- border_radius="14px",
- padding="24px",
- _hover={
- "background": "rgba(27, 75, 127, 0.18)",
- "border": "1px solid rgba(245, 158, 11, 0.4)",
- "transform": "translateY(-4px)",
- },
- transition="all 0.3s ease",
- flex="1",
- ),
- # Feature 3
- rx.box(
- rx.vstack(
- rx.box(
- rx.icon("headphones", size=32, color="#10B981"),
- width="64px",
- height="64px",
- background="linear-gradient(135deg, rgba(16, 185, 129, 0.15), rgba(5, 150, 105, 0.1))",
- border_radius="16px",
- display="flex",
- align_items="center",
- justify_content="center",
- border="1px solid rgba(16, 185, 129, 0.3)",
- ),
- rx.text(
- "پشتیبانی 24/7",
- font_weight="700",
- font_size="16px",
- color="#FFFFFF",
- ),
- rx.text(
- "همیشه کنارتان",
- font_size="13px",
- color="#8B9EB8",
- ),
- spacing="3",
- align="center",
- ),
- background="rgba(27, 75, 127, 0.1)",
- backdrop_filter="blur(10px)",
- border="1px solid rgba(16, 185, 129, 0.2)",
- border_radius="14px",
- padding="24px",
- _hover={
- "background": "rgba(27, 75, 127, 0.18)",
- "border": "1px solid rgba(16, 185, 129, 0.4)",
- "transform": "translateY(-4px)",
- },
- transition="all 0.3s ease",
- flex="1",
- ),
- spacing="5",
- width="100%",
- wrap="wrap",
- ),
- margin_top="40px",
- ),
+ # # Features Grid
+ # rx.box(
+ # rx.hstack(
+ # # Feature 1
+ # rx.box(
+ # rx.vstack(
+ # rx.box(
+ # rx.icon("server", size=32, color="#4DB8C4"),
+ # width="64px",
+ # height="64px",
+ # background="linear-gradient(135deg, rgba(77, 184, 196, 0.15), rgba(109, 215, 229, 0.1))",
+ # border_radius="16px",
+ # display="flex",
+ # align_items="center",
+ # justify_content="center",
+ # border="1px solid rgba(77, 184, 196, 0.3)",
+ # ),
+ # rx.text(
+ # "سرورهای SSD",
+ # font_weight="700",
+ # font_size="16px",
+ # color="#FFFFFF",
+ # ),
+ # rx.text(
+ # "سرعت بالا با NVMe",
+ # font_size="13px",
+ # color="#8B9EB8",
+ # ),
+ # spacing="3",
+ # align="center",
+ # ),
+ # background="rgba(27, 75, 127, 0.1)",
+ # backdrop_filter="blur(10px)",
+ # border="1px solid rgba(77, 184, 196, 0.2)",
+ # border_radius="14px",
+ # padding="24px",
+ # _hover={
+ # "background": "rgba(27, 75, 127, 0.18)",
+ # "border": "1px solid rgba(77, 184, 196, 0.4)",
+ # "transform": "translateY(-4px)",
+ # },
+ # transition="all 0.3s ease",
+ # flex="1",
+ # ),
+ # # Feature 2
+ # rx.box(
+ # rx.vstack(
+ # rx.box(
+ # rx.icon("rocket", size=32, color="#F59E0B"),
+ # width="64px",
+ # height="64px",
+ # background="linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 146, 60, 0.1))",
+ # border_radius="16px",
+ # display="flex",
+ # align_items="center",
+ # justify_content="center",
+ # border="1px solid rgba(245, 158, 11, 0.3)",
+ # ),
+ # rx.text(
+ # "سرعت 10 برابر",
+ # font_weight="700",
+ # font_size="16px",
+ # color="#FFFFFF",
+ # ),
+ # rx.text(
+ # "با کش پیشرفته",
+ # font_size="13px",
+ # color="#8B9EB8",
+ # ),
+ # spacing="3",
+ # align="center",
+ # ),
+ # background="rgba(27, 75, 127, 0.1)",
+ # backdrop_filter="blur(10px)",
+ # border="1px solid rgba(245, 158, 11, 0.2)",
+ # border_radius="14px",
+ # padding="24px",
+ # _hover={
+ # "background": "rgba(27, 75, 127, 0.18)",
+ # "border": "1px solid rgba(245, 158, 11, 0.4)",
+ # "transform": "translateY(-4px)",
+ # },
+ # transition="all 0.3s ease",
+ # flex="1",
+ # ),
+ # # Feature 3
+ # rx.box(
+ # rx.vstack(
+ # rx.box(
+ # rx.icon("headphones", size=32, color="#10B981"),
+ # width="64px",
+ # height="64px",
+ # background="linear-gradient(135deg, rgba(16, 185, 129, 0.15), rgba(5, 150, 105, 0.1))",
+ # border_radius="16px",
+ # display="flex",
+ # align_items="center",
+ # justify_content="center",
+ # border="1px solid rgba(16, 185, 129, 0.3)",
+ # ),
+ # rx.text(
+ # "پشتیبانی 24/7",
+ # font_weight="700",
+ # font_size="16px",
+ # color="#FFFFFF",
+ # ),
+ # rx.text(
+ # "همیشه کنارتان",
+ # font_size="13px",
+ # color="#8B9EB8",
+ # ),
+ # spacing="3",
+ # align="center",
+ # ),
+ # background="rgba(27, 75, 127, 0.1)",
+ # backdrop_filter="blur(10px)",
+ # border="1px solid rgba(16, 185, 129, 0.2)",
+ # border_radius="14px",
+ # padding="24px",
+ # _hover={
+ # "background": "rgba(27, 75, 127, 0.18)",
+ # "border": "1px solid rgba(16, 185, 129, 0.4)",
+ # "transform": "translateY(-4px)",
+ # },
+ # transition="all 0.3s ease",
+ # flex="1",
+ # ),
+ # spacing="5",
+ # width="100%",
+ # wrap="wrap",
+ # ),
+ # margin_top="40px",
+ # ),
rx.button(
rx.hstack(
rx.icon("external-link", size=20),
@@ -664,17 +695,218 @@ def wordpress_cloud_highlight() -> rx.Component:
style={"animation": "pulse 6s ease-in-out infinite"},
z_index="0",
),
- # Central WordPress icon
+ # Central Cloud Infrastructure Visual - Enhanced
rx.box(
- rx.html(""),
+ rx.html("""
+
+ """),
position="relative",
- padding="40px",
- background="linear-gradient(135deg, rgba(245, 158, 11, 0.15), rgba(251, 146, 60, 0.12))",
- border="3px solid rgba(245, 158, 11, 0.35)",
- border_radius="32px",
- box_shadow="0 20px 70px rgba(245, 158, 11, 0.5)",
+ width="420px",
+ height="420px",
z_index="2",
- style={"animation": "scaleFloat 8s ease-in-out infinite"},
+ display="flex",
+ align_items="center",
+ justify_content="center",
+ ),
+ # WordPress Logo GIF overlay
+ rx.image(
+ src="/wordpress-logo.gif",
+ width="100px",
+ height="100px",
+ position="absolute",
+ top="2%",
+ left="50%",
+ transform="translate(-50%, -50%)",
+ z_index="3",
+ filter="drop-shadow(0 0 20px rgba(75, 179, 253, 0.6))",
),
# Floating icon 1: Shield (security - top-left)
rx.box(
@@ -690,7 +922,7 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 12px 40px rgba(16, 185, 129, 0.4)",
opacity="0.85",
z_index="3",
- style={"animation": "fadeInScale 0.8s ease-out 0.4s backwards, bobFloat 8s ease-in-out 1.5s infinite"},
+ class_name="wp-icon-1",
),
# Floating icon 2: Cloud (cloud hosting - top-right)
rx.box(
@@ -706,7 +938,7 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 12px 40px rgba(109, 215, 229, 0.4)",
opacity="0.8",
z_index="1",
- style={"animation": "fadeInScale 0.8s ease-out 0.6s backwards, floatDiagonal 9s ease-in-out 2s infinite"},
+ class_name="wp-icon-2",
),
# Floating icon 3: Zap/Speed (middle-left)
rx.box(
@@ -722,7 +954,7 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 10px 35px rgba(251, 146, 60, 0.4)",
opacity="0.85",
z_index="3",
- style={"animation": "fadeInScale 0.8s ease-out 0.8s backwards, float 7s ease-in-out 2.3s infinite reverse"},
+ class_name="wp-icon-3",
),
# Floating icon 4: Package/Plugin (middle-right)
rx.box(
@@ -738,7 +970,7 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 10px 35px rgba(167, 139, 250, 0.4)",
opacity="0.8",
z_index="1",
- style={"animation": "fadeInScale 0.8s ease-out 1s backwards, scaleBreath 9s ease-in-out 2.5s infinite"},
+ class_name="wp-icon-4",
),
# Floating icon 5: Database (bottom-left)
rx.box(
@@ -754,7 +986,7 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 10px 35px rgba(77, 184, 196, 0.4)",
opacity="0.85",
z_index="3",
- style={"animation": "fadeInScale 0.8s ease-out 1.2s backwards, floatComplex 10s ease-in-out 2.8s infinite"},
+ class_name="wp-icon-5",
),
# Floating icon 6: Settings/Gear (bottom-right)
rx.box(
@@ -770,13 +1002,13 @@ def wordpress_cloud_highlight() -> rx.Component:
box_shadow="0 12px 40px rgba(249, 115, 22, 0.4)",
opacity="0.8",
z_index="1",
- style={"animation": "fadeInScale 0.8s ease-out 1.4s backwards, rotateSubtle 40s linear infinite, bobFloat 8s ease-in-out 3s infinite"},
+ class_name="wp-icon-6",
),
- # Stats card 1: 99.9% Uptime (repositioned - outer left)
+ # Stats card 1: SSD Servers (Updated)
rx.box(
rx.vstack(
- rx.text("99.9%", font_size="26px", font_weight="900", color="#F59E0B", line_height="1"),
- rx.text("آپتایم", font_size="11px", color="#94A3B8", font_weight="700"),
+ rx.text("سرورهای SSD", font_size="16px", font_weight="900", color="#F59E0B", line_height="1.2"),
+ rx.text("سرعت بالا با NVMe", font_size="12px", color="#94A3B8", font_weight="700"),
spacing="1",
align="center",
),
@@ -790,13 +1022,13 @@ def wordpress_cloud_highlight() -> rx.Component:
backdrop_filter="blur(15px)",
box_shadow="0 10px 40px rgba(245, 158, 11, 0.35)",
z_index="4",
- style={"animation": "fadeInScale 0.8s ease-out 1.6s backwards, float 7s ease-in-out 3.2s infinite"},
+ class_name="wp-card-1",
),
- # Stats card 2: 10x Speed (repositioned - outer right)
+ # Stats card 2: 10x Speed (Updated)
rx.box(
rx.vstack(
- rx.text("10x", font_size="24px", font_weight="900", color="#10B981", line_height="1"),
- rx.text("سرعت", font_size="11px", color="#94A3B8", font_weight="700"),
+ rx.text("سرعت 10 برابر", font_size="16px", font_weight="900", color="#10B981", line_height="1.2"),
+ rx.text("با کش پیشرفته", font_size="12px", color="#94A3B8", font_weight="700"),
spacing="1",
align="center",
),
@@ -810,13 +1042,13 @@ def wordpress_cloud_highlight() -> rx.Component:
backdrop_filter="blur(15px)",
box_shadow="0 10px 40px rgba(16, 185, 129, 0.35)",
z_index="4",
- style={"animation": "fadeInScale 0.8s ease-out 1.8s backwards, float 8s ease-in-out 3.5s infinite reverse"},
+ class_name="wp-card-2",
),
- # Stats card 3: 24/7 Support (repositioned - bottom center)
+ # Stats card 3: 24/7 Support (Updated)
rx.box(
rx.vstack(
- rx.text("24/7", font_size="22px", font_weight="900", color="#6DD7E5", line_height="1"),
- rx.text("پشتیبانی", font_size="10px", color="#94A3B8", font_weight="700"),
+ rx.text("پشتیبانی 24/7", font_size="16px", font_weight="900", color="#6DD7E5", line_height="1.2"),
+ rx.text("همیشه کنارتان", font_size="12px", color="#94A3B8", font_weight="700"),
spacing="1",
align="center",
),
@@ -830,7 +1062,7 @@ def wordpress_cloud_highlight() -> rx.Component:
backdrop_filter="blur(15px)",
box_shadow="0 10px 40px rgba(109, 215, 229, 0.35)",
z_index="4",
- style={"animation": "fadeInScale 0.8s ease-out 2s backwards, float 6s ease-in-out 3.8s infinite"},
+ class_name="wp-card-3",
),
position="relative",
width="600px",
@@ -1576,6 +1808,56 @@ def floating_chat() -> rx.Component:
def index() -> rx.Component:
return rx.box(
+ # Inject CSS animations directly into page
+ rx.el.style("""
+ @keyframes fadeInScale {
+ from { opacity: 0; transform: scale(0.5); }
+ to { opacity: 1; transform: scale(1); }
+ }
+ @keyframes float {
+ 0%, 100% { transform: translateY(0px); }
+ 50% { transform: translateY(-20px); }
+ }
+ @keyframes bobFloat {
+ 0%, 100% { transform: translateY(0px) translateX(0px); }
+ 25% { transform: translateY(-15px) translateX(10px); }
+ 50% { transform: translateY(0px) translateX(15px); }
+ 75% { transform: translateY(15px) translateX(5px); }
+ }
+ @keyframes floatDiagonal {
+ 0%, 100% { transform: translate(0, 0); }
+ 25% { transform: translate(15px, -15px); }
+ 50% { transform: translate(25px, 0); }
+ 75% { transform: translate(10px, 15px); }
+ }
+ @keyframes scaleBreath {
+ 0%, 100% { transform: scale(1); }
+ 50% { transform: scale(1.05); }
+ }
+ @keyframes floatComplex {
+ 0%, 100% { transform: translate(0, 0) rotate(0deg); }
+ 25% { transform: translate(-15px, -20px) rotate(2deg); }
+ 50% { transform: translate(-25px, 0) rotate(0deg); }
+ 75% { transform: translate(-10px, 20px) rotate(-2deg); }
+ }
+ @keyframes rotateSubtle {
+ from { transform: rotate(0deg); }
+ to { transform: rotate(360deg); }
+ }
+ .wp-icon-1 { animation: fadeInScale 1s ease-out 0.5s backwards, bobFloat 8s ease-in-out 2s infinite !important; }
+ .wp-icon-2 { animation: fadeInScale 1s ease-out 1s backwards, floatDiagonal 9s ease-in-out 2.5s infinite !important; }
+ .wp-icon-3 { animation: fadeInScale 1s ease-out 1.5s backwards, float 7s ease-in-out 3s infinite reverse !important; }
+ .wp-icon-4 { animation: fadeInScale 1s ease-out 2s backwards, floatDiagonal 8s ease-in-out 3.5s infinite reverse !important; }
+ .wp-icon-5 { animation: fadeInScale 1s ease-out 2.5s backwards, floatComplex 10s ease-in-out 4s infinite !important; }
+ .wp-icon-6 { animation: fadeInScale 1s ease-out 3s backwards, rotateSubtle 40s linear 4s infinite, bobFloat 8s ease-in-out 4.5s infinite !important; }
+ .wp-card-1 { animation: fadeInScale 1s ease-out 3.5s backwards, float 7s ease-in-out 5s infinite !important; }
+ .wp-card-2 { animation: fadeInScale 1s ease-out 4s backwards, float 8s ease-in-out 5.5s infinite reverse !important; }
+ .wp-card-3 { animation: fadeInScale 1s ease-out 4.5s backwards, float 6s ease-in-out 6s infinite !important; }
+ @keyframes rotateGearCW { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
+ @keyframes rotateGearCCW { from { transform: rotate(360deg); } to { transform: rotate(0deg); } }
+ @keyframes glowPulse { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } }
+ @keyframes fireRing { 0%, 100% { stroke-dashoffset: 0; } 50% { stroke-dashoffset: 50; } }
+ """),
navbar(),
hero(),
wordpress_cloud_highlight(),
@@ -1602,6 +1884,131 @@ app = rx.App(
style={
"font_family": "'Vazirmatn', 'Inter', sans-serif",
},
+ head_components=[
+ rx.html("""
+
+"""),
+ ],
)
app.add_page(
index,
diff --git a/wired-flat-2579-logo-wordpress-hover-pinch.gif b/wired-flat-2579-logo-wordpress-hover-pinch.gif
new file mode 100644
index 0000000..e1141bd
Binary files /dev/null and b/wired-flat-2579-logo-wordpress-hover-pinch.gif differ