Fixed taskbar blur

This commit is contained in:
Prozilla 2024-06-05 15:16:08 +02:00
parent 6db8eb608e
commit 0fdd7ad632
No known key found for this signature in database
GPG key ID: 5858DFE71CAF31EE
7 changed files with 87 additions and 50 deletions

View file

@ -65,6 +65,6 @@
opacity: 25%; opacity: 25%;
position: absolute; position: absolute;
border-radius: var(--border-radius-0); border-radius: var(--border-radius-0);
background-color: var(--blue-b); background-color: var(--blue-1);
border: 0.25rem solid var(--blue-0); border: 0.25rem solid var(--blue-0);
} }

View file

@ -7,21 +7,30 @@
left: 0; left: 0;
width: 100%; width: 100%;
height: var(--taskbar-height); height: var(--taskbar-height);
backdrop-filter: var(--taskbar-filter);
} }
.Taskbar::after { .Taskbar::after,
opacity: var(--taskbar-opacity); .Taskbar::before {
content: ""; content: "";
position: absolute; position: absolute;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
pointer-events: none;
}
.Taskbar::after {
opacity: var(--taskbar-opacity);
background-color: var(--taskbar-color); background-color: var(--taskbar-color);
z-index: -2; z-index: -2;
} }
.Taskbar::before {
backdrop-filter: var(--taskbar-filter);
z-index: -3;
}
.Taskbar button { .Taskbar button {
display: flex; display: flex;
align-items: center; align-items: center;
@ -138,4 +147,63 @@
width: 0.5rem; width: 0.5rem;
padding: 0; padding: 0;
margin-left: 1rem; margin-left: 1rem;
}
.Menu-outer {
position: absolute;
right: 0;
bottom: 100%;
height: auto !important;
overflow: hidden;
}
.Menu-outer:not(.Active) {
pointer-events: none;
}
.Menu-inner {
opacity: 1;
display: flex;
border-top-left-radius: var(--border-radius-1);
border-top-right-radius: var(--border-radius-1);
border-bottom-left-radius: var(--border-radius-1);
transform: none;
transition: opacity 200ms ease-in-out, transform 200ms ease-in-out;
overflow: hidden;
resize: horizontal;
}
.Menu-outer:not(.Active) .Menu-inner {
opacity: 0;
transform: translateY(100px);
}
.Menu-inner::after,
.Menu-outer::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
border-radius: inherit;
pointer-events: none;
}
.Menu-inner::after {
opacity: var(--taskbar-menu-opacity);
background-color: var(--taskbar-menu-color);
z-index: -2;
}
.Menu-outer::after {
opacity: 1;
transition: opacity 200ms ease-in-out, top 200ms ease-in-out;
backdrop-filter: var(--taskbar-filter);
z-index: -3;
}
.Menu-outer:not(.Active)::after {
opacity: 0;
top: 100px;
} }

View file

@ -1,45 +1,13 @@
.Container-outer { .Container-outer {
position: absolute; right: unset;
left: 0; left: 0;
bottom: 100%;
height: auto !important;
overflow: hidden;
} }
.Container-inner { .Container-inner {
opacity: 1;
display: flex;
min-width: 16rem; min-width: 16rem;
max-width: 32rem; max-width: 32rem;
border-top-left-radius: 0.5rem; border-bottom-left-radius: 0;
border-top-right-radius: 0.5rem; border-bottom-right-radius: var(--border-radius-1);
border-bottom-right-radius: 0.5rem;
backdrop-filter: var(--taskbar-filter);
transform: none;
transition: opacity 200ms ease-in-out, transform 200ms ease-in-out;
overflow: hidden;
resize: horizontal;
}
.Container-inner::after {
opacity: var(--taskbar-menu-opacity);
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: var(--taskbar-menu-color);
z-index: -2;
}
.Container-outer:not(.Active) {
pointer-events: none;
}
.Container-outer:not(.Active) .Container-inner {
opacity: 0;
transform: translateY(100px);
} }
.Buttons { .Buttons {

View file

@ -1,6 +1,7 @@
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import styles from "./HomeMenu.module.css"; import styles from "./HomeMenu.module.css";
import appStyles from "./AppList.module.css"; import appStyles from "./AppList.module.css";
import taskbarStyles from "../Taskbar.module.css";
import { faCircleInfo, faFileLines, faGear, faImage, faPowerOff } from "@fortawesome/free-solid-svg-icons"; import { faCircleInfo, faFileLines, faGear, faImage, faPowerOff } from "@fortawesome/free-solid-svg-icons";
import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext"; import { useWindowsManager } from "../../../hooks/windows/windowsManagerContext";
import AppsManager from "../../../features/apps/appsManager"; import AppsManager from "../../../features/apps/appsManager";
@ -29,9 +30,9 @@ export function HomeMenu({ active, setActive, search }: HomeMenuProps) {
setTabIndex(active ? 0 : -1); setTabIndex(active ? 0 : -1);
}, [active]); }, [active]);
const classNames = [styles["Container-outer"]]; const classNames = [styles["Container-outer"], taskbarStyles["Menu-outer"]];
if (active) if (active)
classNames.push(styles.Active); classNames.push(taskbarStyles.Active);
let onlyAltKey = false; let onlyAltKey = false;
const onKeyDown = (event: KeyboardEvent) => { const onKeyDown = (event: KeyboardEvent) => {
@ -61,7 +62,7 @@ export function HomeMenu({ active, setActive, search }: HomeMenuProps) {
return ( return (
<div className={classNames.join(" ")}> <div className={classNames.join(" ")}>
<div className={styles["Container-inner"]}> <div className={`${styles["Container-inner"]} ${taskbarStyles["Menu-inner"]}`}>
<div className={styles.Buttons}> <div className={styles.Buttons}>
<button title="Shut Down" tabIndex={tabIndex} onClick={() => { closeViewport(true); }}> <button title="Shut Down" tabIndex={tabIndex} onClick={() => { closeViewport(true); }}>
<FontAwesomeIcon icon={faPowerOff}/> <FontAwesomeIcon icon={faPowerOff}/>

View file

@ -17,9 +17,9 @@
min-width: 13rem; min-width: 13rem;
max-width: 19rem; max-width: 19rem;
padding: 0.5rem; padding: 0.5rem;
border-top-left-radius: 0.5rem; border-top-left-radius: var(--border-radius-1);
border-top-right-radius: 0.5rem; border-top-right-radius: var(--border-radius-1);
border-bottom-right-radius: 0.5rem; border-bottom-right-radius: var(--border-radius-1);
backdrop-filter: var(--taskbar-filter); backdrop-filter: var(--taskbar-filter);
transform: none; transform: none;
transition: opacity 200ms ease-in-out, transform 200ms ease-in-out; transition: opacity 200ms ease-in-out, transform 200ms ease-in-out;

View file

@ -9,9 +9,9 @@
.Container-inner { .Container-inner {
opacity: 1; opacity: 1;
display: flex; display: flex;
border-top-left-radius: 0.5rem; border-top-left-radius: var(--border-radius-1);
border-top-right-radius: 0.5rem; border-top-right-radius: var(--border-radius-1);
border-bottom-left-radius: 0.5rem; border-bottom-left-radius: var(--border-radius-1);
backdrop-filter: var(--taskbar-filter); backdrop-filter: var(--taskbar-filter);
transform: none; transform: none;
transition: opacity 200ms ease-in-out, transform 200ms ease-in-out; transition: opacity 200ms ease-in-out, transform 200ms ease-in-out;

View file

@ -13,10 +13,10 @@ export function ThemeProvider({ children }: ThemeProviderProps): ReactElement {
const themeSettings = settingsManager.get(SettingsManager.VIRTUAL_PATHS.theme); const themeSettings = settingsManager.get(SettingsManager.VIRTUAL_PATHS.theme);
useEffect(() => { useEffect(() => {
void themeSettings.get("theme", (value: string) => { setTheme(parseInt(value)); }); void themeSettings.get("theme", (value: string) => { setTheme(parseInt(value) || 0); });
}, [themeSettings]); }, [themeSettings]);
return <div className={`${THEMES[theme]}-theme`}> return <div className={`${THEMES[theme ?? 0]}-theme`}>
{children} {children}
</div>; </div>;
} }