diff --git a/apps/website/public/theme-generator-landing-bg-flipped.png b/apps/website/public/theme-generator-landing-bg-flipped.png new file mode 100644 index 000000000..16550d126 Binary files /dev/null and b/apps/website/public/theme-generator-landing-bg-flipped.png differ diff --git a/apps/website/screens/theme-generator/ThemeGeneratorPage.tsx b/apps/website/screens/theme-generator/ThemeGeneratorPage.tsx index 74fdc5c47..417adbe20 100644 --- a/apps/website/screens/theme-generator/ThemeGeneratorPage.tsx +++ b/apps/website/screens/theme-generator/ThemeGeneratorPage.tsx @@ -1,5 +1,55 @@ -import { DxcLink, DxcContainer, DxcFlex, DxcHeading, DxcTypography } from "@dxc-technology/halstack-react"; +import { + DxcLink, + DxcContainer, + DxcFlex, + DxcHeading, + DxcTypography, + DxcParagraph, + DxcInset, + DxcGrid, +} from "@dxc-technology/halstack-react"; import Link from "next/link"; +import LandingCards from "./components/LandingCards"; +import LandingSteps from "./components/LandingSteps"; + +const steps = [ + { + title: "Define your brand", + description: "Choose your core and semantic colors to set the foundation of your theme.", + }, + { + title: "Let the system do the rest", + description: "The generator creates a complete set of tokens based on your colors.", + }, + { + title: "See it in real components", + description: "Preview your theme applied to real Halstack components and layouts.", + }, + { + title: "Export and use it", + description: "Review your theme and export it as a ready-to-use JSON file.", + }, +]; + +const cards = [ + { + icon: "filled_palette", + title: "From brand colors to design tokens", + description: "Define your core and semantic colors and let the generator create a structured set of design tokens.", + }, + { + icon: "preview", + title: "Preview your theme in real components", + description: + "Apply your generated tokens to real Halstack components and layouts to validate your color choices in context.", + }, + { + icon: "accessibility", + title: "Accessible and ready to implement", + description: + "The generator adjusts color combinations to aim for strong contrast and readability. Export a ready-to-use theme file and integrate it into your development workflow.", + }, +]; const ThemeGeneratorPage = () => { return ( @@ -37,6 +87,69 @@ const ThemeGeneratorPage = () => { + + + + + + + + Theme Generator removes the complexity of brand customization so your team can move + faster, stay consistent, and ship with confidence. + + + + + + + + + + + From brand colors to a production-ready Halstack theme in just a few clear steps. + + + + + + + + Your brand, fully expressed in Halstack + + + + + Turn your brand into a living part of your products. Keep every interface aligned, consistent, and + easier to evolve as your needs grow. + + + + + + + + Open Theme Generator + + + + View documentation + + + + ); }; diff --git a/apps/website/screens/theme-generator/components/LandingCards.tsx b/apps/website/screens/theme-generator/components/LandingCards.tsx new file mode 100644 index 000000000..817daaf6a --- /dev/null +++ b/apps/website/screens/theme-generator/components/LandingCards.tsx @@ -0,0 +1,27 @@ +import { DxcContainer, DxcFlex, DxcTypography, DxcAvatar } from "@dxc-technology/halstack-react"; + +const LandingCard = ({ icon, title, description }: { icon: string; title: string; description: string }) => { + return ( + + + + + {title} + {description} + + + + ); +}; + +const LandingCards = ({ cards }: { cards: { icon: string; title: string; description: string }[] }) => { + return ( + + {cards.map((card, index) => ( + + ))} + + ); +}; + +export default LandingCards; diff --git a/apps/website/screens/theme-generator/components/LandingSteps.tsx b/apps/website/screens/theme-generator/components/LandingSteps.tsx new file mode 100644 index 000000000..3e2456c79 --- /dev/null +++ b/apps/website/screens/theme-generator/components/LandingSteps.tsx @@ -0,0 +1,40 @@ +import { DxcContainer, DxcFlex, DxcTypography, DxcAvatar, DxcDivider, DxcInset } from "@dxc-technology/halstack-react"; +import React from "react"; + +const LandingStep = ({ index, title, description }: { index: number; title: string; description: string }) => { + return ( + + + + + {title} + + {description} + + + + + ); +}; + +const LandingSteps = ({ steps }: { steps: { title: string; description: string }[] }) => { + return ( + + + {steps.map((step, index) => ( + + + {index !== steps.length - 1 && ( + + + + + + )} + + ))} + + + ); +}; +export default LandingSteps;