@@ -8,20 +8,35 @@ defineProps<{
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<article class="group border p-5 m-5 rounded-2xl shadow-lg text-zinc-700">
|
||||||
class="grid shadow-xl group overflow-hidden rounded max-w-md p-5 m-5 bg-slate-700 text-white"
|
<NuxtLink to="/home" class="">
|
||||||
>
|
<img
|
||||||
<h1 class="text-xl">
|
class="lg:h-48 md:h-36 w-full object-cover object-center rounded-2xl shadow-lg group-hover:scale-105 transition-all"
|
||||||
{{ title }}
|
src="/blogs/hello-world/riyad.jpg"
|
||||||
</h1>
|
alt="card photo"
|
||||||
|
/>
|
||||||
<p class="text-sm">
|
<div class="text-black text-sm pt-4 pb-2">
|
||||||
Lorem ipsum dolor sit amet consectetur adipisicing elit. Asperiores labore cupiditate ducimus,
|
<div class="flex items-center">
|
||||||
ipsam harum, adipisci laudantium similique voluptate officiis sunt nesciunt dolorem repellat
|
<LogoDate />
|
||||||
cumque obcaecati nulla, sed dolore unde. Atque!
|
3rd July 2022
|
||||||
</p>
|
|
||||||
<nuxt-link class="underline" :to="slug">
|
|
||||||
{{ slug }}
|
|
||||||
</nuxt-link>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="flex items-center gap-1 flex-wrap">
|
||||||
|
<LogoTag />
|
||||||
|
<span>JavaScript</span>
|
||||||
|
<span>Typescript</span>
|
||||||
|
<span>Clean</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2 class="text-3xl font-semibold text-black pb-1 group-hover:text-sky-600">
|
||||||
|
This is the card title
|
||||||
|
</h2>
|
||||||
|
<p class="text-ellipsis line-clamp-3">
|
||||||
|
{{ excerpt }}
|
||||||
|
</p>
|
||||||
|
<div class="flex group-hover:underline text-sky-600 items-center pt-2">
|
||||||
|
<p>Read More</p>
|
||||||
|
<LogoArrow />
|
||||||
|
</div>
|
||||||
|
</NuxtLink>
|
||||||
|
</article>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
49
components/blog/oldcard.vue
Normal file
49
components/blog/oldcard.vue
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
defineProps<{
|
||||||
|
title: string
|
||||||
|
excerpt?: string
|
||||||
|
image?: string
|
||||||
|
slug?: string
|
||||||
|
}>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<article class="group py-4 sm:p-4 w-full">
|
||||||
|
<NuxtLink
|
||||||
|
:to="slug"
|
||||||
|
class="block h-full rounded-3xl overflow-hidden border dark:border-gray-600 transform group-hover:-translate-y-2 duration-300 p-5"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
src="https://res.cloudinary.com/jahiddev/images/f_auto,q_auto/v1670084907/tips-to-write-better-javascript/tips-to-write-better-javascript.jpg?_i=AA"
|
||||||
|
alt="5 Pro Tips for Writing Better JavaScript in 2023"
|
||||||
|
class="lg:h-48 md:h-36 w-full object-cover object-center rounded-2xl shadow-lg group-hover:shadow-xl"
|
||||||
|
/>
|
||||||
|
<h2 class="tracking-widest text-xs title-font mb-1 mt-5">
|
||||||
|
<p class="uppercase text-xs">
|
||||||
|
<span class="inline-flex pr-2">
|
||||||
|
<LogoDate />
|
||||||
|
3rd Dec 2022</span
|
||||||
|
>
|
||||||
|
<span class="inline-flex flex-wrap">
|
||||||
|
<span>
|
||||||
|
<LogoTag />
|
||||||
|
</span>
|
||||||
|
<span class="mr-2">Clean Code </span>
|
||||||
|
<span class="mr-2">JavaScript </span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</h2>
|
||||||
|
<h3 class="title-font text-lg mb-3">5 Pro Tips for Writing Better JavaScript in 2023</h3>
|
||||||
|
<p class="leading-relaxed mb-3">
|
||||||
|
Learn how to write better JavaScript code with these five pro tips. From using code linting
|
||||||
|
tools to...
|
||||||
|
</p>
|
||||||
|
<span
|
||||||
|
class="mt-3 text-primary-500 inline-flex items-center md:mb-2 lg:mb-0 group-hover:underline duration-300"
|
||||||
|
>
|
||||||
|
Read more
|
||||||
|
<LogoArrow />
|
||||||
|
</span>
|
||||||
|
</NuxtLink>
|
||||||
|
</article>
|
||||||
|
</template>
|
||||||
14
components/logo/arrow.vue
Normal file
14
components/logo/arrow.vue
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<svg
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
fill="none"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
class="w-4 h-4 ml-2 transform group-hover:translate-x-2 duration-300"
|
||||||
|
>
|
||||||
|
<path d="M5 12h14"></path>
|
||||||
|
<path d="M12 5l7 7-7 7"></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
16
components/logo/date.vue
Normal file
16
components/logo/date.vue
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<svg
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="w-4 h-4 mr-2"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
16
components/logo/tag.vue
Normal file
16
components/logo/tag.vue
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<svg
|
||||||
|
fill="none"
|
||||||
|
stroke="currentColor"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
class="w-4 h-4 mr-2"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
stroke-width="2"
|
||||||
|
d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z"
|
||||||
|
></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
@@ -3,7 +3,7 @@ let isDark = ref(false)
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="py-5 font-spacegrotesk border-b text-zinc-600">
|
<div class="py-5 border-b text-zinc-700">
|
||||||
<div class="flex px-6 container max-w-5xl justify-between mx-auto items-baseline">
|
<div class="flex px-6 container max-w-5xl justify-between mx-auto items-baseline">
|
||||||
<ul class="flex items-baseline space-x-5">
|
<ul class="flex items-baseline space-x-5">
|
||||||
<li class="">
|
<li class="">
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="container mx-auto">
|
<div class="container mx-auto">
|
||||||
<div class="grid grid-cols-1 sm:grid-cols-2 items-center">
|
<div class="grid grid-cols-1 sm:grid-cols-2 items-center">
|
||||||
<div class="px-6">
|
<div class="px-6">
|
||||||
<h1 class="text-black font-semibold leading-tight text-4xl md:text-5xl mb-5">
|
<h1 class="text-black font-semibold leading-tight text-4xl md:text-5xl my-5">
|
||||||
Welcome To My Blog Site
|
Welcome To My Blog Site
|
||||||
</h1>
|
</h1>
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: 'Title of the page'
|
title: 'Title of the page'
|
||||||
description: 'meta description of the page'
|
description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloremque minima eum, odit earum porro beatae explicabo quisquam asperiores aliquam similique ipsam non deleniti qui sint ad maxime culpa accusantium. Deleniti.'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Hello world
|
# Hello world
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="gd-container font-spacegrotesk">
|
<div class="gd-container font-spacegrotesk">
|
||||||
<header class="fixed w-full backdrop-blur-3xl">
|
<header class="fixed w-full backdrop-blur-3xl z-10">
|
||||||
<MainHeader />
|
<MainHeader />
|
||||||
</header>
|
</header>
|
||||||
<main>
|
<main>
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nuxt/content": "^2.3.0",
|
"@nuxt/content": "^2.3.0",
|
||||||
"@nuxtjs/tailwindcss": "^6.1.3",
|
"@nuxtjs/tailwindcss": "^6.1.3",
|
||||||
|
"@tailwindcss/line-clamp": "^0.4.2",
|
||||||
"@tailwindcss/typography": "^0.5.8",
|
"@tailwindcss/typography": "^0.5.8",
|
||||||
"nuxt": "3.0.0",
|
"nuxt": "3.0.0",
|
||||||
"nuxt-icon": "^0.1.8",
|
"nuxt-icon": "^0.1.8",
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ const { data } = await useAsyncData('home', () => queryContent('/blogs').find())
|
|||||||
<template>
|
<template>
|
||||||
<main class="container max-w-5xl mx-auto text-zinc-600">
|
<main class="container max-w-5xl mx-auto text-zinc-600">
|
||||||
<MainHero />
|
<MainHero />
|
||||||
<div class="flex m-5 p-3 flex-wrap">
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
||||||
<template v-for="n in data" :key="n">
|
<template v-for="n in data" :key="n">
|
||||||
<BlogCard :title="n.title || ''" :excerpt="n.description" image="sdlfkj" :slug="n._path" />
|
<BlogCard :title="n.title || ''" :excerpt="n.description" image="sdlfkj" :slug="n._path" />
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
BIN
public/blogs/hello-man/riyad.jpg
Normal file
BIN
public/blogs/hello-man/riyad.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
BIN
public/blogs/hello-world/riyad.jpg
Normal file
BIN
public/blogs/hello-world/riyad.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
BIN
public/blogs/intro-to-nuxt/riyad.jpg
Normal file
BIN
public/blogs/intro-to-nuxt/riyad.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 22 KiB |
@@ -10,5 +10,5 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [require('@tailwindcss/typography')],
|
plugins: [require('@tailwindcss/typography'), require('@tailwindcss/line-clamp')],
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -802,6 +802,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
|
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
|
||||||
integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
|
integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
|
||||||
|
|
||||||
|
"@tailwindcss/line-clamp@^0.4.2":
|
||||||
|
version "0.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tailwindcss/line-clamp/-/line-clamp-0.4.2.tgz#f353c5a8ab2c939c6267ac5b907f012e5ee130f9"
|
||||||
|
integrity sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==
|
||||||
|
|
||||||
"@tailwindcss/typography@^0.5.8":
|
"@tailwindcss/typography@^0.5.8":
|
||||||
version "0.5.8"
|
version "0.5.8"
|
||||||
resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.8.tgz#8fb31db5ab0590be6dfa062b1535ac86ad9d12bf"
|
resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.8.tgz#8fb31db5ab0590be6dfa062b1535ac86ad9d12bf"
|
||||||
|
|||||||
Reference in New Issue
Block a user