diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index b75f65b5..9c537f1a 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -39,7 +39,7 @@ body:
id: repro
attributes:
label: Minimal reproduction
- description: Smallest HTML + JS that shows the bug, or a link to a fork/playground. Prefer root-absolute paths and `aura-router-link`.
+ description: Smallest HTML + JS that shows the bug, or a link to a fork/playground. Prefer root-absolute paths and `data-aura-link`.
placeholder: |
```html
diff --git a/README.md b/README.md
index dff71717..2ed47f81 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ Try it: [Live demo](https://aura-ui.github.io/router-preview/) · [Open in Stack
npm install @auraui/router
```
-[10-minute tutorial](./docs/tutorial.md) · [Quick start](#quick-start) · [Guide](./docs/guide.md) · [Recipes](./docs/recipes/)
+[10-minute tutorial](./docs/tutorial.md) · [Quick start](#quick-start) · [Guide](./docs/guide.md) · [Recipes](./docs/recipes/) · [MAGA](https://github.com/aura-ui/MAGA)
## Why Aura Router?
@@ -27,6 +27,19 @@ npm install @auraui/router
Works with plain HTML, Web Components, and Lit. Your backend or static host keeps rendering complete pages.
+## Design principles
+
+Aura Router follows [**MAGA**](https://github.com/aura-ui/MAGA) — and its discipline **MANA** (Minimal, Aligned, Native, Additive):
+
+- **Minimal** — the smallest layer that upgrades navigation, not a second application model
+- **Aligned** — ordinary `` stays a link; the URL stays a URL
+- **Native** — URL, history, DOM, and HTML responses remain the substrate
+- **Additive** — without JavaScript, marked links can still fall back to the server
+
+MANA does not ban abstractions. It is how Aura judges them.
+
+Vision and full essay: [aura-ui/MAGA](https://github.com/aura-ui/MAGA)
+
## How it works
1. The browser requests a normal URL.
@@ -53,7 +66,7 @@ Serve a complete page for every URL and keep the same selector around the conten
**2. Declare routes. Mark the links.**
```html
-About
+About
@@ -113,7 +126,7 @@ It runs in the browser; it is not a Node SSR runtime. Your server or static host
Current release: **0.2.0**
-**Documentation:** [Guide](./docs/guide.md) · [Recipes](./docs/recipes/) · [Playground](./playground/) · [Known limitations](./LIMITATIONS.md)
+**Documentation:** [Guide](./docs/guide.md) · [Recipes](./docs/recipes/) · [MAGA](https://github.com/aura-ui/MAGA) · [Playground](./playground/) · [Known limitations](./LIMITATIONS.md)
**Development:** [Changelog](./CHANGELOG.md) · [Roadmap](./ROADMAP.md) · [Contributing](./CONTRIBUTING.md) · [Security](./SECURITY.md)
diff --git a/docs/guide/01-fundamentals.md b/docs/guide/01-fundamentals.md
index e085165c..c8965b7c 100644
--- a/docs/guide/01-fundamentals.md
+++ b/docs/guide/01-fundamentals.md
@@ -44,8 +44,8 @@ A minimal router:
```html
diff --git a/docs/guide/02-routes-and-navigation.md b/docs/guide/02-routes-and-navigation.md
index d926e7bd..a854dbd3 100644
--- a/docs/guide/02-routes-and-navigation.md
+++ b/docs/guide/02-routes-and-navigation.md
@@ -33,11 +33,21 @@ Parameterized routes require the browser's `URLPattern`. Catch-all values are av
## Navigation
-Mark only links that Aura should intercept:
+Mark only the links that Aura should intercept.
+Use the `data-aura-link` attribute as the default marker for such links:
```html
-User
+User
```
+You can customize which links are processed by configuring the `links-selector` in ``. For example, to use a different attribute:
+```html
+
+```
+Or to handle all anchor tags on the page:
+```html
+
+```
+**Warning:** In this mode, every intercepted link must have a corresponding route defined in the router configuration. Failing to define a route for a URL will result in a 404 error, even if the page exists on the server.
Aura resolves the anchor's `href` as the browser does, requires the result to stay on the same origin, then navigates with `pathname + search + hash`.
diff --git a/docs/guide/03-views-and-layouts.md b/docs/guide/03-views-and-layouts.md
index 629f61f1..f0208ccc 100644
--- a/docs/guide/03-views-and-layouts.md
+++ b/docs/guide/03-views-and-layouts.md
@@ -112,7 +112,7 @@ Nested routes let several pages share UI without remounting it on every navigati
```html
-
+
diff --git a/docs/guide/07-navigation-ux.md b/docs/guide/07-navigation-ux.md
index 166d426b..c3d17cc7 100644
--- a/docs/guide/07-navigation-ux.md
+++ b/docs/guide/07-navigation-ux.md
@@ -81,7 +81,7 @@ Route-level `prefetch` inherits through parent routes. Use a child route or link
-Docs
+Docs
```
An absent `prefetch` attribute does not disable the feature; Aura falls back to `intent`. Set `prefetch="false"`, `off`, or `none` explicitly to opt out.
diff --git a/docs/guide/08-errors-and-accessibility.md b/docs/guide/08-errors-and-accessibility.md
index fab66bfc..757d534c 100644
--- a/docs/guide/08-errors-and-accessibility.md
+++ b/docs/guide/08-errors-and-accessibility.md
@@ -94,7 +94,7 @@ URLs with a hash do not receive branch matches.
### Link scope
-`links-container-selector` narrows scanning to the closest matching ancestor of the router. `links-selector` controls both interception and scanning and defaults to `[aura-router-link]`.
+`links-container-selector` narrows scanning to the closest matching ancestor of the router. `links-selector` controls both interception and scanning and defaults to `[data-aura-link]`.
### Read the active route branch
diff --git a/docs/guide/09-api-reference.md b/docs/guide/09-api-reference.md
index e3b3b110..ad2ed011 100644
--- a/docs/guide/09-api-reference.md
+++ b/docs/guide/09-api-reference.md
@@ -32,7 +32,7 @@ A child route can override any inherited value. Where supported, `none`, `off`,
| Attribute | Default / purpose |
| -------------------------- | ------------------------------------------------------------------------- |
| `outlet` | Selector; otherwise first document outlet, otherwise auto-created sibling |
-| `links-selector` | `[aura-router-link]` |
+| `links-selector` | `[data-aura-link]` |
| `links-container-selector` | Whole document when absent |
| `link-active-class` | No default; classes for exact active links |
| `link-active-branch-class` | No default; classes for active parent-section links |
diff --git a/docs/recipes/nested.md b/docs/recipes/nested.md
index d4541582..d0466901 100644
--- a/docs/recipes/nested.md
+++ b/docs/recipes/nested.md
@@ -29,8 +29,8 @@ The layout remains mounted while navigation stays inside `/users`; only the chil
## Links
```html
-User 1
-User 2
+User 1
+User 2
```
Because the resolved view URL changes with `:id`, moving from `/users/1` to `/users/2` remounts the child; any `ready` hook runs again. Use a stable view plus `update` when the same mounted shell should handle every id.
diff --git a/docs/recipes/not-found.md b/docs/recipes/not-found.md
index 0398f02f..aa18486d 100644
--- a/docs/recipes/not-found.md
+++ b/docs/recipes/not-found.md
@@ -14,7 +14,7 @@
diff --git a/docs/recipes/prefetch-cache.md b/docs/recipes/prefetch-cache.md
index 542eda3d..f86933ce 100644
--- a/docs/recipes/prefetch-cache.md
+++ b/docs/recipes/prefetch-cache.md
@@ -16,8 +16,8 @@
-Contacts
-User 1
+Contacts
+User 1
```
The router provides defaults; child routes and links only declare overrides.
diff --git a/docs/tutorial.md b/docs/tutorial.md
index 213a2ac8..112d0104 100644
--- a/docs/tutorial.md
+++ b/docs/tutorial.md
@@ -47,8 +47,8 @@ Create `index.html`:
@@ -115,7 +115,7 @@ Open the local URL printed by Vite, then check:
## If it does not work
-**A link performs a full reload:** confirm that it has `aura-router-link` and points to the same origin.
+**A link performs a full reload:** confirm that it has `data-aura-link` and points to the same origin.
**The wrong markup appears:** every page response must contain the selector configured in `extract` (`#content` here).
diff --git a/playground/pages/parts/nav.html b/playground/pages/parts/nav.html
index 0de6dbcb..a6b63dcb 100644
--- a/playground/pages/parts/nav.html
+++ b/playground/pages/parts/nav.html
@@ -1,12 +1,12 @@
diff --git a/playground/pages/parts/router.html b/playground/pages/parts/router.html
index daa37337..b6185972 100644
--- a/playground/pages/parts/router.html
+++ b/playground/pages/parts/router.html
@@ -37,8 +37,8 @@
Core не содержит встроенных анимаций — только фазы pipeline и staged mount. Хук fade анимирует [data-aura-view-root] на фазах transitionOut / transitionIn. При prefers-reduced-motion анимация пропускается.
Смените порядок на панели, затем несколько раз переключитесь A ↔ B — шапка и URL-бар остаются, меняется только timing перехода.
Два независимых path ссылаются на разные view. При переходе между «Страница A» и «Страница B» роутер выгружает текущий view и монтирует новый в тот же outlet. Шапка и панель навигации остаются на месте — они объявлены вне роутера.
Клик по ссылке с aura-router-link добавляет запись в session history. Последовательность A → B → «Назад» вернёт страницу A: и URL, и контент восстановятся без перезагрузки документа.
+
Клик по ссылке с data-aura-link добавляет запись в session history. Последовательность A → B → «Назад» вернёт страницу A: и URL, и контент восстановятся без перезагрузки документа.
Откройте A, перейдите на B, затем нажмите «Назад» в браузере.
Маршрут с атрибутом layout рендерит шаблон с собственным <aura-outlet>. Дочерние маршруты монтируют view во внутренний outlet. При переходе «User 1» → «User 2» layout остаётся в DOM, обновляется только содержимое slot.
@@ -40,8 +40,8 @@
Layout и вложенный outlet
Index-дочерний маршрут (path=".")
Точка (path=".") задаёт view по умолчанию для ветки. URL остаётся /features/routing-nested/users — без дополнительного сегмента и без редиректа.
Под layout — два sibling-маршрута: index (path=".", список) и профиль (path=":id"). Переход «Список» → «User 2» — смена sibling: layout остаётся, меняется конечный view. Переход «User 1» → «User 2» — update того же маршрута :id: view тот же, меняются параметр id и URL.