Skip to content

Commit 693fd6d

Browse files
authored
Merge pull request realstoman#21 from NangialaiStoman/ui-and-features
UI updates and best practices
2 parents 08e579b + 6b85990 commit 693fd6d

25 files changed

+155
-164
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Vuejs & TailwindCSS Portfolio - With Dark Mode
22

3-
A simple portfolio starter theme built with Vue.js v3 and TailwindCSS v2. This is a simple portfolio theme and its geared towards beginners. For sure there's room for improvements and if there's anything missing or to be corrected or you have a better idea for it, please fork this repo and make a PR.
3+
A simple portfolio starter theme built with Vue.js v3 and TailwindCSS v2. This is a simple portfolio theme and its geared towards beginners. If there's anything missing or to be corrected or you have a better idea for it, please fork this repo and make a PR.
44

55
![Vuejs-TailwindCSS-Portfolio](https://user-images.githubusercontent.com/16396664/140909796-815239e4-a986-46ad-bbd0-4b166127bbb8.JPG)
66

@@ -31,7 +31,7 @@ A simple portfolio starter theme built with Vue.js v3 and TailwindCSS v2. This i
3131

3232
- [Download it from nodejs.org](https://nodejs.org)
3333
- [Install it using NVM ](https://github.com/nvm-sh/nvm)
34-
- If you're on Mac, install it with Homebrew:
34+
- If you're on Mac, Homebrew is a good option too:
3535

3636
```
3737
brew install node

src/App.vue

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
<router-view :theme="appTheme" />
99
</transition>
1010

11+
<!-- Scroll to top -->
1112
<back-to-top
1213
visibleoffset="500"
13-
right="40px"
14-
bottom="40px"
14+
right="30px"
15+
bottom="20px"
1516
class="shadow-lg"
1617
>
17-
<i data-feather="arrow-up"></i>
18+
<i data-feather="chevron-up"></i>
1819
</back-to-top>
1920

2021
<!-- App footer -->
@@ -55,7 +56,11 @@ export default {
5556
}
5657
5758
.vue-back-to-top {
58-
@apply p-2 sm:p-4 bg-indigo-500 hover:bg-indigo-600 text-white;
59+
@apply p-2 bg-indigo-500 hover:bg-indigo-600 text-white transition
60+
duration-500
61+
ease-in-out
62+
transform
63+
hover:-translate-y-1 hover:scale-110;
5964
border-radius: 50%;
6065
font-size: 22px;
6166
line-height: 22px;

src/components/AboutClientSingle.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<template>
2+
<!-- Client single image -->
23
<div>
34
<img
45
:src="client.img"
56
:alt="client.title"
6-
class="w-64 py-5 px-10 border border-ternary-light dark:border-ternary-dark shadow-sm rounded-xl mb-8 cursor-pointer dark:bg-secondary-light"
7+
class="w-64 py-5 px-10 border border-ternary-light dark:border-ternary-dark shadow-sm rounded-lg mb-8 cursor-pointer dark:bg-secondary-light"
78
/>
89
</div>
910
</template>

src/components/AboutClients.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<template>
2+
<!-- About page clients section -->
23
<div class="mt-10 sm:mt-20">
34
<p
45
class="text-2xl sm:text-4xl text-primary-dark dark:text-primary-light font-sans font-semibold"

src/components/AboutCounter.vue

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<template>
22
<div class="mt-10 sm:mt-20 bg-primary-light dark:bg-ternary-dark shadow-sm">
3-
<!-- About me counters start -->
3+
<!-- About me counters -->
44
<div
55
class="container mx-auto py-20 block sm:flex sm:justify-between sm:items-center"
66
>
7-
<!-- About me single counter start -->
7+
<!-- About me single counter -->
88
<div class="mb-20 sm:mb-0">
99
<counter
1010
ref="counter"
@@ -21,9 +21,8 @@
2121
>Years of experience</span
2222
>
2323
</div>
24-
<!-- About me single counter end -->
2524

26-
<!-- About me single counter start -->
25+
<!-- About me single counter -->
2726
<div class="mb-20 sm:mb-0">
2827
<counter
2928
ref="counter"
@@ -40,9 +39,8 @@
4039
>Stars on GitHub</span
4140
>
4241
</div>
43-
<!-- About me single counter end -->
4442

45-
<!-- About me single counter start -->
43+
<!-- About me single counter -->
4644
<div class="mb-20 sm:mb-0">
4745
<counter
4846
ref="counter"
@@ -59,9 +57,8 @@
5957
>Positive feedback</span
6058
>
6159
</div>
62-
<!-- About me single counter end -->
6360

64-
<!-- About me single counter start -->
61+
<!-- About me single counter -->
6562
<div class="mb-20 sm:mb-0">
6663
<counter
6764
ref="counter"
@@ -77,9 +74,7 @@
7774
>Projects completed</span
7875
>
7976
</div>
80-
<!-- About me single counter end -->
8177
</div>
82-
<!-- About me counters end -->
8378
</div>
8479
</template>
8580

src/components/AboutMe.vue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<template>
2+
<!-- About me bio section -->
23
<div class="block sm:flex sm:gap-10 mt-10 sm:mt-20">
3-
<!-- About me portfolio image start -->
4+
<!-- About me portfolio image -->
45
<div class="w-full sm:w-1/4 mb-7 sm:mb-0">
56
<img
67
src="@/assets/images/profile.jpeg"
78
class="rounded-xl w-96"
89
alt=""
910
/>
1011
</div>
11-
<!-- About me portfolio image end -->
1212

13-
<!-- About me details start -->
13+
<!-- About me details -->
1414
<div class="w-full sm:w-3/4 text-left">
1515
<p
1616
v-for="bio in bios"
@@ -20,7 +20,6 @@
2020
{{ bio.bio }}
2121
</p>
2222
</div>
23-
<!-- About me details end -->
2423
</div>
2524
</template>
2625

src/components/AppBanner.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<template>
2-
<!-- Banner start -->
2+
<!-- App Banner -->
33
<section
44
class="flex flex-col sm:justify-between items-center sm:flex-row mt-12 sm:mt-10"
55
>
6+
<!-- Banner left contents -->
67
<div class="w-full sm:w-1/3 text-left">
78
<h1
89
class="text-3xl sm:text-4xl xl:text-5xl text-center sm:text-left font-semibold text-ternary-dark dark:text-primary-light uppercase"
@@ -29,6 +30,8 @@
2930
>
3031
</div>
3132
</div>
33+
34+
<!-- Banner right illustration -->
3235
<div class="w-full sm:w-2/3 text-right float-right">
3336
<img
3437
v-if="theme === 'light'"
@@ -42,7 +45,6 @@
4245
/>
4346
</div>
4447
</section>
45-
<!-- Banner end -->
4648
</template>
4749

4850
<script>

src/components/AppFooter.vue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<template>
2+
<!-- App footer -->
23
<div class="container mx-auto ">
34
<div
45
class="pt-20 sm:pt-30 pb-8 mt-20 border-t-2 border-primary-light dark:border-secondary-dark"
56
>
6-
<!-- Footer social links start -->
7+
<!-- Footer social links -->
78
<div
89
class="flex flex-col justify-center items-center mb-12 sm:mb-28"
910
>
@@ -27,9 +28,8 @@
2728
</a>
2829
</ul>
2930
</div>
30-
<!-- Footer social links end -->
3131

32-
<!-- Footer copyright start -->
32+
<!-- Footer copyright -->
3333
<div class="flex justify-center items-center text-center">
3434
<div class="text-lg text-ternary-dark dark:text-ternary-light ">
3535
&copy; {{ copyrightDate }}.
@@ -49,7 +49,6 @@
4949
>
5050
</div>
5151
</div>
52-
<!-- Footer copyright end -->
5352
</div>
5453
</div>
5554
</template>

src/components/AppHeader.vue

Lines changed: 12 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<div
55
class="z-10 max-w-screen-lg xl:max-w-screen-xl block sm:flex sm:justify-between sm:items-center my-6"
66
>
7-
<!-- Header menu links and small screen hamburger menu start -->
7+
<!-- Header menu links and small screen hamburger menu -->
88
<div class="flex justify-between items-center px-4 sm:px-0">
9-
<!-- Header logos start -->
9+
<!-- Header logos -->
1010
<div>
1111
<router-link to="/"
1212
><img
@@ -23,17 +23,15 @@
2323
/>
2424
</router-link>
2525
</div>
26-
<!-- Header logos end -->
2726

28-
<!-- Theme switcher small screen start -->
27+
<!-- Theme switcher small screen -->
2928
<theme-switcher
3029
:theme="theme"
3130
@themeChanged="updateTheme"
3231
class="block sm:hidden bg-ternary-light dark:bg-ternary-dark hover:bg-hover-light dark:hover:bg-hover-dark hover:shadow-sm px-2.5 py-2 rounded-lg"
3332
/>
34-
<!-- Theme switcher small screen end -->
3533

36-
<!-- Small screen hamburger menu start -->
34+
<!-- Small screen hamburger menu -->
3735
<div class="sm:hidden">
3836
<button
3937
@click="isOpen = !isOpen"
@@ -60,52 +58,16 @@
6058
</svg>
6159
</button>
6260
</div>
63-
<!-- Small screen hamburger menu end -->
6461
</div>
65-
<!-- Header menu links and small screen hamburger menu end -->
6662

67-
<!-- Header links start -->
68-
<div
69-
:class="isOpen ? 'block' : 'hidden'"
70-
class="m-0 sm:ml-4 mt-5 sm:mt-3 sm:flex p-5 sm:p-0 justify-center items-center shadow-lg sm:shadow-none"
71-
>
72-
<router-link
73-
to="/projects"
74-
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2"
75-
aria-label="Projects"
76-
>Projects</router-link
77-
>
78-
<router-link
79-
to="/about"
80-
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2 border-t-2 pt-3 sm:pt-2 sm:border-t-0 border-primary-light dark:border-secondary-dark"
81-
aria-label="About Me"
82-
>About Me</router-link
83-
>
84-
<router-link
85-
to="/contact"
86-
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2 border-t-2 pt-3 sm:pt-2 sm:border-t-0 border-primary-light dark:border-secondary-dark"
87-
aria-label="Contact"
88-
>Contact</router-link
89-
>
90-
<div
91-
class="border-t-2 pt-3 sm:pt-0 sm:border-t-0 border-primary-light dark:border-secondary-dark"
92-
>
93-
<button
94-
class="sm:hidden block text-left text-md font-medium bg-indigo-500 hover:bg-indigo-600 text-white shadow-sm rounded-sm px-4 py-2 mt-2"
95-
@click="showModal()"
96-
aria-label="Hire Me Button"
97-
>
98-
Hire Me
99-
</button>
100-
</div>
101-
</div>
102-
<!-- Header links end -->
63+
<!-- Header links -->
64+
<AppHeaderLinks :showModal="showModal" :isOpen="isOpen" />
10365

104-
<!-- Header right section buttons start -->
66+
<!-- Header right section buttons -->
10567
<div
10668
class="hidden sm:flex justify-between items-center flex-col md:flex-row"
10769
>
108-
<!-- Hire me button start -->
70+
<!-- Hire me button -->
10971
<div>
11072
<button
11173
class="text-md font-medium bg-indigo-500 hover:bg-indigo-600 text-white shadow-sm rounded-md px-5 py-2.5"
@@ -115,40 +77,37 @@
11577
Hire Me
11678
</button>
11779
</div>
118-
<!-- Hire me button end -->
11980

120-
<!-- Theme switcher large screen start -->
81+
<!-- Theme switcher large screen -->
12182
<theme-switcher
12283
:theme="theme"
12384
@themeChanged="updateTheme"
12485
class="ml-8 bg-primary-light dark:bg-ternary-dark px-3 py-2 shadow-sm rounded-xl cursor-pointer"
12586
/>
126-
<!-- Theme switcher large screen end -->
12787
</div>
128-
<!-- Header right section buttons end -->
12988
</div>
130-
<!-- Header end -->
13189

132-
<!-- Hire me modal start -->
90+
<!-- Hire me modal -->
13391
<HireMeModal
13492
:showModal="showModal"
13593
:modal="modal"
13694
:categories="categories"
13795
aria-modal="Hire Me Modal"
13896
/>
139-
<!-- Hire me modal end -->
14097
</nav>
14198
</template>
14299

143100
<script>
144101
import ThemeSwitcher from './ThemeSwitcher';
145102
import HireMeModal from './HireMeModal.vue';
146103
import feather from 'feather-icons';
104+
import AppHeaderLinks from './AppHeaderLinks.vue';
147105
148106
export default {
149107
components: {
150108
ThemeSwitcher,
151109
HireMeModal,
110+
AppHeaderLinks,
152111
},
153112
data() {
154113
return {

src/components/AppHeaderLinks.vue

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<template>
2+
<!-- Header links -->
3+
<div
4+
:class="isOpen ? 'block' : 'hidden'"
5+
class="m-0 sm:ml-4 mt-5 sm:mt-3 sm:flex p-5 sm:p-0 justify-center items-center shadow-lg sm:shadow-none"
6+
>
7+
<router-link
8+
to="/projects"
9+
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2"
10+
aria-label="Projects"
11+
>Projects</router-link
12+
>
13+
<router-link
14+
to="/about"
15+
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2 border-t-2 pt-3 sm:pt-2 sm:border-t-0 border-primary-light dark:border-secondary-dark"
16+
aria-label="About Me"
17+
>About Me</router-link
18+
>
19+
<router-link
20+
to="/contact"
21+
class="block text-left text-lg font-medium text-primary-dark dark:text-ternary-light hover:text-secondary-dark dark:hover:text-secondary-light sm:mx-4 mb-2 sm:py-2 border-t-2 pt-3 sm:pt-2 sm:border-t-0 border-primary-light dark:border-secondary-dark"
22+
aria-label="Contact"
23+
>Contact</router-link
24+
>
25+
<div
26+
class="border-t-2 pt-3 sm:pt-0 sm:border-t-0 border-primary-light dark:border-secondary-dark"
27+
>
28+
<button
29+
class="sm:hidden block text-left text-md font-medium bg-indigo-500 hover:bg-indigo-600 text-white shadow-sm rounded-sm px-4 py-2 mt-2"
30+
@click="showModal()"
31+
aria-label="Hire Me Button"
32+
>
33+
Hire Me
34+
</button>
35+
</div>
36+
</div>
37+
</template>
38+
39+
<script>
40+
export default {
41+
props: ['showModal', 'isOpen'],
42+
};
43+
</script>
44+
45+
<style lang="scss" scoped></style>

src/components/ContactDetails.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<template>
2+
<!-- Contact details -->
23
<div class="w-full sm:w-1/2">
34
<div class="text-left max-w-xl px-6">
45
<h2

0 commit comments

Comments
 (0)