From 91cfe6121f2d45e291c87f5396ec419e69eef649 Mon Sep 17 00:00:00 2001 From: maxichrome Date: Mon, 23 May 2022 06:06:59 -0500 Subject: [PATCH] fix button size --- .../src/components/os/TrafficLights.tsx | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/packages/interface/src/components/os/TrafficLights.tsx b/packages/interface/src/components/os/TrafficLights.tsx index e5664953c..3aef492a6 100644 --- a/packages/interface/src/components/os/TrafficLights.tsx +++ b/packages/interface/src/components/os/TrafficLights.tsx @@ -1,11 +1,11 @@ import clsx from 'clsx'; -import React from 'react'; +import React, { useEffect } from 'react'; import { useFocusState } from '../../hooks/useFocusState'; import { DefaultProps } from '../primitive/types'; -import { ReactComponent as Close } from '../../assets/svg/macos_close.svg'; -import { ReactComponent as Minimize } from '../../assets/svg/macos_minimize.svg'; -import { ReactComponent as Fullscreen } from '../../assets/svg/macos_fullscreen.svg'; +import closeIconPath from '../../assets/svg/macos_close.svg'; +import minimizeIconPath from '../../assets/svg/macos_minimize.svg'; +import fullscreenIconPath from '../../assets/svg/macos_fullscreen.svg'; export interface TrafficLightsProps extends DefaultProps { onClose?: () => void; @@ -20,46 +20,58 @@ export const TrafficLights: React.FC = (props) => { data-tauri-drag-region className={clsx('flex flex-row space-x-2 px-2 group', props.className)} > - - - + + + ); }; -interface LightProps { - mode: 'close' | 'minimize' | 'fullscreen'; - focused: boolean; - action?: () => void; +interface TrafficLightProps { + type: 'close' | 'minimize' | 'fullscreen'; + colorful: boolean; + onClick?: () => void; } -const Light: React.FC = (props) => { +const TrafficLight: React.FC = (props) => { + const { onClick = () => undefined, colorful = false, type } = props; + const iconPath = React.useRef(closeIconPath); + + useEffect(() => { + switch (type) { + case 'close': + iconPath.current = closeIconPath; + break; + case 'minimize': + iconPath.current = minimizeIconPath; + break; + case 'fullscreen': + iconPath.current = fullscreenIconPath; + break; + } + }, [type]); + return (
- {(() => { - if (!props.focused) return <>; - switch (props.mode) { - case 'close': - return ( - - ); - case 'minimize': - return ( - - ); - case 'fullscreen': - return ( - - ); + onClick={onClick} + className={clsx( + 'rounded-full box-content w-[12px] h-[12px] border-[0.5px] border-transparent bg-[#CDCED0] dark:bg-[#2B2C2F] flex justify-center items-center', + { + 'border-red-900 !bg-[#EC6A5E] active:hover:!bg-red-700 dark:active:hover:!bg-red-400': + type === 'close' && colorful, + 'border-yellow-900 !bg-[#F4BE4F] active:hover:!bg-yellow-600 dark:active:hover:!bg-yellow-200': + type === 'minimize' && colorful, + 'border-green-900 !bg-[#61C253] active:hover:!bg-green-700 dark:active:hover:!bg-green-300': + type === 'fullscreen' && colorful } - })()} + )} + > + {colorful && ( + + )}
); };