2023-08-27 22:25:41 +08:00
|
|
|
import { A, useLocation, useNavigate } from '@solidjs/router'
|
2023-08-24 04:20:53 +08:00
|
|
|
import {
|
|
|
|
IconFileStack,
|
|
|
|
IconGlobe,
|
|
|
|
IconHome,
|
|
|
|
IconNetwork,
|
|
|
|
IconNetworkOff,
|
2023-08-28 22:28:30 +08:00
|
|
|
IconPalette,
|
2023-08-24 04:20:53 +08:00
|
|
|
IconRuler,
|
|
|
|
IconSettings,
|
|
|
|
} from '@tabler/icons-solidjs'
|
2023-08-27 22:25:41 +08:00
|
|
|
import { For, Show } from 'solid-js'
|
|
|
|
import { themes } from '~/constants'
|
|
|
|
import { setCurTheme, setSelectedEndpoint } from '~/signals'
|
2023-08-24 04:20:53 +08:00
|
|
|
|
|
|
|
export const Header = () => {
|
2023-08-27 22:25:41 +08:00
|
|
|
const location = useLocation()
|
2023-08-24 04:20:53 +08:00
|
|
|
const navigate = useNavigate()
|
|
|
|
|
|
|
|
return (
|
2023-08-28 22:28:30 +08:00
|
|
|
<ul class="menu rounded-box menu-horizontal sticky left-0 top-0 z-10 flex items-center justify-center gap-2 bg-base-200 p-2">
|
2023-08-27 22:25:41 +08:00
|
|
|
<Show when={location.pathname !== '/setup'}>
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A class="tooltip tooltip-bottom" href="/" data-tip="Home">
|
|
|
|
<IconHome />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A class="tooltip tooltip-bottom" href="/proxies" data-tip="Proxies">
|
|
|
|
<IconGlobe />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A class="tooltip tooltip-bottom" href="/rules" data-tip="Rules">
|
|
|
|
<IconRuler />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A
|
|
|
|
class="tooltip tooltip-bottom"
|
|
|
|
href="/conns"
|
|
|
|
data-tip="Connections"
|
|
|
|
>
|
|
|
|
<IconNetwork />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A class="tooltip tooltip-bottom" href="/logs" data-tip="Logs">
|
|
|
|
<IconFileStack />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<A class="tooltip tooltip-bottom" href="/config" data-tip="Config">
|
|
|
|
<IconSettings />
|
|
|
|
</A>
|
|
|
|
</li>
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<li>
|
|
|
|
<button
|
|
|
|
class="tooltip tooltip-bottom"
|
|
|
|
data-tip="Switch Endpoint"
|
|
|
|
onClick={() => {
|
|
|
|
setSelectedEndpoint('')
|
2023-08-24 04:20:53 +08:00
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
navigate('/setup')
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
<IconNetworkOff />
|
|
|
|
</button>
|
|
|
|
</li>
|
2023-08-27 22:25:41 +08:00
|
|
|
</Show>
|
|
|
|
|
2023-08-28 22:28:30 +08:00
|
|
|
<div class="drawer drawer-end w-auto sm:ml-auto">
|
2023-08-27 22:25:41 +08:00
|
|
|
<input id="themes" type="checkbox" class="drawer-toggle" />
|
|
|
|
|
2023-08-28 22:53:29 +08:00
|
|
|
<div class="drawer-content flex items-center">
|
2023-08-28 22:28:30 +08:00
|
|
|
<label for="themes" class="btn btn-primary drawer-button btn-sm">
|
|
|
|
<IconPalette />
|
2023-08-27 22:25:41 +08:00
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="drawer-side">
|
|
|
|
<label for="themes" class="drawer-overlay" />
|
|
|
|
|
|
|
|
<ul class="menu rounded-box z-50 gap-2 bg-base-300 p-2 shadow">
|
|
|
|
<For each={themes}>
|
|
|
|
{(theme) => (
|
|
|
|
<li
|
|
|
|
data-theme={theme}
|
|
|
|
class="btn btn-xs"
|
|
|
|
onClick={() => setCurTheme(theme)}
|
|
|
|
>
|
|
|
|
{theme}
|
|
|
|
</li>
|
|
|
|
)}
|
|
|
|
</For>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-08-28 22:28:30 +08:00
|
|
|
</ul>
|
2023-08-24 04:20:53 +08:00
|
|
|
)
|
|
|
|
}
|