lwc-test
v1.0.6
Published
Web components to connect to a lightning wallet and power a website with WebLN
Downloads
13
Maintainers
Readme
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/[email protected]/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
- Optional Arguments:
<lwc-modal/>
- render the modal on its own- Optional Arguments:
on-close
- callback when modal is closed
- Optional Arguments:
<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 uselwc:modalclosed
window event which fires when Lightning Wallet Connect modal is closed
Current wallets supported:
- [Alby Browser extension] (https://getalby.com)
- Alby NWC
Pure HTML
<html>
<body>
<lwc-button />
<script src="https://cdn.jsdelivr.net/npm/@getalby/[email protected]/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.
- Twitter: @getAlby
- Telegram group
- support at getalby.com
- bitcoin.design Discord community (find us on the #alby channel)
- Read the Alby developer guide to better understand how Alby packages and APIs can be used to power your app.
License
MIT