diff --git a/assets/css/_mixins.scss b/assets/css/_mixins.scss index a22ce3a..11a6c8e 100644 --- a/assets/css/_mixins.scss +++ b/assets/css/_mixins.scss @@ -31,3 +31,17 @@ @content; } } + +@mixin container { + max-width: 1280px; + margin: auto; + padding: 0 40px; + + @include desktop { + padding: 0 40px; + } + + @include tablet { + padding: 0 20px; + } +} diff --git a/assets/svg/howdy.svg b/assets/svg/howdy.svg index bb2caaf..3c5215e 100644 --- a/assets/svg/howdy.svg +++ b/assets/svg/howdy.svg @@ -25,15 +25,15 @@ inkscape:deskcolor="#505050" inkscape:document-units="px" showgrid="false" - inkscape:zoom="2.7666799" - inkscape:cx="225.54109" - inkscape:cy="121.08376" + inkscape:zoom="1.9557888" + inkscape:cx="148.78907" + inkscape:cy="221.13839" inkscape:window-width="1440" - inkscape:window-height="900" + inkscape:window-height="847" inkscape:window-x="0" - inkscape:window-y="0" + inkscape:window-y="25" inkscape:window-maximized="0" - inkscape:current-layer="g38429" /><defs + inkscape:current-layer="g15740" /><defs id="defs520"><linearGradient inkscape:collect="always" id="linearGradient35336"><stop @@ -323,7 +323,7 @@ style="fill:#242a7a;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" d="m 38.67118,11.926483 a 2.6521345,2.6521345 0 0 0 -0.76797,0.114203 2.6521345,2.6521345 0 0 1 1.881938,2.538125 2.6521345,2.6521345 0 0 1 -1.882906,2.537157 2.6521345,2.6521345 0 0 0 0.768938,0.114687 2.6521345,2.6521345 0 0 0 2.652328,-2.651844 2.6521345,2.6521345 0 0 0 -2.652328,-2.652328 z" /></g><g id="g15740" - transform="translate(-2.4776356)"><rect + transform="translate(-6.8106973)"><rect style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991051;stroke-linecap:round" id="rect5880" width="34.134068" @@ -374,7 +374,8 @@ y="79.47654" /><path id="rect3649" style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991051;stroke-linecap:round" - d="M 8.6589027,25.765868 V 93.67645 H 44.21177 V 25.765868 Z m 1.8701703,2.026233 H 42.3416 V 91.650217 H 10.529073 Z" /><path + d="M 8.6589027,25.765868 V 93.67645 H 46.689406 V 25.765868 Z m 1.8701703,2.026233 H 44.819236 V 91.650217 H 10.529073 Z" + sodipodi:nodetypes="cccccccccc" /><path id="path5948" style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991051;stroke-linecap:round" d="m 14.169607,32.625517 -2.121318,10.029879 13.01936,0.09663 0.77153,-10.126514 h -0.03204 l -0.06408,0.482141 -1.071252,-0.482141 h -1.029395 l -0.599963,1.349789 -0.213424,-1.349789 h -2.737817 l -1.099158,1.157036 0.40256,-1.157036 h -3.010152 l -0.285771,1.543059 -0.192753,-1.543059 z" /><rect @@ -491,39 +492,35 @@ width="2.2448759" height="2.5402541" x="30.662273" - y="49.08741" /><rect - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + y="49.08741" /><path id="rect34359" - width="8.2705946" - height="3.0128596" - x="29.480762" - y="38.631016" /><rect - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + style="fill:#333aa7;stroke-width:0.991054;stroke-linecap:round" + d="m 29.480762,38.757698 h 13.225866 v 3.012859 H 29.480762 Z" + sodipodi:nodetypes="ccccc" /><path id="rect34361" - width="8.2705946" - height="3.0128596" - x="30.780428" - y="35.204628" /><rect - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + style="fill:#333aa7;stroke-width:0.991054;stroke-linecap:round" + d="m 30.780428,35.33131 h 13.225866 v 3.01286 H 30.780428 Z" + sodipodi:nodetypes="ccccc" /><path id="rect34363" - width="8.2705946" - height="3.0128596" - x="29.539839" - y="31.778238" /></g><path - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" - d="m 9.6273615,13.290308 c 0,0 2.4257565,-4.8515125 4.7706545,-3.4769173 2.344898,1.3745953 1.69803,2.5066153 1.69803,2.5066153 l -1e-6,3.800351 c 0,0 -0.485151,-4.528078 -0.970302,-3.962069 -0.485151,0.56601 -5.4983815,1.13202 -5.4983815,1.13202 z" - id="path14608" - sodipodi:nodetypes="csccsc" /><path - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" - d="m 16.500338,13.775459 c 0,0 -0.56601,-14.63539619 12.371357,-6.872976 0,0 -9.622166,1.9406053 -10.51161,2.5066151 -0.889444,0.5660098 -0.889444,0.5660098 -0.889444,0.5660098 z" - id="path14604" /><path - style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" - d="m 15.691752,14.341469 c 0,0 2.021464,-8.4901469 -3.153483,-10.1073178 C 7.3633224,2.6169802 4.048122,5.689605 4.048122,5.689605 c 0,0 4.44722,3.1534832 6.872976,3.0726246 0,0 4.204644,-3.0726253 4.770654,5.5792394 z" - id="path14606" /><path - style="fill:#242a7a;fill-opacity:1;stroke:none;stroke-width:0.991055;stroke-linecap:round" - d="M 12.260576,25.059735 C 11.30123,22.199954 10.183681,20.052087 9.9217982,14.053724 l 11.5563108,0.137575 c -0.414782,3.805903 -0.378668,7.686954 -2.889078,11.143586 L 12.810876,25.19731 Z" - id="path14375" - sodipodi:nodetypes="cccccc" /></g><g + style="fill:#333aa7;stroke-width:0.991054;stroke-linecap:round" + d="m 29.539839,31.90492 h 13.225865 v 3.01286 H 29.539839 Z" + sodipodi:nodetypes="ccccc" /></g><g + id="g456" + transform="translate(-1.4865814)"><path + style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + d="m 9.6273615,13.290308 c 0,0 2.4257565,-4.8515125 4.7706545,-3.4769173 2.344898,1.3745953 1.69803,2.5066153 1.69803,2.5066153 l -1e-6,3.800351 c 0,0 -0.485151,-4.528078 -0.970302,-3.962069 -0.485151,0.56601 -5.4983815,1.13202 -5.4983815,1.13202 z" + id="path14608" + sodipodi:nodetypes="csccsc" /><path + style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + d="m 16.500338,13.775459 c 0,0 -0.56601,-14.63539619 12.371357,-6.872976 0,0 -9.622166,1.9406053 -10.51161,2.5066151 -0.889444,0.5660098 -0.889444,0.5660098 -0.889444,0.5660098 z" + id="path14604" /><path + style="fill:#333aa7;fill-opacity:1;stroke:none;stroke-width:0.991054;stroke-linecap:round" + d="m 15.691752,14.341469 c 0,0 2.021464,-8.4901469 -3.153483,-10.1073178 C 7.3633224,2.6169802 4.048122,5.689605 4.048122,5.689605 c 0,0 4.44722,3.1534832 6.872976,3.0726246 0,0 4.204644,-3.0726253 4.770654,5.5792394 z" + id="path14606" /><path + style="fill:#242a7a;fill-opacity:1;stroke:none;stroke-width:0.991055;stroke-linecap:round" + d="M 12.260576,25.059735 C 11.30123,22.199954 10.183681,20.052087 9.9217982,14.053724 l 11.5563108,0.137575 c -0.414782,3.805903 -0.378668,7.686954 -2.889078,11.143586 L 12.810876,25.19731 Z" + id="path14375" + sodipodi:nodetypes="cccccc" /></g></g><g id="g4098" transform="matrix(0.81394182,0,0,0.81730231,19.379908,30.942881)" style="stroke-width:1.22606"><rect diff --git a/components/layout/LayoutHeader.vue b/components/layout/LayoutHeader.vue new file mode 100644 index 0000000..47b5910 --- /dev/null +++ b/components/layout/LayoutHeader.vue @@ -0,0 +1,43 @@ +<template> + <div :class="$style.header"> + <NuxtLink to="/" :activeClass="$style.active">Home</NuxtLink> + <NuxtLink to="/bio" :activeClass="$style.active">About me</NuxtLink> + </div> +</template> + +<script lang="ts" setup></script> + +<style lang="scss" module> +.header { + text-align: left; + padding: 22px 0; + + a { + color: var(--color-text); + text-decoration: none; + padding: 0 25px 0 0; + position: relative; + + &.active { + color: var(--color-link); + + &::after { + right: 28px; + left: 3px; + background: var(--color-link); + } + } + + &::after { + content: ""; + background: var(--color-text); + position: absolute; + height: 2px; + bottom: -6px; + left: 50%; + right: 50%; + transition: all 0.25s; + } + } +} +</style> diff --git a/layouts/content.vue b/layouts/content.vue index c5b9d97..7341893 100644 --- a/layouts/content.vue +++ b/layouts/content.vue @@ -17,19 +17,11 @@ height: 100%; display: flex; flex-direction: column; + padding-top: 40px; } .content { flex: 1; - padding: 40px 120px; - - @include desktop { - padding: 40px 40px 20px 40px; - } - - @include tablet { - padding: 40px 20px 20px 20px; - } } .footer { diff --git a/layouts/default.vue b/layouts/default.vue index 578c950..fb92896 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -92,6 +92,8 @@ export default defineComponent({ z-index: 1; display: flex; flex-direction: column; + + @include container; } .sidebar { diff --git a/layouts/landing.vue b/layouts/landing.vue new file mode 100644 index 0000000..227cdb3 --- /dev/null +++ b/layouts/landing.vue @@ -0,0 +1,29 @@ +<template> + <div> + <div :class="$style.header_container"> + <div :class="$style.header_content"> + <LayoutHeader /> + </div> + </div> + + <NuxtLayout name="content"> + <slot /> + </NuxtLayout> + </div> +</template> + +<script lang="ts" setup></script> + +<style lang="scss" module> +@import "@/assets/css/mixins"; + +.header_container { + position: sticky; + top: 0; + background: var(--color-background); +} + +.header_content { + @include container; +} +</style> diff --git a/pages/bio.vue b/pages/bio.vue index 73153ba..c55409a 100644 --- a/pages/bio.vue +++ b/pages/bio.vue @@ -19,11 +19,14 @@ </template> <script lang="ts" setup> -definePageMeta({ layout: "content" }); +definePageMeta({ layout: "landing" }); </script> <style lang="scss" module> +@import "@/assets/css/mixins"; + .content { + @include container; } .section { diff --git a/pages/index.vue b/pages/index.vue index 95d76d3..46c9259 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -24,14 +24,14 @@ export default { }, }; -definePageMeta({ layout: false }); +definePageMeta({ layout: "landing" }); </script> <style lang="scss" module> @import "~~/assets/css/mixins"; .main { - padding-top: 40px; + @include container; @include tablet { padding-top: 0;