Skip to content

Commit afedddf

Browse files
authored
Merge pull request #11 from hfidelis/dev
dev>main (prod)
2 parents 079a3ac + cd7db7e commit afedddf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2494
-170
lines changed

β€Žpackage-lock.json

Lines changed: 914 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žpackage.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@
1919
"dependencies": {
2020
"@jamescoyle/vue-icon": "^0.1.2",
2121
"@mdi/js": "^7.4.47",
22+
"@vavt/cm-extension": "^1.5.0",
23+
"@vavt/v3-extension": "^1.2.4",
2224
"@vueuse/core": "^10.8.0",
2325
"floating-vue": "^5.2.2",
26+
"markdown-it": "^14.1.0",
27+
"md-editor-v3": "^4.18.1",
2428
"sass": "^1.71.0",
2529
"vue": "^3.4.15",
2630
"vue-i18n": "^9.9.1",

β€Žsrc/App.vue

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,20 @@
11
<script lang="ts" setup>
22
import { RouterView } from 'vue-router'
33
4-
import AppHeader from '@/components/Header/AppHeader.vue'
5-
import AppFooter from '@/components/Footer/AppFooter.vue'
4+
import AppHeader from '@/components/header/AppHeader.vue'
5+
import AppFooter from '@/components/footer/AppFooter.vue'
6+
import FadeTransition from '@/components/fade-transition/FadeTransition.vue'
67
</script>
78

8-
<template>
9-
<div>
10-
<AppHeader />
11-
<RouterView
12-
v-slot="{
13-
Component,
14-
route
15-
}"
16-
>
17-
<Transition
18-
name="fade"
19-
mode="out-in"
20-
>
21-
<component
22-
:is="Component"
23-
:key="route.path"
24-
/>
25-
</Transition>
26-
</RouterView>
27-
<AppFooter />
28-
</div>
29-
</template>
30-
31-
<style lang="scss" scoped>
32-
.fade-enter-active,
33-
.fade-leave-active {
34-
transition: opacity 0.45s ease;
35-
}
36-
37-
.fade-enter-from,
38-
.fade-leave-to {
39-
opacity: 0;
40-
}
41-
</style>
9+
<template>
10+
<AppHeader />
11+
<RouterView v-slot="{ Component, route }">
12+
<FadeTransition>
13+
<component
14+
:is="Component"
15+
:key="route.path"
16+
/>
17+
</FadeTransition>
18+
</RouterView>
19+
<AppFooter />
20+
</template>

β€Žsrc/components/ThemeToggle/ThemeToggle.vue

Lines changed: 0 additions & 88 deletions
This file was deleted.

β€Žsrc/components/AuthorInfo/AuthorInfo.vue renamed to β€Žsrc/components/author-info/AuthorInfo.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts" setup>
2-
import AvatarBox from '@/components/AvatarBox/AvatarBox.vue'
2+
import AvatarBox from '@/components/avatar-box/AvatarBox.vue'
33
44
const props = defineProps({
55
name: {

β€Žsrc/components/AvatarBox/AvatarBox.vue renamed to β€Žsrc/components/avatar-box/AvatarBox.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script lang="ts" setup>
22
import { useDark } from '@vueuse/core'
3+
34
import avatar from '@/assets/images/me.png'
45
56
const isDark = useDark()
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<script setup lang="ts">
2+
import { useRouter } from 'vue-router'
3+
import { useDark } from '@vueuse/core'
4+
5+
import isMobile from '@/helpers/isMobile'
6+
7+
import {
8+
mdiCreation,
9+
} from '@mdi/js'
10+
11+
const isDark = useDark()
12+
const router = useRouter()
13+
14+
const redirectToBlog = () => {
15+
router.push({ name: 'blog' })
16+
}
17+
</script>
18+
19+
<template>
20+
<button
21+
id="blog__button"
22+
class="header__button"
23+
:class="[
24+
isDark ? 'dark' : 'light',
25+
isMobile ? 'header__mobile__item' : '',
26+
]"
27+
:aria-label="$t('components.blogButton.ariaLabel')"
28+
@click="redirectToBlog"
29+
>
30+
<span>
31+
{{ $t('components.blogButton.label') }}
32+
</span>
33+
<SvgIcon
34+
:path="mdiCreation"
35+
type="mdi"
36+
size="30"
37+
/>
38+
</button>
39+
</template>
40+
41+
<style lang="scss" scoped >
42+
@import '@/styles/app.scss';
43+
44+
#blog__button {
45+
&.dark {
46+
> svg {
47+
color: #f5b11d;
48+
filter: drop-shadow(0 0 0.75rem #f5b11d);
49+
animation: dark-star-pulse 2s infinite, scale 1.5s infinite;
50+
}
51+
}
52+
53+
&.light{
54+
> svg {
55+
color: #c2880c;
56+
filter: drop-shadow(0 0 0.75rem #c2880c);
57+
animation: light-star-pulse 2s infinite, scale 1.5s infinite;
58+
}
59+
}
60+
}
61+
62+
@keyframes scale {
63+
0% {
64+
transform: scale(1);
65+
}
66+
50% {
67+
transform: scale(1.15);
68+
}
69+
100% {
70+
transform: scale(1);
71+
}
72+
}
73+
74+
@keyframes light-star-pulse {
75+
0% {
76+
filter: drop-shadow(0 0 0.75rem $star-dark);
77+
}
78+
50% {
79+
filter: drop-shadow(0 0 0.75rem $star-light);
80+
}
81+
100% {
82+
filter: drop-shadow(0 0 0.75rem $star-dark);
83+
}
84+
}
85+
86+
@keyframes dark-star-pulse {
87+
0% {
88+
filter: drop-shadow(0 0 0.75rem $star-light);
89+
}
90+
50% {
91+
filter: drop-shadow(0 0 0.75rem $star-dark);
92+
}
93+
100% {
94+
filter: drop-shadow(0 0 0.75rem $star-light);
95+
}
96+
}
97+
</style>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<template>
2+
<Transition
3+
name="fade"
4+
mode="out-in"
5+
>
6+
<slot />
7+
</Transition>
8+
</template>
9+
10+
<style lang="scss" scoped>
11+
.fade-enter-active,
12+
.fade-leave-active {
13+
transition: opacity 0.45s ease;
14+
}
15+
16+
.fade-enter-from,
17+
.fade-leave-to {
18+
opacity: 0;
19+
}
20+
</style>

β€Žsrc/components/FooterLinkIcon/FooterLinkIcon.vue renamed to β€Žsrc/components/footer-link-icon/FooterLinkIcon.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<script lang="ts" setup>
22
import { useDark } from '@vueuse/core'
3-
import FooterLink from '@/types/components/FooterLink/FooterLink.type'
3+
import FooterLink from '@/types/components/footer-link/FooterLink.type'
44
55
const props = defineProps<FooterLink>()
66
const isDark = useDark()
77
8-
const resolveLink = (link: string) => {
8+
const resolveLink = (link: string): void => {
99
window.open(link, '_blank')
1010
}
1111
</script>

β€Žsrc/components/Footer/AppFooter.vue renamed to β€Žsrc/components/footer/AppFooter.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<script lang="ts" setup>
22
import { useDark } from '@vueuse/core'
33
4-
import IconVue from '@/components/Icons/IconVue.vue'
5-
import IconGmail from '@/components/Icons/IconGmail.vue'
6-
import IconGithub from '@/components/Icons/IconGithub.vue'
7-
import IconLinkedin from '@/components/Icons/IconLinkedin.vue'
8-
import FooterLinkIcon from '@/components/FooterLinkIcon/FooterLinkIcon.vue'
9-
import FooterLink from '@/types/components/FooterLink/FooterLink.type'
4+
import IconVue from '@/components/icons/IconVue.vue'
5+
import IconGmail from '@/components/icons/IconGmail.vue'
6+
import IconGithub from '@/components/icons/IconGithub.vue'
7+
import IconLinkedin from '@/components/icons/IconLinkedin.vue'
8+
import FooterLinkIcon from '@/components/footer-link-icon/FooterLinkIcon.vue'
9+
import FooterLink from '@/types/components/footer-link/FooterLink.type'
1010
1111
const isDark = useDark()
1212

β€Žsrc/components/Header/AppHeader.vue renamed to β€Žsrc/components/header/AppHeader.vue

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,20 @@ import { RouterLink } from 'vue-router'
55
import { mdiMenuOpen, mdiWindowClose } from '@mdi/js'
66
77
import isMobile from '@/helpers/isMobile'
8-
import LocaleSelect from '@/components/LocaleSelect/LocaleSelect.vue'
9-
import ThemeToggle from '@/components/ThemeToggle/ThemeToggle.vue'
8+
import LocaleSelect from '@/components/locale-select/LocaleSelect.vue'
9+
import ThemeToggle from '@/components/theme-toggle/ThemeToggle.vue'
10+
import BlogButton from '@/components/blog-button/BlogButton.vue'
1011
1112
const isDark = useDark()
12-
const isOpen = ref(false)
13+
const isOpen = ref<boolean>(false)
1314
14-
const toggleOpen = () => {
15+
const toggleOpen = (): void => {
1516
isOpen.value = !isOpen.value
1617
}
1718
1819
watch(
1920
() => isMobile.value,
20-
(val) => {
21+
(val: boolean): void => {
2122
if (val) {
2223
isOpen.value = false
2324
}
@@ -74,8 +75,9 @@ watch(
7475
v-if="!isMobile"
7576
class='actions__default'
7677
>
78+
<BlogButton />
7779
<LocaleSelect />
78-
<ThemeToggle />
80+
<ThemeToggle />
7981
</div>
8082
<Transition
8183
name="sidebar"
@@ -84,8 +86,9 @@ watch(
8486
v-if="isMobile && isOpen"
8587
class='actions__mobile'
8688
>
89+
<BlogButton />
8790
<LocaleSelect />
88-
<ThemeToggle />
91+
<ThemeToggle />
8992
</div>
9093
</Transition>
9194
</section>

β€Žsrc/components/LocaleSelect/LocaleSelect.vue renamed to β€Žsrc/components/locale-select/LocaleSelect.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { ref } from 'vue'
33
import { useDark } from '@vueuse/core'
44
55
import Locale from '@/types/i18n/Locale'
6-
import LocaleOption from '@/components/LocaleSelect/LocaleOption/LocaleOption.vue'
7-
import LocaleValue from '@/types/components/LocaleSelect/LocaleValue.type'
6+
import LocaleOption from '@/components/locale-select/locale-option/LocaleOption.vue'
7+
import LocaleValue from '@/types/components/locale-select/LocaleValue.type'
88
99
import ptBRFlag from '@/assets/flags/pt-BR.png'
1010
import enUSFlag from '@/assets/flags/en-US.png'

β€Žsrc/components/LocaleSelect/LocaleOption/LocaleOption.vue renamed to β€Žsrc/components/locale-select/locale-option/LocaleOption.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import LocaleValue from '@/types/components/LocaleSelect/LocaleValue.type'
2+
import LocaleValue from '@/types/components/locale-select/LocaleValue.type'
33
44
const props = defineProps({
55
option: {

0 commit comments

Comments
Β (0)