"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()}
}
/>
)}
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.
);
};