"use client"; import {useMemo, useState} from "react"; import {Tabs, Tab, Card, CardBody, Image, Button, RadioGroup, Radio} from "@heroui/react"; import NextLink from "next/link"; import NextImage from "next/image"; import {shopCartStyles} from "./styles"; import {title, subtitle, titleWrapper, sectionWrapper} from "@/components/primitives"; import {PaletteIcon, MagicIcon, GamingConsoleIcon, StarIcon} from "@/components/icons"; import {SmallLogoOutlined, CodeWindow} from "@/components"; import landingContent from "@/content/landing"; import {useIsMobile} from "@/hooks/use-media-query"; const themesTabs = (isMobile: boolean) => [ { id: "heroui", title: () => (

HeroUI

), icon: () => ( ), }, { id: "modern", title: () => (

Modern

), icon: () => ( ), }, { id: "elegant", title: () => (

Elegant

), icon: () => , }, { id: "retro", title: () => (

Retro

), icon: () => ( ), }, ]; type Theme = "heroui" | "modern" | "elegant" | "retro"; type Tab = {id: string; title: () => JSX.Element; icon: () => JSX.Element}; const itemSizes = ["xs", "s", "m", "l", "xl"]; const codeHighlights = { heroui: "6-19", modern: "26-39", elegant: "46-59", retro: "66-84", }; const CustomThemesExample = ({ tabs, selectedTheme, onChangeTheme, }: { tabs: Tab[]; selectedTheme: Theme; onChangeTheme: (theme: Theme) => void; }) => { const [liked, setLiked] = useState(false); const slots = useMemo( () => shopCartStyles({ theme: selectedTheme as Theme, }), [selectedTheme], ); const onSelectionChange = (value: React.Key) => { onChangeTheme(value as Theme); }; return (
{(item) => ( {item.icon()} {item.title()}
} /> )}
Shoes theme example

Nike Adapt BB 2.0

Consistent, customized fit, game-changing.

$279.97

$350

20% off

{itemSizes.map((itemSize) => ( {itemSize.toUpperCase()} ))}
); }; export const CustomThemes = () => { const isMobile = useIsMobile(); const tabs = themesTabs(isMobile); const [selectedTheme, setSelectedTheme] = useState(tabs[0].id as Theme); return (

Apply your own

theming 

decisions.

HeroUI provides a custom TailwindCSS plugin that allows you to customize the default themes or create your own.

custom themes background
); };