diff --git a/nuxt/components/Home/Hero.vue b/nuxt/components/Home/Hero.vue
index 2ad9057..3e62f9e 100644
--- a/nuxt/components/Home/Hero.vue
+++ b/nuxt/components/Home/Hero.vue
@@ -3,7 +3,8 @@
Primary landing component with introduction, portrait, and call-to-action button
Props:
- - buttonText (string, optional): Text for the call-to-action button
+ - buttonText (string, optional): Text for the call-to-action button (desktop)
+ - buttonTextShort (string, optional): Short text for mobile call-to-action button
- buttonUrl (string, optional): URL for the call-to-action button
Features:
@@ -60,13 +61,19 @@
- {{ buttonText }}
+
+ {{
+ buttonTextShort || buttonText
+ }}
+ {{
+ buttonText || buttonTextShort
+ }}
@@ -81,14 +88,32 @@
import { ref, onMounted } from "vue";
import { ChevronRightIcon } from "@heroicons/vue/16/solid";
-interface Props {
- buttonText?: string;
- buttonUrl?: string;
-}
-
-const props = withDefaults(defineProps
(), {
- buttonText: undefined,
- buttonUrl: undefined,
+// Component props with validation
+const props = defineProps({
+ buttonText: {
+ type: String,
+ default: undefined,
+ validator: (value: string | undefined) => {
+ if (!value) return true;
+ return value.trim().length > 0;
+ },
+ },
+ buttonTextShort: {
+ type: String,
+ default: undefined,
+ validator: (value: string | undefined) => {
+ if (!value) return true;
+ return value.trim().length > 0;
+ },
+ },
+ buttonUrl: {
+ type: String,
+ default: undefined,
+ validator: (value: string | undefined) => {
+ if (!value) return true;
+ return value.trim().length > 0;
+ },
+ },
});
const pageLoaded = ref(false);
diff --git a/nuxt/components/Home/Projects.vue b/nuxt/components/Home/Projects.vue
index 7213671..7be8bb1 100644
--- a/nuxt/components/Home/Projects.vue
+++ b/nuxt/components/Home/Projects.vue
@@ -22,7 +22,17 @@
title="Projects make perfect."
punchline="From prototype to powerhouse."
description="Every project serves as a foundational learning experience, yielding pixel-perfect applications that solve real problems."
- />
+ >
+
+
+ Explore Changelog
+
+
+
+
@@ -74,6 +84,7 @@
I lead and build exceptional software experiences. Currently, I'm
responsible for all software initiatives at