npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@oasisomniverse/js

v1.2.0

Published

OASIS Omniverse vanilla JS web component widgets

Readme

@oasisomniverse/js — OASIS JavaScript UI Component Library

The vanilla JavaScript UI component library for the OASIS Platform. Drop 126 pre-built components into any website or web app to integrate avatar SSO, karma, NFTs, quests, map, seeds, messaging, OApps, providers and more — no framework required.

npm Live Demo

Install

npm install @oasisomniverse/js

Or via CDN:

<script src="https://cdn.jsdelivr.net/npm/@oasisomniverse/js/dist/oasis.min.js"></script>

Basic Usage

import { Login, AvatarConnect, KarmaToast } from '@oasisomniverse/js';

// Mount a login widget into a container element
const login = new Login('#login-container', {
  apiUrl: 'https://api.web4.oasisomniverse.one',
  onSuccess: (session) => console.log('Logged in:', session)
});
login.open();

// Show a karma toast notification
OasisKarmaToast.show({ message: 'Quest completed', amount: 150 });

Component Reference

All components accept an apiUrl option that defaults to https://api.web4.oasisomniverse.one. Callbacks are always optional.

Auth & Identity

OasisLogin

Avatar login popup widget.

const login = new OasisLogin({
  container,   // optional HTMLElement — mounts inline instead of as a popup
  apiUrl,      // string
  onSuccess,   // (session: { avatarId, username, karma }) => void
  onClose      // () => void
});

login.open();    // show as popup
login.close();   // dismiss
login.destroy(); // remove from DOM

| Option | Type | Default | Description | |---|---|---|---| | container | HTMLElement | — | Mount inline instead of as a floating popup | | apiUrl | string | 'https://api.web4.oasisomniverse.one' | OASIS API base URL | | onSuccess | function | null | Called with session object on successful login | | onClose | function | null | Called when the popup is dismissed |


OasisSignup

New avatar registration popup.

const signup = new OasisSignup({
  apiUrl,
  onSuccess, // (data) => void
  onClose
});
signup.open();

| Option | Type | Default | Description | |---|---|---|---| | apiUrl | string | 'https://api.web4.oasisomniverse.one' | OASIS API base URL | | onSuccess | function | null | Called with new avatar data on registration | | onClose | function | null | Called when the popup is dismissed |


OasisAvatarConnect

Login/logout toggle chip — mounts into your nav bar and manages session state automatically.

const ac = new OasisAvatarConnect({
  container: document.querySelector('#nav-auth'),
  apiUrl,
  sessionKey, // localStorage key for session persistence
  onLogin,    // (session) => void
  onLogout    // () => void
});

ac.destroy(); // remove from DOM

| Option | Type | Default | Description | |---|---|---|---| | container | HTMLElement | required | Element to mount the chip into | | apiUrl | string | 'https://api.web4.oasisomniverse.one' | OASIS API base URL | | sessionKey | string | 'oasis_session' | sessionStorage key used to persist login state | | onLogin | function | null | Called with session object after login | | onLogout | function | null | Called after logout |


OasisForgotPassword

Password reset request popup.

const fp = new OasisForgotPassword({ apiUrl, onClose });
fp.open();

OasisResetPassword

Password reset form — typically opened from a link in a reset email.

const rp = new OasisResetPassword({ apiUrl, token, onSuccess, onClose });
rp.open();

| Option | Type | Default | Description | |---|---|---|---| | token | string | required | Reset token from the email link |


OasisVerifyEmail

Email verification confirmation widget.

const ve = new OasisVerifyEmail({ apiUrl, token, onSuccess });
ve.open();

OasisSearchAvatars

Search the OASIS avatar directory.

const sa = new OasisSearchAvatars({ apiUrl, onSelect });
sa.open();

| Option | Type | Description | |---|---|---| | onSelect | (avatar) => void | Called when the user picks an avatar from results |


OasisSendInvite / OasisAcceptInvite

Send or accept a Seeds-based invite.

new OasisSendInvite({ apiUrl, onSuccess }).open();
new OasisAcceptInvite({ apiUrl, inviteCode, onSuccess }).open();

Avatar

OasisAvatarProfile

View the current avatar's full profile.

new OasisAvatarProfile({ apiUrl, avatarId, onClose }).open();

| Option | Type | Description | |---|---|---| | avatarId | string | Avatar to display — defaults to logged-in user |


OasisViewAvatar

Read-only avatar card for any avatar.

new OasisViewAvatar({ apiUrl, avatarId }).open();

OasisEditAvatar

Edit the logged-in avatar's profile fields.

new OasisEditAvatar({ apiUrl, onSuccess, onClose }).open();

OasisViewAvatarKarma

Karma breakdown for an avatar.

new OasisViewAvatarKarma({ apiUrl, avatarId }).open();

Karma

OasisKarmaToast

Static singleton — shows a floating toast notification.

OasisKarmaToast.show({
  message: 'Quest completed',  // string — reason text shown below the amount
  amount: 150                  // number — karma delta (positive or negative)
});

| Option | Type | Description | |---|---|---| | message | string | Reason text displayed below the karma amount | | amount | number | Karma delta — positive values shown in cyan, negative in red |


OasisKarmaPanel

Full karma dashboard for the logged-in avatar.

new OasisKarmaPanel({ apiUrl, onClose }).open();

Map

OasisMap

Interactive 3D globe with holon and quest overlays.

new OasisMap({ apiUrl, onClose }).open();

OasisViewGlobal3DMap

Read-only global map view.

new OasisViewGlobal3DMap({ apiUrl }).open();

NFT

OasisNFT

View and manage a single NFT.

new OasisNFT({ apiUrl, nftId, onClose }).open();

OasisPurchaseNFT

NFT purchase flow.

new OasisPurchaseNFT({ apiUrl, nftId, onSuccess, onClose }).open();

OApp

OasisCreateOApp

Step-by-step OApp creation wizard.

new OasisCreateOApp({ apiUrl, onSuccess, onClose }).open();

OasisLaunchOApp

Launch an installed OApp.

new OasisLaunchOApp({ apiUrl, oappId, onClose }).open();

Seeds

OasisSeeds

Seeds wallet overview for the logged-in avatar.

new OasisSeeds({ apiUrl, onClose }).open();

OasisPayWithSeeds

Seeds payment flow.

new OasisPayWithSeeds({ apiUrl, amount, recipientId, onSuccess, onClose }).open();

Common UI

OasisModal

Reusable modal wrapper — used internally by all popup components, but also available directly.

const modal = new OasisModal({
  title,        // string
  content,      // string — inner HTML
  accentColor,  // string — CSS colour for the header accent
  onClose       // () => void
});

modal.open();
modal.close();
modal.destroy();

| Option | Type | Default | Description | |---|---|---|---| | title | string | '' | Modal header title text | | content | string | '' | Inner HTML content of the modal body | | accentColor | string | '#00c8ff' | Colour applied to the header accent bar | | onClose | function | null | Called when the modal is dismissed |


OasisNavBar

Top navigation bar with avatar connect chip, karma display and menu links.

new OasisNavBar({
  container: document.querySelector('#header'),
  apiUrl,
  links: [{ label: 'Map', href: '/map' }]
}).mount();

OasisSideNav

Collapsible side navigation panel.

new OasisSideNav({ container, links }).mount();

OasisSettings

User settings panel (provider, theme, notifications).

new OasisSettings({ apiUrl, onClose }).open();

OasisWallet

Multi-chain wallet overview for the logged-in avatar.

new OasisWallet({ apiUrl, onClose }).open();

OasisHyperDrive

Distributed file system browser.

new OasisHyperDrive({ apiUrl, onClose }).open();

OasisStarField

Animated star field background — attach to any container.

new OasisStarField({ container: document.body }).mount();

OasisComingSoon

Placeholder widget for features not yet live.

new OasisComingSoon({ container, label: 'Quests' }).mount();

Full Component List

| Group | Components | |---|---| | Auth & Identity | AcceptInvite, AvatarConnect, ForgotPassword, Login, ResetPassword, SearchAvatar, SearchAvatars, SendInvite, Signup, VerifyEmail | | Avatar | AvatarProfile, AvatarWallet, EditAvatar, SearchProfiles, ViewAchievements, ViewAvatar, ViewAvatarKarma, ViewLeagues, ViewOrganizations, ViewTournaments | | Data Screen | ActivityPub, AddData, EOSIO, Ethereum, Holochain, IPFS, LoadData, ManageData, MongoDB, Neo4j, OffChainManagement, SearchData, Solana, Solid, SQLite, ThreeFold | | Eggs | Eggs, ManageEggs, SearchEggs, ViewEggs | | Game | Game | | Karma | KarmaPanel, KarmaToast, SearchKarma, ViewKarma, VoteKarma | | Map | Add2DObjectToMap, Add3DObjectToMap, AddQuestToMap, DownloadMap, ManageMap, Map, PlotRouteOnMap, SearchMap, ViewGlobal3DMap, ViewHalonsOnMap, ViewOAppOnMap, ViewQuestOnMap | | Messages | MenuMessage, Message, MessageContacts, Messaging | | Mission | ManageMission, Mission, SearchMission, ViewMission | | NFT | ContactPopupNFT, ManageNFT, NFT, PurchaseNFT, PurchaseVirtualLandNFT, SearchNFT, ViewNFT | | OApp | CreateOApp, DeployOApp, DownloadOApp, EditOApp, InstallOApp, LaunchOApp, ManageOApp, OApp, SearchOApp | | Providers | CompareProviderSpeeds, CrossChainManagement, ManageAutoFailover, ManageAutoReplication, ManageLoadBalancing, ManageProviders, ProviderDropdown, Providers, SearchProviders, SeedsProvider, ViewProviderStats, ViewProviders | | Quest | ManageQuest, Quest, SearchQuest, ViewQuest | | Seeds | DonateSeeds, ManageSeeds, PayWithSeeds, RewardSeeds, SearchSeeds, Seeds, ViewSeeds | | Common UI | ComingSoon, Confirmation, Contact, HyperDrive, NavBar, ONET, ONODE, OasisModal, Settings, SideNav, StarField, Wallet |


Dark Space Design System

The OASIS component library ships with the Dark Space design system — a deep-space aesthetic built for the OASIS Omniverse:

  • Background: near-black (#0a0d14) with subtle nebula gradients
  • Primary accent: electric cyan (#00c8ff)
  • Typography: Orbitron for headings, Rajdhani for body text
  • Text: always bright (#e0f0ff / #fff) — never dim or faded
  • Borders: translucent cyan (rgba(0,200,255,0.2))
  • Cards: glassy dark panels with backdrop-filter: blur

All CSS custom properties are exposed on :root so you can theme components for your own OAPP:

:root {
  --oasis-bg: #0a0d14;
  --oasis-accent: #00c8ff;
  --oasis-text: #e0f0ff;
  --oasis-border: rgba(0, 200, 255, 0.2);
}

Live Demo

oportal.oasisomniverse.one — the JS OPORTAL running all 126 components live.

Links