Skip to content

Commit eacc02d

Browse files
committed
style: refine component layouts and styles across AppExperience, AppNavbar, and InfoCard for improved consistency and responsiveness
1 parent 1f60506 commit eacc02d

5 files changed

Lines changed: 37 additions & 24 deletions

File tree

components/AppExperience.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
Highlights from roles where I’ve shipped full-stack products, scaled
1212
platforms, and refined UX flows.
1313
</p>
14-
<div class="flex flex-wrap items-center gap-2 pt-1">
14+
<div class="flex flex-wrap items-baseline gap-2 pt-1">
1515
<p class="m-0 text-xs uppercase tracking-[0.18em] text-gray-500">
1616
Teams I’ve worked with
1717
</p>
@@ -106,7 +106,7 @@
106106
</div>
107107

108108
<div
109-
class="rounded-xl border-4 border-[var(--color-border)] bg-[var(--color-card)] shadow-[var(--shadow-mid)] p-5"
109+
class="rounded-xl border-4 border-[var(--color-border)] bg-[var(--color-card)] shadow-[var(--shadow-mid)] p-4"
110110
>
111111
<div
112112
class="flex flex-col md:flex-row md:items-start md:justify-between gap-3"

components/AppNavbar.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
>
77
<div
88
ref="navRef"
9-
class="w-full max-w-[1200px] mx-auto px-1.5 sm:px-2 md:px-3 lg:px-4 py-3"
9+
class="w-full max-w-[1200px] mx-auto px-1.5 sm:px-2 md:px-3 lg:px-4 py-2"
1010
>
1111
<div
1212
class="flex items-center justify-between gap-0.5 sm:gap-1 md:gap-2 w-full min-w-0"
@@ -24,7 +24,7 @@
2424
loading="lazy"
2525
width="64"
2626
height="64"
27-
class="block h-7 sm:h-9 md:h-10 w-auto transition-transform duration-200"
27+
class="block h-7 sm:h-8 md:h-9 w-auto transition-transform duration-200"
2828
/>
2929
</button>
3030

components/commons/InfoCard.vue

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,13 @@
9898
<p
9999
v-for="(tag, index) in visibleTags"
100100
:key="`tag-${index}`"
101-
class="m-0 px-2 py-[2px] rounded-full bg-[var(--color-light)] border border-[var(--color-border)]/10"
101+
class="m-0 px-1.5 py-[1px] rounded-full bg-[var(--color-light)] border border-[var(--color-border)]/10"
102102
>
103103
#{{ tag }}
104104
</p>
105105
<p
106106
v-if="hiddenTagCount > 0"
107-
class="m-0 px-2 py-[2px] rounded-full bg-[var(--color-light)] border border-[var(--color-border)]/10"
107+
class="m-0 px-1.5 py-[1px] rounded-full bg-[var(--color-light)] border border-[var(--color-border)]/10"
108108
>
109109
+{{ hiddenTagCount }}
110110
</p>
@@ -114,6 +114,7 @@
114114

115115
<script setup lang="ts">
116116
import type { PropType } from "vue";
117+
import { useMediaQuery } from "@vueuse/core";
117118
118119
export interface Link {
119120
type: string;
@@ -184,7 +185,12 @@ const isVideo = computed(() => {
184185
return /\.(mp4|webm|ogg)$/i.test(props.imageSrc);
185186
});
186187
187-
const visibleTags = computed(() => props.tags.slice(0, 3));
188+
const isSmallScreen = import.meta.client
189+
? useMediaQuery("(max-width: 639px)")
190+
: ref(false);
191+
const visibleTags = computed(() =>
192+
props.tags.slice(0, isSmallScreen.value ? 2 : 3),
193+
);
188194
const hiddenTagCount = computed(() =>
189195
Math.max(0, props.tags.length - visibleTags.value.length),
190196
);
@@ -208,7 +214,7 @@ watch(
208214
<style scoped>
209215
.desc {
210216
display: -webkit-box;
211-
-webkit-line-clamp: 3;
217+
-webkit-line-clamp: 2;
212218
-webkit-box-orient: vertical;
213219
overflow: hidden;
214220
}

components/commons/StackCard.vue

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
<template>
22
<div
3-
class="flex flex-col items-center justify-center text-center mb-2 rounded-xl border-2 border-[var(--color-border)] bg-[var(--color-card)] px-3 py-4 shadow-[var(--shadow-soft)] hover:-translate-y-[2px] hover:shadow-[var(--shadow-mid)] transition duration-150"
3+
class="group flex flex-col items-center justify-center text-center mb-2 rounded-xl border-2 border-[var(--color-border)] bg-[var(--color-card)] px-3 py-4 shadow-[var(--shadow-soft)] hover:-translate-y-[2px] hover:shadow-[var(--shadow-mid)] transition duration-150"
44
>
55
<div
66
:class="[iconSrc]"
7-
class="text-4xl md:text-5xl grayscale hover:grayscale-0 ease-in-out duration-300 mb-2"
7+
class="text-4xl md:text-5xl grayscale group-hover:grayscale-0 ease-in-out duration-300 mb-2"
88
></div>
9-
<p class="m-0 font-semibold text-[var(--color-dark)] capitalize">
9+
<p
10+
class="m-0 font-semibold text-[var(--color-dark)] capitalize group-hover:text-[var(--color-primary)] transition-colors duration-200"
11+
>
1012
{{ iconTitle }}
1113
</p>
1214
<p class="m-0 text-[12px] text-[var(--color-text)] opacity-80">

public/showcase.json

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
}
9292
],
9393
"img": "flutter.mp4",
94-
"tags": ["flutter", "firebase"],
94+
"tags": ["Flutter", "Firebase"],
9595
"category": ["app"]
9696
},
9797
{
@@ -109,7 +109,7 @@
109109
}
110110
],
111111
"img": "run.webp",
112-
"tags": ["django", "vue.js", "design"],
112+
"tags": ["Django", "Vue", "design"],
113113
"category": ["frontend"]
114114
},
115115
{
@@ -127,7 +127,7 @@
127127
}
128128
],
129129
"img": "vuetheater.webp",
130-
"tags": ["vue.js"],
130+
"tags": ["Vue"],
131131
"category": ["frontend"]
132132
},
133133
{
@@ -164,7 +164,7 @@
164164
}
165165
],
166166
"img": "url-shortener.webp",
167-
"tags": ["node", "vite", "vue.js"],
167+
"tags": ["Node", "vite", "Vue"],
168168
"category": ["frontend", "backend"]
169169
},
170170
{
@@ -173,7 +173,7 @@
173173
"meta": "Product · 2020",
174174
"links": [],
175175
"img": "dev_disrupt.webp",
176-
"tags": ["design", "vue.js", "concept"],
176+
"tags": ["design", "Vue", "concept"],
177177
"category": ["design"]
178178
},
179179
{
@@ -182,7 +182,7 @@
182182
"meta": "Full stack · 2022",
183183
"links": [],
184184
"img": "coop-ekarko.webp",
185-
"tags": ["django", "react"],
185+
"tags": ["Django", "React"],
186186
"category": ["frontend", "backend"]
187187
},
188188
{
@@ -191,7 +191,7 @@
191191
"meta": "Frontend · 2022",
192192
"links": [],
193193
"img": "nutmor.webp",
194-
"tags": ["tailwind", "nuxt.js"],
194+
"tags": ["Tailwind", "Nuxt"],
195195
"category": ["frontend"]
196196
},
197197
{
@@ -210,7 +210,7 @@
210210
"meta": "Automation · 2022",
211211
"links": [],
212212
"img": "discord.webp",
213-
"tags": ["node", "discord", "wos"],
213+
"tags": ["Node", "discord", "wos"],
214214
"category": ["backend"]
215215
},
216216
{
@@ -241,7 +241,12 @@
241241
"detail": "Sales landing page for courses; created the project setup and initial flow as a monorepo.",
242242
"meta": "Frontend + Backend · 2023",
243243
"result": "Revenue lift",
244-
"links": [{ "type": "link", "url": "https://lp.globish.co.th" }],
244+
"links": [
245+
{
246+
"type": "link",
247+
"url": "https://lp.globish.co.th"
248+
}
249+
],
245250
"img": "globish-sale-page.webp",
246251
"tags": ["globish"],
247252
"category": ["frontend", "backend"]
@@ -253,7 +258,7 @@
253258
"result": "Ops speed",
254259
"links": [],
255260
"img": "wh-globish.webp",
256-
"tags": ["globish", "nuxt.js", "nest.js"],
261+
"tags": ["globish", "Nuxt", "Nest"],
257262
"category": ["frontend", "backend"]
258263
},
259264
{
@@ -262,7 +267,7 @@
262267
"meta": "Full stack · 2023",
263268
"links": [],
264269
"img": "globish-coach.webp",
265-
"tags": ["globish", "nuxt.js", "nest.js"],
270+
"tags": ["globish", "Nuxt", "Nest"],
266271
"category": ["frontend", "backend"]
267272
},
268273
{
@@ -271,7 +276,7 @@
271276
"meta": "Full stack · 2023",
272277
"links": [],
273278
"img": "globish.webp",
274-
"tags": ["globish", "nuxt.js", "nest.js"],
279+
"tags": ["globish", "Nuxt", "Nest"],
275280
"category": ["frontend", "backend"]
276281
},
277282
{
@@ -280,7 +285,7 @@
280285
"meta": "Full stack · 2023",
281286
"links": [],
282287
"img": "app-globish.webp",
283-
"tags": ["globish", "nuxt.js", "nest.js"],
288+
"tags": ["globish", "Nuxt", "Nest"],
284289
"category": ["frontend", "backend"]
285290
}
286291
]

0 commit comments

Comments
 (0)