From a6445ac7cfc93b476ecca9c17e1d101629377e7d Mon Sep 17 00:00:00 2001 From: Oliver Pan <2216991777@qq.com> Date: Mon, 24 Jun 2024 00:30:22 -0500 Subject: [PATCH] fix: reduced code complexity, improved performance --- .../palette/six-thirty-ten-palette.tsx | 189 +++++------------- 1 file changed, 54 insertions(+), 135 deletions(-) diff --git a/apps/web/components/palette/six-thirty-ten-palette.tsx b/apps/web/components/palette/six-thirty-ten-palette.tsx index cb43d46..b856a93 100644 --- a/apps/web/components/palette/six-thirty-ten-palette.tsx +++ b/apps/web/components/palette/six-thirty-ten-palette.tsx @@ -1,153 +1,72 @@ -"use client"; +'use client' -import { - Performance, - useColorStore, - useSiteSettingsStore, -} from "@/store/store"; -import { BaseColorTypes } from "@/types/app"; -import React, { memo, useEffect, useState } from "react"; -import { cn } from "@ui/lib/utils"; +import { useColorStore } from '@/context/color-store-provider' +import { BaseColorTypes } from '@/types/app' +import { cn } from '@ui/lib/utils' -const getColorNames = async (colors: string[]) => { - const data = await fetch("/api/color-names", { - method: "POST", - body: JSON.stringify({ colors }), - }) - .then((res) => res.json()) - .catch((err) => { - console.error(err); - return []; - }); - return data.names; -}; function SixtyThirtyTenPalettes({ className }: { className?: string }) { - const [colorNames, setColorNames] = useState(["", "", ""]); - const { colorPalettes } = useColorStore(); + const { colorNames, colors } = useColorStore((s) => s) - useEffect(() => { - if (Object.values(colorPalettes).every((palette) => palette.length === 0)) { - console.log(`colorPalettes`, colorPalettes); - return; - } - getColorNames([ - colorPalettes.primary[5].color, - colorPalettes.secondary[5].color, - colorPalettes.accent[5].color, - colorPalettes.gray[5].color, - ]).then((names) => { - setColorNames(names); - }); - }, [colorPalettes]); - - const boxStyle = ["box-primary", "box-secondary", "box-accent", "box-border"]; + const colorSixty = { + accent: 'bg-[hsl(var(--accent-900))] dark:bg-[hsl(var(--accent-100))]', + gray: 'bg-[hsl(var(--gray-900))] dark:bg-[hsl(var(--gray-100))]', + primary: 'bg-[hsl(var(--primary-900))] dark:bg-[hsl(var(--primary-100))]', + secondary: 'bg-[hsl(var(--secondary-900))] dark:bg-[hsl(var(--secondary-100))]', + } satisfies Record + const colorThirty = { + accent: 'bg-[hsl(var(--accent-800))] dark:bg-[hsl(var(--accent-200))]', + gray: 'bg-[hsl(var(--gray-800))] dark:bg-[hsl(var(--gray-200))]', + primary: 'bg-[hsl(var(--primary-800))] dark:bg-[hsl(var(--primary-200))]', + secondary: 'bg-[hsl(var(--secondary-800))] dark:bg-[hsl(var(--secondary-200))]', + } satisfies Record + const boxStyle = ['box-primary', 'box-secondary', 'box-accent', 'box-border'] + const baseColors: BaseColorTypes[] = ['primary', 'secondary', 'accent', 'gray'] return (
{ // map over base colors - ["primary", "secondary", "accent", "gray"].map((key, i) => ( + baseColors.map((key, i) => (
- +
+
+ {colorNames?.[i]} +
+
+
+
+
+
)) }
- ); + ) } -/** - * A square aspected palette where: - * - 60% is the palette color step at 0, positioned at the top - * - 30% is the palette color step at 2, positioned at the left bottom - * - 10% is the palette color step at 5, positioned at the right bottom - * @param palette - */ -const SixtyThirtyTenPalette = memo( - ({ - type, - className, - colorName, - }: { - type: BaseColorTypes; - className?: string; - colorName: string; - }) => { - const colorSixty = { - primary: "bg-[hsl(var(--primary-900))] dark:bg-[hsl(var(--primary-100))]", - secondary: - "bg-[hsl(var(--secondary-900))] dark:bg-[hsl(var(--secondary-100))]", - accent: "bg-[hsl(var(--accent-900))] dark:bg-[hsl(var(--accent-100))]", - gray: "bg-[hsl(var(--gray-900))] dark:bg-[hsl(var(--gray-100))]", - }; - const colorThirty = { - primary: "bg-[hsl(var(--primary-800))] dark:bg-[hsl(var(--primary-200))]", - secondary: - "bg-[hsl(var(--secondary-800))] dark:bg-[hsl(var(--secondary-200))]", - accent: "bg-[hsl(var(--accent-800))] dark:bg-[hsl(var(--accent-200))]", - gray: "bg-[hsl(var(--gray-800))] dark:bg-[hsl(var(--gray-200))]", - }; - const colorTen = { - primary: "bg-[hsl(var(--primary-500))] dark:bg-[hsl(var(--primary-500))]", - secondary: - "bg-[hsl(var(--secondary-500))] dark:bg-[hsl(var(--secondary-500))]", - accent: "bg-[hsl(var(--accent-500))] dark:bg-[hsl(var(--accent-500))]", - gray: "bg-[hsl(var(--gray-500))] dark:bg-[hsl(var(--gray-500))]", - }; - return ( -
-
- {colorName} -
-
-
-
-
-
-
- ); - }, -); - -SixtyThirtyTenPalette.displayName = "SixtyThirtyTenPalette"; - -export default SixtyThirtyTenPalettes; +export default SixtyThirtyTenPalettes