ui: fix menu in mobile
This commit is contained in:
parent
7386c9342f
commit
c28dffdfa6
@ -4,6 +4,7 @@
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>GB Light Control System</title>
|
||||
%sveltekit.head%
|
||||
</head>
|
||||
<body data-sveltekit-preload-data="hover" class="h-full">
|
||||
|
4
apps/front/src/lib/client/components/icons/bars3.svelte
Normal file
4
apps/front/src/lib/client/components/icons/bars3.svelte
Normal file
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||||
class="shrink-0 {$$props.size ? `size-${$$props.size}` : 'size-6'} {$$props.class || ''}">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
|
||||
</svg>
|
After Width: | Height: | Size: 325 B |
@ -1,5 +1,6 @@
|
||||
export { default as IconArrowUturnLeft } from './arrowUturnLeft.svelte';
|
||||
export { default as IconArrowUturnRight } from './arrowUturnRight.svelte';
|
||||
export { default as IconBars3 } from './bars3.svelte';
|
||||
export { default as IconBell } from './bell.svelte';
|
||||
export { default as IconBuildingOffice2 } from './buildingOffice2.svelte';
|
||||
export { default as IconBulb } from './bulb.svelte';
|
||||
@ -10,6 +11,7 @@ export { default as IconCpuChip } from './cpuChip.svelte';
|
||||
export { default as IconCursorArrowRays } from './cursorArrowRays.svelte';
|
||||
export { default as IconExclamationTriangle } from './exclamationTriangle.svelte';
|
||||
export { default as IconHome } from './home.svelte';
|
||||
export { default as IconMagnifyingGlass } from './magnifyingGlass.svelte';
|
||||
export { default as IconMap } from './map.svelte';
|
||||
export { default as IconUser } from './user.svelte';
|
||||
export { default as IconUsers } from './users.svelte';
|
||||
|
@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||||
class="shrink-0 {$$props.size ? `size-${$$props.size}` : 'size-6'} {$$props.class || ''}">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" />
|
||||
</svg>
|
After Width: | Height: | Size: 358 B |
@ -1,109 +1,42 @@
|
||||
<script lang="ts">
|
||||
import '../app.css';
|
||||
import Login from '$lib/client/components/Login.svelte';
|
||||
import Login from '$lib/client/components/login.svelte';
|
||||
import { auth } from '$lib/client/stores/auth';
|
||||
import Nav from '$lib/client/components/nav.svelte';
|
||||
import {
|
||||
IconBars3, IconBell, IconMagnifyingGlass, IconXMark
|
||||
} from '$lib/client/components/icons';
|
||||
import { fly, fade } from 'svelte/transition'
|
||||
|
||||
let showSidePanel = false, width
|
||||
function toggleSidePanel() {
|
||||
showSidePanel = !showSidePanel
|
||||
}
|
||||
|
||||
// import { onMount } from 'svelte';
|
||||
let isDropdownOpen = false;
|
||||
|
||||
const toggleDropdown = (): void => {
|
||||
isDropdownOpen = !isDropdownOpen;
|
||||
};
|
||||
|
||||
// const handleClickOutside = (event: MouseEvent): void => {
|
||||
// if (!(event.target as Element).closest('.dropdown-container')) {
|
||||
// isDropdownOpen = false;
|
||||
// }
|
||||
// };
|
||||
|
||||
// // Close the dropdown if the user clicks outside of it
|
||||
// onMount(() => {
|
||||
// window.addEventListener('click', handleClickOutside);
|
||||
|
||||
// return () => {
|
||||
// window.removeEventListener('click', handleClickOutside);
|
||||
// };
|
||||
// });
|
||||
</script>
|
||||
|
||||
{#if $auth.isSignedIn}
|
||||
<!--
|
||||
This example requires some changes to your config:
|
||||
|
||||
```
|
||||
// tailwind.config.js
|
||||
module.exports = {
|
||||
// ...
|
||||
plugins: [
|
||||
// ...
|
||||
require('@tailwindcss/forms'),
|
||||
],
|
||||
}
|
||||
```
|
||||
-->
|
||||
<!--
|
||||
This example requires updating your template:
|
||||
|
||||
```
|
||||
<html class="h-full bg-white">
|
||||
<body class="h-full">
|
||||
```
|
||||
-->
|
||||
<div>
|
||||
<!-- Off-canvas menu for mobile, show/hide based on off-canvas menu state. -->
|
||||
{#if showSidePanel}
|
||||
<div class="relative z-50 lg:hidden" role="dialog" aria-modal="true">
|
||||
<!--
|
||||
Off-canvas menu backdrop, show/hide based on off-canvas menu state.
|
||||
<div class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" transition:fade/>
|
||||
|
||||
Entering: "transition-opacity ease-linear duration-300"
|
||||
From: "opacity-0"
|
||||
To: "opacity-100"
|
||||
Leaving: "transition-opacity ease-linear duration-300"
|
||||
From: "opacity-100"
|
||||
To: "opacity-0"
|
||||
-->
|
||||
<div class="fixed inset-0 bg-gray-900/80"></div>
|
||||
|
||||
<div class="fixed inset-0 flex">
|
||||
<!--
|
||||
Off-canvas menu, show/hide based on off-canvas menu state.
|
||||
|
||||
Entering: "transition ease-in-out duration-300 transform"
|
||||
From: "-translate-x-full"
|
||||
To: "translate-x-0"
|
||||
Leaving: "transition ease-in-out duration-300 transform"
|
||||
From: "translate-x-0"
|
||||
To: "-translate-x-full"
|
||||
-->
|
||||
<div bind:clientWidth={width} transition:fly={{ x: -width }} class="fixed inset-0 flex">
|
||||
<div class="relative mr-16 flex w-full max-w-xs flex-1">
|
||||
<!--
|
||||
Close button, show/hide based on off-canvas menu state.
|
||||
|
||||
Entering: "ease-in-out duration-300"
|
||||
From: "opacity-0"
|
||||
To: "opacity-100"
|
||||
Leaving: "ease-in-out duration-300"
|
||||
From: "opacity-100"
|
||||
To: "opacity-0"
|
||||
-->
|
||||
<div class="absolute left-full top-0 flex w-16 justify-center pt-5">
|
||||
<button type="button" class="-m-2.5 p-2.5">
|
||||
<button type="button" class="-m-2.5 p-2.5" on:click={toggleSidePanel}>
|
||||
<span class="sr-only">Close sidebar</span>
|
||||
<svg
|
||||
class="h-6 w-6 text-white"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
||||
</svg>
|
||||
<IconXMark class="text-white" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Sidebar component, swap this element with another sidebar if you like -->
|
||||
<!-- Sidebar component -->
|
||||
<div
|
||||
class="flex grow flex-col gap-y-5 overflow-y-auto bg-gray-900 px-6 pb-4 ring-1 ring-white/10"
|
||||
>
|
||||
@ -112,10 +45,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Static sidebar for desktop -->
|
||||
<div class="hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-72 lg:flex-col">
|
||||
<!-- Sidebar component, swap this element with another sidebar if you like -->
|
||||
<!-- Sidebar component -->
|
||||
<div class="flex grow flex-col gap-y-5 overflow-y-auto bg-gray-900 px-6 pb-4">
|
||||
<Nav />
|
||||
</div>
|
||||
@ -125,22 +59,9 @@
|
||||
<div
|
||||
class="sticky top-0 z-40 flex h-16 shrink-0 items-center gap-x-4 border-b border-gray-200 bg-white px-4 shadow-sm sm:gap-x-6 sm:px-6 lg:px-8"
|
||||
>
|
||||
<button type="button" class="-m-2.5 p-2.5 text-gray-700 lg:hidden">
|
||||
<button type="button" class="-m-2.5 p-2.5 text-gray-700 lg:hidden" on:click={toggleSidePanel}>
|
||||
<span class="sr-only">Open sidebar</span>
|
||||
<svg
|
||||
class="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
|
||||
/>
|
||||
</svg>
|
||||
<IconBars3 />
|
||||
</button>
|
||||
|
||||
<!-- Separator -->
|
||||
@ -149,18 +70,7 @@
|
||||
<div class="flex flex-1 gap-x-4 self-stretch lg:gap-x-6">
|
||||
<form class="relative flex flex-1" action="#" method="GET">
|
||||
<label for="search-field" class="sr-only">Search</label>
|
||||
<svg
|
||||
class="pointer-events-none absolute inset-y-0 left-0 h-full w-5 text-gray-400"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
<IconMagnifyingGlass class="pointer-events-none absolute inset-y-0 left-0 h-full w-5 text-gray-400" />
|
||||
<input
|
||||
id="search-field"
|
||||
class="block h-full w-full border-0 py-0 pl-8 pr-0 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm"
|
||||
@ -172,20 +82,7 @@
|
||||
<div class="flex items-center gap-x-4 lg:gap-x-6">
|
||||
<button type="button" class="-m-2.5 p-2.5 text-gray-400 hover:text-gray-500">
|
||||
<span class="sr-only">View notifications</span>
|
||||
<svg
|
||||
class="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"
|
||||
/>
|
||||
</svg>
|
||||
<IconBell />
|
||||
</button>
|
||||
|
||||
<!-- Separator -->
|
||||
@ -247,7 +144,7 @@
|
||||
>
|
||||
<!-- Active: "bg-gray-50", Not Active: "" -->
|
||||
<a
|
||||
href="#"
|
||||
href="/"
|
||||
class="block px-3 py-1 text-sm leading-6 text-gray-900"
|
||||
role="menuitem"
|
||||
tabindex="-1"
|
||||
|
@ -1,6 +1,5 @@
|
||||
<script lang="ts">
|
||||
import Map from '$lib/client/components/map.svelte';
|
||||
import Table from '$lib/client/components/table.svelte';
|
||||
import ToggleSwitch from '$lib/client/components/toggle.svelte';
|
||||
import {
|
||||
IconArrowUturnLeft,
|
||||
@ -8,7 +7,7 @@
|
||||
IconCheck,
|
||||
IconCursorArrowRays,
|
||||
IconXMark
|
||||
} from '../../lib/client/components/icons';
|
||||
} from '$lib/client/components/icons';
|
||||
|
||||
let initialValueForSwitch: boolean = true;
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user