It's better to use a guard for actual access control (block private routes if not logged in).
Use layout components (AppLayout, PublicLayout) for structural differences (topbar vs no topbar).
Avoid keeping route state logic (isPublicRoute) in AppComponent — it’s better in a guard/service/layout.