better article reading and stuff
This commit is contained in:
parent
e74e9d7a83
commit
2c234276b0
|
@ -24,6 +24,7 @@ export default config({
|
||||||
validation: { isRequired: true },
|
validation: { isRequired: true },
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
originalTitle: fields.text({ label: 'Original title' }),
|
||||||
subtitle: fields.text({ label: 'Subtitle' }),
|
subtitle: fields.text({ label: 'Subtitle' }),
|
||||||
checkedOut: fields.checkbox({ label: 'Checked out?' }),
|
checkedOut: fields.checkbox({ label: 'Checked out?' }),
|
||||||
link: fields.url({ label: 'Link', validation: { isRequired: true } }),
|
link: fields.url({ label: 'Link', validation: { isRequired: true } }),
|
||||||
|
|
|
@ -23,10 +23,10 @@
|
||||||
"mdast-flatten-listitem-paragraphs": "^1.0.0",
|
"mdast-flatten-listitem-paragraphs": "^1.0.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"sharp": "^0.33.5",
|
"sharp": "^0.33.5",
|
||||||
"tailwindcss": "^3.4.12"
|
"tailwindcss": "^3.4.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.16.5",
|
"@types/node": "^20.16.10",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"postcss": "^8.4.47"
|
"postcss": "^8.4.47"
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ const libraryCollection = defineCollection({
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
subtitle: z.ostring(),
|
subtitle: z.ostring(),
|
||||||
|
originalTitle: z.ostring(),
|
||||||
checkedOut: z.boolean(),
|
checkedOut: z.boolean(),
|
||||||
link: z.string().url(),
|
link: z.string().url(),
|
||||||
description: z.ostring(),
|
description: z.ostring(),
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: One hundred years of solitude
|
title: One hundred years of solitude
|
||||||
|
originalTitle: Cien Años de Soledad
|
||||||
checkedOut: false
|
checkedOut: false
|
||||||
link: >-
|
link: >-
|
||||||
https://openlibrary.org/works/OL274505W/Cien_a%C3%B1os_de_soledad?edition=key%3A/books/OL30448691M
|
https://openlibrary.org/works/OL274505W/Cien_a%C3%B1os_de_soledad?edition=key%3A/books/OL30448691M
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Blindness
|
title: Blindness
|
||||||
|
originalTitle: Ensaio sobre a cegueira
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: >-
|
link: >-
|
||||||
https://openlibrary.org/works/OL27420W/Ensaio_Sobre_a_Cegueira?edition=key%3A/books/OL352517M
|
https://openlibrary.org/works/OL27420W/Ensaio_Sobre_a_Cegueira?edition=key%3A/books/OL352517M
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
title: Factfulness
|
title: Factfulness
|
||||||
subtitle: >-
|
subtitle: >-
|
||||||
Ten Reasons We're Wrong About the World – and Why Things Are Better Than You
|
Ten Reasons We're Wrong About the World — and Why Things Are Better Than You
|
||||||
Think
|
Think
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://archive.org/details/factfulness-hans-rosling/page/n153/mode/2up
|
link: https://archive.org/details/factfulness-hans-rosling/page/n153/mode/2up
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Manifesto of the Communist Party
|
title: Manifesto of the Communist Party
|
||||||
|
originalTitle: Manifest der Kommunistischen Partei
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://www.marxists.org/admin/books/manifesto/Manifesto.pdf
|
link: https://www.marxists.org/admin/books/manifesto/Manifesto.pdf
|
||||||
description: "Very interesting. Honestly, I only felt compelled to read this because of its statute as a classic. I think no marxist should call themselves that without reading (at least) this Manifesto, especially given how short and quick to read it is. The text's language has some peculiarities, of course due to when it was written, but it is generally easy to understand. It seems to me that some topics are very specific to what the authors were living through, during those days, in Europe, and, for that reason, it's hard for someone with a lack of historical context —\_like me —\_to get and feel everything perfectly. Even so, it positively surprised me! Mainly because of its mentions to women (in its call for their emancipation) and to Nature (in the recognition of its exploitation by the capitalist systems). I recommend this book to any leftist."
|
description: "Very interesting. Honestly, I only felt compelled to read this because of its statute as a classic. I think no marxist should call themselves that without reading (at least) this Manifesto, especially given how short and quick to read it is. The text's language has some peculiarities, of course due to when it was written, but it is generally easy to understand. It seems to me that some topics are very specific to what the authors were living through, during those days, in Europe, and, for that reason, it's hard for someone with a lack of historical context —\_like me —\_to get and feel everything perfectly. Even so, it positively surprised me! Mainly because of its mentions to women (in its call for their emancipation) and to Nature (in the recognition of its exploitation by the capitalist systems). I recommend this book to any leftist."
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: New Radical Enlightenment
|
title: New Radical Enlightenment
|
||||||
|
originalTitle: Nova Il·Lustració Radical
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://catalog.princeton.edu/catalog/99131003959006421
|
link: https://catalog.princeton.edu/catalog/99131003959006421
|
||||||
description: >-
|
description: >-
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Cem anos de solidão
|
title: Cem anos de solidão
|
||||||
|
originalTitle: Cien Años de Soledad
|
||||||
checkedOut: false
|
checkedOut: false
|
||||||
link: >-
|
link: >-
|
||||||
https://openlibrary.org/works/OL26414960W/Cem_Anos_De_Solid%C3%A3o?edition=key%3A/books/OL35663961M
|
https://openlibrary.org/works/OL26414960W/Cem_Anos_De_Solid%C3%A3o?edition=key%3A/books/OL35663961M
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
title: Economia Donut
|
title: Economia Donut
|
||||||
subtitle: Sete Formas de Pensar Como um Economista no Século XXI
|
subtitle: Sete Formas de Pensar Como um Economista no Século XXI
|
||||||
|
originalTitle: 'Doughtnut Econonomics: Seven Ways to Think Like a 21st-Centurty Economist'
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://www.wook.pt/ebook/economia-donut-kate-raworth/21400895
|
link: https://www.wook.pt/ebook/economia-donut-kate-raworth/21400895
|
||||||
description: >
|
description: >
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Manifesto do Partido Comunista
|
title: Manifesto do Partido Comunista
|
||||||
|
originalTitle: Manifest der Kommunistischen Partei
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: >-
|
link: >-
|
||||||
https://www.marxists.org/portugues/marx/1848/ManifestoDoPartidoComunista/manifesto.pdf
|
https://www.marxists.org/portugues/marx/1848/ManifestoDoPartidoComunista/manifesto.pdf
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
title: Economia de Missão
|
title: Economia de Missão
|
||||||
subtitle: Um guia ousado e inovador para mudar o capitalismo
|
subtitle: Um guia ousado e inovador para mudar o capitalismo
|
||||||
|
originalTitle: 'Mission Economy: A Moonshot Guide to Changing Capitalism'
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://www.wook.pt/ebook/economia-de-missao-mariana-mazzucato/25383261
|
link: https://www.wook.pt/ebook/economia-de-missao-mariana-mazzucato/25383261
|
||||||
description: >
|
description: >
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Novo Iluminismo Radical
|
title: Novo Iluminismo Radical
|
||||||
|
originalTitle: Nova Il·Lustració Radical
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: >-
|
link: >-
|
||||||
https://catalogo.bnportugal.gov.pt/ipac20/ipac.jsp?session=EA222557L6592.58616&menu=search&aspect=subtab11&npp=20&ipp=20&spp=20&profile=bn&ri=&term=Novo+iluminismo+radical&index=.GW&x=0&y=0&aspect=subtab11
|
https://catalogo.bnportugal.gov.pt/ipac20/ipac.jsp?session=EA222557L6592.58616&menu=search&aspect=subtab11&npp=20&ipp=20&spp=20&profile=bn&ri=&term=Novo+iluminismo+radical&index=.GW&x=0&y=0&aspect=subtab11
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: Sputnik, Meu Amor
|
title: Sputnik, Meu Amor
|
||||||
|
originalTitle: スプートニクの恋人
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: https://search.worldcat.org/title/864808899?oclcNum=864808899
|
link: https://search.worldcat.org/title/864808899?oclcNum=864808899
|
||||||
description: >
|
description: >
|
|
@ -1,5 +1,6 @@
|
||||||
title: Limites do Crescimento
|
title: Limites do Crescimento
|
||||||
subtitle: A Atualização de 30 Anos
|
subtitle: A Atualização de 30 Anos
|
||||||
|
originalTitle: 'Limits to Growth: The 30-Year Update'
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: >-
|
link: >-
|
||||||
https://www.scribd.com/document/422266661/Limites-Do-Crescimento-A-Atualizacao-de-30-Anos
|
https://www.scribd.com/document/422266661/Limites-Do-Crescimento-A-Atualizacao-de-30-Anos
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
title: The Strange Library
|
title: The Strange Library
|
||||||
|
originalTitle: ふしぎな図書館
|
||||||
checkedOut: true
|
checkedOut: true
|
||||||
link: >-
|
link: >-
|
||||||
https://www.fnac.pt/The-Strange-Library-Haruki-Murakami/a807074?NUMERICAL=Y#bl=FA_ebook
|
https://www.fnac.pt/The-Strange-Library-Haruki-Murakami/a807074?NUMERICAL=Y#bl=FA_ebook
|
|
@ -5,9 +5,10 @@ export interface Props {
|
||||||
ptUrl: string;
|
ptUrl: string;
|
||||||
enUrl: string;
|
enUrl: string;
|
||||||
lang: string;
|
lang: string;
|
||||||
|
hideFooterLinks?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { ptUrl, enUrl, lang } = Astro.props;
|
const { ptUrl, enUrl, lang, hideFooterLinks } = Astro.props;
|
||||||
const { footer } = Astro.slots;
|
const { footer } = Astro.slots;
|
||||||
const hasFooter = !!footer;
|
const hasFooter = !!footer;
|
||||||
---
|
---
|
||||||
|
@ -30,28 +31,40 @@ const hasFooter = !!footer;
|
||||||
<slot />
|
<slot />
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<footer class="fixed bottom-0 p-4 pb-0 flex flex-col w-full gap-2">
|
<footer
|
||||||
|
class:list={[
|
||||||
|
'fixed bottom-0 p-4 pb-0 flex flex-col w-full gap-2',
|
||||||
|
hideFooterLinks && 'mb-3',
|
||||||
|
]}
|
||||||
|
>
|
||||||
<slot name="footer" />
|
<slot name="footer" />
|
||||||
<div
|
<div
|
||||||
class="flex justify-between max-xs:flex-col-reverse max-xs:items-center bg-orange-50 pb-2"
|
class:list={[
|
||||||
|
'flex justify-end gap-2 xs:gap-3 max-xs:flex-col-reverse max-xs:items-center pb-2',
|
||||||
|
hideFooterLinks && 'sr-only',
|
||||||
|
]}
|
||||||
>
|
>
|
||||||
<ul class="flex gap-3">
|
<ul
|
||||||
|
class="flex gap-3 bg-orange-50 px-1 border-2 border-primary-900 text-lg shadow-[3px_3px] shadow-primary-900"
|
||||||
|
>
|
||||||
{
|
{
|
||||||
lang !== 'pt' && (
|
lang !== 'pt' && (
|
||||||
<li>
|
<li>
|
||||||
<InlineLink href={ptUrl}>PT</InlineLink>
|
<InlineLink href={ptUrl}>Português</InlineLink>
|
||||||
</li>
|
</li>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
lang !== 'en' && (
|
lang !== 'en' && (
|
||||||
<li>
|
<li>
|
||||||
<InlineLink href={enUrl}>EN</InlineLink>
|
<InlineLink href={enUrl}>English</InlineLink>
|
||||||
</li>
|
</li>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="flex gap-3">
|
<ul
|
||||||
|
class="flex gap-3 bg-orange-50 px-2 border-2 border-primary-900 shadow-[3px_3px] shadow-primary-900"
|
||||||
|
>
|
||||||
<li>
|
<li>
|
||||||
<InlineLink
|
<InlineLink
|
||||||
title={lang === 'pt'
|
title={lang === 'pt'
|
||||||
|
|
|
@ -29,21 +29,36 @@ const libraryItems = (
|
||||||
{
|
{
|
||||||
libraryItems.map(
|
libraryItems.map(
|
||||||
({
|
({
|
||||||
data: { title, subtitle, description, link, checkedOut, mainAuthors },
|
data: {
|
||||||
|
title,
|
||||||
|
subtitle,
|
||||||
|
originalTitle,
|
||||||
|
description,
|
||||||
|
link,
|
||||||
|
checkedOut,
|
||||||
|
mainAuthors,
|
||||||
|
},
|
||||||
}) => (
|
}) => (
|
||||||
<CardLink link={link} isExternal>
|
<CardLink link={link} isExternal>
|
||||||
<article>
|
<article>
|
||||||
<div class="flex gap-2 justify-between">
|
<header class="flex gap-2 justify-between">
|
||||||
<h2 class="text-lg sm:text-xl font-medium break-words text-primary-700 block">
|
<div>
|
||||||
{title}
|
{originalTitle && (
|
||||||
</h2>
|
<h4 class="text-xs font-light text-stone-700">
|
||||||
|
{originalTitle}
|
||||||
|
</h4>
|
||||||
|
)}
|
||||||
|
<h2 class="text-lg sm:text-xl font-medium break-words text-primary-700 block">
|
||||||
|
{title}
|
||||||
|
</h2>
|
||||||
|
{subtitle && (
|
||||||
|
<h3 class="text-sm sm:text-base break-words text-primary-800 block">
|
||||||
|
{subtitle}
|
||||||
|
</h3>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
{checkedOut && <span class="text-primary-700 text-3xl">✓</span>}
|
{checkedOut && <span class="text-primary-700 text-3xl">✓</span>}
|
||||||
</div>
|
</header>
|
||||||
{subtitle && (
|
|
||||||
<h3 class="text-sm sm:text-base break-words text-primary-800 block">
|
|
||||||
{subtitle}
|
|
||||||
</h3>
|
|
||||||
)}
|
|
||||||
{mainAuthors.length > 0 && (
|
{mainAuthors.length > 0 && (
|
||||||
<h3 class="mb-3 sm:text-lg text-end">
|
<h3 class="mb-3 sm:text-lg text-end">
|
||||||
{mainAuthors.map((author, i) =>
|
{mainAuthors.map((author, i) =>
|
||||||
|
|
|
@ -58,7 +58,12 @@ const formattedPublishDate = publishDate.toLocaleDateString('pt', {
|
||||||
});
|
});
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout ptUrl={`/blogue/${slug}`} enUrl={`/blog/${slug}`} lang="pt">
|
<Layout
|
||||||
|
ptUrl={`/blogue/${slug}`}
|
||||||
|
enUrl={`/blog/${slug}`}
|
||||||
|
lang="pt"
|
||||||
|
hideFooterLinks
|
||||||
|
>
|
||||||
<Metadata
|
<Metadata
|
||||||
slot="metadata"
|
slot="metadata"
|
||||||
title={linkPreviewTitle ?? `${title} - Filipe Medeiros`}
|
title={linkPreviewTitle ?? `${title} - Filipe Medeiros`}
|
||||||
|
|
|
@ -30,21 +30,36 @@ const libraryItems = (
|
||||||
{
|
{
|
||||||
libraryItems.map(
|
libraryItems.map(
|
||||||
({
|
({
|
||||||
data: { title, subtitle, description, link, checkedOut, mainAuthors },
|
data: {
|
||||||
|
title,
|
||||||
|
subtitle,
|
||||||
|
originalTitle,
|
||||||
|
description,
|
||||||
|
link,
|
||||||
|
checkedOut,
|
||||||
|
mainAuthors,
|
||||||
|
},
|
||||||
}) => (
|
}) => (
|
||||||
<CardLink link={link} isExternal>
|
<CardLink link={link} isExternal>
|
||||||
<article>
|
<article>
|
||||||
<div class="flex gap-2 justify-between">
|
<header class="flex gap-2 justify-between">
|
||||||
<h2 class="text-lg sm:text-xl font-medium break-words text-primary-700 block">
|
<div>
|
||||||
{title}
|
{originalTitle && (
|
||||||
</h2>
|
<h4 class="text-xs font-light text-stone-700">
|
||||||
|
{originalTitle}
|
||||||
|
</h4>
|
||||||
|
)}
|
||||||
|
<h2 class="text-lg sm:text-xl font-medium break-words text-primary-700 block">
|
||||||
|
{title}
|
||||||
|
</h2>
|
||||||
|
{subtitle && (
|
||||||
|
<h3 class="text-sm sm:text-base break-words text-primary-800 block">
|
||||||
|
{subtitle}
|
||||||
|
</h3>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
{checkedOut && <span class="text-primary-700 text-3xl">✓</span>}
|
{checkedOut && <span class="text-primary-700 text-3xl">✓</span>}
|
||||||
</div>
|
</header>
|
||||||
{subtitle && (
|
|
||||||
<h3 class="text-sm sm:text-base break-words text-primary-800 block">
|
|
||||||
{subtitle}
|
|
||||||
</h3>
|
|
||||||
)}
|
|
||||||
{mainAuthors.length > 0 && (
|
{mainAuthors.length > 0 && (
|
||||||
<h3 class="mb-3 sm:text-lg text-end">
|
<h3 class="mb-3 sm:text-lg text-end">
|
||||||
{mainAuthors.map((author, i) =>
|
{mainAuthors.map((author, i) =>
|
||||||
|
|
Loading…
Reference in a new issue