import type { ComponentProps, JSX } from 'solid-js'; import { Window } from '@tauri-apps/api/window'; import { ChevronLeftIcon, Maximize02Icon, MinusIcon, XCloseIcon } from '@untitled-theme/icons-solid'; import useSettings from '~ui/hooks/useSettings'; import { onMount, Show } from 'solid-js'; import Button from './base/Button'; import Modal, { createModal } from './overlay/Modal'; interface TitlebarButtonProps { icon: (props: ComponentProps<'svg'>) => JSX.Element; onClick: (event: MouseEvent) => void; danger?: boolean; } function TitlebarButton(props: TitlebarButtonProps) { return ( props.onClick(e)}> ); } const maximize = () => Window.getCurrent().toggleMaximize(); const minimize = () => Window.getCurrent().minimize(); const quit = () => Window.getCurrent().close(); const kill = () => Window.getCurrent().destroy(); function WindowFrame() { const { settings } = useSettings(); const modal = createModal(props => ( props.hide()}>No, kill()}>Yes, ]} title="Close OneLauncher?" /> )); onMount(() => { Window.getCurrent().onCloseRequested((event) => { if (settings().hide_close_prompt !== true) { event.preventDefault(); modal.show(); } }); }); return ( history.back()} /> minimize()} /> maximize()} /> quit()} /> ); } export default WindowFrame;