Observed since 21 Oct, 09:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
@0xobelisk/controller
Modal SDK for partner user login/authentication.
@0xobelisk/controller)Modal SDK that projects can embed for user login/auth. Published as @0xobelisk/controller, with ESM/CJS/UMD outputs and adapters for React, Vue, Svelte, Solid, Preact, Angular, and Cocos Creator.
Platform-specific guides available for:
src/) that creates/destroys the modal with a simple API.src/styles.css) with gradients, blur, and responsive layout.examples/basic) showing how to open the modal, plus a full-flow mock page (examples/full-flow) with CTA -> modal -> mock auth -> close,支持深色金色卡片风格。tsc (no runtime deps).npm install @0xobelisk/controller
import { createAuthModal } from '@0xobelisk/controller';
import '@0xobelisk/controller/styles.css';
const modal = createAuthModal({
onSelect: (providerId) => {
console.log('Selected:', providerId);
if (providerId === 'create-session') {
// Handle session creation
handleCreateSession();
} else if (providerId === 'quit') {
modal.close();
}
},
onClose: () => {
console.log('Modal closed');
}
});
modal.open();
import { useAuthModal } from '@0xobelisk/controller/react';
import '@0xobelisk/controller/styles.css';
export default function LoginPage() {
const modal = useAuthModal({
onSelect: (providerId) => {
console.log('Selected:', providerId);
if (providerId === 'create-session') {
handleCreateSession();
}
}
});
return <button onClick={modal.open}>Login</button>;
}
See complete integration guides for all platforms →
Session management with blockchain authentication:
import { runSessionFlow } from '@0xobelisk/controller';
import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
const userKeypair = Ed25519Keypair.generate();
try {
const session = await runSessionFlow({
keypair: userKeypair,
endpoints: {
start: 'https://api.example.com/session/start',
create: 'https://api.example.com/session/create'
}
});
console.log('Session created:', session.sessionKey);
} catch (error) {
console.error('Session creation failed:', error);
}
See complete session management guide →
Run examples locally:
npm install
npm run build
npm run serve # http://localhost:4173
Examples available at:
http://localhost:4173/examples/basic/http://localhost:4173/examples/full-flow/const modal = createAuthModal({
variant: 'card',
accentColor: '#7a63ff',
backgroundImage: 'https://unpkg.com/@0xobelisk/controller/dist/dubhe.jpeg',
onSelect: (providerId) => {
console.log('Selected:', providerId);
}
});
const modal = createAuthModal({
accentColor: '#6366f1', // Indigo
onSelect: handleAuth
});
Adapters available for all major platforms:
@0xobelisk/controller/react@0xobelisk/controller/vue@0xobelisk/controller/svelte@0xobelisk/controller/solid@0xobelisk/controller/preact@0xobelisk/controller/angular@0xobelisk/controller/cocos@0xobelisk/controllerView platform-specific integration guides →
Returns an AuthModalController instance.
Options:
onSelect: (providerId: string) => void - Required callback when button clickedonClose?: () => void - Optional callback when modal closestitle?: string - Modal title (default: "Authenticate to continue")subtitle?: string - Modal subtitlevariant?: 'card' | 'split' - Layout variant (default: "split")accentColor?: string - Primary color (default: "#7a63ff")backgroundImage?: string - Background image URLbuttons?: AuthButton[] - Custom buttonscontainer?: HTMLElement - Mount container (default: document.body)Returns:
open() - Show the modalclose() - Hide the modaldestroy() - Remove and cleanupisOpen() - Check if modal is openContributions are welcome! Please feel free to submit a Pull Request.
MIT © Obelisk Labs
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
vueEnvironment{
"local_name": "vue",
"alias": false,
"peer_metadata": null
} | ^3.3.8 | development |
huskyEnvironment{
"local_name": "husky",
"alias": false,
"peer_metadata": null
} | ^9.1.7 | development |
jsdomEnvironment{
"local_name": "jsdom",
"alias": false,
"peer_metadata": null
} | ^24.1.3 | development |
reactEnvironment{
"local_name": "react",
"alias": false,
"peer_metadata": null
} | ^18.2.0 | development |
eslintEnvironment{
"local_name": "eslint",
"alias": false,
"peer_metadata": null
} | ^8.57.0 | development |
preactEnvironment{
"local_name": "preact",
"alias": false,
"peer_metadata": null
} | ^10.27.2 | development |
rollupEnvironment{
"local_name": "rollup",
"alias": false,
"peer_metadata": null
} | ^4.6.1 | development |
svelteEnvironment{
"local_name": "svelte",
"alias": false,
"peer_metadata": null
} | ^4.2.20 | development |
vitestEnvironment{
"local_name": "vitest",
"alias": false,
"peer_metadata": null
} | ^4.0.13 | development |
prettierEnvironment{
"local_name": "prettier",
"alias": false,
"peer_metadata": null
} | ^3.6.2 | development |
solid-jsEnvironment{
"local_name": "solid-js",
"alias": false,
"peer_metadata": null
} | ^1.9.10 | development |
typescriptEnvironment{
"local_name": "typescript",
"alias": false,
"peer_metadata": null
} | ^5.3.3 | development |
@mysten/suiEnvironment{
"local_name": "@mysten/sui",
"alias": false,
"peer_metadata": null
} | ^1.45.0 | development |
lint-stagedEnvironment{
"local_name": "lint-staged",
"alias": false,
"peer_metadata": null
} | ^16.2.7 | development |
@types/reactEnvironment{
"local_name": "@types/react",
"alias": false,
"peer_metadata": null
} | ^18.2.58 | development |
@angular/coreEnvironment{
"local_name": "@angular/core",
"alias": false,
"peer_metadata": null
} | ^17.0.0 | development |
@0xobelisk/ecsEnvironment{
"local_name": "@0xobelisk/ecs",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
fake-indexeddbEnvironment{
"local_name": "fake-indexeddb",
"alias": false,
"peer_metadata": null
} | ^6.2.5 | development |
@commitlint/cliEnvironment{
"local_name": "@commitlint/cli",
"alias": false,
"peer_metadata": null
} | ^20.1.0 | development |
@0xobelisk/reactEnvironment{
"local_name": "@0xobelisk/react",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
@types/react-domEnvironment{
"local_name": "@types/react-dom",
"alias": false,
"peer_metadata": null
} | ^18.2.19 | development |
standard-versionEnvironment{
"local_name": "standard-version",
"alias": false,
"peer_metadata": null
} | ^9.5.0 | development |
@0xobelisk/sui-cliEnvironment{
"local_name": "@0xobelisk/sui-cli",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
@vitest/coverage-v8Environment{
"local_name": "@vitest/coverage-v8",
"alias": false,
"peer_metadata": null
} | ^4.0.13 | development |
eslint-plugin-reactEnvironment{
"local_name": "eslint-plugin-react",
"alias": false,
"peer_metadata": null
} | ^7.35.0 | development |
@0xobelisk/controllerEnvironment{
"local_name": "@0xobelisk/controller",
"alias": false,
"peer_metadata": null
} | 0.0.7 | development |
@0xobelisk/sui-clientEnvironment{
"local_name": "@0xobelisk/sui-client",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
@0xobelisk/sui-commonEnvironment{
"local_name": "@0xobelisk/sui-common",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
@0xobelisk/graphql-clientEnvironment{
"local_name": "@0xobelisk/graphql-client",
"alias": false,
"peer_metadata": null
} | 1.2.0-pre.88 | development |
@rollup/plugin-typescriptEnvironment{
"local_name": "@rollup/plugin-typescript",
"alias": false,
"peer_metadata": null
} | ^11.1.6 | development |
@typescript-eslint/parserEnvironment{
"local_name": "@typescript-eslint/parser",
"alias": false,
"peer_metadata": null
} | ^7.0.0 | development |
eslint-plugin-react-hooksEnvironment{
"local_name": "eslint-plugin-react-hooks",
"alias": false,
"peer_metadata": null
} | ^4.6.0 | development |
@rollup/plugin-node-resolveEnvironment{
"local_name": "@rollup/plugin-node-resolve",
"alias": false,
"peer_metadata": null
} | ^15.2.3 | development |
@size-limit/preset-small-libEnvironment{
"local_name": "@size-limit/preset-small-lib",
"alias": false,
"peer_metadata": null
} | ^11.2.0 | development |
@commitlint/config-conventionalEnvironment{
"local_name": "@commitlint/config-conventional",
"alias": false,
"peer_metadata": null
} | ^20.0.0 | development |
@typescript-eslint/eslint-pluginEnvironment{
"local_name": "@typescript-eslint/eslint-plugin",
"alias": false,
"peer_metadata": null
} | ^7.0.0 | development |
vueEnvironment{
"local_name": "vue",
"alias": false,
"peer_metadata": null
} | ^3.3.0 | peer |
reactEnvironment{
"local_name": "react",
"alias": false,
"peer_metadata": null
} | ^18.0.0 | peer |
preactEnvironment{
"local_name": "preact",
"alias": false,
"peer_metadata": null
} | ^10.19.3 | peer |
svelteEnvironment{
"local_name": "svelte",
"alias": false,
"peer_metadata": null
} | ^4.2.0 | peer |
solid-jsEnvironment{
"local_name": "solid-js",
"alias": false,
"peer_metadata": null
} | ^1.8.11 | peer |
@angular/coreEnvironment{
"local_name": "@angular/core",
"alias": false,
"peer_metadata": null
} | ^17.0.0 | peer |
Source distribution
{
"shasum": "592faf6d3fc2b4de09196480c5aff3aaa895a9bc",
"tarball": "https://registry.npmjs.org/@0xobelisk/controller/-/controller-0.1.0.tgz",
"fileCount": 71,
"integrity": "sha512-lNL5E6tjukaZo2jWjaQFMOsRMluTTfjT2KSNmrspoJG8Yb0f4cyX24mJGH+DJ+MvCVHzaqbi3BmxXja2gCvNoA==",
"signatures": [
{
"sig": "MEYCIQC2blQQsP/gwXaNZBkTL9YBBjr+fftzg/0PH8YR29dgRAIhAJVgazMyDgQ6Y88bDZ3fRey3MFyP5V3+HiAHs+oxZO7b",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 4975687
}Shared repository data · GitHub
Observed since 21 Oct, 09:16 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:2c554ee0ce411dfdfbaefc79df65fe9329a5f3b09f52d6969de36e2e34e4950e