@leumas/features
Shared user-facing surfaces — providers, guards, the app shell, and the Dashboard/Social/AppIndex/Account/Imperium pages that Web, Studio and iOS all compose. Studio adds admin pages on top.
@leumas/features
The shared frontend surfaces every Leumas product composes — so Web, Studio and iOS look and behave identically and stay DRY. Web = these public surfaces. Studio = these + its admin pages. iOS = Web.
Composes: @leumas/{ui, theme, api-client, auth, analytics, assets-sdk, config-registry, leviathan}.
Exports
- Providers:
AppProviders(Theme+Analytics+Api+Auth+Membership+Tenant),useApi/useAuth/useTenant/useMembership. - Guards:
RequireAuth,RequireRole,RequireMembership(the Leumas admin passes every gate). - Shell:
AppLayout(chrome + tenant/role nav + embedded Leviathan). - Surfaces:
Login,Dashboard,AppIndexHUD(the "Google HUD" home),SocialFeed,Account,
ImperiumSites + ImperiumRenderer (config-driven subdomains via api.db('configs')).
Usage (a product's App)
import { AppProviders, AppLayout, AppIndexHUD, RequireMembership, ImperiumSites } from '@leumas/features';
<AppProviders apiBase={import.meta.env.VITE_API_BASE} tenant={TENANT}>
<AppLayout>
<Routes>
<Route path="/" element={<AppIndexHUD />} />
<Route path="/sites" element={<RequireMembership><ImperiumSites /></RequireMembership>} />
{/* … */}
</Routes>
</AppLayout>
</AppProviders>What it exports
231 exports: 100 components, 52 hooks, 79 helpers. Import from @leumas/features.
AccountAppDetailModalAppIndexHUDAppLayoutAppProvidersAppStoreBrowserAttachBarBACKGROUNDSBODY3D_IDSComingSoonCommandsProviderConnectionsManagerConnectionsPickerCONSOLES_MANIFESTDASHBOARD_NAVDEFAULT_ENVIRONMENTDEFAULT_KEYMAPDEFAULT_KEYMAPDEFAULT_LAYOUT_KEYDEFAULT_PLACEDEFAULT_TENANTDOMAIN_POPULATORDYNAMIC_COMPONENT_TEMPLATEEntityPickerENVIRONMENT_KEYSENVIRONMENTSFAMILY_LABELFAMILY_MANAGE_HREFFAMILY_METAForgeSurfaceGoogleSignInButtonHEAVY_VIEWSHudMeterHudPanelHudSectionHudShellHudStatTileHudTabsImperiumRendererImperiumSitesJOB_KINDLAYOUT_ALIASESLAYOUTS_COLLECTIONLeumasFormControlsLISTS_COLLECTIONListsSurfaceLoginMcpBrowserMcpPickerMediaPickerNavBeamNavViewHostNavWheelNeonAppCardNotFoundOperatorPageOracleHostOS_MANIFESTOsDesktopPagePHYSICS_MANIFESTPLACE_KEYSPLACESPluginFramePluginManifestsProviderPOPULATOR_BY_KINDPOPULATORSProviderSetupDialogPublicLinksRECIPES_COLLECTIONREGISTRY_TTL_MSRequireAuthRequireCapabilityRequireMembershipRequireRoleRequireStaffROUTE_COMPONENT_CATALOGRouteBoundaryRouteErrorBoundaryRouteShellRouteTabsRouteTransitionProviderRunsSurfaceSHORTCUT_ACTIONSSHORTCUT_ACTIONSSignupSiteRouterSKILL_CATEGORIESSKILL_RISKSSkillsLibrarySkillsPickerSOCIAL_MANIFESTSocialAppSsrComponentPageSsrRoutePageStaticFilePageUNPRICED_HINTUpdatePromptViewSwitcherWorldStageXRayHostuseApiuseAuthuseBulkforgeuseBulkforgeRunsuseCapabilitiesuseCapabilityuseClientRoutesuseClockuseCommandsuseCommandStoreuseConnectionsuseContextNavuseContextNavPresenceuseContributedNavRowsuseContributeNavRowsuseDomainRinguseDomainRinguseEntrancePrefsuseFaviconuseHasCapabilityuseKeymapuseKeymapuseLayoutuseLimituseLinkHostinguseMcpuseMembershipusePluginManifestsusePolledResourceuseProfileViewStoreuseRegisterCommandsuseRegisterContextNavuseRegistryuseResourceuseRouteLocationuseRouteTransitionStateuseScrollMemoryuseSectionRinguseSectionRinguseSeouseShortcutsuseShortcutsuseShortcutsSuppresseduseSkillsuseStoreCataloguseTabRinguseTabRinguseTenantuseUndoableuseUndoableuseUploaderuseValueChangerPrefsactiveTabIdappIndexReadblockingPluginbodyMaterialsbodyPartsbuildSiteRouteTablecaptureVideoFrameclaimPrimarySearchcompileDynamicComponentconsolesRoutescreateDynamicHostdashboardRoutesdefineReaddisposeBodyCacheenvironmentPrefgetKeymapgetKeymapgetLayoutgetRouteComponentMetainhabitantsFromNavinstallDevBridgeinvalidateRegistryisChunkErrorisUnlockedlazyWithRetrylistLayoutslistPopulatorsloadInhabitantsloadRegistryloadResourcemanageHrefFormapLinksmarkPendingmergeNavparseItemsphysicsRoutesplacePrefplanPriceplanStatepresentForreadLocalEntrancereconcileRowsregisterDomainRingregisterLayoutregisterNavViewregisterPopulatorregisterRouteComponentregisterSectionRingShowing 200 of 231. See them all in the component index.