Vítej na CZS Wiki!Stránka je v aktivním vývoji a může obsahovat chyby nebo nedodělané části.

Kompletní MDX ukázka

Kitchen sink stránka pro testování Markdownu, MDX a Fumadocs komponent.


# Kompletní MDX ukázka

Tento soubor ukazuje běžné prvky Markdownu, MDX a Fumadocs komponent: text, odkazy, seznamy, tabulky, callouty, karty, grid, kroky, taby, accordion, file tree, typové tabulky a code blocky.

<Callout title="Poznámka">
  Některé komponenty mohou záviset na tom, jak máš nastavené
  `mdx-components.tsx`. Pokud používáš defaultní Fumadocs konfiguraci, část
  komponent může být dostupná bez ručních importů.
</Callout>

## Obsah stránky

<InlineTOC items={toc}>Obsah</InlineTOC>

---

## Základní Markdown

Toto je běžný odstavec s **tučným textem**, _kurzívou_, ~~přeškrtnutím~~ a `inline kódem`.

[Oficiální web Fumadocs](https://fumadocs.dev)

[Relativní odkaz na další stránku](./getting-started.mdx)

> Dokumentace by měla být stručná, přehledná a zaměřená na uživatele.

---

## Nadpisy

# H1 Nadpis

## H2 Nadpis

### H3 Nadpis

#### H4 Nadpis

##### H5 Nadpis

###### H6 Nadpis

---

## Seznamy

### Nečíslovaný seznam

- Instalace
- Konfigurace
- Použití
  - Základní scénář
  - Pokročilý scénář
- Nasazení

### Číslovaný seznam

1. Vytvoř projekt.
2. Přidej Fumadocs.
3. Napiš obsah.
4. Publikuj dokumentaci.

### Task list

- [x] Připravit projekt
- [x] Nastavit MDX
- [ ] Přidat vyhledávání
- [ ] Nasadit na produkci

---

## Callouty

<Callout title="Info">Toto je běžný informační callout.</Callout>

<Callout type="warn" title="Pozor">
  Tady můžeš upozornit na riziko, breaking change nebo důležitou poznámku.
</Callout>

<Callout type="error" title="Chyba">
  Tento blok se hodí pro časté chyby, omezení nebo nekompatibilní nastavení.
</Callout>

<Callout type="success" title="Hotovo">
  Tento krok je úspěšně dokončený.
</Callout>

---

## Karty a grid

<Cards>
  <Card
    title="Začínáme"
    description="Rychlý úvod do projektu a prvního nastavení."
    href="/docs/getting-started"
  />

<Card
  title="Konfigurace"
  description="Nastavení Fumadocs, MDX a zdrojů obsahu."
  href="/docs/configuration"
/>

<Card
  title="Komponenty"
  description="Ukázky calloutů, tabů, kroků, tabulek a dalších prvků."
  href="/docs/components"
/>

  <Card
    title="API reference"
    description="Technická dokumentace funkcí, props a typů."
    href="/docs/api"
  />
</Cards>

### Stažení souboru

<DownloadCard
  title="Vzor žádosti"
  fileName="zadost-o-studijni-pobyt.pdf"
  fileSize="248 kB"
  href="/files/zadost-o-studijni-pobyt.pdf"
/>

<DownloadCard
  title="Vzor žádosti"
  fileName="zadost-o-studijni-pobyt.xlsx"
  fileSize="248 kB"
  href="/files/zadost-o-studijni-pobyt.xlsx"
/>

<DownloadCard
  title="Vzor žádosti"
  fileName="zadost-o-studijni-pobyt.docx"
  fileSize="248 kB"
  href="/files/zadost-o-studijni-pobyt.docx"
/>

<DownloadCard
  title="Vzor žádosti"
  fileName="zadost-o-studijni-pobyt.png"
  fileSize="248 kB"
  href="/files/zadost-o-studijni-pobyt.png"
/>

<DownloadCard
  title="Vzor žádosti"
  fileName="zadost-o-studijni-pobyt.pdf"
  fileSize=""
  fileType="is"
  href="/files/zadost-o-studijni-pobyt.pdf"
/>

---

## Kroky

<Steps>

<Step title="Nainstaluj závislosti">

### Nainstaluj závislosti


Použij svůj oblíbený package manager.

```bash
npm install fumadocs-ui fumadocs-core
```

</Step>

<Step title="Přidej zdroj obsahu">

### Přidej zdroj obsahu


Vytvoř například soubor `source.config.ts`.

```ts
import { defineDocs } from 'fumadocs-mdx/config';

export const docs = defineDocs({
  dir: 'content/docs',
});
```

</Step>

<Step title="Vytvoř MDX stránku">

### Vytvoř MDX stránku


Soubor může být například:

```txt
content/docs/index.mdx
```

</Step>

<Step title="Spusť projekt">

### Spusť projekt


```bash
npm run dev
```

</Step>

</Steps>
## Taby

<Tabs items={['npm', 'pnpm', 'yarn', 'bun']}>
  <Tab value="npm">
    ```bash
    npm install fumadocs-ui fumadocs-core
    ```
  </Tab>

  <Tab value="pnpm">
    ```bash
    pnpm add fumadocs-ui fumadocs-core
    ```
  </Tab>

  <Tab value="yarn">
    ```bash
    yarn add fumadocs-ui fumadocs-core
    ```
  </Tab>

  <Tab value="bun">
    ```bash
    bun add fumadocs-ui fumadocs-core
    ```
  </Tab>
</Tabs>

---

## Accordion

<Accordions>
  <Accordion title="Co je Fumadocs?">
    Fumadocs je sada nástrojů pro tvorbu dokumentačních webů v React/Next.js prostředí.
  </Accordion>

<Accordion title="Můžu používat běžný Markdown?">
  Ano. MDX kombinuje Markdown s React komponentami, takže můžeš psát běžný text
  a zároveň vkládat interaktivní komponenty.
</Accordion>

  <Accordion title="Kdy použít vlastní komponentu?">
    Vlastní komponentu použij tehdy, když potřebuješ opakovat složitější blok obsahu, například pricing box, demo, srovnávací kartu nebo vizualizaci.
  </Accordion>
</Accordions>

---

## Tabulky

| Funkce    | Popis                               | Stav       |
| --------- | ----------------------------------- | ---------- |
| Markdown  | Základní syntaxe pro textový obsah  | Hotovo     |
| MDX       | React komponenty uvnitř dokumentace | Hotovo     |
| Search    | Vyhledávání v dokumentaci           | Volitelné  |
| Dark mode | Podpora světlého a tmavého režimu   | Doporučeno |

### Zarovnání v tabulce

| Položka | Vlevo | Na střed | Vpravo |
| :------ | :---- | :------: | -----: |
| A       | text  |   text   |    100 |
| B       | text  |   text   |    250 |
| C       | text  |   text   |  1 000 |

---

## Code blocky

### JavaScript

```js
export function greet(name) {
  return `Hello, ${name}!`;
}

console.log(greet("Fumadocs"));
```

### TypeScript

```ts
type User = {
  id: string;
  name: string;
  role: "admin" | "editor" | "viewer";
};

export function canEdit(user: User) {
  return user.role === "admin" || user.role === "editor";
}
```

### React komponenta

```tsx
type BadgeProps = {
  children: React.ReactNode;
};

export function Badge({ children }: BadgeProps) {
  return (
    <span className="rounded-md border px-2 py-1 text-sm">{children}</span>
  );
}
```

### JSON

```json
{
  "name": "docs",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build"
  }
}
```

### Bash

```bash
npm run dev
```

---

## Diagramy (Mermaid)

Vykreslí se živý diagram v barvách webu. Lze psát jako blok ` ```mermaid ` nebo
vložit komponentu **Diagram (Mermaid)** v editoru.

```mermaid
flowchart TD
    A[Podání přihlášky] --> B{Splněny podmínky?}
    B -- Ano --> C[Schválení]
    B -- Ne --> D[Doplnění údajů]
    D --> B
    C --> E[Výjezd na pobyt]
```

```mermaid
sequenceDiagram
    participant S as Student
    participant C as CZS
    participant U as Univerzita
    S->>C: Odeslání Learning Agreement
    C->>U: Potvrzení
    U-->>S: Akceptace
```

---

## Inline MDX výraz

Aktuální rok můžeš vypsat přímo v MDX:

{new Date().getFullYear()}

---

## Souborová struktura

<Files>
  <Folder name="content" defaultOpen>
    <Folder name="docs" defaultOpen>
      <File name="index.mdx" />
      <File name="getting-started.mdx" />
      <File name="components.mdx" />
      <File name="api.mdx" />
    </Folder>
  </Folder>

<Folder name="app">
  <Folder name="docs">
    <File name="page.tsx" />
    <File name="layout.tsx" />
  </Folder>
</Folder>

  <File name="source.config.ts" />
  <File name="mdx-components.tsx" />
  <File name="package.json" />
</Files>

---

## Typová tabulka

<TypeTable
  type={{
    title: {
      description: "Nadpis stránky nebo komponenty.",
      type: "string",
      required: true,
    },
    description: {
      description:
        "Krátký popis zobrazovaný v náhledech, metadatech nebo kartách.",
      type: "string",
      required: false,
    },
    href: {
      description: "Cílová URL adresa.",
      type: "string",
      required: false,
    },
    disabled: {
      description: "Zakáže interakci s komponentou.",
      type: "boolean",
      default: "false",
    },
  }}
/>

---

## Obrázky

Markdown obrázek:

![Ukázkový obrázek](https://placehold.co/1920x1080.png)

---

## Vlastní HTML / JSX

<div className="rounded-xl border p-4">
  <p>
    Toto je vlastní HTML/JSX blok uvnitř MDX. Hodí se pro jednoduché layouty,
    které nechceš vytvářet jako samostatnou komponentu.
  </p>
</div>

---

## Definiční ukázka

### Příklad frontmatteru

```mdx
---
title: Getting Started
description: Rychlý úvod do projektu.
---

# Getting Started

Vítej v dokumentaci.
```

### Příklad `mdx-components.tsx`

```tsx
import defaultMdxComponents from "fumadocs-ui/mdx";
import type { MDXComponents } from "mdx/types";

export function getMDXComponents(components?: MDXComponents): MDXComponents {
  return {
    ...defaultMdxComponents,
    ...components,
  };
}
```

---

## Matematika, pokud ji máš zapnutou

Inline zápis:

`E = mc^2`

Blokový zápis jako text:

```txt
a^2 + b^2 = c^2
```

<Callout type="warn" title="Poznámka k matematice">
  Skutečné renderování LaTeXu závisí na tom, jestli máš v MDX pipeline zapnuté
  příslušné remark/rehype pluginy.
</Callout>

---

## Escaping znaků

Pokud chceš zobrazit JSX jako text, použij code block:

```tsx
<Card title="Ukázka" href="/docs/example" />
```

Nebo inline zápis: `<Card />`.

---

## Kombinace komponent

<Callout title="Doporučený postup">
  Níže je ukázka, jak můžeš spojit karty, kroky a taby do jedné dokumentační
  sekce.
</Callout>

<Cards>
  <Card title="Instalace" href="#kroky" />
  <Card title="Package manager" href="#taby" />
  <Card title="Struktura projektu" href="#souborová-struktura" />
</Cards>

---

## FAQ

<Accordions type="single">
  <Accordion title="Musím importovat všechny komponenty v každém MDX souboru?">
    Nemusíš. Často je lepší je registrovat globálně v `mdx-components.tsx`.
    Importy přímo v MDX se ale hodí pro ukázkový nebo izolovaný soubor.
  </Accordion>

<Accordion title="Můžu kombinovat Markdown a React?">
  Ano. To je hlavní výhoda MDX.
</Accordion>

  <Accordion title="Je tento soubor vhodný pro produkci?">
    Spíš jako referenční ukázka. V reálné dokumentaci by stránka měla být kratší a zaměřená na konkrétní téma.
  </Accordion>
</Accordions>

---

## Závěr

Tento soubor můžeš použít jako testovací stránku pro ověření, že ti fungují:

- frontmatter metadata,
- běžný Markdown,
- MDX výrazy,
- importované React komponenty,
- Fumadocs komponenty,
- code blocky,
- tabulky,
- callouty,
- karty,
- taby,
- kroky,
- accordion,
- file tree,
- typové tabulky.