Socket
Book a DemoInstallSign in
Socket

lwc-test

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lwc-test

Web components to connect to a lightning wallet and power a website with WebLN

latest
npmnpm
Version
1.0.6
Version published
Maintainers
1
Created
Source

Lightning Wallet Connect

This project includes web components for connecting to Lightning Wallets and enabling WebLN. These components work with pure HTML and all Javascript libraries frameworks such as React, Angular, Vue, Solid.js, etc.

🚀 Quick Start

npm install @getalby/lightning-wallet-connect

or

yarn add @getalby/lightning-wallet-connect

or for use without any build tools:

// alby-tools now available at window.albyTools
<script src="https://cdn.jsdelivr.net/npm/@getalby/lightning-wallet-connect@1.0.0/dist/index.browser.js"></script>

📽️ Demo

https://user-images.githubusercontent.com/33993199/234830578-0baf25f9-0179-4244-941c-0c558c613a7a.mov

🤙 Usage

Lightning wallet connect exposes the following web components for allowing user to connect their desired Lightning wallet:

  • <lwc-button/> - launches the LWC Modal on click
    • Optional Arguments:
      • icon-only - display the button as an icon without "Connect wallet"
      • disabled - mark the button as disabled. NOTE: in react disabled={false} will not work - attribute must be omitted
  • <lwc-modal/> - render the modal on its own
    • Optional Arguments:
      • on-close - callback when modal is closed
  • <lwc-connector-list/> - render the list of connectors on their own
  • more components coming soon

Lightning wallet connect exposes the following events:

  • lwc:connected window event which fires when a wallet is connected and window.webln is ready to use
  • lwc:modalclosed window event which fires when Lightning Wallet Connect modal is closed

Current wallets supported:

Pure HTML

<html>
  <body>
    <lwc-button />
    <script src="https://cdn.jsdelivr.net/npm/@getalby/lightning-wallet-connect@1.0.0/dist/index.browser.js"></script>
    <script>
      window.addEventListener('lwc:connected', async () => {
        // TODO: hide the lwc-button
        const invoice = // (...invoice generated by backend)
          await window.webln.sendPayment(invoice);
        confetti();
      });
    </script>
  </body>
</html>

React

import '@getalby/lightning-wallet-connect';

// in your component, listen to lightning wallet connected event
const [lwcConnected, setLwcConnected] = React.useState(false);

React.useEffect(() => {
  const onConnected = () => setLwcConnected(true);
  window.addEventListener('lwc:connected', onConnected);

  return () => {
    window.removeEventListener('lwc:connected', onConnected);
  };
}, []);

const invoice = // (...invoice generated by backend)

return lwcConnected ? <>
    <button onClick={() => window.webln.sendPayment(invoice)}/>
  </> : <lwc-button/>;

🔥 Lit

This project is powered by Lit.

See Get started on the Lit site for more information.

🛠️ Development

yarn dev

Build

yarn build

Testing

yarn test

Need help?

We are happy to help, please contact us or create an issue.

License

MIT

Keywords

lightning

FAQs

Package last updated on 01 Aug 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts