sheengemologic ui
All components

AdminApp

The Sheen application baseline with placement-safe chrome, scoped services, retained content, and responsive details.@gemologic/sheen-patterns · application

Playground

Application content

<ThemeProvider><AdminApp label="Operations" pathname="/orders" product={{ name: "Northstar", href: "/" }} primaryNavigation={{ id: "primary", label: "Primary", items: [{ kind: "link", id: "orders", label: "Orders", href: "/orders" }] }} preset="standard"><p>Application content</p></AdminApp></ThemeProvider>

Variant matrix

Standard admin baseline

Application content

preset: standard

Application content

preset: workspace

Application content

preset: horizontal

Application content

preset: inspector

Application content

Anatomy

Package
@gemologic/sheen-patterns
Source
packages/patterns/src/AdminApp.tsx
Tokens
  • --sheen-admin-color-canvas
  • --sheen-admin-color-topbar
  • --sheen-admin-color-sidebar
  • --sheen-admin-color-details
  • --sheen-admin-color-status
  • --sheen-admin-color-nav-hover
  • --sheen-admin-color-nav-active
  • --sheen-admin-color-nav-active-fg
  • --sheen-color-focus-ring

Accessibility

Role: banner, navigation, main, complementary, contentinfo, dialog, statusKeyboard: Tab, Shift+Tab, ArrowLeft, ArrowRight, Home, End, Escape, mod+k, mod+/, ?

Do

  • Treat placements and appearance as stable server input; use themes and accents for global brand axes and admin aliases for shell-specific surfaces.
  • Give each page one focal working region: a metric/chart overview, a collection toolbar and rows, a registry and create form, or settings with save/discard controls.
  • Use at most one filled accent action per active task surface; dialogs own a separate task and destructive confirmations use danger semantics.
  • Use semantic surface depth and explicit locale-aware numeric precision. Keep counts factual and consistent with the accepted workspace scope.
  • Compose structured fields from named controls with group counts and field-specific errors; preserve native form values and drafts through refresh.

Do not

  • Do not remount AdminApp during refresh or use it as a global arbitrary-content modal manager.
  • Do not invent historical trends, account-creation actions, or low-contrast text to fill a composition. Keep developer diagnostics in the explicit design lab.
  • Do not count accent actions across unrelated runtime surfaces with a global JSX rule or animate layout content on mount.

Generated props

NameTypeDefaultDescription
label *string—Accessible name for the primary content scrolling region.
documentTitlestring—Optional accepted-route document title. Requires an app-owned MetaProvider.
presetAdminPresetstandardNamed deterministic placement configuration.
appearanceAdminAppearance—Independent semantic chrome, navigation, and action treatments. Exact brand colors use the documented --sheen-admin-color-* aliases.
themeThemeOverrides—Optional scoped theme, mode, accent, density, radius, motion, direction, and locale overrides. Omitted axes inherit; density alone defaults to comfortable.
placementsreadonly AdminPlacementOverride[]—Per-zone validated overrides. A zone may occur at most once.
pathname *string—Accepted app pathname for native navigation matching.
routerRouterAdapter—Optional app-injected navigation and unsaved-change adapter.
productAdminProductModel | undefined—Optional app-owned product identity.
workspaceAdminWorkspaceModel | undefined—Optional app-owned workspace selector model.
primaryNavigationAdminNavigationModel | undefined—Optional app-owned primary navigation tree. Links may expose named sibling action menus without nesting controls inside destinations.
secondaryNavigationAdminNavigationModel | undefined—Optional app-owned secondary navigation tree. Links may expose named sibling action menus without changing link semantics.
currentViewJSX.Element—Optional breadcrumb or accepted current-view label.
globalSearchJSX.Element—Optional app-owned search control. Sheen does not perform the search.
actionGroupsreadonly AdminActionGroup[] | undefined—Semantic primary, utility, and help action groups with native Button or Link behavior. Optional group presentation='overflow' puts infrequent controls in a scoped, keyboard-operable popover; use icon factories for deferred rendering there.
notificationsAdminNotificationModel | undefined—Optional app-owned notification model.
accountAdminAccountModel | undefined—Optional app-owned account identity and menu. Sheen does not authenticate.
commandPaletteAdminCommandPaletteModel | undefined—Optional scoped command sources, state, persistence, and error hooks.
detailsAdminDetailsModel | undefined—Optional controlled or URL-backed details identity and its single content owner.
statusBarJSX.Element—Optional fixed application status content.
refreshingbooleanfalseMarks accepted page content busy without replacing or remounting it.
contentReadyboolean—Forwarded route readiness for pane-scroll restoration.
sidebarCollapsedboolean—Controlled desktop icon-rail state. Phone navigation remains a full drawer.
defaultSidebarCollapsedbooleanfalseServer-resolved uncontrolled initial icon-rail state.
onSidebarCollapsedChange(collapsed: boolean) => void—Collapse proposals from the shell toggle and mod+/ shortcut.
sidebarPersistenceAdminSidebarPersistence—Explicit server-resolved initial preference plus app-owned save and safe error handling. No localStorage read occurs.
mobileSidebarOpenboolean—Optional app-owned phone drawer state, independent of desktop collapse.
onMobileSidebarOpenChange(open: boolean) => void—Phone drawer visibility proposals.
shortcutHelpbooleantrueEnable the shared question-mark shortcut sheet and pending shortcut status.
developmentbooleanfalseEnable development-only shortcut diagnostics.
authorizationKeystring—Optional diagnostic boundary identity. Apps must clear unauthorized models and content synchronously when it changes.
classstring—Additional class on the low-level AppShell root.
children *JSX.Element—Accepted page content. Background refresh keeps this owner mounted.
Native Solid/HTML attributes remain available and are omitted from this authored-prop view.