From 579491f2161103d543d8a0d30f15f2c6adcf0baa Mon Sep 17 00:00:00 2001 From: webfussel Date: Thu, 12 Jun 2025 13:13:30 +0200 Subject: [PATCH] add: category, date sorting Add category layouts and date sorting --- .../css/{blogAuthor.css => blog/author.css} | 0 .../css/{blogCard.css => blog/card.css} | 3 +- app/assets/css/blog/overview.css | 15 ++++++ app/assets/css/global.css | 26 +++++++--- app/components/Blog/Category.vue | 2 +- app/pages/blog/index.vue | 47 ++++++++++++++++--- nuxt.config.ts | 17 +++---- 7 files changed, 85 insertions(+), 25 deletions(-) rename app/assets/css/{blogAuthor.css => blog/author.css} (100%) rename app/assets/css/{blogCard.css => blog/card.css} (96%) create mode 100644 app/assets/css/blog/overview.css diff --git a/app/assets/css/blogAuthor.css b/app/assets/css/blog/author.css similarity index 100% rename from app/assets/css/blogAuthor.css rename to app/assets/css/blog/author.css diff --git a/app/assets/css/blogCard.css b/app/assets/css/blog/card.css similarity index 96% rename from app/assets/css/blogCard.css rename to app/assets/css/blog/card.css index 66fe68e..7e868db 100644 --- a/app/assets/css/blogCard.css +++ b/app/assets/css/blog/card.css @@ -1,7 +1,7 @@ .BlogCard { overflow: hidden; border-radius: 1rem; - background: var(--color-orange-black); + background: var(--color-black); display: flex; flex-direction: column; height: 100%; @@ -60,7 +60,6 @@ } - @media (width <= 780px) { .BlogCard header { align-items: center; diff --git a/app/assets/css/blog/overview.css b/app/assets/css/blog/overview.css new file mode 100644 index 0000000..6556419 --- /dev/null +++ b/app/assets/css/blog/overview.css @@ -0,0 +1,15 @@ +.BlogOverview { + & .category-list { + display: flex; + flex-wrap: wrap; + gap: 1rem; + list-style: none; + } + + & .article-overview { + width: 100%; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + } +} \ No newline at end of file diff --git a/app/assets/css/global.css b/app/assets/css/global.css index f266ffb..8396b49 100755 --- a/app/assets/css/global.css +++ b/app/assets/css/global.css @@ -97,6 +97,15 @@ a { color: var(--color-white); } +a.side { + color: var(--color-orange); + text-decoration: none; + + &:hover { + color: var(--color-orange-light); + } +} + a.text { color: var(--color-orange); text-decoration: underline; @@ -148,6 +157,7 @@ span.chip { align-items: center; gap: .5em; width: max-content; + transition: var(--transition-time); &:not(.dark) { --background: var(--color-orange); @@ -197,6 +207,10 @@ span.chip { margin-top: 1rem; } +.margin-top-middle { + margin-top: 2rem; +} + .margin-top-big { margin-top: 6rem; } @@ -206,7 +220,7 @@ span.chip { } .bg-radial { - background-image: radial-gradient(circle at 100vw 100vh, rgba(255,145,0,0.2) 0%, rgba(0,0,0,0) 63%, rgba(0,0,0,0) 100%); + background-image: radial-gradient(circle at 100vw 100vh, rgba(255, 145, 0, 0.2) 0%, rgba(0, 0, 0, 0) 63%, rgba(0, 0, 0, 0) 100%); background-color: var(--color-orange-black); background-repeat: no-repeat; @@ -241,6 +255,10 @@ span.chip { flex-direction: column; } +.flex-wrap { + flex-wrap: wrap; +} + .gap-default { gap: 3rem; } @@ -288,12 +306,6 @@ span.chip { align-items: center; } -.grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - gap: 2rem; -} - .tip-container .tip { scale: 0; position: absolute; diff --git a/app/components/Blog/Category.vue b/app/components/Blog/Category.vue index 1e9449b..c89429b 100644 --- a/app/components/Blog/Category.vue +++ b/app/components/Blog/Category.vue @@ -20,5 +20,5 @@ const icons: Record = { 'freelancing': 'ph:laptop-duotone', } -const icon = computed(() => name ? icons[name] : 'ph:question-mark-duotone') +const icon = computed(() => icons[name] ?? 'ph:question-mark-duotone') \ No newline at end of file diff --git a/app/pages/blog/index.vue b/app/pages/blog/index.vue index 0cffc71..512b7c7 100644 --- a/app/pages/blog/index.vue +++ b/app/pages/blog/index.vue @@ -1,19 +1,52 @@