Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
a5df382
refactor: begin Nuxt 3 migration with pages/index.vue and related files
Heunsig Nov 2, 2024
bf87eb9
refactor: update pages/contact.vue and related files for Nuxt 3 compa…
Heunsig Nov 2, 2024
70421c1
refactor: update pages/about.vue and related files for Nuxt 3 compati…
Heunsig Nov 2, 2024
ebac592
refactor: update pages/projects/index.vue and related files for Nuxt …
Heunsig Nov 2, 2024
6c37867
refactor: update layouts/default.vue to include main wrapper for slot…
Heunsig Nov 2, 2024
e5eb571
refactor: update pages/projects/[id].vue and related files for Nuxt 3…
Heunsig Nov 2, 2024
6cf6b93
refactor: remove static dir
Heunsig Nov 2, 2024
612195a
chore: update project structure and dependencies for Nuxt 3 compatibi…
Heunsig Nov 2, 2024
30d9cb2
refactor: migrate pages/contact.vue to Composition API
Heunsig Nov 2, 2024
afac9ea
refactor: migrate to Composition API
Heunsig Nov 2, 2024
42fb69c
refactor: migrate to Composition API
Heunsig Nov 2, 2024
dd18d7f
refactor: migrate to Composition API
Heunsig Nov 2, 2024
94781ff
refactor: migrate to Composition API
Heunsig Nov 3, 2024
0a82f02
refactor: remove unused back-to-top button styles from default layout
Heunsig Nov 3, 2024
02c2d1f
chore: apply ESLint and Vue ESLint configurations
Heunsig Nov 3, 2024
458ae96
chore: configure stylistic ESLint plugin and apply lint fixes
Heunsig Nov 3, 2024
4b0cf5d
chore: add Pinia as a dependency
Heunsig Nov 3, 2024
d1c3c28
refactor: wrap images and icons in ClientOnly for better SSR, add fal…
Heunsig Nov 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 17 additions & 83 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,90 +1,24 @@
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# parcel-bundler cache (https://parceljs.org/)
.cache

# next.js build output
.next

# nuxt.js build output
# Nuxt dev/build outputs
.output
.data
.nuxt

# Nuxt generate
.nitro
.cache
dist

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless

# IDE / Editor
.idea
# Node dependencies
node_modules

# Service worker
sw.*
# Logs
logs
*.log

# macOS
# Misc
.DS_Store
.fleet
.idea

# Vim swap files
*.swp
# Local env files
.env
.env.*
!.env.example
5 changes: 5 additions & 0 deletions app.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<template>
<NuxtLayout>
<NuxtPage/>
</NuxtLayout>
</template>
62 changes: 27 additions & 35 deletions components/BackToTop.vue
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
<script>
<script setup>
import feather from "feather-icons";

export default {
components: {},
data() {
return {
userScrollPosition: 0,
};
},
computed: {
isScrolled() {
return this.userScrollPosition > 100;
},
},
mounted() {
window.addEventListener("scroll", this.updateScrollPosition);
feather.replace();
},
updated() {
feather.replace();
},
beforeDestroy() {
window.removeEventListener("scroll", this.updateScrollPosition);
},
methods: {
updateScrollPosition() {
this.userScrollPosition = window.scrollY;
},
backToTop() {
window.scrollTo({
top: 0,
behavior: "smooth",
});
},
},
};
const userScrollPosition = ref(0);
const isScrolled = computed(() => userScrollPosition.value > 100);

function updateScrollPosition() {
userScrollPosition.value = window.scrollY;
}

function backToTop() {
window.scrollTo({
top: 0,
behavior: "smooth",
});
}

onMounted(() => {
window.addEventListener("scroll", updateScrollPosition);
feather.replace();
});

onBeforeUnmount(() => {
window.removeEventListener("scroll", updateScrollPosition);
});

onUpdated(() => {
feather.replace();
});
</script>

<template>
Expand Down
31 changes: 18 additions & 13 deletions components/HireMeModal.vue
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
<script>
<script setup>
import feather from "feather-icons";
import Button from "./reusable/Button.vue";
export default {
props: ["showModal", "modal", "categories"],
components: { Button },
data: () => {
return {
// @todo
};

defineProps({
showModal: {
type: Function,
required: true
},
mounted() {
feather.replace();
modal: {
type: Boolean,
required: true
},
methods: {},
};
categories: {
type: Array,
required: true
}
});

onMounted(() => {
feather.replace();
});
</script>

<template>
Expand Down Expand Up @@ -146,7 +152,6 @@ export default {
"
id="subject"
name="subject"
type="text"
required=""
aria-label="Project Category"
>
Expand Down
14 changes: 6 additions & 8 deletions components/about/AboutClientSingle.vue
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
<script>
export default {
props: ["client"],
data: () => {
return {
// @todo
};
<script setup>
defineProps({
client: {
type: Object,
required: true,
},
};
});
</script>

<template>
Expand Down
19 changes: 7 additions & 12 deletions components/about/AboutClients.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
<script>
import { mapState } from "vuex";
export default {
data: () => {
return {
// @todo
};
},
computed: {
...mapState(["clientsHeading", "clients"]),
},
};
<script setup>
import { useMainStore } from "~/store/index";
import AboutClientSingle from "./AboutClientSingle.vue";

const mainStore = useMainStore();
const clientsHeading = computed(() => mainStore.clientsHeading);
const clients = computed(() => mainStore.clients);
</script>

<template>
Expand Down
10 changes: 1 addition & 9 deletions components/about/AboutCounter.vue
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
<script>
export default {
data: () => {
return {
// @todo
};
},
};
</script>
<script setup></script>

<template>
<div class="mt-10 sm:mt-20 bg-primary-light dark:bg-ternary-dark shadow-sm">
Expand Down
18 changes: 5 additions & 13 deletions components/about/AboutMe.vue
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
<script>
import { mapState } from "vuex";
<script setup>
import { useMainStore } from "~/store/index";

export default {
data: () => {
return {
// @todo
};
},
computed: {
...mapState(["aboutMe"]),
},
};
const mainStore = useMainStore();
const aboutMe = computed(() => mainStore.aboutMe);
</script>

<template>
<div class="block sm:flex sm:gap-10 mt-10 sm:mt-20">
<!-- About profile image -->
<div class="w-full sm:w-1/4 mb-7 sm:mb-0">
<img src="~/static/profile.jpeg" class="rounded-lg w-96" alt="" />
<img src="/profile.jpeg" class="rounded-lg w-96" alt="" />
</div>

<!-- About details -->
Expand Down
15 changes: 7 additions & 8 deletions components/contact/ContactDetails.vue
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
<script>
export default {
props: ["contacts"],
data: () => {
return {
// @todo
};
<script setup>

defineProps({
contacts: {
type: Array,
required: true,
},
};
});
</script>

<template>
Expand Down
10 changes: 1 addition & 9 deletions components/contact/ContactForm.vue
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
<script>
<script setup>
import Button from "../reusable/Button.vue";
export default {
components: { Button },
data: () => {
return {
// @todo
};
},
};
</script>

<template>
Expand Down
Loading