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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@bnnvara/user

v0.0.2

Published

user/login package

Downloads

6

Readme

User

This user package provides various user related components.

Design & API Documentation

User Menu Demo

Pattern library

Installation

npm install @bnnvara/user --save

Basic Usage

Components

UserMenu

This dumb component can be enhanced with other components in this package.

import UserMenu from '@bnnvara/user';

const handleLogin = () => {};
const handleLogout = () => {};

<UserMenu
    loggedIn
    nickname="my-nickname"
    name="My Name"
    icon={<img src="./avatar.png" />}
    onRequestLogin={handleLogin},
    onRequestLogout{handleLogout},
/>

Dropdown & DropdownItem

This dumb component can be used to generate the dropdown menu in the user menu.

import { Dropdown, DropdownItem } from '@bnnvara/user';

<Dropdown 
    title="My title" 
    subtitle="My subtitle"
>
    <DropdownItem
        href="/profile"
        target="_parent"
        icon={<ProfileIcon />}
        label="My profile"
        onClick={() => {}}
    />
</Dropdown>

UserContextProvider

This component provides the UserContext to all children. It should preferably be wrapped in the root of the <App />.

import { Component } from 'react';
import { UserContextProvider } from '@bnnvara/user';

class App extends Component {
    render() {
        return (
            <UserContextProvider>
                <MyAwesomePage>
            </UserContextProvider>
        );    
    }
}

Containers

UserMenuContainer

This component provides the data for <UserMenu />. It is however dependent on a parent component which is responsible for doing the actual login/logout functionality. For example, the withGigya HOC can be used to provide Gigya login/logout functionality.

The default 'login' icon can also be customised, so the Hub and the Portal can have a different icon.

import { UserMenuContainer } from '@bnnvara/user';

<UserMenuContainer
    defaultIcon={<PortalIcon />}
    userData={{
        loggedIn: true,
        nickname: "MyNickName",
        name: "My name",
        avatarSrc: "./avatar.png",
    }}
    onRequestLogin={() => {}},
    onRequestLogout=(() => {}),
/>

Higher Order Components

withUserContext

This Higher Order Component provides the wrapped component with UserContext.

const MyComponent = ({ nickname }) => <p>Hello {nickname}</p>;

const MyComponentWithUserContext = withUserContext(MyComponent);

withGigya

This Higher Order Component provides the wrapped component with gigya login/logout functionality and user data relevant for the BNNVARA domain.

const MyComponent = ({ userData, onRequestLogin, onRequestLogout }) => (
    <div>
        User data: {JSON.stringify(userData}}
        
        <button onclick={onRequestLogin}>Login</button
        <button onclick={onRequestLogout}>Logout</button
    </div>
);

const MyComponentWithGigya = withGigya({
    apiKey: 'my-api-key',
}, MyComponent);