# SVG-obrázky map

`/v1/render/*` vrací mapu jako hotové SVG: natalní kolo, bi‑ a tri‑kolo, kompozit, védské mapy (severní, jižní, východní), mřížku aspektů, kosmogramu, fázi Měsíce, časovou osu, biorytmy, pás zatmění a hvězdnou mapu. Pošleš data narození, my spočítáme mapu a vykreslíme ji. Kompletní seznam endpointů a parametrů najdeš v [API referenci](/docs/api/).

Stejný kód pro vykreslování je publikován jako npm balíček [`@astroway/render`](https://www.npmjs.com/package/@astroway/render): pokud už máš data mapy, můžeš kolo vykreslit v prohlížeči nebo na svém serveru a bude se shodovat s tím, co vrací API, byte‑for‑byte. Verzi vykreslování API vrací v hlavičce `X-Render-Version`.

## Požadavek

```bash
curl -X POST https://api.astroway.info/v1/render/wheel-western \
  -H "X-Api-Key: $ASTROWAY_KEY" -H "Content-Type: application/json" \
  -d '{"date":"1990-05-15","time":"14:30:00","timezoneOffset":3,"latitude":50.45,"longitude":30.52,
       "options":{"theme":"css","format":"svg"}}' > wheel.svg
```

`format: "svg"` vrací samotný soubor, typický `json` zabaluje řetězec SVG do běžné odpovědi API. Témata: `light`, `dark`, `console` a `css`.

## Téma css: barvy tvého webu

S `theme: "css"` je každá barva v SVG zapsána jako CSS proměnná s barvou světlého tématu jako záložní, například `var(--aw-ring, #222)`. Vlož SVG do HTML stránek (ne do `<img>`: tam proměnné neprojdou) a nastav proměnné:

```css
.chart {
  --aw-chart-bg: transparent;
  --aw-ring: #444;
  --aw-fg: currentColor;
  --aw-aspect-tense: crimson;
}
```

Bez jakékoli proměnné mapa vypadá přesně jako `light`. CSS pravidlo tvé stránky má přednost před proměnnou, takže jednotlivý prvek můžeš přebarvit pomocí třídy.

| Variable | Co barví |
|---|---|
| `--aw-chart-bg` | pozadí mapy |
| `--aw-fg`, `--aw-muted` | glyfy a popisky, sekundární text a značky |
| `--aw-ring` | kruhy a čáry mřížky |
| `--aw-houses-fill` | pole védské mapy, disk hvězdné mapy, mapa zatmění |
| `--aw-benefic` | planety vnějšího kruhu, lagna ve védské mapě, události časové osy bez vlastní barvy |
| `--aw-malefic` | znak retrográdnosti ℞, pás zatmění |
| `--aw-aspect-harmonious`, `--aw-aspect-tense`, `--aw-aspect-neutral`, `--aw-aspect-minor`, `--aw-aspect-quintile` | čáry a symboly aspektů |
| `--aw-moon-shadow`, `--aw-moon-light` | fáze Měsíce |
| `--aw-cycle-physical`, `--aw-cycle-emotional`, `--aw-cycle-intellectual` | biorytmy |

## Třídy a data‑atributy

V tématu `css` mají západní kola (`wheel-western`, `bi-wheel`, `tri-wheel`, `composite`) a mřížka aspektů pevné třídy. Jména se jen přidávají, nikdy se nepřejmenovávají, takže na ně můžeš psát styly i skripty.

- Kolo: `aw-bg`, `aw-ring`, `aw-sign aw-sign-leo`, `aw-sign-line`, `aw-tick`, `aw-house-cusp`, `aw-house-number`, osy `aw-axis aw-asc` (`aw-dsc`, `aw-mc`, `aw-ic`), jejich popisky `aw-label aw-axis-label`, nadpis `aw-title`.
- Planeta: skupina `<g class="aw-planet aw-planet-sun">`, retrográdní má ještě `aw-retrograde`, planety vnějšího kruhu `aw-layer-1`. Uvnitř `aw-glyph`, `aw-retro` (znak ℞) a `aw-planet-tick`.
- Aspekt: čára `aw-aspect aw-aspect-trine`, čára mezi dvěma mapami také `aw-cross-aspect`.
- Mřížka aspektů: `aw-grid-header`, `aw-grid-cell`, `aw-aspect aw-aspect-square`, `aw-orb`.

Skupina planety má `data-planet` (`sun`, `north-node`, `lilith`; na vnějším kruhu `b-sun`, na třetím `c-sun`) a `data-label` s názvem a pozicí: `Mercury 8°00' Taurus, retrograde`. Čára aspektu a buňka mřížky mají `data-a` a `data-b`. Tak se zvýrazní všechny aspekty planety při najetí:

```js
svg.querySelectorAll('.aw-planet').forEach((g) => g.addEventListener('mouseenter', () => {
  const id = g.dataset.planet;
  svg.querySelectorAll('.aw-aspect').forEach((line) =>
    line.classList.toggle('is-on', line.dataset.a === id || line.dataset.b === id));
}));
```

## Vlastní popisky: labels

Západní kola přijímají `options.labels`: tvá slova pro popisky os, pro `<title>` a `<desc>`, které čtou čtečky obrazovky, a pro názvy v `data-label`. Klíče, které chybí, zůstávají v angličtině; sami je nepřekládáme.

```json
"options": {
  "theme": "css",
  "labels": {
    "asc": "Асц", "mc": "МС", "title": "Натальна карта",
    "bodies": { "Sun": "Сонце", "Moon": "Місяць" },
    "signs": ["Овен","Телець","Близнюки","Рак","Лев","Діва","Терези","Скорпіон","Стрілець","Козеріг","Водолій","Риби"],
    "retrograde": "ретроградний"
  }
}
```

`bodies` má klíče v angličtině (`Sun`, `North Node`), `signs` je přesně dvanáct názvů, počínaje Beranem, každý popisek do 40 znaků.

## Aspekty mezi dvěma mapami

`/v1/render/bi-wheel` s `options.crossAspects: true` kreslí čárkovaně aspekty mezi vnitřní a vnější mapou, stejnou sadu, kterou `POST /v1/synastry` vrací jako `crossAspects`. Pár, kde jedno z těles není vykresleno, se přeskočí. Ve výchozím nastavení je vypnuto.

## Hotová mapa místo dat narození

Pokud už máš mapu, protože jsi právě zavolal `POST /v1/chart`, pošli její `data` do pole `chart` místo dat narození a my ji jen vykreslíme. Tak fungují `wheel-western`, `aspect-grid` a `bi-wheel` (tam `natal.chart` a `outer.chart`, obě musí být hotové mapy). Výstup bude byte‑for‑byte stejný jako z dat narození.

```json
{ "chart": { "planets": [ ... ], "houses": { "cusps": [ ... ], "ascendant": 7.77, "mc": 277.12 }, "aspects": [ ... ] },
  "options": { "theme": "css" } }
```

Zbytečná pole v odpovědi můžeš nechat. Kontroluje se, co se vykresluje: od 1 do 30 těles, délky od 0 do 360, přesně 12 kuspidů. Těleso, kde je jak `chart`, tak data narození, vrací chybu 400.

## Cena

Volání `/v1/render/*` s daty narození stojí 10 kreditů, protože se mapa počítá. S hotovou mapou `chart` volání `/v1/render/wheel-western`, `/v1/render/aspect-grid` a `/v1/render/bi-wheel` stojí 1 kredit. Téma, třídy a popisky cenu nemění.
