Přeskočit na obsah

Jak psát moudra

K tvoření obsahu pro klobouk si ve většině případů vystačíte jen s textovým, nebo markdown editorem. Pro tvorbu “klobouku” je použít framework Starlight, který nám umožnuje generovat stránky s návody z .md, nebo .mdx souborů. Většinu formátování tak dokážeme zajistit snadno v textu pomocí značkovacího jazyka Markdown. Pro případy kdy si Markdownem nevystačíme však umožňuje i použití vlastních komponent, nebo přímé použití HTML.

Odstavec v md není potřeba nijak zvlášť označovat. Jedná se o jeden či více souvislých řádku textu. Další odstavec oddělujeme jedním či více “prázdnými řádky” (“řádkem obsahujícím pouze mezery či taby).

První
odstavec
textu
Druhý odstavec textu

Tučný text je možné docílit obalením daného textu dvojicí asterisků či podtržítek **tučný** bude vypadat stejně jako __text__

Text Kurzívou je možné docílit obalením daného textu jedním asteriskem či podtržítkem *Text* bude vypadat stejně jako _kurzívou_

Proškrtnutí textu je možné docílit obalením daného textu dvojicí znaku “tilda”. ~~Proškrtnutý text~~

Blok citace v textu označujeme ostrou závorkou na začátku každého řádku, který má citace obsahovat.

Pro vnořenou citaci je možné znak opakovat.

> Blok citace v textu označujeme ostrou závorkou
> na začátku každého řádku, který má citace obsahovat.
>> Pro vnořenou citaci je možné znak opakovat.

Zvýraznění “kódu”

Sekce “Zvýraznění “kódu””

V textu můžeme zvýraznit znaky neproporciálním písmem obalením do zpětných uvozovek. znaky `neproporciálním` písmem

Pro označení bloku textu se využívá obalením do trojice zpětných uvozovek. Pozor oproti příkladu je potřeba aby každá trojice byla na samostatném řádku.

```Lorem ipsum dolor whatever```

Hlavičky H1 až H6 označíme znakem hash # před nadpisem. Kdy počet použitých znaků udává úroveň nadpisu.

# Nadpis H1
## Nadpis H2
### Nadpis H3
#### Nadpis H4
##### Nadpis H5
###### Nadpis H6

Pro nadpis první a druhé úrovně je možné ještě alternativně využít podtržením znaky = a -

Nadpis H1
=========
Nadpis H2
---------

Odrážky nečíslovaného seznamu můžeme vytvářet pomlčkou nebo asteriskem na počátku řádku. Více úrovní je možné využít použitím tabulátoru.

* Příklad
Nějakého
* Nečíslovaného
- Seznamu
  • Příklad Nějakého
  • Nečíslovaného
    • Seznamu

Číslovaný seznam vytváříme uvedením čísla tečky a mezery na počátku řádku. Samotné číslo se nezohledňuje.

1. První
1. Druhý
1. Další úroveň
* Další nečíslovaná úroveň
  1. První
  2. Druhý
    1. Další úroveň
      • Další nečíslovaná úroveň

Číslované a nečíslované seznamy můžeme pro různé úrovně kombinovat. Viz předchozí příklad.

  • A
  • B
  • A
  • B
  • C
- [ ] A
- [ ] B
- [x] A
- [x] B
- [x] C

Odkaz se do textu vkládá kombinací dvojice hranatých a kulatých závorek. První obsahuje text odkazu a druhý samotný link.

[Odkaz](http://www.zvb.cz)

Interní odkazy můžeme využívat na obsah v rámci klobouku.

[Interní odkazy](/other/sprava-obsahu-github)

Příklad věty s referencí. 1

Příklad věty s referencí. [^1]
[^1]: Toto je reference z příkladu.

Obrázky mají podobnou notaci jako odkazy. Předchází je vykřičník a text v hranatých závorkách by měl být popisem obrázku. Pro obrázky v src/assets/images použijeme alias @images, takže odkaz nezávisí na umístění stránky.

![Popis obrázku](@images/nazev-souboru.png)

Status

![Status](http://navody.zvb.cz/img/status.PNG)
| Hlavička vlevo | Hlavička vpravo | Hlavička střed |
|----------------|----------------:|:--------------:|
| Obsah vlevo | Obsah vpravo | Obsah střed |
| Obsah vlevo | Obsah vpravo | Obsah střed |
| Obsah vlevo | Obsah vpravo | Obsah střed |
Hlavička vlevoHlavička vpravoHlavička střed
Obsah vlevoObsah vpravoObsah střed
Obsah vlevoObsah vpravoObsah střed
Obsah vlevoObsah vpravoObsah střed

Rozdělovač textu vkládáme trojicí znaku pomlčky.


---
Rozdělovač textu vkládáme trojicí znaku pomlčky
---

Barevným boxíkům, kterých už jste si mohli všimnout výše, budeme říkat aside. Notace pro jejich použití nění součástí markdownu a proto se vám mimo klobouk hezky nezobrazí. Starlight umožňuje čtyři typy Aside a to tip, note, caution a danger, které se liší barvou, ikonkou a defaultním textem. Obsahem Aside může být libovolný markdown obsah, ale nejlépe se hodí na kratší poznámky a informace. Aside je možné využít i s custom nadpisem. Ten je potřeba dát do hranatých závorek ihned za typ.

:::tip
:::note
:::caution
:::danger
:::tip[Tip s custom nadpisem]
Příklad obsahu ![Status](http://navody.zvb.cz/img/status.PNG)
:::
:::idea
blik cvak
:::
:::faq
často kladená otázka
:::

blik cvak

často kladená otázka

Komponenty jsou přepoužitelné UI funkce, které je možné využívat v rámci mdx dokumentů. Některé z nich jsou již součástí Starlight. Další si možná vytvoříme.

Pro použití komponenty v rámci dokumentu je potřeba ji nějdříve importovat na začátku dokumentu (ovšem až po frontmatter sekci).

src/content/docs/index.mdx
---
title: Welcome to my docs
---
import SomeComponent from '../../components/SomeComponent.astro';
import AnotherComponent from '../../components/AnotherComponent.astro';
<SomeComponent prop="something" />
<AnotherComponent>
Components can also contain **nested content**.
</AnotherComponent>
Polévka, Kaše, Maso
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs>
<TabItem label="Jídlo">Polévka, Kaše, Maso</TabItem>
<TabItem label="Pití">Džus, Víno, Čaj</TabItem>
</Tabs>
Postup pro Windows
Doporučená zkratka: Ctrl + K
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs syncKey="platforma">
<TabItem label="Windows" icon="seti:windows">Postup pro Windows</TabItem>
<TabItem label="macOS" icon="laptop">Postup pro macOS</TabItem>
</Tabs>
<Tabs syncKey="platforma">
<TabItem label="Windows" icon="seti:windows">Doporučená zkratka: <code>Ctrl + K</code></TabItem>
<TabItem label="macOS" icon="laptop">Doporučená zkratka: <code>Cmd + K</code></TabItem>
</Tabs>

Karta a karetní mřížka

Sekce “Karta a karetní mřížka”

Titulek karty

Obsah karty.

Hvězdy

Sirius, Vega, Betelgeuse

Měsíce

Io, Europa, Ganymede

import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components';
<Card title="Titulek karty">Obsah karty.</Card>
<CardGrid>
<Card title="Hvězdy" icon="star">
Sirius, Vega, Betelgeuse
</Card>
<Card title="Měsíce" icon="moon">
Io, Europa, Ganymede
</Card>
<LinkCard
title="Karta s odkazem"
description="Popis karty s odkazem"
href="../../other/sprava-obsahu-github"
/>
</CardGrid>

Starlight v základu obsahuje několik základních ikonek, které je možné využívet s <Icon> Komponentou

import { Icon } from '@astrojs/starlight/components';
<Icon name="star" color="goldenrod" size="2rem" />

Pro lokální obrázky můžeme využít komponentu Lightbox, která obrázek automaticky zmenší na šířku obsahu a po kliknutí jej zobrazí ve větším náhledu.

import Lightbox from '@components/Lightbox.astro';
<Lightbox src="@images/Page.png" alt="Ukázkový obrázek" />

Tooltip zvýrazní krátký pojem podobně jako odkaz a po najetí myší nebo zaměření klávesnicí zobrazí vysvětlení.

Kouzelnická škola Bradavice Škola čar a kouzel založená před více než tisíci lety. leží ve Skotsku.

import Tooltip from '@components/Tooltip.astro';
Kouzelnická škola <Tooltip tip="Škola čar a kouzel založená před více než tisíci lety.">Bradavice</Tooltip> leží ve Skotsku.

Pro odkaz na stránku, která ještě neexistuje, použijeme kratší komponentu MissingPage. Tooltip automaticky nabídne odkaz na návod k napsání článku.

Navštivte Hampton Court Green Samostatná stránka zatím není k dispozici. Chceš pomoci s psaním článku na wiki? .

import MissingPage from '@components/MissingPage.astro';
Navštivte <MissingPage>Hampton Court Green</MissingPage>.

HoverCard zobrazí větší kartu s volitelným titulkem, popisem, obrázkem a odkazem.

K opakovaným činnostem můžeme využít makra Nastavení makra Makra a makrování Krátké příkazy pro rychlé provedení opakovaných činností. Otevřít stránku .

import HoverCard from '@components/HoverCard.astro';
<HoverCard
title="Makra a makrování"
description="Krátké příkazy pro rychlé provedení opakovaných činností."
image="@images/makro.png"
imageAlt="Nastavení makra"
href="/system/makra">makra</HoverCard>

Pro interní stránku stačí href a vlastnost preview. Titulek, popis a případný obrázek se načtou z frontmatter cílové stránky během buildu.

Přečtěte si více o KAVKU Královská akademie věd, kouzel a umění Nejstarší magická výzkumná instituce na Britských ostrovech, ukrytá v lesích Gloucestershiru, která se věnuje magickému výzkumu, výuce a kulturním akcím jako slavné KAVKU Gala. Otevřít stránku .

<HoverCard href="/lore/magicke-instituce/kavku" preview>
KAVKU
</HoverCard>
  • Adresářsrc
    • Adresářcomponents
      • Header.astro
import { FileTree } from '@astrojs/starlight/components';
<FileTree>
- src
- components
- Header.astro
</FileTree>
  1. Krok první
  2. Krok druhý
import { Steps } from '@astrojs/starlight/components';
<Steps>
1. Krok první
2. Krok druhý
</Steps>
Správa obsahu
import { LinkButton } from '@astrojs/starlight/components';
<LinkButton href="../../other/sprava-obsahu-github">Správa obsahu</LinkButton>

Tlačítko může mít také variant, icon a iconPlacement.

Dokumentace Starlight

import { LinkButton } from '@astrojs/starlight/components';
<LinkButton
href="https://starlight.astro.build/"
variant="secondary"
icon="external"
iconPlacement="start"
>
Dokumentace Starlight
</LinkButton>
Nové
import { Badge } from '@astrojs/starlight/components';
<Badge text="Nové" variant="success" />

Badge podporuje i size a běžné HTML atributy jako class nebo style.

Novinka
import { Badge } from '@astrojs/starlight/components';
<Badge text="Novinka" variant="tip" size="large" />
console.log('Ahoj')
import { Code } from '@astrojs/starlight/components';
<Code code={`console.log('Ahoj')`} lang="js" />

StarlightPage a AnchorHeading

Sekce “StarlightPage a AnchorHeading”

Tyto komponenty dávají největší smysl v .astro stránkách v src/pages/, když chcete použít vzhled Starlightu i mimo běžné .md / .mdx dokumenty. Pro obyčejné články v markdownu obvykle stačí běžné nadpisy ## a ###, protože Starlight k nim anchor odkazy přidá automaticky.

---
import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
import AnchorHeading from '@astrojs/starlight/components/AnchorHeading.astro';
---
<StarlightPage frontmatter={{ title: 'Moje stránka' }}>
<AnchorHeading level="2" id="nadpis">Nadpis</AnchorHeading>
<p>Obsah stránky</p>
</StarlightPage>

Frontmatter je část souboru, která se nachází před samotným obsahem souboru. Obvykle se používá k ukládání metadat o souboru, jako je název souboru, autor, datum vytvoření a další. V tomto dokumentu vypadá následovně:

---
title: Jak psát moudra
description: Nápověda k tomu jak poskytnout svůj vlastní obsah
---

V rámci Starlight je povinnou součástí každeho md / mdx souboru a musí obsahovat minimálně položku title. Ostatní parametry jsou nepovinné, ale umožňují nám ovlivnit chování jednotlivých dokumentů.

Pro naše použití níže uvedu pouze ty nejdůležitější. Všechny parametry je možné najít na odkazu zde.

Jedná se o povinný parametr pro každý dokument. Využívá se jako hravní titulek, název v tabu prohlížeče a metadata stránky.

Používá se pro metadata stránky a poskytuje vyhledávácí data pro vyhledávací enginy.

Umožňuje přepsat výslednou URL stránky bez nutnosti přesouvat soubor v adresářové struktuře.

---
title: Článek se zkrácenou adresou
slug: zkracena-adresa
---

Typicky se hodí ve chvíli, kdy chcete zachovat starý odkaz na článek i po přejmenování souboru.

Dokáže pro stránku změnit globální nastavení pro tabulku s obsahem dokumentu.

---
title: Stránka bez obsahu
tableOfContents: false
---

Určuje šablonu rozložení stránky. Může mít hodnoty doc (viz tento dokument) nebo splash (úvodní stánka klobouku, bez sidebarů).

Umístí Hero komponentu na počátek stránky. Viz úvodní stránka klobouku. Varianta tlačítek je nyní ve výchozím stavu primary, takže není nutné ji nastavovat, pokud ji nechcete změnit.

---
title: Úvod
template: splash
hero:
title: 'Nějakej nadpis'
tagline: Něco pod tím.
image:
alt: Hustý logo
file: ../../assets/logo.png
actions:
- text: Text primárního tlačítka
link: odkaz-buttonu/
icon: right-arrow
- text: Text druhého buttonu
link: https://github.com/astronaut/my-project
icon: external
---

Slouží pro zobrazení banneru na vrchu stránky.

---
title: Page with a banner
banner:
content: Tady je můj cool banner
---

Ovlivňují chování “předchozího” a “následujícího” odkazu na konci dokumentů.

---
title: Stránka bez obsahu
prev: false
---

Určuje zda je tato stánka vyhledatelná pomocí hledání. Hodnota je true / false

Ovlivňuje chování sidebaru pokud je pro tuto stránku automaticky vygenerovaný odkaz. Platí pro odkazy ze slug nebo z automaticky generovaných skupin, ne pro položky sidebaru zapsané natvrdo přes link.

interface SidebarConfig {
label?: string;
order?: number;
hidden?: boolean;
badge?: string | BadgeConfig;
attrs?: Record<string, string | number | boolean | undefined>;
}

Součást sidebar. Určuje popisek stránky v sidebaru pokud je pro tuto stránku automaticky vygenerovaný odkaz.

Součást sidebar. Určuje pořadí stránky v sidebaru pokud je pro tuto stránku automaticky vygenerovaný odkaz. Nižší číslo řadí stránku výše.

Součást sidebar. Zabraňuje aby byla tato stránka přidána do automaticky vygenerovaných odkazů v sidebaru.

Součást sidebar. Mění chování (zobrazení) badge u odkazu této stránky v sidebaru

---
title: Stránka s badge
sidebar:
badge: New
---
---
title: Page with a badge
sidebar:
badge:
text: Experimental
variant: caution
---
interface BadgeConfig {
text: string;
variant: 'note' | 'tip' | 'caution' | 'danger' | 'success' | 'default';
class?: string;
}

Součást sidebar. Přidává html atributy k automaticky vygenerovanému odkazu. Například otevření odkazu v novém tabu.

---
title: Stránka otvírající se v novém tabu
sidebar:
attrs:
target: _blank
---
---
title: Článek se zvýrazněním v sidebaru
sidebar:
label: Doporučené čtení
order: 1
badge:
text: Nové
variant: tip
---

Náhled změn v pull requestu

Sekce “Náhled změn v pull requestu”

Každý otevřený pull request se automaticky zbuildí a nasadí na testovací server. Workflow použije příznak --base s cestou ve tvaru /previews/pr-<číslo PR>, takže se správně načtou obrázky i styly. Odkaz na náhled se objeví jako komentář v pull requestu.

Chcete-li si stejný build vyzkoušet lokálně, spusťte

Terminál
npm run build -- --base /previews/pr-123

a obsah z adresáře dist nahrajte na libovolný server například pomocí scp.

  1. Toto je reference z příkladu.