Skip to content

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

#DocumentContents
1Package overviewPurpose, scope, ecosystem, versioning
2SusRouter APICore: Register, Push, Replace, Back, Forward, named/nested, redirect, alias, query, lazy
3SusScreen — lifecycleBase class, hooks (BeforeEnter/Entered/BeforeLeave/Left/BeforeRouteUpdate), SusComponent integration
4SusRouteView + KeepAliveVisual container, screen swaps, KeepAlive LRU cache, nested routes
5Modal dialogsSusRouterModal base class, SusModalService: modal stack, DismissOnClickOutside
6Guards and transitionsGuard pipeline (beforeEach/CanEnter/CanLeave/BeforeResolve), SusRouteTransition (code-based)
7Comparison with previous navigatorUINavigator vs SusRouter: metrics, architecture
8Running the samples7 samples: BasicRouting, KeepAlive, Guards, Modals, Nested+Named, RouteLink, FullDemo
9Gap Analysis vs Vue RouterPhases A/B/C: what is implemented, what is deferred
10GlossaryTerms: Record, Route, Guard, KeepAlive, Overlay, Props, Query

Package-only checklists 08-implementation-plan.md / 09-audit.md are 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

Samples (Samples~/)

#SampleRouter featuressus-kit components
1BasicRoutingPush, Replace, BackSusTabs, SusButton, SusChip, SusRouteLink, SusTextfield, SusToggle, SusImg
2KeepAliveKeepAlive = true/falseSusTabs, SusButton, SusTextfield, SusToggle, SusChip
3GuardsbeforeEach, CanEnter, CanLeave, beforeResolveSusTabs, SusButton, SusToggle, SusTextfield, SusChip
4Modals & TransitionsSusRouterModal, Fade/Slide, NavigateWithTransitionSusTabs, SusButton, SusModal
5Nested & Namedchildren, PushNamed, :id, ?q=, alias, redirect, lazySusTabs, SusChip, SusTextfield, SusToggle, SusButton
6RouteLinkSusRouteLink, router-link-activeSusRouteLink, Label
7Full DemoEverything + themingSusTabs(vertical), SusButton, SusChip, SusToggle, SusTextfield, SusModal
  • 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

Open-core: Core & Router MIT · Kit & Game commercial