From 1e517c35295cf1e64651c06ba0bf0ff6924fcd76 Mon Sep 17 00:00:00 2001 From: filipKovachev Date: Wed, 27 Nov 2024 18:21:30 +0200 Subject: [PATCH 1/4] implement theme switcher refactor theme choosing fix theme version --- .../src/components/Header.tsx | 115 ++++++++++++------ .../src/data/themeItems.ts | 24 ++++ 2 files changed, 103 insertions(+), 36 deletions(-) create mode 100644 examples/kendo-react-e-commerce-astro-app/src/data/themeItems.ts diff --git a/examples/kendo-react-e-commerce-astro-app/src/components/Header.tsx b/examples/kendo-react-e-commerce-astro-app/src/components/Header.tsx index 87971b71..5e827a0e 100644 --- a/examples/kendo-react-e-commerce-astro-app/src/components/Header.tsx +++ b/examples/kendo-react-e-commerce-astro-app/src/components/Header.tsx @@ -1,20 +1,37 @@ -import React from "react"; -import { Menu, MenuItemModel, MenuSelectEvent } from "@progress/kendo-react-layout"; -import { Button } from "@progress/kendo-react-buttons"; +import React, { useState } from "react"; +import { + Menu, + MenuSelectEvent, + MenuItemModel, +} from "@progress/kendo-react-layout"; +import { Button, DropDownButton } from "@progress/kendo-react-buttons"; import { SvgIcon } from "@progress/kendo-react-common"; import { InputPrefix, InputSeparator, TextBox, Switch } from "@progress/kendo-react-inputs"; -import { searchIcon, userIcon, cartIcon } from "@progress/kendo-svg-icons"; +import { searchIcon, userIcon, cartIcon, paletteIcon } from "@progress/kendo-svg-icons"; import items from "../data/items"; +import themeItems from "../data/themeItems"; import { AppBar, AppBarSection } from "@progress/kendo-react-layout"; import { isAdmin } from "../helpers/adminStore"; import { useStore } from "@nanostores/react"; interface CustomMenuItemModel extends MenuItemModel { - page?: string; - } + page?: string; +} const Header: React.FC = () => { const isAdminValue = useStore(isAdmin); + const [theme, setTheme] = useState( + "https://unpkg.com/@progress/kendo-theme-default@10.0.0/dist/default-main.css" + ); + + const handleThemeChange = (event: any) => { + const selectedTheme = themeItems.find( + (item) => item.themeName === event.item.themeName + ); + if (selectedTheme) { + setTheme(selectedTheme.link); + } + }; const handleCartClick = () => { window.location.href = "/kendo-react/kendo-react-e-commerce-astro-app/shoppingcart"; @@ -28,46 +45,72 @@ const Header: React.FC = () => { const selectedItem: CustomMenuItemModel = event.item; if (selectedItem.page) { - window.location.href = '/kendo-react/kendo-react-e-commerce-astro-app/' + selectedItem.page; - return; + window.location.href = "/kendo-react/kendo-react-e-commerce-astro-app/" + selectedItem.page; + return; } const selectedCategory = selectedItem.text; if (selectedCategory === "All") { - window.location.href = `/kendo-react/kendo-react-e-commerce-astro-app/products`; // No category filter applied + window.location.href = `/kendo-react/kendo-react-e-commerce-astro-app/products`; } else { window.location.href = `/kendo-react/kendo-react-e-commerce-astro-app/products?category=${encodeURIComponent(selectedCategory)}`; } }; return ( - - - - Logo - - - - - ( - <> - - - - - - - - )} - style={{ width: 300 }} - /> -