Lightweight reusable Web3 UI components for dapps.

Overview

Web3UIKit 🧙‍♂️

Beautiful and lightweight UI components for web3 developers. This UI library will speed up your dapp development no matter which chain you build on.

CI

Live StoryBook DEMO: https://web3ui.github.io/web3uikit/

Moralis-NFT-Marketplace

⭐️ Star us

If this ui-kit helps you build your dApps faster - please star this project, every star makes us very happy!

🤝 Need help?

If you need help with setting up the boilerplate or have other questions - don't hesitate to write in our community forum and we will check asap. Forum link. The best thing about this boilerplate is the super active community ready to help at any time! We help each other.

🚀 Quick Start

💿 Installation

npm install web3uikit

or

yarn add web3uikit

🧰 Usage

import { CryptoCards, Button } from 'web3uikit';

const App = () => (
    <>
        <CryptoCards chain="ethereum" />
        <Button theme="primary" type="button">
            Launch dApp
        </Button>
    </>
);

🧭 Table of contents

📖 UI Components

<Avatar />

avatar

Try the <Avatar /> component in the interactive documentation

<BannerStrip />

BannerStrip

Try the <BannerStrip /> component in the interactive documentation

<Breadcrumbs />

Breadcrumbs

Try the <Breadcrumbs /> component in the interactive documentation

<Card />

Card

Try the <Card /> component in the interactive documentation

<CryptoCards />

CryptoCards

Try the <CryptoCards /> component in the interactive documentation

<Icon />

Icon

Try the <Icon /> component in the interactive documentation

<Illustration />

Illustration

Illustration2

Try the ` component in the interactive documentation

<Information />

Information

Try the <Information /> component in the interactive documentation

<LinkTo />

LinkTo

Try the <LinkTo /> component in the interactive documentation

<Logo />

Logo

Try the <Logo /> component in the interactive documentation

<Notification />

Notification

Try the <Notification /> component in the interactive documentation

<Table />

Table

Try the <Table /> component in the interactive documentation

<Tag />

Tag

Try the <Tag /> component in the interactive documentation

⚙️ Interaction Components

<Button />

Button

Try the <Button /> component in the interactive documentation

<Checkbox />

Checkbox

Try the <Checkbox /> component in the interactive documentation

<Form />

Form

Try the <Form /> component in the interactive documentation

<Input />

Input

Try the <Input /> component in the interactive documentation

<Radios />

Radios

Try the <Radios /> component in the interactive documentation

<Select />

Select

Try the <Select /> component in the interactive documentation

<TextArea />

TextArea

Try the <TextArea /> component in the interactive documentation

🎉 Popup

<Modal />

Modal2

Try the <Modal /> component in the interactive documentation

<Tooltip />

Tooltip

Try the <Tooltip /> component in the interactive documentation

Comments
  • @web3uikit/web3 not working anymore in react/nextjs

    @web3uikit/web3 not working anymore in react/nextjs

    As moralis is updating to v2 lots of user had to stay to [email protected] and [email protected] for beeing able to use last react-moralis functionality. Unfortunately @web3uikit/web3 is throwing a server error:

    Server Error Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

    I wonder if this is coming because of the use of react-moralis@^1.4.0 as dependencies on your side?

    lots of users are facing same issue and can't use @web3uikit/web3 anymore. Can you have a look at it?

    many thanks.

    question web3 
    opened by KMean 16
  • feat(React18): upgrade

    feat(React18): upgrade

    Upgrade peerDep and DevDep to react 18

    For anyone who is interested:

    this PR needs some refactor on every test file as ReactDOM.render doesnt work anymore in react 18 If you want to use web3uikit in react 18 you probably see issues when trying to install with npmso please use yarn and everything works fine

    blocked 
    opened by locothedev 15
  • FEATURE REQUEST: Send Transaction Button

    FEATURE REQUEST: Send Transaction Button

    I think it would be awesome if there was a component that looks like this:

    import {sendTransactionButton} from "web3uikit"
    .
    .
    .
    <sendTransactionButton runContractFunction={doTx} useNotification={true}/>
    

    And it take a runContractFunction object from the react-moralis useWeb3Contract as an input parameter, and then does the following:

    1. Has a spin & disabled animation when metamask is poped up
    2. Has a spin animation as the transaction is going through
    3. stops spinning when the transition has 1 block confirmation, and optionally a useNotification pops up

    I think this would save lot of development time, and would be so sick. We'd have like a useState and useEffect in this component tracking the status of the transaction.

    Let me know what you think.

    feature in-progress web3 
    opened by PatrickAlphaC 12
  • Feat:blocknumber addedcomp

    Feat:blocknumber addedcomp


    name: 'feat:Added BlockNumber' about: Pr for issue #695

    New Pull Request

    Checklist

    • [x] I am not disclosing a vulnerability.
    • [x] My code is conform the code style
    • [x] I have made corresponding changes to the documentation
    • [x] I have updated Typescript definitions when needed

    Issue Description

    Related issue: #695

    Solution Description

    It takes no props just a provider should be available for it to from moralis final screenshot dd

    in-review 
    opened by 3scava1i3r 11
  • Connect Button opens a modal overly inside my custom user menu

    Connect Button opens a modal overly inside my custom user menu

    I was so happy when i saw this lib... but then I tried the connect button with its beautiful wallet selection popup and found out it was inflating itself inside my user's profile dropdown menu! :(

    is there any way to fix this?

    error1 error2 error3

    question 
    opened by fonko 10
  • Add NFT Collections component

    Add NFT Collections component

    Things done in the PR:

    • Added NFT Collections component using morallis getNFTs api

    Things i need some suggestions on:

    • Hardcoded types such as chain and NFTResult , because i was not able to use types imported from morallis/types. (typescript was throwing error - cannot assign type.......).
    • Used Row and Card components, Do i need to make styled components instead?
    • Any improvements i need to make while fetching the data?
    • Any ideas on extra tests i can write?
    • Please let me know all the negative points of my code, would help me improve in future 😄
    opened by AbhinavMV 10
  • Build new Badge compoent

    Build new Badge compoent

    This is a very simple component which will take two props:

    1. Non optional text to display: string
    2. Optional color / state prop: strings

    Color / State:

    • Blue / Normal (if unset)
    • Green / Success
    • Yellow / Warning
    • Red / Danger

    Remember that <DemoComponent /> is there for you to copy and start hacking if you need it

    feature in-review 
    opened by BillyG83 9
  • `console.log()` not working in latest `create-react-app` after installing web3uikit

    `console.log()` not working in latest `create-react-app` after installing web3uikit

    How it happened/How to recreate the issue

    • Create a new React app with npx create-react-app appName

    • Install moralis SDK and Web3UIKit npm install moralis react-moralis web3uikit

      • Warning error displayed in the console image
    • Try to console.log a value Screenshot 2022-05-17 at 12 39 29 PM

    • Error displayed on the webpage Screenshot 2022-05-17 at 12 39 19 PM

    bug 
    opened by unclebay143 8
  • @web3uikit/core @web3uikit/web3 @web3uikit/icons not found

    @web3uikit/core @web3uikit/web3 @web3uikit/icons not found

    yarn add --dev  @web3uikit/core @web3uikit/web3 @web3uikit/icons
    yarn add v1.22.18
    info No lockfile found.
    [1/4] 🔍  Resolving packages...
    error An unexpected error occurred: "https://registry.yarnpkg.com/@web3uikit%2fcore: Not found".
    info If you think this is a bug, please open a bug report with the information provided in "XXX.log".
    info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
    

    You get a similar error with npm.

    Also, if you look at the NPM website, you can't find these packages either.

    https://www.npmjs.com/search?q=web3uikit

    The docs currently show to use this api to install web3uikit. Can we please fix?

    opened by PatrickAlphaC 7
  • Feat ens avatar addedcomp

    Feat ens avatar addedcomp


    name: ''feat:Added ENSAvatar" about: Issue #688

    New Pull Request

    Checklist

    • [x] I am not disclosing a vulnerability.
    • [x] My code is conform the code style
    • [x] I have made corresponding changes to the documentation
    • [x] I have updated Typescript definitions when needed

    Issue Description

    This PR solves Issue #688 about adding an avatar for people that have ENS Avatar Related issue: #688

    Solution Description

    I worked on adding the logic/component of ENSAvatar where we use blockies as a backup.If our consumer has ENSAvatar enabled the component would show the same otherwise the address is taken as seed for blockie

    in-review 
    opened by 3scava1i3r 7
  • Credentials Component in Mobile Screen

    Credentials Component in Mobile Screen

    In Mobile view, i need to scroll the component to view the hide and copy icon. It would be better to make the icons fixed to right on mobile view and only keep the text scrollable. Can be replicated in Google Chrome and Mozilla Firefox.

    https://user-images.githubusercontent.com/35369843/163437374-cd614727-b0da-4e20-93f8-9f6d0b645bc4.mp4

    If accepted i can work on this. 😄

    feature ready for dev 
    opened by AbhinavMV 7
  • [Modal,NftCard,Select,Input,]: Bug fix and feature added

    [Modal,NftCard,Select,Input,]: Bug fix and feature added


    name: 'Pull request' about: A new pull request

    New Pull Request

    Checklist

    • [x] I am not disclosing a vulnerability.
    • [x] My code is conform the code style
    • [x] I have made corresponding changes to the documentation
    • [x] I have updated Typescript definitions when needed

    Issue Description and Solution Description

    1. Modal
    • added customize prop

    Solution: image

    1. NFTCard
    • for palm network the images are sometimes in metadata.file in api result, added fallback image if there is any issue in loading ipfs image (images don't load on palm network sometimes)

    Solution: Added more conditions in image display logic

    1. Select (Beta)
    • When select menu is opened the first element has active hover style, now this is removed.
    • Reset active element hover style and menu scroll every time select is closed/opened.
    • add fixed to overlay element

    Issue: image

    1. InputNew
    • Add tabIndex={-1} to password button to avoid it on tab click.
    • sync error message for react hook form

    Issue: when used with react hook form, the error message is updated after first render but its not updated in the input component image

    1. Add new color - purple-60
    opened by AbhinavMV 3
  • Version Packages

    Version Packages

    This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to master, this PR will be updated.

    Releases

    @web3uikit/[email protected]

    Patch Changes

    opened by github-actions[bot] 0
  • BannerStrip: new features

    BannerStrip: new features

    • import TCustomize prop and set up all the types that can be used: see InputNew or Credentials for an example of this
    • Implement slots feature: see InputNew
    feature in-progress 
    opened by BillyG83 3
  • Reafactor table

    Reafactor table


    name: 'Pull request' about: A new pull request

    New Pull Request

    Checklist

    • [ ] I am not disclosing a vulnerability.
    • [ ] My code is conform the code style
    • [ ] I have made corresponding changes to the documentation
    • [ ] I have updated Typescript definitions when needed

    Issue Description

    Related issue: #FILL_THIS_OUT

    Solution Description

    Most of the code is from the original Table just change the HTML structure I used table element.

    in-progress 
    opened by Maki44 2
  • feature - Allow WalletModal wallets to be configurable as props

    feature - Allow WalletModal wallets to be configurable as props

    Hello, here's a feature request I had and would be happy to work on with some input from the team. Thanks for any help that can be provided.

    Context

    • In WalletModdal/config.ts, there is a hard-coded array of elements that are used for rendering all of the Wallet-specific UI elements in the modal.
    • While I was working on an application, I wanted to be able to explicitly configure which providers were "valid" for my application; basically, I didn't want to give a user of my application the impression that Safepal was supported to the same degree that, e.g., Metamask is.

    Proposal

    • Continue to use the hard-coded array by default, but allow the user to pass in a connectors prop, which overrides the hardcoded list; the connectors prop would be an array of the same type as the existing connectors variable

    While this solves my issue, it creates a UX problem, which is that if a user passes in an odd number of wallet configurations, then they will get a wallet that has one "empty" grid cell. If that's enough of a problem for a consumer, there are ways to fix it, but I'd probably need some design input on how to handle that case.

    For example, one way to solve it would be to make the odd element span the entire width of the container, but I think this would require changing GridStyled to be display:flex instead of display:grid, and would also require changes to its children.

    Questions

    1. Does allowing wallets to be configurable by a consumer make sense?
    2. If so, how do you suggest handling the case of an odd number of wallet configs? Do nothing? My suggestion above? Something else?
    feature web3 
    opened by jhhb 2
Releases(@web3uikit/[email protected])
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Components and tools for building DeFi dapps on Solana + Anchor. Public domain license.

Solana DeFi Framework Components and tools for building DeFi dapps on Solana + Anchor. Public domain license. Status Pre-pre-pre-alpha. Contributing A

null 4 Mar 28, 2022
Web3-citizens-app - React application based on smart contract using web3 and MetaMask extention.

Citizens App (web3-react-redux) React application based on smart contract using web3 and MetaMask extention. Start the applicarion Recomend to install

Denys Voloshyn 3 Aug 25, 2022
A web3 starter project using Typescript, Hardhat, ethers.js and @web3-react

Starter React Typescript Ethers.js Hardhat Project This repo contains a Hardhat and React Dapp starter project. The React Dapp in the frontend dir of

ChainShot 39 Dec 31, 2022
(🔗, 🌲) Web3 Link Tree is a free & open-source alternative to Linktree built with React.js, Next.js, Tailwind and Web3-React

Getting Started Read the detailed guide here Customize Add your name, wallet address, social media links and more in config.ts Images Save images to t

Naut 35 Sep 20, 2022
🛠 Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

?? Solana Web3 Tools - A set of tools to improve the user experience on Web3 Solana Frontends.

Holaplex 30 May 21, 2022
Sheetzapper imports your account value accross Zapper.fi supported wallets and dapps into a Google Sheet

Overview Sheetzapper imports your account value accross Zapper.fi supported wallets and dapps into a Google Sheet. This allows you to chart your net w

null 4 Nov 27, 2022
A postMessage bridge to connect to dapps loaded into an iframe.

cardano-dapp-connector-bridge A postMessage bridge to connect to dApps loaded into an iframe. Motivation In April 2022, browser extensions are the onl

Tastenkunst GmbH 15 Oct 11, 2022
Weaver IBAX IDE. IBAX Network offers a polished development tool Weaver to develop DApps for ecoLibs (side chains).

Weaver Provide the user interface for ibax. Provide the IDE for App development. Save the private key of the user account and grant the permissions. R

IBAX PUBLIC NETWORK 51 Nov 4, 2022
Browser extension that enables you to Log-in as ANY address on ALL dapps

Impersonator Extension Log-in as ANY address on ALL dapps. Impersonator injects into the dapps just like Metamask, but gives you the freedom to set cu

Apoorv Lathey 32 Dec 14, 2022
A developer's guide to building dapps on Fuel.

Fuel Fuel Labs is building Fuel, the fastest modular execution layer. Learn more about Fuel: Fuel docs Getting Fuelpilled: Why Developers Should Be Lo

Camila 14 Dec 1, 2022
A Collection of Solana dApps for workshops!

Solana Workshop dApps Your instructor may use one of the applications stored in this repository to conduct a Building on Solana workshop. There are a

Solana Developers 38 Dec 15, 2022
Temporal-time-utils - This is a library with some reusable functions for Temporal.io TypeScript SDK

temporal-time-utils This is a library with some reusable functions for Temporal.io TypeScript SDK: sleepUntil: sleep to a specific date, instead of by

swyx 15 Oct 18, 2022
👩‍🎤 Headless, type-safe, UI components for the next generation Web3.Storage APIs.

Headless, type-safe, UI components for the next generation Web3.Storage APIs. Documentation beta.ui.web3.storage Examples React Sign up / Sign in Sing

Web3 Storage 47 Dec 22, 2022
Lightweight web components library built with LitElement.

Aybolit Aybolit is a lightweight, standards-based, framework agnostic UI components library built with LitElement. Aybolit is a fictional character fr

Serhii Kulykov 97 Dec 21, 2022
A-Frame Element is a simple library for building fast, lightweight web components for 3D development

aframe-element is a library inspired from the very nice library Polymer lit to map A-Frame AR / VR / 3D elements on typescript classes like Angular/React/Lit.

null 6 May 31, 2022
Leafjs is a lightweight frontend framework built using web components and browser ES Modules.

Leafjs A lightweight, fast web-components based frontend framework for the future. Introduction Leafjs is a lightweight frontend framework built using

Sam Zhang 29 Dec 23, 2022