From 821d96b466659fed0192dfad14b1fe82fe06cda5 Mon Sep 17 00:00:00 2001 From: Visual-Dawg Date: Tue, 30 Jan 2024 14:11:23 +0100 Subject: [PATCH] Add Rss feed (#42) * darken inline code bg in articles * improve install button * add rss feed * small cleanup * news: single row entries * news: fancy spinner * news: single col * news: fancy spinner --- src/app.html | 1 + src/lib/Helper.mjs | 11 ++-- src/lib/components/Footer.svelte | 11 +++- src/lib/components/news-thumb.svelte | 6 +- src/lib/images/logos/HyprlandLogo.png | Bin 0 -> 32726 bytes src/routes/InstallButton.svelte | 9 +-- src/routes/news/+page.svelte | 81 +++++++++++++++++++++----- src/routes/rss/+server.js | 44 ++++++++++++++ tailwind.config.js | 6 +- 9 files changed, 134 insertions(+), 35 deletions(-) create mode 100644 src/lib/images/logos/HyprlandLogo.png create mode 100644 src/routes/rss/+server.js diff --git a/src/app.html b/src/app.html index dbe39bc..9fc88ed 100755 --- a/src/app.html +++ b/src/app.html @@ -5,6 +5,7 @@ + %sveltekit.head% diff --git a/src/lib/Helper.mjs b/src/lib/Helper.mjs index 9e9f291..d01aec0 100755 --- a/src/lib/Helper.mjs +++ b/src/lib/Helper.mjs @@ -46,11 +46,12 @@ export function animateIn(node, options = {}) { function callback() { timeoutId = setTimeout( - effects.forEach(([effect]) => { - if (effect === 'slide') node.style.removeProperty('translate') - else if (effect === 'fade') node.style.removeProperty('opacity') - else if (effect === 'zoom') node.style.removeProperty('scale') - }), + () => + effects.forEach(([effect]) => { + if (effect === 'slide') node.style.removeProperty('translate') + else if (effect === 'fade') node.style.removeProperty('opacity') + else if (effect === 'zoom') node.style.removeProperty('scale') + }), options.delay ?? 0 ) } diff --git a/src/lib/components/Footer.svelte b/src/lib/components/Footer.svelte index 9095e3a..c08d8a3 100755 --- a/src/lib/components/Footer.svelte +++ b/src/lib/components/Footer.svelte @@ -2,6 +2,7 @@ import DiscordIcon from '~icons/prime/discord' import GithubIcon from '~icons/ri/github-fill' import { discordLink } from '$lib/constants.mjs' + import RssIcon from '~icons/mingcute/rss-fill' /** @type {[string, string, string, string]} */ let team = [ @@ -75,13 +76,21 @@ aria-label="Go to our Github"> +
  • + +
  • Hyprland is licensed under the BSD 3-Clause "New" or "Revised" License.

    © Hyprland Development {new Date().getFullYear()}.

    -

    Doki doki waku waku.

    +

    Stay hydrated

    diff --git a/src/lib/components/news-thumb.svelte b/src/lib/components/news-thumb.svelte index 12d1d97..4e8221e 100644 --- a/src/lib/components/news-thumb.svelte +++ b/src/lib/components/news-thumb.svelte @@ -8,7 +8,7 @@
  • -
    +

    {formatDate(entry.date)}

    @@ -18,7 +18,7 @@ Read upRead up -
    +
  • diff --git a/src/lib/images/logos/HyprlandLogo.png b/src/lib/images/logos/HyprlandLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..78f0e4a3a5c86daa1e540e67415c970831794a01 GIT binary patch literal 32726 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 literal 0 HcmV?d00001 diff --git a/src/routes/InstallButton.svelte b/src/routes/InstallButton.svelte index 24bd270..c1a88cf 100755 --- a/src/routes/InstallButton.svelte +++ b/src/routes/InstallButton.svelte @@ -27,12 +27,7 @@
    - Distrubution Logo{name} + {name} Logo{name}
    @@ -48,7 +43,7 @@ {command} diff --git a/src/routes/news/+page.svelte b/src/routes/news/+page.svelte index 195b86d..2641571 100644 --- a/src/routes/news/+page.svelte +++ b/src/routes/news/+page.svelte @@ -1,18 +1,64 @@ @@ -22,7 +68,9 @@
    - + <pre class="spinner-wrapper" bind:this={asciiElement} /> + + <Title class="mb-0 duration-1000 animate-in fade-in-0"> <span slot="title">News</span><span slot="subtitle"> Fresh updates straight from the oven </span> @@ -30,12 +78,9 @@ </header> <ul - class="row-auto grid grid-cols-1 gap-14 delay-500 duration-1000 animate-in fade-in-0 slide-in-from-bottom-6 fill-mode-backwards lg:grid-cols-2" + class="row-auto flex flex-col gap-14 animate-in fade-in-0 slide-in-from-bottom-6 fill-mode-backwards [animation-delay:800ms] [animation-duration:1500ms]" > - <div class="col-span-full flex lg:justify-center"> - <NewsThumb entry={latest} /> - </div> - {#each others as entry} + {#each posts as entry} <NewsThumb {entry} /> {/each} </ul> @@ -57,6 +102,14 @@ min-height: 500px; max-height: 900px; width: 100%; - margin-bottom: min(-10vh, -6rem); + margin-bottom: 8rem; + } + + .spinner-wrapper { + @apply mb-4 flex items-center justify-center bg-gradient-to-tr from-blue-500/0 to-cyan-500 bg-clip-text text-transparent animate-in fade-in-0; + animation-duration: 2000ms; + font-size: min(1vh, 1rem); + /* There are 36 rows */ + height: min(36vh, 36rem); } </style> diff --git a/src/routes/rss/+server.js b/src/routes/rss/+server.js new file mode 100644 index 0000000..be9be8e --- /dev/null +++ b/src/routes/rss/+server.js @@ -0,0 +1,44 @@ +const siteURL = 'https://hyprland.org' +const siteTitle = 'Hyprland' +const siteDescription = 'Tiling window manager with the looks' + +export const prerender = true + +export const GET = async ({ fetch }) => { + const allNews = await fetch('api/news') + .then((response) => response.json()) + .then((news) => news.sort((a, b) => new Date(b.date) - new Date(a.date))) + + const body = renderXml(allNews) + const options = { + headers: { + 'Cache-Control': 'max-age=0, s-maxage=3600', + 'Content-Type': 'application/xml' + } + } + + return new Response(body, options) +} + +function renderXml(posts) { + return `<?xml version="1.0" encoding="UTF-8" ?> + <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <atom:link href="${siteURL}/rss" rel="self" type="application/rss+xml" /> + <title>${siteTitle} News + ${siteURL}/news + ${siteDescription} + ${posts + .map( + (post) => ` + ${siteURL}/news/${post.slug} + ${post.title} + ${siteURL}/news/${post.slug} + ${new Date(post.date).toUTCString()} +` + ) + .join(' ')} + + + ` +} diff --git a/tailwind.config.js b/tailwind.config.js index a28718d..901f5d6 100755 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,10 +1,6 @@ const { fontFamily } = require('tailwindcss/defaultTheme') const colors = require('tailwindcss/colors') -console.log({ colors }) - -// const sansFamily = - /** @type {import('tailwindcss').Config} */ export default { content: ['./src/**/**/*.{html,js,svelte,ts}'], @@ -26,7 +22,7 @@ export default { css: { code: { padding: '0.2em 0.4em', - 'background-color': colors.slate[700], + 'background-color': colors.slate[800], 'border-radius': '6px', 'font-weight': 'inherit' },