feat: redesign page heroes, implement organic markers, and streamline contact flow
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Failing after 1m24s
Build & Deploy / 🏗️ Build (push) Failing after 4m3s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Health Check (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 5s
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 6s
Build & Deploy / 🧪 QA (push) Failing after 1m24s
Build & Deploy / 🏗️ Build (push) Failing after 4m3s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Health Check (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 5s
- Refined hero sections for About, Blog, Websites, and Case Studies for a bespoke industrial entry point. - Redesigned Marker component using layered SVG paths for an organic, hand-drawn highlighter effect. - Restored technical precision in ArchitectureVisualizer with refined line thickness. - Streamlined contact page by removing generic headers and prioritizing the configurator/gateway. - Updated technical references to reflect self-hosted Gitea infrastructure. - Cleaned up unused imports and addressed linting warnings across modified pages.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import React from "react";
|
||||
import { motion } from "framer-motion";
|
||||
import { cn } from "../utils/cn";
|
||||
|
||||
/**
|
||||
* TECHNICAL MARKER COMPONENT
|
||||
@@ -19,24 +20,70 @@ export const Marker: React.FC<MarkerProps> = ({
|
||||
children,
|
||||
delay = 0,
|
||||
className = "",
|
||||
color = "rgba(255,235,59,0.95)",
|
||||
color = "rgba(255,235,59,0.7)",
|
||||
}) => {
|
||||
return (
|
||||
<span className={`relative inline-block px-1 ${className}`}>
|
||||
<motion.span
|
||||
initial={{ scaleX: 0, opacity: 0 }}
|
||||
whileInView={{ scaleX: 1, opacity: 1 }}
|
||||
viewport={{ once: true, margin: "-5%" }}
|
||||
transition={{
|
||||
duration: 1.2,
|
||||
delay: delay + 0.1,
|
||||
ease: [0.23, 1, 0.32, 1],
|
||||
}}
|
||||
className="absolute inset-0 z-[-1] -skew-x-6 rotate-[-1deg] translate-y-1 transform-gpu origin-left"
|
||||
style={{ backgroundColor: color }}
|
||||
<span className={cn("relative inline px-1", className)}>
|
||||
<svg
|
||||
className="absolute inset-x-0 bottom-0 top-0 h-full w-full pointer-events-none z-[-1]"
|
||||
preserveAspectRatio="none"
|
||||
viewBox="0 0 100 100"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden="true"
|
||||
/>
|
||||
<span className="relative z-10 text-slate-900">{children}</span>
|
||||
>
|
||||
{/* Organic Stroke 1: Main body */}
|
||||
<motion.path
|
||||
d="M 0,85 C 10,87 25,82 40,84 C 55,86 75,81 90,83 C 95,84 100,85 100,85"
|
||||
vectorEffect="non-scaling-stroke"
|
||||
initial={{ pathLength: 0, opacity: 0 }}
|
||||
whileInView={{ pathLength: 1, opacity: 1 }}
|
||||
viewport={{ once: true, margin: "-5%" }}
|
||||
transition={{
|
||||
duration: 1.5,
|
||||
delay: delay + 0.1,
|
||||
ease: [0.23, 1, 0.32, 1],
|
||||
}}
|
||||
stroke={color}
|
||||
strokeWidth="60"
|
||||
strokeLinecap="round"
|
||||
fill="none"
|
||||
/>
|
||||
{/* Organic Stroke 2: Variation for overlap */}
|
||||
<motion.path
|
||||
d="M 5,82 C 20,80 40,85 60,82 C 80,79 95,84 100,83"
|
||||
vectorEffect="non-scaling-stroke"
|
||||
initial={{ pathLength: 0, opacity: 0 }}
|
||||
whileInView={{ pathLength: 1, opacity: 0.6 }}
|
||||
viewport={{ once: true, margin: "-5%" }}
|
||||
transition={{
|
||||
duration: 1.8,
|
||||
delay: delay + 0.3,
|
||||
ease: [0.23, 1, 0.32, 1],
|
||||
}}
|
||||
stroke={color}
|
||||
strokeWidth="35"
|
||||
strokeLinecap="round"
|
||||
fill="none"
|
||||
/>
|
||||
{/* Organic Stroke 3: Rough edge details */}
|
||||
<motion.path
|
||||
d="M 0,88 C 15,90 35,85 55,87 C 75,89 90,84 100,86"
|
||||
vectorEffect="non-scaling-stroke"
|
||||
initial={{ pathLength: 0, opacity: 0 }}
|
||||
whileInView={{ pathLength: 1, opacity: 0.4 }}
|
||||
viewport={{ once: true, margin: "-5%" }}
|
||||
transition={{
|
||||
duration: 1.2,
|
||||
delay: delay + 0.2,
|
||||
ease: [0.23, 1, 0.32, 1],
|
||||
}}
|
||||
stroke={color}
|
||||
strokeWidth="15"
|
||||
strokeLinecap="round"
|
||||
fill="none"
|
||||
/>
|
||||
</svg>
|
||||
<span className="relative z-10 text-inherit">{children}</span>
|
||||
</span>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user