added favicon and populated template text with real text

This commit is contained in:
2026-05-31 21:50:04 +01:00
parent f67093f34e
commit cfebb4cee5
12 changed files with 103 additions and 50 deletions

View File

@@ -2,22 +2,22 @@ import ContentCard from "./ui/content-cards";
import './hero-section.css'
import heroPictureOne from "../assets/mxj-files-planet-27066.gif"
export default function HeroSection() {
export default function HeroSection({description, buttonText, imageSrc }: {description: string; buttonText: string; imageSrc: string } ) {
return(
<>
<div className="flex flex-wrap-reverse justify-items-center ">
<div className="p-4 w-full md:w-1/2 shrink-0">
<img className="w-full h-auto rounded-2xl object-cover" src={heroPictureOne.src} alt="" />
<img className="w-full h-auto rounded-2xl object-cover" src={imageSrc} alt="" />
</div>
<div className="w-full md:w-1/2">
<h1 className="mb-4 font-bold text-heading text-6xl sm:text-7xl"><span className="text-transparent bg-clip-text bg-gradient-to-r bg-violet-800 from-sky-400">Sculpted Arc</span><br/> Web Solutions</h1>
<hr className="w-1/4 mb-7 mt-8 border-gray-700 border-2 rounded-2xl"/>
<p className="text-lg font-normal text-body lg:text-xl">Here at Sculpted Arc we are invested in creating great website and solving complex web problems Here at Sculpted Arc we are invested in creating great website and solving complex web problems</p>
<p className="text-lg font-normal text-body lg:text-xl">{description}</p>
<br/>
<a href="#" className="transition duration-150 flex w-55 justify-start rounded-3xl text-body bg-neutral-secondary-medium box-border border border-default-medium hover:bg-blue-200 hover:text-black hover:text-heading focus:ring-4 focus:ring-neutral-tertiary shadow-xs font-medium leading-5 rounded-base text-sm px-4 py-2.5 focus:outline-none mt-auto">
Tell us about your project
{buttonText}
<svg className="w-3 h-3 ms-1.5 rtl:rotate-180 -me-0.5" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 20 20"><path stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M19 12H5m14 0-4 4m4-4-4-4"/></svg>
</a>
</div>

View File

@@ -24,14 +24,7 @@ export default function PicWithText(content: PicWithTextProps){
<h1 className="mb-4 text-5xl font-bold">{content.title}</h1>
<p className="text-lg font-normal text-body lg:text-xl">{content.text}</p>
<div className="flex items-center w-full my-8">
<div className="flex-1 h-px bg-neutral-300 dark:bg-neutral-700" />
<div className="px-3">
<svg className="w-6 h-6 text-neutral-400 dark:text-neutral-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M10 11V8a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1Zm0 0v2a4 4 0 0 1-4 4H5m14-6V8a1 1 0 0 0-1-1h-3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1Zm0 0v2a4 4 0 0 1-4 4h-1"/></svg>
</div>
<div className="flex-1 h-px bg-neutral-300 dark:bg-neutral-700" />
</div>
<p className="text-gray-300 italic">This is more text, however, this is actually a quote, yes, a quote indeed!</p>
</div>
</div>
)

View File

@@ -1,63 +1,57 @@
import './services-feature.css';
import { ShoppingCart, Workflow, Server, CodeXml, Plug, Globe } from 'lucide-react';
export type Service = {
title: string;
icon: React.ReactNode;
description: string;
};
const services: Service[] = [
{
title: 'Custom Web Design',
title: 'Company Automation',
icon: <Workflow />,
description:
'Tailored layouts and branding that reflect your business and engage your audience from the first visit.',
'Streamline operations and boost efficiency with custom automation solutions tailored to your business needs.',
},
{
title: 'Web Development',
icon: <CodeXml />,
description:
'Fast, reliable sites built with modern frameworks—scalable architecture that grows with your company.',
},
{
title: 'E-commerce',
icon: <ShoppingCart />,
description:
'Online stores with smooth checkout, inventory management, and payment integrations that convert.',
'Online stores with smooth checkout, inventory management, and payment integrations that convert. Options inclide Shopify, WooCommerce, and custom solutions.',
},
{
title: 'Performance & SEO',
title: 'Custom Plugins & Extensions',
icon: <Plug />,
description:
'Optimised load times, accessibility, and search visibility so customers can find and use your site.',
'Extend your websites functionality with custom plugins and extensions tailored to your specific needs.',
},
{
title: 'Hosting & Maintenance',
icon: <Server />,
description:
'Secure hosting, updates, backups, and monitoring so your site stays online and up to date.',
'Secure hosting, updates, emails, backups, and monitoring so your site stays online and up to date.',
},
{
title: 'APIs & Integrations',
icon: <Globe />,
description:
'Connect CRMs, booking systems, analytics, and third-party tools into one cohesive workflow.',
},
];
function ServiceFeatureCard({ title, description }: Service) {
function ServiceFeatureCard({ title, icon, description }: Service) {
return (
<article className="service-feature">
<div className="service-feature-body">
<div className="service-feature-icon" aria-hidden="true">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
fill="none"
viewBox="0 0 24 24"
>
<path
stroke="currentColor"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="2"
d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"
/>
</svg>
{icon}
</div>
<h3 className="service-feature-title">{title}</h3>
<p className="service-feature-description">{description}</p>
@@ -74,7 +68,7 @@ type ServicesFeatureProps = {
export default function ServicesFeature({
heading = 'What we offer',
subheading = 'End-to-end web solutions for businesses of every size.',
subheading = 'End-to-end web solutions for small to medium-sized businesses ',
items = services,
}: ServicesFeatureProps) {
return (

View File

@@ -3,7 +3,7 @@
import { useEffect, useState } from 'react';
import './typing-words.css';
const WORDS = ['plan', 'idea', 'problem', 'goals'] as const;
const WORDS = ['plan', 'vision', 'problem', 'goals', 'business'] as const;
const TYPING_MS = 90;
const DELETING_MS = 55;