diff --git a/assets/css/breakpoints.css b/assets/css/breakpoints.css index f6f0ef0..df46020 100644 --- a/assets/css/breakpoints.css +++ b/assets/css/breakpoints.css @@ -1,3 +1,5 @@ +@custom-media --small-50 (max-width: 350px); +@custom-media --small-40 (max-width: 480px); @custom-media --small-30 (max-width: 540px); @custom-media --small-20 (max-width: 650px); @custom-media --small-10 (max-width: 768px); diff --git a/components/footer/navigation.vue b/components/footer/navigation.vue new file mode 100644 index 0000000..f886f0b --- /dev/null +++ b/components/footer/navigation.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/components/header/header.vue b/components/header/header.vue index 26568a1..a4cfe14 100644 --- a/components/header/header.vue +++ b/components/header/header.vue @@ -159,7 +159,8 @@ async function logout() { display: flex; align-items: center; justify-content: space-between; - z-index: 1000; /* make sure shadow shows up above content */ + position: relative; + z-index: 100; /* make sure shadow shows up above content */ box-shadow: 0 0 3px var(--shadow-weak-10); } @@ -192,6 +193,7 @@ async function logout() { &:hover { text-decoration: none; + color: var(--primary); } } @@ -223,6 +225,10 @@ async function logout() { border: none; margin: 0; background: none; + + &:placeholder-shown { + text-overflow: ellipsis; + } } .search-button { @@ -321,7 +327,7 @@ async function logout() { @media(--small) { .search .input { - width: 10rem; + width: 12rem; } } @@ -329,5 +335,18 @@ async function logout() { .nav-list { display: none; } + + .header-section { + flex-grow: 1; + } + + .search { + flex-grow: 1; + } + + .search .input { + width: 0; + flex-grow: 1; + } } diff --git a/components/scenes/scenes.vue b/components/scenes/scenes.vue index bf99688..de6ff14 100644 --- a/components/scenes/scenes.vue +++ b/components/scenes/scenes.vue @@ -299,19 +299,23 @@ function updateFilter(prop, value, reload = true) { } .scopes { - margin-left: 1rem; + display: flex; + gap: .5rem; + margin: .75rem 0 .25rem 1rem; } .scope { box-sizing: border-box; - padding: 1rem; + padding: .5rem 1rem; + background: var(--background-dark-20); + border-radius: 1rem; color: var(--shadow); font-size: .9rem; font-weight: bold; &.active { - color: var(--primary); - font-weight: bold; + background: var(--primary); + color: var(--text-light); } } diff --git a/components/sidebar/sidebar.vue b/components/sidebar/sidebar.vue new file mode 100644 index 0000000..524d469 --- /dev/null +++ b/components/sidebar/sidebar.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/renderer/container.vue b/renderer/container.vue index 491e7bc..51e2b21 100644 --- a/renderer/container.vue +++ b/renderer/container.vue @@ -3,6 +3,13 @@ class="container" @click="blur" > + + + +
+ + @@ -19,9 +31,12 @@ import { ref, onMounted } from 'vue'; import events from '#/src/events.js'; -import Header from '../components/header/header.vue'; +import Header from '#/components/header/header.vue'; +import Sidebar from '#/components/sidebar/sidebar.vue'; +import BottomNavigation from '#/components/footer/navigation.vue'; const content = ref(null); +const showSidebar = ref(false); function blur() { events.emit('blur'); @@ -44,6 +59,28 @@ onMounted(() => { display: flex; align-items: center; } + +.slide-enter-active, +.slide-leave-active { + &.sidebar-container { + transition: background .15s ease-in-out; + } + + .sidebar { + transition: transform .15s ease-in-out; + } +} + +.slide-enter-from, +.slide-leave-to { + &.sidebar-container { + background: transparent; + } + + .sidebar { + transform: translate(100%, 0); + } +}