{
  "schema": "leumas.docs.page/1",
  "id": "pkg:@leumas/features",
  "slug": "packages/features",
  "kind": "capabilities",
  "bucket": "package",
  "title": "@leumas/features",
  "name": "@leumas/features",
  "eyebrow": null,
  "chip": null,
  "summary": "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.",
  "keywords": [
    "features",
    "appindex",
    "features api-client",
    "features assets-sdk",
    "features config-registry",
    "features api",
    "leumas features",
    "compose"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# @leumas/features\n\nThe shared frontend surfaces every Leumas product composes — so Web, Studio and iOS look and behave\nidentically and stay DRY. **Web = these public surfaces. Studio = these + its admin pages. iOS = Web.**\n\n**Composes:** `@leumas/{ui, theme, api-client, auth, analytics, assets-sdk, config-registry, leviathan}`.\n\n## Exports\n\n- **Providers:** `AppProviders` (Theme+Analytics+Api+Auth+Membership+Tenant), `useApi/useAuth/useTenant/useMembership`.\n- **Guards:** `RequireAuth`, `RequireRole`, `RequireMembership` (the Leumas admin passes every gate).\n- **Shell:** `AppLayout` (chrome + tenant/role nav + embedded Leviathan).\n- **Surfaces:** `Login`, `Dashboard`, `AppIndexHUD` (the \"Google HUD\" home), `SocialFeed`, `Account`,\n  `ImperiumSites` + `ImperiumRenderer` (config-driven subdomains via `api.db('configs')`).\n\n## Usage (a product's App)\n\n```jsx\nimport { AppProviders, AppLayout, AppIndexHUD, RequireMembership, ImperiumSites } from '@leumas/features';\n\n<AppProviders apiBase={import.meta.env.VITE_API_BASE} tenant={TENANT}>\n  <AppLayout>\n    <Routes>\n      <Route path=\"/\" element={<AppIndexHUD />} />\n      <Route path=\"/sites\" element={<RequireMembership><ImperiumSites /></RequireMembership>} />\n      {/* … */}\n    </Routes>\n  </AppLayout>\n</AppProviders>\n```\n",
  "source": {
    "path": "shared/packages/features/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 1510,
    "hash": "e8eeeb76d3d83e533106de227da651807142a95e"
  },
  "urls": {
    "html": "/p/packages/features",
    "json": "/docs/packages/features.json",
    "md": "/docs/packages/features.md"
  },
  "links": {
    "composes": [
      "pkg:@leumas/api-client",
      "pkg:@leumas/assets-sdk",
      "pkg:@leumas/avatar",
      "pkg:@leumas/body-3d",
      "pkg:@leumas/capability-sdk",
      "pkg:@leumas/config-registry",
      "pkg:@leumas/entrance",
      "pkg:@leumas/game-3d",
      "pkg:@leumas/game-kit",
      "pkg:@leumas/leviathan",
      "pkg:@leumas/schemas",
      "pkg:@leumas/sing",
      "pkg:@leumas/sound",
      "pkg:@leumas/theme",
      "pkg:@leumas/ui",
      "pkg:@leumas/value-changer"
    ],
    "usedBy": [
      "pkg:@leumas/admin",
      "pkg:@leumas/domain-kit",
      "pkg:@leumas/studio",
      "pkg:@leumas/web"
    ],
    "product": [
      "pkg:@leumas/admin",
      "pkg:@leumas/studio",
      "pkg:@leumas/web"
    ],
    "howTo": [],
    "skills": [
      "skill:leumas-brand-marks",
      "skill:leumas-domains"
    ]
  },
  "exports": {
    "total": 252,
    "component": 107,
    "hook": 52,
    "helper": 93,
    "names": [
      {
        "n": "Account",
        "k": "component"
      },
      {
        "n": "AppDetailModal",
        "k": "component"
      },
      {
        "n": "AppIndexHUD",
        "k": "component"
      },
      {
        "n": "AppLayout",
        "k": "component"
      },
      {
        "n": "AppProviders",
        "k": "component"
      },
      {
        "n": "AppStoreBrowser",
        "k": "component"
      },
      {
        "n": "AttachBar",
        "k": "component"
      },
      {
        "n": "BACKGROUNDS",
        "k": "component"
      },
      {
        "n": "BODY3D_IDS",
        "k": "component"
      },
      {
        "n": "ComingSoon",
        "k": "component"
      },
      {
        "n": "CommandsProvider",
        "k": "component"
      },
      {
        "n": "ConnectionsManager",
        "k": "component"
      },
      {
        "n": "ConnectionsPicker",
        "k": "component"
      },
      {
        "n": "CONSOLES_MANIFEST",
        "k": "component"
      },
      {
        "n": "DASHBOARD_NAV",
        "k": "component"
      },
      {
        "n": "DEFAULT_ENVIRONMENT",
        "k": "component"
      },
      {
        "n": "DEFAULT_KEYMAP",
        "k": "component"
      },
      {
        "n": "DEFAULT_KEYMAP",
        "k": "component"
      },
      {
        "n": "DEFAULT_LAYOUT_KEY",
        "k": "component"
      },
      {
        "n": "DEFAULT_PLACE",
        "k": "component"
      },
      {
        "n": "DEFAULT_TENANT",
        "k": "component"
      },
      {
        "n": "DOMAIN_POPULATOR",
        "k": "component"
      },
      {
        "n": "DYNAMIC_COMPONENT_TEMPLATE",
        "k": "component"
      },
      {
        "n": "EntityPicker",
        "k": "component"
      },
      {
        "n": "ENVIRONMENT_KEYS",
        "k": "component"
      },
      {
        "n": "ENVIRONMENTS",
        "k": "component"
      },
      {
        "n": "FAMILY_LABEL",
        "k": "component"
      },
      {
        "n": "FAMILY_MANAGE_HREF",
        "k": "component"
      },
      {
        "n": "FAMILY_META",
        "k": "component"
      },
      {
        "n": "ForgeSurface",
        "k": "component"
      },
      {
        "n": "GoogleSignInButton",
        "k": "component"
      },
      {
        "n": "HEAVY_VIEWS",
        "k": "component"
      },
      {
        "n": "HudMeter",
        "k": "component"
      },
      {
        "n": "HudPanel",
        "k": "component"
      },
      {
        "n": "HudSection",
        "k": "component"
      },
      {
        "n": "HudShell",
        "k": "component"
      },
      {
        "n": "HudStatTile",
        "k": "component"
      },
      {
        "n": "HudTabs",
        "k": "component"
      },
      {
        "n": "ImperiumRenderer",
        "k": "component"
      },
      {
        "n": "ImperiumSites",
        "k": "component"
      },
      {
        "n": "JOB_FILE_KIND",
        "k": "component"
      },
      {
        "n": "JOB_FILE_VERSION",
        "k": "component"
      },
      {
        "n": "JOB_KIND",
        "k": "component"
      },
      {
        "n": "LAYOUT_ALIASES",
        "k": "component"
      },
      {
        "n": "LAYOUTS_COLLECTION",
        "k": "component"
      },
      {
        "n": "LeumasFormControls",
        "k": "component"
      },
      {
        "n": "ListBuilder",
        "k": "component"
      },
      {
        "n": "LISTS_COLLECTION",
        "k": "component"
      },
      {
        "n": "ListsSurface",
        "k": "component"
      },
      {
        "n": "Login",
        "k": "component"
      },
      {
        "n": "MAX_ROWS",
        "k": "component"
      },
      {
        "n": "McpBrowser",
        "k": "component"
      },
      {
        "n": "McpPicker",
        "k": "component"
      },
      {
        "n": "MediaPicker",
        "k": "component"
      },
      {
        "n": "MODES",
        "k": "component"
      },
      {
        "n": "NavBeam",
        "k": "component"
      },
      {
        "n": "NavViewHost",
        "k": "component"
      },
      {
        "n": "NavWheel",
        "k": "component"
      },
      {
        "n": "NeonAppCard",
        "k": "component"
      },
      {
        "n": "NotFound",
        "k": "component"
      },
      {
        "n": "OperatorPage",
        "k": "component"
      },
      {
        "n": "OracleHost",
        "k": "component"
      },
      {
        "n": "OS_MANIFEST",
        "k": "component"
      },
      {
        "n": "OsDesktopPage",
        "k": "component"
      },
      {
        "n": "PHYSICS_MANIFEST",
        "k": "component"
      },
      {
        "n": "PLACE_KEYS",
        "k": "component"
      },
      {
        "n": "PLACES",
        "k": "component"
      },
      {
        "n": "PluginFrame",
        "k": "component"
      },
      {
        "n": "PluginManifestsProvider",
        "k": "component"
      },
      {
        "n": "POPULATOR_BY_KIND",
        "k": "component"
      },
      {
        "n": "POPULATORS",
        "k": "component"
      },
      {
        "n": "PREVIEW_ROWS",
        "k": "component"
      },
      {
        "n": "ProductNavContext",
        "k": "component"
      },
      {
        "n": "ProviderSetupDialog",
        "k": "component"
      },
      {
        "n": "PublicLinks",
        "k": "component"
      },
      {
        "n": "RECIPES_COLLECTION",
        "k": "component"
      },
      {
        "n": "REGISTRY_TTL_MS",
        "k": "component"
      },
      {
        "n": "RequireAuth",
        "k": "component"
      },
      {
        "n": "RequireCapability",
        "k": "component"
      },
      {
        "n": "RequireMembership",
        "k": "component"
      },
      {
        "n": "RequireRole",
        "k": "component"
      },
      {
        "n": "RequireStaff",
        "k": "component"
      },
      {
        "n": "ROUTE_COMPONENT_CATALOG",
        "k": "component"
      },
      {
        "n": "RouteBoundary",
        "k": "component"
      },
      {
        "n": "RouteErrorBoundary",
        "k": "component"
      },
      {
        "n": "RouteShell",
        "k": "component"
      },
      {
        "n": "RouteTabs",
        "k": "component"
      },
      {
        "n": "RouteTransitionProvider",
        "k": "component"
      },
      {
        "n": "RunsSurface",
        "k": "component"
      },
      {
        "n": "SHORTCUT_ACTIONS",
        "k": "component"
      },
      {
        "n": "SHORTCUT_ACTIONS",
        "k": "component"
      },
      {
        "n": "Signup",
        "k": "component"
      },
      {
        "n": "SiteRouter",
        "k": "component"
      },
      {
        "n": "SKILL_CATEGORIES",
        "k": "component"
      },
      {
        "n": "SKILL_RISKS",
        "k": "component"
      },
      {
        "n": "SkillsLibrary",
        "k": "component"
      },
      {
        "n": "SkillsPicker",
        "k": "component"
      },
      {
        "n": "SOCIAL_MANIFEST",
        "k": "component"
      },
      {
        "n": "SocialApp",
        "k": "component"
      },
      {
        "n": "SsrComponentPage",
        "k": "component"
      },
      {
        "n": "SsrRoutePage",
        "k": "component"
      },
      {
        "n": "StaticFilePage",
        "k": "component"
      },
      {
        "n": "UNPRICED_HINT",
        "k": "component"
      },
      {
        "n": "UpdatePrompt",
        "k": "component"
      },
      {
        "n": "ViewSwitcher",
        "k": "component"
      },
      {
        "n": "WorldStage",
        "k": "component"
      },
      {
        "n": "XRayHost",
        "k": "component"
      },
      {
        "n": "useApi",
        "k": "hook"
      },
      {
        "n": "useAuth",
        "k": "hook"
      },
      {
        "n": "useBulkforge",
        "k": "hook"
      },
      {
        "n": "useBulkforgeRuns",
        "k": "hook"
      },
      {
        "n": "useCapabilities",
        "k": "hook"
      },
      {
        "n": "useCapability",
        "k": "hook"
      },
      {
        "n": "useClientRoutes",
        "k": "hook"
      },
      {
        "n": "useClock",
        "k": "hook"
      },
      {
        "n": "useCommands",
        "k": "hook"
      },
      {
        "n": "useCommandStore",
        "k": "hook"
      },
      {
        "n": "useConnections",
        "k": "hook"
      },
      {
        "n": "useContextNav",
        "k": "hook"
      },
      {
        "n": "useContextNavPresence",
        "k": "hook"
      },
      {
        "n": "useContributedNavRows",
        "k": "hook"
      },
      {
        "n": "useContributeNavRows",
        "k": "hook"
      },
      {
        "n": "useDomainRing",
        "k": "hook"
      },
      {
        "n": "useDomainRing",
        "k": "hook"
      },
      {
        "n": "useEntrancePrefs",
        "k": "hook"
      },
      {
        "n": "useFavicon",
        "k": "hook"
      },
      {
        "n": "useHasCapability",
        "k": "hook"
      },
      {
        "n": "useKeymap",
        "k": "hook"
      },
      {
        "n": "useKeymap",
        "k": "hook"
      },
      {
        "n": "useLayout",
        "k": "hook"
      },
      {
        "n": "useLimit",
        "k": "hook"
      },
      {
        "n": "useLinkHosting",
        "k": "hook"
      },
      {
        "n": "useMcp",
        "k": "hook"
      },
      {
        "n": "useMembership",
        "k": "hook"
      },
      {
        "n": "usePluginManifests",
        "k": "hook"
      },
      {
        "n": "usePolledResource",
        "k": "hook"
      },
      {
        "n": "useProfileViewStore",
        "k": "hook"
      },
      {
        "n": "useRegisterCommands",
        "k": "hook"
      },
      {
        "n": "useRegisterContextNav",
        "k": "hook"
      },
      {
        "n": "useRegistry",
        "k": "hook"
      },
      {
        "n": "useResource",
        "k": "hook"
      },
      {
        "n": "useRouteLocation",
        "k": "hook"
      },
      {
        "n": "useRouteTransitionState",
        "k": "hook"
      },
      {
        "n": "useScrollMemory",
        "k": "hook"
      },
      {
        "n": "useSectionRing",
        "k": "hook"
      },
      {
        "n": "useSectionRing",
        "k": "hook"
      },
      {
        "n": "useSeo",
        "k": "hook"
      },
      {
        "n": "useShortcuts",
        "k": "hook"
      },
      {
        "n": "useShortcuts",
        "k": "hook"
      },
      {
        "n": "useShortcutsSuppressed",
        "k": "hook"
      },
      {
        "n": "useSkills",
        "k": "hook"
      },
      {
        "n": "useStoreCatalog",
        "k": "hook"
      },
      {
        "n": "useTabRing",
        "k": "hook"
      },
      {
        "n": "useTabRing",
        "k": "hook"
      },
      {
        "n": "useTenant",
        "k": "hook"
      },
      {
        "n": "useUndoable",
        "k": "hook"
      },
      {
        "n": "useUndoable",
        "k": "hook"
      },
      {
        "n": "useUploader",
        "k": "hook"
      },
      {
        "n": "useValueChangerPrefs",
        "k": "hook"
      },
      {
        "n": "activeTabId",
        "k": "helper"
      },
      {
        "n": "appIndexRead",
        "k": "helper"
      },
      {
        "n": "blockingPlugin",
        "k": "helper"
      },
      {
        "n": "bodyMaterials",
        "k": "helper"
      },
      {
        "n": "bodyParts",
        "k": "helper"
      },
      {
        "n": "buildJobFile",
        "k": "helper"
      },
      {
        "n": "buildSiteRouteTable",
        "k": "helper"
      },
      {
        "n": "captureVideoFrame",
        "k": "helper"
      },
      {
        "n": "categoryFor",
        "k": "helper"
      },
      {
        "n": "claimPrimarySearch",
        "k": "helper"
      },
      {
        "n": "compileDynamicComponent",
        "k": "helper"
      },
      {
        "n": "consolesRoutes",
        "k": "helper"
      },
      {
        "n": "createDynamicHost",
        "k": "helper"
      },
      {
        "n": "dashboardRoutes",
        "k": "helper"
      },
      {
        "n": "defineRead",
        "k": "helper"
      },
      {
        "n": "detectShape",
        "k": "helper"
      },
      {
        "n": "disposeBodyCache",
        "k": "helper"
      },
      {
        "n": "downloadFile",
        "k": "helper"
      },
      {
        "n": "editableArgs",
        "k": "helper"
      },
      {
        "n": "environmentPref",
        "k": "helper"
      },
      {
        "n": "getKeymap",
        "k": "helper"
      },
      {
        "n": "getKeymap",
        "k": "helper"
      },
      {
        "n": "getLayout",
        "k": "helper"
      },
      {
        "n": "getRouteComponentMeta",
        "k": "helper"
      },
      {
        "n": "guessDelimiter",
        "k": "helper"
      },
      {
        "n": "importJob",
        "k": "helper"
      },
      {
        "n": "inhabitantsFromNav",
        "k": "helper"
      },
      {
        "n": "installDevBridge",
        "k": "helper"
      },
      {
        "n": "invalidateRegistry",
        "k": "helper"
      },
      {
        "n": "isChunkError",
        "k": "helper"
      },
      {
        "n": "isUnlocked",
        "k": "helper"
      },
      {
        "n": "jobFileName",
        "k": "helper"
      },
      {
        "n": "jsonFields",
        "k": "helper"
      },
      {
        "n": "lazyWithRetry",
        "k": "helper"
      },
      {
        "n": "listLayouts",
        "k": "helper"
      },
      {
        "n": "listPopulators",
        "k": "helper"
      },
      {
        "n": "loadInhabitants",
        "k": "helper"
      },
      {
        "n": "loadRegistry",
        "k": "helper"
      },
      {
        "n": "loadResource",
        "k": "helper"
      },
      {
        "n": "manageHrefFor",
        "k": "helper"
      },
      {
        "n": "mapLinks",
        "k": "helper"
      }
    ]
  }
}
