SusRouter — documentation
Package:
com.sharq-it.sus.router
Version: 1.0.1
SUS UI router — Vue Router analog: navigation, screens, modals, KeepAlive, transitions
Table of contents
| # | Document | Contents |
|---|---|---|
| 1 | Package overview | Purpose, scope, ecosystem, versioning |
| 2 | SusRouter API | Core: Register, Push, Replace, Back, Forward, named/nested, redirect, alias, query, lazy |
| 3 | SusScreen — lifecycle | Base class, hooks (BeforeEnter/Entered/BeforeLeave/Left/BeforeRouteUpdate), SusComponent integration |
| 4 | SusRouteView + KeepAlive | Visual container, screen swaps, KeepAlive LRU cache, nested routes |
| 5 | Modal dialogs | SusRouterModal base class, SusModalService: modal stack, DismissOnClickOutside |
| 6 | Guards and transitions | Guard pipeline (beforeEach/CanEnter/CanLeave/BeforeResolve), SusRouteTransition (code-based) |
| 7 | Comparison with previous navigator | UINavigator vs SusRouter: metrics, architecture |
| 8 | Running the samples | 7 samples: BasicRouting, KeepAlive, Guards, Modals, Nested+Named, RouteLink, FullDemo |
| 9 | Gap Analysis vs Vue Router | Phases A/B/C: what is implemented, what is deferred |
| 10 | Glossary | Terms: Record, Route, Guard, KeepAlive, Overlay, Props, Query |
Package-only checklists
08-implementation-plan.md/09-audit.mdare not linked from this TOC (internal/historical).
Quick start
Prefer SusApp + UseRouter:
csharp
using Sharq.Core;
using Sharq.Router;
SusApp.Create(uiDocument)
.UseTheme(SusTheme.Dark)
.UseRouter(new SusRouter(), r =>
{
r.Register("/home", typeof(HomeScreen));
r.Register("/settings", typeof(SettingsScreen),
new SusRouteConfig { KeepAlive = true, Transition = SusRouteTransition.Fade() });
r.BeforeEach((from, to) =>
{
Debug.Log($"[Router] {from.FullPath} → {to.FullPath}");
return true;
});
}, initialPath: "/home")
.Run();Manual mount (advanced):
csharp
var router = new SusRouter();
var overlayHost = SusBootstrap.GetOrCreateOverlay(root);
router.Init(overlayHost);
router.Register("/home", typeof(HomeScreen));
router.Register("/settings", typeof(SettingsScreen),
new SusRouteConfig { KeepAlive = true, Transition = SusRouteTransition.Fade() });
router.BeforeEach((from, to) =>
{
Debug.Log($"[Router] {from.FullPath} → {to.FullPath}");
return true;
});
router.Mount(root, "/home");Where to look
- Understand router architecture → 01-overview.md and 02-router-api.md
- Write a screen → 03-susscreen.md
- Understand KeepAlive → 04-routeview.md
- Build a modal → 05-modals.md
- Add guards/transitions → 06-guards-transitions.md
- Run the samples → 10-examples.md
- See how SusRouter improves on the previous navigator → 07-comparison.md
Samples (Samples~/)
| # | Sample | Router features | sus-kit components |
|---|---|---|---|
| 1 | BasicRouting | Push, Replace, Back | SusTabs, SusButton, SusChip, SusRouteLink, SusTextfield, SusToggle, SusImg |
| 2 | KeepAlive | KeepAlive = true/false | SusTabs, SusButton, SusTextfield, SusToggle, SusChip |
| 3 | Guards | beforeEach, CanEnter, CanLeave, beforeResolve | SusTabs, SusButton, SusToggle, SusTextfield, SusChip |
| 4 | Modals & Transitions | SusRouterModal, Fade/Slide, NavigateWithTransition | SusTabs, SusButton, SusModal |
| 5 | Nested & Named | children, PushNamed, :id, ?q=, alias, redirect, lazy | SusTabs, SusChip, SusTextfield, SusToggle, SusButton |
| 6 | RouteLink | SusRouteLink, router-link-active | SusRouteLink, Label |
| 7 | Full Demo | Everything + theming | SusTabs(vertical), SusButton, SusChip, SusToggle, SusTextfield, SusModal |
Related docs
- sus-core Docs — core (reactivity, OverlayHost, bindings)
- sus-kit Docs — UI kit components
- Roadmap (sample scenes) (in package repo) — sample creation plan
- Roadmap (audit) (in package repo) — completed and deferred tasks