11<template >
22 <ul :class =" classes.wrapper" >
3- <router-link :class =" tw`mr-6`" to =" /" >
4- <img
5- :class ="
6- tw`w-6 transition ease-in-out duration-200 transform scale-100 hover:scale-110`
7- "
8- src =" @/views/assets/images/logo-detailed.svg"
9- alt =" Vue Zephyrs"
10- />
11- </router-link >
12- <ul :class =" tw`flex items-center space-x-4`" >
13- <li >
14- <Link to =" /docs/install" variant =" button" >Documentation</Link >
3+ <div :class =" tw`flex items-stretch justify-between`" >
4+ <router-link :class =" tw`mr-2 flex items-center`" to =" /" >
5+ <img
6+ :class =" [tw`w-9 p-2.5`, classes.options.item]"
7+ src =" @/views/assets/images/logo-detailed.svg"
8+ alt =" Vue Zephyrs"
9+ />
10+ <span :class =" tw`inline-block md:hidden mt-0.5 ml-3 font-bold text-lg`"
11+ >Vue Zephyrs</span
12+ >
13+ </router-link >
14+ <button
15+ @click =" navIsOpen = !navIsOpen"
16+ :class =" [classes.options.item, tw`md:hidden`]"
17+ >
18+ <svg
19+ :class =" tw`w-4`"
20+ xmlns =" http://www.w3.org/2000/svg"
21+ fill =" none"
22+ viewBox =" 0 0 24 24"
23+ stroke =" currentColor"
24+ >
25+ <path
26+ stroke-linecap =" round"
27+ stroke-linejoin =" round"
28+ stroke-width =" 2"
29+ d =" M4 6h16M4 12h16M4 18h16"
30+ />
31+ </svg >
32+ </button >
33+ </div >
34+ <ul :class =" classes.nav.wrapper" >
35+ <li :class =" classes.nav.item" >
36+ <div :class =" tw`inline-block`" @click =" navIsOpen = false" >
37+ <Link to =" /docs/install" variant =" button" >Documentation</Link >
38+ </div >
1539 </li >
16- <li >
17- <Link to =" /guides" variant =" button" >Guides</Link >
40+ <li :class =" classes.nav.item" >
41+ <div :class =" tw`inline-block`" @click =" navIsOpen = false" >
42+ <Link to =" /guides" variant =" button" >Guides</Link >
43+ </div >
1844 </li >
19- <li >
20- <Anchor href =" https://twitter.com/usezephyr" variant =" button" newTab >
21- Updates
22- </Anchor >
45+ <li :class =" classes.nav.item" >
46+ <div :class =" tw`inline-block`" @click =" navIsOpen = false" >
47+ <Anchor href =" https://twitter.com/usezephyr" variant =" button" newTab >
48+ Updates
49+ </Anchor >
50+ </div >
2351 </li >
2452 </ul >
25- <div :class =" tw`flex items-center ml-auto space-x-2`" >
26- <LightSwitch
27- :class ="
28- tw`items-center inline-flex space-x-2 uppercase cursor-pointer select-none text(gray-500 dark:gray-300 hover:dark:white hover:green-700) px-2.5 py-2 rounded hover:(bg(green-100 dark:gray-700 opacity-50 dark:opacity-50))`
29- "
30- />
53+ <div :class =" classes.options.wrapper" >
54+ <LightSwitch :class =" [classes.options.item, tw`px-3`]" />
3155 <Dropdown >
32- <DropdownButton
33- as =" button"
34- classAppend =" items-center uppercase cursor-pointer inline-flex space-x-2 text(gray-500 dark:gray-300 hover:dark:white hover:green-700) px-2.5 py-2 rounded hover:(bg(green-100 dark:gray-700 opacity-50 dark:opacity-50))"
35- >
56+ <DropdownButton as =" button" :class =" classes.options.item" >
3657 <div >{{ locale === "zh-CN" ? "中文" : locale }}</div >
3758 <svg
38- :class =" tw`w-5`"
59+ :class =" tw`w-4 md:w- 5`"
3960 xmlns =" http://www.w3.org/2000/svg"
4061 viewBox =" 0 0 20 20"
4162 fill =" currentColor"
6283</template >
6384
6485<script lang="ts">
65- import { defineComponent , computed } from " vue" ;
86+ import { defineComponent , computed , ref } from " vue" ;
6687import { tw } from " twind" ;
6788import { toTitleCase } from " @/views/utils/stringMods" ;
6889import { locale , updateLocale } from " @/views/utils/locale" ;
@@ -75,6 +96,7 @@ export default defineComponent({
7596 Link ,
7697 },
7798 setup() {
99+ const navIsOpen = ref (false );
78100 const links = [
79101 {
80102 href: null ,
@@ -96,12 +118,32 @@ export default defineComponent({
96118 ];
97119 const classes = computed (() => {
98120 return {
99- wrapper: tw (
100- " relative z-10 flex items-center rounded py-4 px-8 bg-gray-50 dark:bg-gray-800"
101- ),
121+ wrapper: tw ` relative z-10 flex flex-col md:flex-row items-stretch rounded p-5 md:(px-8 px-6) bg-gray-50 dark:bg-gray-800 ` ,
122+ nav: {
123+ wrapper: [
124+ ! navIsOpen .value ? tw ` hidden md:flex ` : tw ` flex ` ,
125+ tw ` flex-col md:flex-row md:items-center md:space-x-2 border-y border-gray-200 dark:border-gray-700 my-4 py-4 md:(border-0 py-0 my-0) ` ,
126+ ],
127+ item: " " ,
128+ },
129+ options: {
130+ wrapper: [
131+ ! navIsOpen .value ? tw ` hidden md:flex ` : tw ` flex ` ,
132+ tw ` items-stretch justify-between md:justify-start md:ml-auto space-x-2 ` ,
133+ ],
134+ item: tw ` text-sm md:text-base items-center flex space-x-2 uppercase cursor-pointer select-none text(gray-500 dark:gray-300 hover:dark:white hover:green-700) px-2 py-1.5 md:px-2.5 md:py-2 rounded bg-gray-100 dark:bg-gray-700 hover:(bg(green-100 dark:gray-600 opacity-50 dark:opacity-50)) ` ,
135+ },
102136 };
103137 });
104- return { tw , links , updateLocale , locale , classes , toTitleCase };
138+ return {
139+ tw ,
140+ links ,
141+ updateLocale ,
142+ locale ,
143+ classes ,
144+ toTitleCase ,
145+ navIsOpen ,
146+ };
105147 },
106148});
107149 </script >
0 commit comments