adding info from telegram group
This commit is contained in:
@@ -3,28 +3,39 @@ title: Bincio Wiki
|
|||||||
---
|
---
|
||||||
|
|
||||||
- [[BincioTech]]
|
- [[BincioTech]]
|
||||||
- Gear e accessori
|
- [[scelta-bici]]
|
||||||
- Componenti e upgrade
|
- [[carbonio-vs-alluminio]]
|
||||||
- Tecnologia e elettronica
|
- [[marchi-e-brand]]
|
||||||
|
- [[ruote-e-cerchi]]
|
||||||
|
- [[trasmissione-e-catena]]
|
||||||
|
- [[copertoni-tubeless]]
|
||||||
|
- [[attrezzatura-gravel]]
|
||||||
|
- [[accessori-gadget]]
|
||||||
|
- [[gps-e-ciclocomputer]]
|
||||||
|
- [[app-e-servizi]]
|
||||||
|
- [[trasmissioni-tv]]
|
||||||
|
- [[film-podcast]]
|
||||||
- [[BincioActivity]]
|
- [[BincioActivity]]
|
||||||
|
|
||||||
- [[BincioOfficina]]
|
- [[BincioOfficina]]
|
||||||
- Manutenzione
|
- [[freni-a-disco]]
|
||||||
- Riparazioni
|
- [[manutenzione-cambio]]
|
||||||
- Fai da te
|
- [[meccanica-base]]
|
||||||
|
|
||||||
- [[BincioTour]]
|
- [[BincioTour]]
|
||||||
- Tour report
|
- [[strade-e-percorsi]]
|
||||||
- Bike packing
|
- [[bikepacking]]
|
||||||
- Rotte e itinerari
|
- [[commuting]]
|
||||||
- Logistica
|
- [[uscite-bincio]]
|
||||||
|
- [[regolamentazioni]]
|
||||||
|
- [[mercato-usato]]
|
||||||
|
|
||||||
- [[BincioCorsa]]
|
- [[BincioCorsa]]
|
||||||
- Allenamento
|
|
||||||
- Gare e competizioni
|
|
||||||
- Performance
|
|
||||||
|
|
||||||
- [[BincioAbbigliamento]]
|
- [[BincioAbbigliamento]]
|
||||||
- Abbigliamento tecnico
|
|
||||||
- Comfort e protezione
|
- Documentazione
|
||||||
- Stagionalità
|
- [[come-funziona-il-giardino]]
|
||||||
|
- [[come-usare-le-categorie]]
|
||||||
|
- [[markdown]]
|
||||||
|
- [[wikirefs]]
|
||||||
|
|||||||
@@ -3,34 +3,71 @@ import Base from '../../layouts/Base.astro';
|
|||||||
import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
|
import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
|
||||||
import { getCollection } from 'astro:content';
|
import { getCollection } from 'astro:content';
|
||||||
|
|
||||||
|
const SECTIONS = [
|
||||||
|
{ slug: 'bincio-tech', label: 'BincioTech', desc: 'Tecnologia, gadget e componenti' },
|
||||||
|
{ slug: 'bincio-officina', label: 'BincioOfficina', desc: 'Manutenzione e riparazioni' },
|
||||||
|
{ slug: 'bincio-tour', label: 'BincioTour', desc: 'Tour, bike packing e rotte' },
|
||||||
|
{ slug: 'bincio-corsa', label: 'BincioCorsa', desc: 'Allenamento e gare' },
|
||||||
|
{ slug: 'bincio-abbigliamento', label: 'BincioAbbigliamento', desc: 'Abbigliamento tecnico' },
|
||||||
|
];
|
||||||
|
|
||||||
const allEntries = await getCollection('entries');
|
const allEntries = await getCollection('entries');
|
||||||
|
|
||||||
const wikiEntries = allEntries
|
const bySection: Record<string, typeof allEntries> = Object.fromEntries(SECTIONS.map(s => [s.slug, []]));
|
||||||
.filter(e => !e.id.startsWith('_'))
|
const uncategorized: typeof allEntries = [];
|
||||||
.sort((a, b) => (b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf()
|
|
||||||
- (a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf());
|
|
||||||
|
|
||||||
const docEntries = allEntries
|
const docEntries = allEntries
|
||||||
.filter(e => e.id.startsWith('_docs/'))
|
.filter(e => e.id.startsWith('_docs/'))
|
||||||
.sort((a, b) => a.data.title.localeCompare(b.data.title));
|
.sort((a, b) => a.data.title.localeCompare(b.data.title));
|
||||||
|
|
||||||
|
for (const entry of allEntries) {
|
||||||
|
if (entry.id.startsWith('_')) continue;
|
||||||
|
const sec = SECTIONS.find(s => entry.id.startsWith(s.slug + '/'));
|
||||||
|
if (sec) bySection[sec.slug].push(entry);
|
||||||
|
else uncategorized.push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const key of Object.keys(bySection)) {
|
||||||
|
bySection[key].sort((a, b) => a.data.title.localeCompare(b.data.title));
|
||||||
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base title={`Pagine — ${SITE_TITLE}`} description={SITE_DESCRIPTION}>
|
<Base title={`Pagine — ${SITE_TITLE}`} description={SITE_DESCRIPTION}>
|
||||||
<div class="max-w-3xl mx-auto">
|
<div class="max-w-3xl mx-auto">
|
||||||
<div class="flex items-center justify-between mb-8">
|
<div class="flex items-center justify-between mb-8">
|
||||||
<h1 class="text-3xl font-bold" style="color: var(--text-primary)">Tutte le pagine</h1>
|
<h1 class="text-3xl font-bold" style="color: var(--text-primary)">Pagine</h1>
|
||||||
<button
|
<button
|
||||||
id="new-page-btn"
|
id="new-page-btn"
|
||||||
class="text-xs text-zinc-400 hover:text-white transition-colors px-2 py-1 rounded border border-zinc-700 hover:border-zinc-500"
|
class="text-xs text-zinc-400 hover:text-white transition-colors px-2 py-1 rounded border border-zinc-700 hover:border-zinc-500"
|
||||||
>+ Nuova pagina</button>
|
>+ Nuova pagina</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{wikiEntries.length === 0 ? (
|
{SECTIONS.map(sec => bySection[sec.slug].length > 0 && (
|
||||||
<p style="color: var(--text-4)" class="text-sm italic mb-10">Nessuna pagina ancora.</p>
|
<section class="mb-8">
|
||||||
) : (
|
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">{sec.label}</h2>
|
||||||
<section class="mb-10">
|
<p class="text-xs mb-3" style="color: var(--text-5)">{sec.desc}</p>
|
||||||
<ul class="space-y-2">
|
<ul class="space-y-2">
|
||||||
{wikiEntries.map(entry => (
|
{bySection[sec.slug].map(entry => (
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href={`/entries/${entry.id}/`}
|
||||||
|
class="flex items-center gap-2 px-3 py-2 rounded-lg hover:bg-zinc-800 transition-colors group"
|
||||||
|
style="background: var(--bg-card)"
|
||||||
|
>
|
||||||
|
<span class="text-sm font-medium group-hover:text-white transition-colors" style="color: var(--text-2)">
|
||||||
|
{entry.data.title}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
))}
|
||||||
|
|
||||||
|
{uncategorized.length > 0 && (
|
||||||
|
<section class="mb-8">
|
||||||
|
<h2 class="text-lg font-semibold mb-3" style="color: var(--text-2)">Senza categoria</h2>
|
||||||
|
<ul class="space-y-2">
|
||||||
|
{uncategorized.map(entry => (
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href={`/entries/${entry.id}/`}
|
href={`/entries/${entry.id}/`}
|
||||||
@@ -50,7 +87,7 @@ const docEntries = allEntries
|
|||||||
{docEntries.length > 0 && (
|
{docEntries.length > 0 && (
|
||||||
<section>
|
<section>
|
||||||
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
|
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
|
||||||
<p class="text-xs mb-4" style="color: var(--text-5)">Come funziona questo wiki</p>
|
<p class="text-xs mb-3" style="color: var(--text-5)">Come funziona questo wiki</p>
|
||||||
<ul class="space-y-2">
|
<ul class="space-y-2">
|
||||||
{docEntries.map(entry => (
|
{docEntries.map(entry => (
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
+29
-19
@@ -3,17 +3,33 @@ import Base from '../layouts/Base.astro';
|
|||||||
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
|
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
|
||||||
import { getCollection } from 'astro:content';
|
import { getCollection } from 'astro:content';
|
||||||
|
|
||||||
|
const SECTIONS = [
|
||||||
|
{ slug: 'bincio-tech', label: 'BincioTech', desc: 'Tecnologia, gadget e componenti' },
|
||||||
|
{ slug: 'bincio-officina', label: 'BincioOfficina', desc: 'Manutenzione e riparazioni' },
|
||||||
|
{ slug: 'bincio-tour', label: 'BincioTour', desc: 'Tour, bike packing e rotte' },
|
||||||
|
{ slug: 'bincio-corsa', label: 'BincioCorsa', desc: 'Allenamento e gare' },
|
||||||
|
{ slug: 'bincio-abbigliamento', label: 'BincioAbbigliamento', desc: 'Abbigliamento tecnico' },
|
||||||
|
];
|
||||||
|
|
||||||
const allEntries = await getCollection('entries');
|
const allEntries = await getCollection('entries');
|
||||||
|
|
||||||
const wikiEntries = allEntries
|
const bySection: Record<string, typeof allEntries> = Object.fromEntries(SECTIONS.map(s => [s.slug, []]));
|
||||||
.filter(e => !e.id.startsWith('_'))
|
|
||||||
.sort((a, b) => (b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf()
|
|
||||||
- (a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf())
|
|
||||||
.slice(0, 10);
|
|
||||||
|
|
||||||
const docEntries = allEntries
|
const docEntries = allEntries
|
||||||
.filter(e => e.id.startsWith('_docs/'))
|
.filter(e => e.id.startsWith('_docs/'))
|
||||||
.sort((a, b) => a.data.title.localeCompare(b.data.title));
|
.sort((a, b) => a.data.title.localeCompare(b.data.title));
|
||||||
|
|
||||||
|
for (const entry of allEntries) {
|
||||||
|
if (entry.id.startsWith('_')) continue;
|
||||||
|
const sec = SECTIONS.find(s => entry.id.startsWith(s.slug + '/'));
|
||||||
|
if (sec) bySection[sec.slug].push(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const key of Object.keys(bySection)) {
|
||||||
|
bySection[key].sort((a, b) =>
|
||||||
|
(b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf() -
|
||||||
|
(a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf()
|
||||||
|
);
|
||||||
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base title={SITE_TITLE} description={SITE_DESCRIPTION}>
|
<Base title={SITE_TITLE} description={SITE_DESCRIPTION}>
|
||||||
@@ -25,11 +41,12 @@ const docEntries = allEntries
|
|||||||
<p style="color: var(--text-4)">La memoria collettiva del gruppo Bincio.</p>
|
<p style="color: var(--text-4)">La memoria collettiva del gruppo Bincio.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{wikiEntries.length > 0 ? (
|
{SECTIONS.map(sec => bySection[sec.slug].length > 0 && (
|
||||||
<section class="mb-10">
|
<section class="mb-8">
|
||||||
<h2 class="text-lg font-semibold mb-4" style="color: var(--text-2)">Pagine recenti</h2>
|
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">{sec.label}</h2>
|
||||||
|
<p class="text-xs mb-3" style="color: var(--text-5)">{sec.desc}</p>
|
||||||
<ul class="space-y-2">
|
<ul class="space-y-2">
|
||||||
{wikiEntries.map(entry => (
|
{bySection[sec.slug].map(entry => (
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href={`/entries/${entry.id}/`}
|
href={`/entries/${entry.id}/`}
|
||||||
@@ -43,20 +60,13 @@ const docEntries = allEntries
|
|||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<p class="mt-4 text-sm">
|
|
||||||
<a href="/entries" style="color: var(--accent)" class="hover:opacity-80 transition-opacity">Tutte le pagine →</a>
|
|
||||||
</p>
|
|
||||||
</section>
|
</section>
|
||||||
) : (
|
))}
|
||||||
<section class="mb-10">
|
|
||||||
<p style="color: var(--text-4)" class="text-sm italic">Nessuna pagina ancora.</p>
|
|
||||||
</section>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{docEntries.length > 0 && (
|
{docEntries.length > 0 && (
|
||||||
<section>
|
<section>
|
||||||
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
|
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
|
||||||
<p class="text-xs mb-4" style="color: var(--text-5)">Come funziona questo wiki</p>
|
<p class="text-xs mb-3" style="color: var(--text-5)">Come funziona questo wiki</p>
|
||||||
<ul class="space-y-2">
|
<ul class="space-y-2">
|
||||||
{docEntries.map(entry => (
|
{docEntries.map(entry => (
|
||||||
<li>
|
<li>
|
||||||
|
|||||||
Reference in New Issue
Block a user