@@ -1,32 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
path: String,
|
||||
date: String,
|
||||
type: String,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="font-ibmmono px-10 mb-4 text-slate-800 group shadow-sm bg-white rounded-lg py-4"
|
||||
>
|
||||
<div class="flex items-center space-x-3 space-y-2">
|
||||
<icon name="ant-design:arrow-right-outlined" />
|
||||
<div>
|
||||
<nuxt-link
|
||||
:to="path"
|
||||
class="group-hover:underline group-hover:text-sky-500 text-lg"
|
||||
>
|
||||
{{ title }}
|
||||
</nuxt-link>
|
||||
<div class="flex italic text-sm text-slate-600 items-center space-x-2">
|
||||
<icon name="material-symbols:calendar-month" />
|
||||
<p>{{ date }}</p>
|
||||
<p>|</p>
|
||||
<p>{{ type }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,33 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
description: String,
|
||||
date: String,
|
||||
type: String,
|
||||
path: String,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="space-y-2 my-5 text-slate-800 group">
|
||||
<nuxt-link
|
||||
:to="path"
|
||||
class="text-xl font-semibold group-hover:text-sky-500"
|
||||
>
|
||||
{{ title }}
|
||||
</nuxt-link>
|
||||
<div class="flex italic text-xs text-slate-600 items-center space-x-2">
|
||||
<icon name="material-symbols:calendar-month" />
|
||||
<p>{{ date }}</p>
|
||||
<p>|</p>
|
||||
<p>{{ type }}</p>
|
||||
</div>
|
||||
<p class="text-slate-600 pb-2">
|
||||
{{ description }}
|
||||
</p>
|
||||
<nuxt-link :to="path" class="font-semibold group-hover:text-sky-500">
|
||||
Read more
|
||||
<span class="hidden group-hover:inline"> ->> </span>
|
||||
</nuxt-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,33 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
type: String,
|
||||
count: Number,
|
||||
path: String,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="basis-1/5 bg-white mx-5 my-2 p-5 rounded-md shadow-lg max-w-[530px] group text-slate-800"
|
||||
>
|
||||
<nuxt-link :to="`/tags/${path}`" class="group-hover:text-sky-500">
|
||||
<div class="flex items-center">
|
||||
<h4 class="text-2xl font-medium py-1">{{ type }}</h4>
|
||||
</div>
|
||||
</nuxt-link>
|
||||
|
||||
<div class="flex space-x-3 items-start text-slate-600">
|
||||
<p class="pb-2">Total Post</p>
|
||||
<div class="text-sm">
|
||||
<icon calss="bg-red" name="ant-design:arrow-right-outlined" />
|
||||
</div>
|
||||
<p>{{ count }}</p>
|
||||
</div>
|
||||
|
||||
<nuxt-link class="group-hover:text-sky-500" :to="`/tags/${path}`">
|
||||
<p class="font-medium text-sm">
|
||||
Read All Post <span class="hidden group-hover:inline"> ->> </span>
|
||||
</p>
|
||||
</nuxt-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,41 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const theme = ref("light");
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<footer class="p-3 mt-10 bg-[#a2d9ff] font-ibmmono">
|
||||
<div class="container px-4 mx-auto max-w-6xl flex justify-between">
|
||||
<ul class="flex space-x-2 text-sm text-slate-800 items-end justify-start">
|
||||
<li>Copyright © 2022 - Present</li>
|
||||
<li>|</li>
|
||||
<li>
|
||||
All Rights Reserved by
|
||||
<nuxt-link
|
||||
class="underline"
|
||||
target="_blank"
|
||||
to="https://nurriyad.xyz"
|
||||
>
|
||||
Riyad
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="flex space-x-2 text-sm text-slate-800 items-end justify-start">
|
||||
<li>
|
||||
<nuxt-link to="/">
|
||||
<icon size="22px" name="uil:github" />
|
||||
</nuxt-link>
|
||||
</li>
|
||||
<li>
|
||||
<nuxt-link to="/">
|
||||
<icon size="22px" name="uil:linkedin" />
|
||||
</nuxt-link>
|
||||
</li>
|
||||
<li>
|
||||
<nuxt-link to="/">
|
||||
<icon size="22px" name="mdi:stackoverflow" />
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
||||
</template>
|
||||
@@ -1,9 +0,0 @@
|
||||
<template>
|
||||
<div class="text-center text-stone-800 font-ibmmono bg-[#a2d9ff]">
|
||||
<h1 class="text-4xl pt-16 pb-2 font-bold">Al Asad Nur Riyad</h1>
|
||||
<p class="mt-3 max-w-md mx-auto text-base">
|
||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Temporibus eum
|
||||
nam magni rem. Nihil reprehenderit dolorum quas, facere soluta commodi.
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,44 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
description: String,
|
||||
date: String,
|
||||
author: String,
|
||||
path: String,
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
class="basis-1/2 bg-white mx-5 my-2 p-5 max-w-[530px] rounded-md shadow-lg group"
|
||||
>
|
||||
<nuxt-link :to="path" class="group-hover:text-sky-500">
|
||||
<h4 class="text-xl font-medium py-1">{{ title }}</h4>
|
||||
</nuxt-link>
|
||||
<div class="text-xs text-slate-500 pb-3 flex space-x-4">
|
||||
<div class="flex items-center space-x-1">
|
||||
<icon name="material-symbols:av-timer" />
|
||||
<span class=""> Create {{ date }}</span>
|
||||
</div>
|
||||
<div class="flex items-center space-x-1">
|
||||
<icon name="mdi:face-man" />
|
||||
<nuxt-link
|
||||
class="hover:underline"
|
||||
target="_blank"
|
||||
to="https://www.nurriyad.xyz/"
|
||||
>by {{ author }}</nuxt-link
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="pb-2 text-slate-600">
|
||||
{{ description }}
|
||||
</p>
|
||||
<nuxt-link :to="path" class="group-hover:text-sky-500">
|
||||
<p class="font-medium">
|
||||
Read More
|
||||
<span class="hidden group-hover:inline"> ->> </span>
|
||||
</p>
|
||||
</nuxt-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,38 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import { ParsedContent } from "@nuxt/content/dist/runtime/types";
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const routeType = computed(() => {
|
||||
return route.params.topic || "";
|
||||
});
|
||||
const data = useState("blogData");
|
||||
|
||||
const typeName = computed(() => {
|
||||
const allpost = (data.value as Array<ParsedContent>) || [];
|
||||
const filteredType = allpost.filter((post) => post._dir === routeType.value);
|
||||
return filteredType.at(0)?.type || "";
|
||||
});
|
||||
|
||||
const title = computed(() => {
|
||||
const path = route.fullPath;
|
||||
const splitPath = path.split("/");
|
||||
const name = splitPath.at(1);
|
||||
const tagName = splitPath.at(2);
|
||||
|
||||
if (name === "blogs") return "All Blogs Post";
|
||||
else if (name === "tags") {
|
||||
if (tagName) {
|
||||
return `All ${typeName.value} Related Post`;
|
||||
} else {
|
||||
return "All Tags";
|
||||
}
|
||||
} else return "About Me";
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="text-center text-stone-800 bg-[#a2d9ff] mb-5 font-ibmmono">
|
||||
<h1 class="text-4xl p-16 font-bold">{{ title }}</h1>
|
||||
</div>
|
||||
</template>
|
||||
@@ -1,63 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const route = useRoute();
|
||||
const theme = ref("light");
|
||||
|
||||
const activeNavbar = computed(() => {
|
||||
const path = route.fullPath;
|
||||
const splitedPath = path.split("/");
|
||||
const navbarName = splitedPath[1];
|
||||
return navbarName;
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<header class="sticky top-0 p-3 bg-[#a2d9ff] font-ibmmono">
|
||||
<div
|
||||
class="container px-4 mx-auto max-w-6xl flex justify-between text-slate-800"
|
||||
>
|
||||
<ul class="flex space-x-8 items-end justify-start">
|
||||
<li>
|
||||
<nuxt-link
|
||||
class="font-semibold text-base"
|
||||
:class="{ underline: activeNavbar === '' }"
|
||||
to="/"
|
||||
>
|
||||
NurRiyad
|
||||
</nuxt-link>
|
||||
</li>
|
||||
<li>
|
||||
<nuxt-link
|
||||
:class="{ underline: activeNavbar === 'blogs' }"
|
||||
to="/blogs"
|
||||
>Blogs</nuxt-link
|
||||
>
|
||||
</li>
|
||||
<li>
|
||||
<nuxt-link :class="{ underline: activeNavbar === 'tags' }" to="/tags"
|
||||
>Tags</nuxt-link
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="flex space-x-8 items-end">
|
||||
<li>
|
||||
<nuxt-link
|
||||
:class="{ underline: activeNavbar === 'about' }"
|
||||
to="/about"
|
||||
>About</nuxt-link
|
||||
>
|
||||
</li>
|
||||
|
||||
<li v-show="theme === 'light'" @click="theme = 'dark'">
|
||||
<nuxt-link to="/">
|
||||
<icon size="25px" name="ph:sun-dim" />
|
||||
</nuxt-link>
|
||||
</li>
|
||||
<li v-show="theme === 'dark'" @click="theme = 'light'">
|
||||
<nuxt-link to="/">
|
||||
<icon size="25px" name="ph:moon-stars" />
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
@@ -1,21 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
dir: String,
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const onClick = () => {
|
||||
router.push(`/tags/${props.dir}`);
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<button
|
||||
@click="onClick"
|
||||
class="bg-[#a2d9ff] px-2 py-1 m-2 transition hover:scale-105 rounded-md"
|
||||
>
|
||||
{{ title }}
|
||||
</button>
|
||||
</template>
|
||||
@@ -1,9 +0,0 @@
|
||||
<template>
|
||||
<div class="text-xs font-ibmmono antialiased text-slate-600 flex space-x-2">
|
||||
<div class="flex">
|
||||
<p class="mr-1">Created</p>
|
||||
<slot name="time" />
|
||||
</div>
|
||||
<slot name="author" />
|
||||
</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user