From dafcbef72dfa79957a43b6a5b8e4e86c5e9672ca Mon Sep 17 00:00:00 2001 From: Arkadiusz Lachowicz Date: Sun, 14 Jun 2026 20:20:48 +0200 Subject: [PATCH] Refresh website presentation --- app/about/page.tsx | 53 +- app/components/AboutSection.tsx | 24 +- app/components/CTAButton.tsx | 5 +- app/components/EcosystemSection.tsx | 36 +- app/components/ExpertiseGrid.tsx | 4 +- app/components/Footer.tsx | 113 +- app/components/HeroHeader.tsx | 22 +- app/components/LinkedInUpdatesSection.tsx | 223 +++ app/components/NablaSection.tsx | 365 ++--- app/components/ProjectsSection.tsx | 64 +- app/components/TestimonialsSection.tsx | 158 +-- app/globals.css | 1515 ++++++++++++++++++++- app/layout.tsx | 4 +- app/nabla/NablaHeroFrame.tsx | 46 + app/nabla/NablaShaderBackdrop.tsx | 240 ++++ app/nabla/page.tsx | 474 +++++-- app/page.tsx | 4 +- app/presentations/page.tsx | 49 +- app/services/page.tsx | 253 ++-- package.json | 1 + scripts/sync-linkedin-feed.mjs | 232 ++++ 21 files changed, 3195 insertions(+), 690 deletions(-) create mode 100644 app/components/LinkedInUpdatesSection.tsx create mode 100644 app/nabla/NablaHeroFrame.tsx create mode 100644 app/nabla/NablaShaderBackdrop.tsx create mode 100644 scripts/sync-linkedin-feed.mjs diff --git a/app/about/page.tsx b/app/about/page.tsx index 7b7cb75..c390fa3 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -1,19 +1,42 @@ -import { Paragraph, Chapter } from "../components/TextUtils"; import { aboutParagraphs } from "../data/aboutContent"; +import NablaShaderBackdrop from "../nabla/NablaShaderBackdrop"; + +const heroStatement = "We are not a traditional software house"; +const extractedSentence = `${heroStatement}.`; +const bodyParagraphs = aboutParagraphs.map((paragraph) => + paragraph.replace(` ${extractedSentence}`, "") +); export default function Page() { - return ( -
- - - {aboutParagraphs.map((paragraph, index) => ( - - {paragraph} - {index < aboutParagraphs.length - 1 && <>

} -
- ))} -
-
-
- ); + return ( +
+
+
+ +
+
+ {bodyParagraphs.map((paragraph, index) => ( +

+ {paragraph} +

+ ))} +
+
+
+ ); } diff --git a/app/components/AboutSection.tsx b/app/components/AboutSection.tsx index 3aeb795..ff3d052 100644 --- a/app/components/AboutSection.tsx +++ b/app/components/AboutSection.tsx @@ -1,24 +1,14 @@ -import CTAButton from "./CTAButton"; -import { aboutParagraphs } from "../data/aboutContent"; +import CTAButton from "./CTAButton"; export default function AboutSection() { return ( -
-
-
+
+
+

Who We Are

-
- -
- {aboutParagraphs.map((paragraph, index) => ( -

- {paragraph} -

- ))} -
- -
- +
+ +
diff --git a/app/components/CTAButton.tsx b/app/components/CTAButton.tsx index 3b0b68c..afe0f60 100644 --- a/app/components/CTAButton.tsx +++ b/app/components/CTAButton.tsx @@ -17,11 +17,10 @@ export default function CTAButton({ return ( {label} - +
-
+

Community and standards

Advancing the Ecosystem @@ -67,30 +67,32 @@ export default function EcosystemSection() { our technical blog and presentations at major conferences like Vulkanised and the Shading Languages Symposium.

-
diff --git a/app/components/ExpertiseGrid.tsx b/app/components/ExpertiseGrid.tsx index 2338746..07af999 100644 --- a/app/components/ExpertiseGrid.tsx +++ b/app/components/ExpertiseGrid.tsx @@ -140,9 +140,9 @@ function Card({ title, images, href }: { title: string; images: MediaItem[]; hre export default function ExpertiseGrid() { return ( -
+
-
+

Our Expertise

{/* Two-column mobile grid, then a wrapped centered row on wider screens. */} diff --git a/app/components/Footer.tsx b/app/components/Footer.tsx index 26ec446..92a410b 100644 --- a/app/components/Footer.tsx +++ b/app/components/Footer.tsx @@ -1,15 +1,108 @@ -import GP_Links from "./GP_Links" +import Link from "next/link"; +import GP_Links from "./GP_Links"; -export default function footer() { +const quickLinks = [ + { label: "Home", href: "/" }, + { label: "Services", href: "/services" }, + { label: "Pricing", href: "/pricing.pdf" }, + { label: "Nabla", href: "/nabla" }, + { label: "Research", href: "/research" }, + { label: "Blog", href: "/blog" }, +]; + +const socialLinks = [ + { label: "LinkedIn", href: "https://www.linkedin.com/company/devsh-graphics-programming/", icon: "linkedin" }, + { label: "X", href: "https://x.com/devsh_gfx_prog", icon: "x" }, + { label: "GitHub", href: "https://github.com/Devsh-Graphics-Programming", icon: "github" }, +]; + +function SocialIcon({ icon }: { icon: string }) { + if (icon === "linkedin") { + return ( + + ); + } + + if (icon === "x") { return ( -
- - - build info + + ); + } + + return ( + + ); +} + +export default function Footer() { + return ( + + ); } diff --git a/app/components/HeroHeader.tsx b/app/components/HeroHeader.tsx index 8edd176..fb29ae7 100644 --- a/app/components/HeroHeader.tsx +++ b/app/components/HeroHeader.tsx @@ -1,22 +1,20 @@ +import NablaShaderBackdrop from "../nabla/NablaShaderBackdrop"; import CTAButton from "./CTAButton"; export default function HeroHeader() { return ( -
-