Merge pull request #1266 from lnbits/icontiles
Swap out material icons for extensions for actual logo tiles
|
@ -23,14 +23,55 @@
|
||||||
>
|
>
|
||||||
<q-card>
|
<q-card>
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<q-icon
|
<div class="row">
|
||||||
:name="extension.icon"
|
<div class="col-3">
|
||||||
color="grey-5"
|
<q-img
|
||||||
style="font-size: 4rem"
|
:src="extension.tile"
|
||||||
></q-icon>
|
spinner-color="white"
|
||||||
{% raw %}
|
style="max-width: 100%"
|
||||||
<h5 class="q-mt-lg q-mb-xs">{{ extension.name }}</h5>
|
></q-img>
|
||||||
<small>{{ extension.shortDescription }} </small>{% endraw %}
|
</div>
|
||||||
|
<div class="col-9 q-pl-sm">
|
||||||
|
{% raw %}
|
||||||
|
<div class="text-h5 gt-sm q-mt-sm q-mb-xs">
|
||||||
|
{{ extension.name }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="text-subtitle2 gt-sm"
|
||||||
|
style="font-size: 11px; height: 34px"
|
||||||
|
>
|
||||||
|
{{ extension.shortDescription }}
|
||||||
|
</div>
|
||||||
|
<div class="text-subtitle1 lt-md q-mt-sm q-mb-xs">
|
||||||
|
{{ extension.name }}
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="text-subtitle2 lt-md"
|
||||||
|
style="font-size: 9px; height: 34px"
|
||||||
|
>
|
||||||
|
{{ extension.shortDescription }}
|
||||||
|
</div>
|
||||||
|
{% endraw %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</q-card-section>
|
||||||
|
<q-card-section>
|
||||||
|
<div>
|
||||||
|
<q-rating
|
||||||
|
class="gt-sm"
|
||||||
|
disable
|
||||||
|
size="2em"
|
||||||
|
:max="5"
|
||||||
|
color="primary"
|
||||||
|
></q-rating
|
||||||
|
><q-rating
|
||||||
|
class="lt-md"
|
||||||
|
size="1.5em"
|
||||||
|
:max="5"
|
||||||
|
color="primary"
|
||||||
|
></q-rating
|
||||||
|
><q-tooltip>Ratings coming soon</q-tooltip>
|
||||||
|
</div>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<q-separator></q-separator>
|
<q-separator></q-separator>
|
||||||
<q-card-actions>
|
<q-card-actions>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Bleskomat",
|
"name": "Bleskomat",
|
||||||
"short_description": "Connect a Bleskomat ATM to an lnbits",
|
"short_description": "Connect a Bleskomat ATM to an lnbits",
|
||||||
"icon": "money",
|
"tile": "/bleskomat/static/image/bleskomat.png",
|
||||||
"contributors": ["chill117"]
|
"contributors": ["chill117"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/bleskomat/static/image/bleskomat.png
Normal file
After Width: | Height: | Size: 26 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Bolt Cards",
|
"name": "Bolt Cards",
|
||||||
"short_description": "Self custody Bolt Cards with one time LNURLw",
|
"short_description": "Self custody Bolt Cards with one time LNURLw",
|
||||||
"icon": "payment",
|
"tile": "/boltcards/static/image/boltcard.png",
|
||||||
"contributors": ["iwarpbtc", "arcbtc", "leesalminen"]
|
"contributors": ["iwarpbtc", "arcbtc", "leesalminen"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/boltcards/static/image/boltcard.png
Normal file
After Width: | Height: | Size: 33 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -15,6 +16,14 @@ def boltz_renderer():
|
||||||
return template_renderer(["lnbits/extensions/boltz/templates"])
|
return template_renderer(["lnbits/extensions/boltz/templates"])
|
||||||
|
|
||||||
|
|
||||||
|
boltz_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/boltz/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/boltz/static"),
|
||||||
|
"name": "boltz_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
from .tasks import check_for_pending_swaps, wait_for_paid_invoices
|
from .tasks import check_for_pending_swaps, wait_for_paid_invoices
|
||||||
from .views import * # noqa
|
from .views import * # noqa
|
||||||
from .views_api import * # noqa
|
from .views_api import * # noqa
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Boltz",
|
"name": "Boltz",
|
||||||
"short_description": "Perform onchain/offchain swaps",
|
"short_description": "Perform onchain/offchain swaps",
|
||||||
"icon": "swap_horiz",
|
"tile": "/boltz/static/image/boltz.png",
|
||||||
"contributors": ["dni"]
|
"contributors": ["dni"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/boltz/static/image/boltz.png
Normal file
After Width: | Height: | Size: 37 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Cashu",
|
"name": "Cashu",
|
||||||
"short_description": "Ecash mint and wallet",
|
"short_description": "Ecash mint and wallet",
|
||||||
"icon": "account_balance",
|
"tile": "/cashu/static/image/cashu.png",
|
||||||
"contributors": ["calle", "vlad", "arcbtc"],
|
"contributors": ["calle", "vlad", "arcbtc"],
|
||||||
"hidden": false
|
"hidden": false
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/cashu/static/image/cashu.png
Normal file
After Width: | Height: | Size: 23 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Streamer Copilot",
|
"name": "Streamer Copilot",
|
||||||
"short_description": "Video tips/animations/webhooks",
|
"short_description": "Video tips/animations/webhooks",
|
||||||
"icon": "face",
|
"tile": "/copilot/static/bitcoin-streaming.png",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"arcbtc"
|
"arcbtc"
|
||||||
]
|
]
|
||||||
|
|
BIN
lnbits/extensions/copilot/static/bitcoin-streaming.png
Normal file
After Width: | Height: | Size: 23 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Discord Bot",
|
"name": "Discord Bot",
|
||||||
"short_description": "Generate users and wallets",
|
"short_description": "Generate users and wallets",
|
||||||
"icon": "person_add",
|
"tile": "/discordbot/static/image/discordbot.png",
|
||||||
"contributors": ["bitcoingamer21"]
|
"contributors": ["bitcoingamer21"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/discordbot/static/image/discordbot.png
Normal file
After Width: | Height: | Size: 18 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -11,6 +12,14 @@ db = Database("ext_events")
|
||||||
|
|
||||||
events_ext: APIRouter = APIRouter(prefix="/events", tags=["Events"])
|
events_ext: APIRouter = APIRouter(prefix="/events", tags=["Events"])
|
||||||
|
|
||||||
|
events_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/events/static",
|
||||||
|
"app": StaticFiles(packages=[("lnbits", "extensions/events/static")]),
|
||||||
|
"name": "events_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def events_renderer():
|
def events_renderer():
|
||||||
return template_renderer(["lnbits/extensions/events/templates"])
|
return template_renderer(["lnbits/extensions/events/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Events",
|
"name": "Events",
|
||||||
"short_description": "Sell and register event tickets",
|
"short_description": "Sell and register event tickets",
|
||||||
"icon": "local_activity",
|
"tile": "/events/static/image/events.png",
|
||||||
"contributors": ["benarc"]
|
"contributors": ["benarc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/events/static/image/events.png
Normal file
After Width: | Height: | Size: 138 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Build your own!!",
|
"name": "Build your own!!",
|
||||||
"short_description": "Join us, make an extension",
|
"short_description": "Join us, make an extension",
|
||||||
"icon": "info",
|
"tile": "/cashu/static/image/tile.png",
|
||||||
"contributors": ["github_username"]
|
"contributors": ["github_username"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Gerty",
|
"name": "Gerty",
|
||||||
"short_description": "Desktop bitcoin Assistant",
|
"short_description": "Desktop bitcoin Assistant",
|
||||||
"icon": "sentiment_satisfied",
|
"tile": "/gerty/static/gerty.png",
|
||||||
"contributors": ["arcbtc", "blackcoffeebtc"]
|
"contributors": ["arcbtc", "blackcoffeebtc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/gerty/static/gerty.png
Normal file
After Width: | Height: | Size: 33 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -12,4 +13,12 @@ def hivemind_renderer():
|
||||||
return template_renderer(["lnbits/extensions/hivemind/templates"])
|
return template_renderer(["lnbits/extensions/hivemind/templates"])
|
||||||
|
|
||||||
|
|
||||||
|
hivemind_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/hivemind/static",
|
||||||
|
"app": StaticFiles(packages=[("lnbits", "extensions/hivemind/static")]),
|
||||||
|
"name": "hivemind_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
from .views import * # noqa
|
from .views import * # noqa
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Hivemind",
|
"name": "Hivemind",
|
||||||
"short_description": "Make cheap talk expensive!",
|
"short_description": "Make cheap talk expensive!",
|
||||||
"icon": "batch_prediction",
|
"tile": "/hivemind/static/image/hivemind.png",
|
||||||
"contributors": ["fiatjaf"]
|
"contributors": ["fiatjaf"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/hivemind/static/image/hivemind.png
Normal file
After Width: | Height: | Size: 14 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Invoices",
|
"name": "Invoices",
|
||||||
"short_description": "Create invoices for your clients.",
|
"short_description": "Create invoices for your clients.",
|
||||||
"icon": "request_quote",
|
"tile": "/invoices/static/image/invoices.png",
|
||||||
"contributors": ["leesalminen"]
|
"contributors": ["leesalminen"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/invoices/static/image/invoices.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Spotify Jukebox",
|
"name": "Spotify Jukebox",
|
||||||
"short_description": "Spotify jukebox middleware",
|
"short_description": "Spotify jukebox middleware",
|
||||||
"icon": "radio",
|
"tile": "/jukebox/static/image/jukebox.png",
|
||||||
"contributors": ["benarc"]
|
"contributors": ["benarc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/jukebox/static/image/jukebox.png
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "DJ Livestream",
|
"name": "DJ Livestream",
|
||||||
"short_description": "Sell tracks and split revenue (lnurl-pay)",
|
"short_description": "Sell tracks and split revenue (lnurl-pay)",
|
||||||
"icon": "speaker",
|
"tile": "/livestream/static/image/livestream.png",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"fiatjaf",
|
"fiatjaf",
|
||||||
"cryptograffiti"
|
"cryptograffiti"
|
||||||
|
|
BIN
lnbits/extensions/livestream/static/image/livestream.png
Normal file
After Width: | Height: | Size: 67 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -10,6 +11,14 @@ db = Database("ext_lnaddress")
|
||||||
|
|
||||||
lnaddress_ext: APIRouter = APIRouter(prefix="/lnaddress", tags=["lnaddress"])
|
lnaddress_ext: APIRouter = APIRouter(prefix="/lnaddress", tags=["lnaddress"])
|
||||||
|
|
||||||
|
lnaddress_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/lnaddress/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/lnaddress/static"),
|
||||||
|
"name": "lnaddress_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def lnaddress_renderer():
|
def lnaddress_renderer():
|
||||||
return template_renderer(["lnbits/extensions/lnaddress/templates"])
|
return template_renderer(["lnbits/extensions/lnaddress/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Lightning Address",
|
"name": "Lightning Address",
|
||||||
"short_description": "Sell LN addresses for your domain",
|
"short_description": "Sell LN addresses for your domain",
|
||||||
"icon": "alternate_email",
|
"tile": "/lnaddress/static/image/lnaddress.png",
|
||||||
"contributors": ["talvasconcelos"]
|
"contributors": ["talvasconcelos"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/lnaddress/static/image/lnaddress.png
Normal file
After Width: | Height: | Size: 21 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_lndhub")
|
||||||
|
|
||||||
lndhub_ext: APIRouter = APIRouter(prefix="/lndhub", tags=["lndhub"])
|
lndhub_ext: APIRouter = APIRouter(prefix="/lndhub", tags=["lndhub"])
|
||||||
|
|
||||||
|
lndhub_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/lndhub/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/lndhub/static"),
|
||||||
|
"name": "lndhub_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def lndhub_renderer():
|
def lndhub_renderer():
|
||||||
return template_renderer(["lnbits/extensions/lndhub/templates"])
|
return template_renderer(["lnbits/extensions/lndhub/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "LndHub",
|
"name": "LndHub",
|
||||||
"short_description": "Access lnbits from BlueWallet or Zeus",
|
"short_description": "Access lnbits from BlueWallet or Zeus",
|
||||||
"icon": "navigation",
|
"tile": "/lndhub/static/image/lndhub.png",
|
||||||
"contributors": ["fiatjaf"]
|
"contributors": ["fiatjaf"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/lndhub/static/image/lndhub.png
Normal file
After Width: | Height: | Size: 31 KiB |
|
@ -2,6 +2,7 @@ import asyncio
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -11,6 +12,14 @@ db = Database("ext_lnticket")
|
||||||
|
|
||||||
lnticket_ext: APIRouter = APIRouter(prefix="/lnticket", tags=["LNTicket"])
|
lnticket_ext: APIRouter = APIRouter(prefix="/lnticket", tags=["LNTicket"])
|
||||||
|
|
||||||
|
lnticket_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/lnticket/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/lnticket/static"),
|
||||||
|
"name": "lnticket_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def lnticket_renderer():
|
def lnticket_renderer():
|
||||||
return template_renderer(["lnbits/extensions/lnticket/templates"])
|
return template_renderer(["lnbits/extensions/lnticket/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Support Tickets",
|
"name": "Support Tickets",
|
||||||
"short_description": "LN support ticket system",
|
"short_description": "LN support ticket system",
|
||||||
"icon": "contact_support",
|
"tile": "/lnticket/static/image/lntickets.png",
|
||||||
"contributors": ["benarc"]
|
"contributors": ["benarc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/lnticket/static/image/lntickets.png
Normal file
After Width: | Height: | Size: 18 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -10,6 +11,14 @@ db = Database("ext_lnurldevice")
|
||||||
|
|
||||||
lnurldevice_ext: APIRouter = APIRouter(prefix="/lnurldevice", tags=["lnurldevice"])
|
lnurldevice_ext: APIRouter = APIRouter(prefix="/lnurldevice", tags=["lnurldevice"])
|
||||||
|
|
||||||
|
lnurldevice_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/lnurldevice/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/lnurldevice/static"),
|
||||||
|
"name": "lnurldevice_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def lnurldevice_renderer():
|
def lnurldevice_renderer():
|
||||||
return template_renderer(["lnbits/extensions/lnurldevice/templates"])
|
return template_renderer(["lnbits/extensions/lnurldevice/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "LNURLDevice",
|
"name": "LNURLDevice",
|
||||||
"short_description": "For offline LNURL devices",
|
"short_description": "For offline LNURL devices",
|
||||||
"icon": "point_of_sale",
|
"tile": "/lnurldevice/static/image/lnurldevice.png",
|
||||||
"contributors": ["arcbtc"]
|
"contributors": ["arcbtc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/lnurldevice/static/image/lnurldevice.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "LNURLp",
|
"name": "LNURLp",
|
||||||
"short_description": "Make reusable LNURL pay links",
|
"short_description": "Make reusable LNURL pay links",
|
||||||
"icon": "receipt",
|
"tile": "/lnurlp/static/image/lnurl-pay.png",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"arcbtc",
|
"arcbtc",
|
||||||
"eillarra",
|
"eillarra",
|
||||||
|
|
BIN
lnbits/extensions/lnurlp/static/image/lnurl-pay.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Nostr NIP-5",
|
"name": "Nostr NIP-5",
|
||||||
"short_description": "Verify addresses for Nostr NIP-5",
|
"short_description": "Verify addresses for Nostr NIP-5",
|
||||||
"icon": "request_quote",
|
"tile": "/nostrnip5/static/image/nostrnip5.png",
|
||||||
"contributors": ["leesalminen"]
|
"contributors": ["leesalminen"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/nostrnip5/static/image/nostrnip5.png
Normal file
After Width: | Height: | Size: 18 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "OfflineShop",
|
"name": "OfflineShop",
|
||||||
"short_description": "Receive payments for products offline!",
|
"short_description": "Receive payments for products offline!",
|
||||||
"icon": "nature_people",
|
"tile": "/offlineshop/static/image/offlineshop.png",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"fiatjaf"
|
"fiatjaf"
|
||||||
]
|
]
|
||||||
|
|
BIN
lnbits/extensions/offlineshop/static/image/offlineshop.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_paywall")
|
||||||
|
|
||||||
paywall_ext: APIRouter = APIRouter(prefix="/paywall", tags=["Paywall"])
|
paywall_ext: APIRouter = APIRouter(prefix="/paywall", tags=["Paywall"])
|
||||||
|
|
||||||
|
paywall_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/paywall/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/paywall/static"),
|
||||||
|
"name": "paywall_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def paywall_renderer():
|
def paywall_renderer():
|
||||||
return template_renderer(["lnbits/extensions/paywall/templates"])
|
return template_renderer(["lnbits/extensions/paywall/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Paywall",
|
"name": "Paywall",
|
||||||
"short_description": "Create paywalls for content",
|
"short_description": "Create paywalls for content",
|
||||||
"icon": "policy",
|
"tile": "/paywall/static/image/paywall.png",
|
||||||
"contributors": ["eillarra"]
|
"contributors": ["eillarra"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/paywall/static/image/paywall.png
Normal file
After Width: | Height: | Size: 16 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from starlette.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_satsdice")
|
||||||
|
|
||||||
satsdice_ext: APIRouter = APIRouter(prefix="/satsdice", tags=["satsdice"])
|
satsdice_ext: APIRouter = APIRouter(prefix="/satsdice", tags=["satsdice"])
|
||||||
|
|
||||||
|
satsdice_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/satsdice/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/satsdice/static"),
|
||||||
|
"name": "satsdice_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def satsdice_renderer():
|
def satsdice_renderer():
|
||||||
return template_renderer(["lnbits/extensions/satsdice/templates"])
|
return template_renderer(["lnbits/extensions/satsdice/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Sats Dice",
|
"name": "Sats Dice",
|
||||||
"short_description": "LNURL Satoshi dice",
|
"short_description": "LNURL Satoshi dice",
|
||||||
"icon": "casino",
|
"tile": "/satsdice/static/image/satsdice.png",
|
||||||
"contributors": ["arcbtc"]
|
"contributors": ["arcbtc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/satsdice/static/image/satsdice.png
Normal file
After Width: | Height: | Size: 22 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "SatsPay Server",
|
"name": "SatsPay Server",
|
||||||
"short_description": "Create onchain and LN charges",
|
"short_description": "Create onchain and LN charges",
|
||||||
"icon": "payment",
|
"tile": "/satspay/static/image/satspay.png",
|
||||||
"contributors": ["arcbtc"]
|
"contributors": ["arcbtc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/satspay/static/image/satspay.png
Normal file
After Width: | Height: | Size: 24 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Scrub",
|
"name": "Scrub",
|
||||||
"short_description": "Pass payments to LNURLp/LNaddress",
|
"short_description": "Pass payments to LNURLp/LNaddress",
|
||||||
"icon": "send",
|
"tile": "/scrub/static/image/scrub.png",
|
||||||
"contributors": ["arcbtc", "talvasconcelos"]
|
"contributors": ["arcbtc", "talvasconcelos"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/scrub/static/image/scrub.png
Normal file
After Width: | Height: | Size: 24 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Split Payments",
|
"name": "Split Payments",
|
||||||
"short_description": "Split incoming payments across wallets",
|
"short_description": "Split incoming payments across wallets",
|
||||||
"icon": "call_split",
|
"tile": "/splitpayments/static/image/split-payments.png",
|
||||||
"contributors": ["fiatjaf", "cryptograffiti"]
|
"contributors": ["fiatjaf", "cryptograffiti"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/splitpayments/static/image/split-payments.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_streamalerts")
|
||||||
|
|
||||||
streamalerts_ext: APIRouter = APIRouter(prefix="/streamalerts", tags=["streamalerts"])
|
streamalerts_ext: APIRouter = APIRouter(prefix="/streamalerts", tags=["streamalerts"])
|
||||||
|
|
||||||
|
streamalerts_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/streamalerts/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/streamalerts/static"),
|
||||||
|
"name": "streamalerts_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def streamalerts_renderer():
|
def streamalerts_renderer():
|
||||||
return template_renderer(["lnbits/extensions/streamalerts/templates"])
|
return template_renderer(["lnbits/extensions/streamalerts/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Stream Alerts",
|
"name": "Stream Alerts",
|
||||||
"short_description": "Bitcoin donations in stream alerts",
|
"short_description": "Bitcoin donations in stream alerts",
|
||||||
"icon": "notifications_active",
|
"tile": "/streamalerts/static/image/streamalerts.png",
|
||||||
"contributors": ["Fittiboy"]
|
"contributors": ["Fittiboy"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/streamalerts/static/image/streamalerts.png
Normal file
After Width: | Height: | Size: 14 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -10,6 +11,14 @@ db = Database("ext_subdomains")
|
||||||
|
|
||||||
subdomains_ext: APIRouter = APIRouter(prefix="/subdomains", tags=["subdomains"])
|
subdomains_ext: APIRouter = APIRouter(prefix="/subdomains", tags=["subdomains"])
|
||||||
|
|
||||||
|
subdomains_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/subdomains/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/subdomains/static"),
|
||||||
|
"name": "subdomains_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def subdomains_renderer():
|
def subdomains_renderer():
|
||||||
return template_renderer(["lnbits/extensions/subdomains/templates"])
|
return template_renderer(["lnbits/extensions/subdomains/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Subdomains",
|
"name": "Subdomains",
|
||||||
"short_description": "Sell subdomains of your domain",
|
"short_description": "Sell subdomains of your domain",
|
||||||
"icon": "domain",
|
"tile": "/subdomains/static/image/subdomains.png",
|
||||||
"contributors": ["grmkris"]
|
"contributors": ["grmkris"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/subdomains/static/image/subdomains.png
Normal file
After Width: | Height: | Size: 36 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_tipjar")
|
||||||
|
|
||||||
tipjar_ext: APIRouter = APIRouter(prefix="/tipjar", tags=["tipjar"])
|
tipjar_ext: APIRouter = APIRouter(prefix="/tipjar", tags=["tipjar"])
|
||||||
|
|
||||||
|
tipjar_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/tipjar/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/tipjar/static"),
|
||||||
|
"name": "tipjar_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def tipjar_renderer():
|
def tipjar_renderer():
|
||||||
return template_renderer(["lnbits/extensions/tipjar/templates"])
|
return template_renderer(["lnbits/extensions/tipjar/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Tip Jar",
|
"name": "Tip Jar",
|
||||||
"short_description": "Accept Bitcoin donations, with messages attached!",
|
"short_description": "Accept Bitcoin donations, with messages attached!",
|
||||||
"icon": "favorite",
|
"tile": "/tipjar/static/image/tipjar.png",
|
||||||
"contributors": ["Fittiboy"]
|
"contributors": ["Fittiboy"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/tipjar/static/image/tipjar.png
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -1,6 +1,7 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -10,6 +11,14 @@ db = Database("ext_tpos")
|
||||||
|
|
||||||
tpos_ext: APIRouter = APIRouter(prefix="/tpos", tags=["TPoS"])
|
tpos_ext: APIRouter = APIRouter(prefix="/tpos", tags=["TPoS"])
|
||||||
|
|
||||||
|
tpos_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/tpos/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/tpos/static"),
|
||||||
|
"name": "tpos_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def tpos_renderer():
|
def tpos_renderer():
|
||||||
return template_renderer(["lnbits/extensions/tpos/templates"])
|
return template_renderer(["lnbits/extensions/tpos/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "TPoS",
|
"name": "TPoS",
|
||||||
"short_description": "A shareable PoS terminal!",
|
"short_description": "A shareable PoS terminal!",
|
||||||
"icon": "dialpad",
|
"tile": "/tpos/static/image/tpos.png",
|
||||||
"contributors": ["talvasconcelos", "arcbtc", "leesalminen"]
|
"contributors": ["talvasconcelos", "arcbtc", "leesalminen"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/tpos/static/image/tpos.png
Normal file
After Width: | Height: | Size: 14 KiB |
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
|
||||||
from lnbits.db import Database
|
from lnbits.db import Database
|
||||||
from lnbits.helpers import template_renderer
|
from lnbits.helpers import template_renderer
|
||||||
|
@ -7,6 +8,14 @@ db = Database("ext_usermanager")
|
||||||
|
|
||||||
usermanager_ext: APIRouter = APIRouter(prefix="/usermanager", tags=["usermanager"])
|
usermanager_ext: APIRouter = APIRouter(prefix="/usermanager", tags=["usermanager"])
|
||||||
|
|
||||||
|
usermanager_static_files = [
|
||||||
|
{
|
||||||
|
"path": "/usermanager/static",
|
||||||
|
"app": StaticFiles(directory="lnbits/extensions/usermanager/static"),
|
||||||
|
"name": "usermanager_static",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def usermanager_renderer():
|
def usermanager_renderer():
|
||||||
return template_renderer(["lnbits/extensions/usermanager/templates"])
|
return template_renderer(["lnbits/extensions/usermanager/templates"])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "User Manager",
|
"name": "User Manager",
|
||||||
"short_description": "Generate users and wallets",
|
"short_description": "Generate users and wallets",
|
||||||
"icon": "person_add",
|
"tile": "/usermanager/static/image/usermanager.png",
|
||||||
"contributors": ["benarc"]
|
"contributors": ["benarc"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/usermanager/static/image/usermanager.png
Normal file
After Width: | Height: | Size: 23 KiB |
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "Onchain Wallet",
|
"name": "Onchain Wallet",
|
||||||
"short_description": "Onchain watch only wallets",
|
"short_description": "Onchain watch only wallets",
|
||||||
"icon": "visibility",
|
"tile": "/watchonly/static/bitcoin-wallet.png",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"arcbtc",
|
"arcbtc",
|
||||||
"motorina0"
|
"motorina0"
|
||||||
|
|
BIN
lnbits/extensions/watchonly/static/bitcoin-wallet.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "LNURLw",
|
"name": "LNURLw",
|
||||||
"short_description": "Make LNURL withdraw links",
|
"short_description": "Make LNURL withdraw links",
|
||||||
"icon": "crop_free",
|
"tile": "/withdraw/static/image/lnurl-withdraw.png",
|
||||||
"contributors": ["arcbtc", "eillarra"]
|
"contributors": ["arcbtc", "eillarra"]
|
||||||
}
|
}
|
||||||
|
|
BIN
lnbits/extensions/withdraw/static/image/lnurl-withdraw.png
Normal file
After Width: | Height: | Size: 13 KiB |
|
@ -17,7 +17,7 @@ class Extension(NamedTuple):
|
||||||
is_admin_only: bool
|
is_admin_only: bool
|
||||||
name: Optional[str] = None
|
name: Optional[str] = None
|
||||||
short_description: Optional[str] = None
|
short_description: Optional[str] = None
|
||||||
icon: Optional[str] = None
|
tile: Optional[str] = None
|
||||||
contributors: Optional[List[str]] = None
|
contributors: Optional[List[str]] = None
|
||||||
hidden: bool = False
|
hidden: bool = False
|
||||||
migration_module: Optional[str] = None
|
migration_module: Optional[str] = None
|
||||||
|
@ -63,7 +63,7 @@ class ExtensionManager:
|
||||||
is_admin_only,
|
is_admin_only,
|
||||||
config.get("name"),
|
config.get("name"),
|
||||||
config.get("short_description"),
|
config.get("short_description"),
|
||||||
config.get("icon"),
|
config.get("tile"),
|
||||||
config.get("contributors"),
|
config.get("contributors"),
|
||||||
config.get("hidden") or False,
|
config.get("hidden") or False,
|
||||||
config.get("migration_module"),
|
config.get("migration_module"),
|
||||||
|
|
|
@ -126,7 +126,7 @@ window.LNbits = {
|
||||||
'isAdminOnly',
|
'isAdminOnly',
|
||||||
'name',
|
'name',
|
||||||
'shortDescription',
|
'shortDescription',
|
||||||
'icon',
|
'tile',
|
||||||
'contributors',
|
'contributors',
|
||||||
'hidden'
|
'hidden'
|
||||||
],
|
],
|
||||||
|
|
|
@ -118,16 +118,15 @@ Vue.component('lnbits-extension-list', {
|
||||||
:active="extension.isActive"
|
:active="extension.isActive"
|
||||||
tag="a" :href="[extension.url, '?usr=', user.id].join('')">
|
tag="a" :href="[extension.url, '?usr=', user.id].join('')">
|
||||||
<q-item-section side>
|
<q-item-section side>
|
||||||
<q-avatar size="md"
|
<q-avatar size="md">
|
||||||
:color="(extension.isActive)
|
<q-img
|
||||||
? (($q.dark.isActive) ? 'primary' : 'primary')
|
:src="extension.tile"
|
||||||
: 'grey-5'">
|
style="max-width:20px"
|
||||||
<q-icon :name="extension.icon" :size="($q.dark.isActive) ? '21px' : '20px'"
|
></q-img>
|
||||||
:color="($q.dark.isActive) ? 'blue-grey-10' : 'grey-3'"></q-icon>
|
|
||||||
</q-avatar>
|
</q-avatar>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label lines="1">{{ extension.name }}</q-item-label>
|
<q-item-label lines="1">{{ extension.name }} </q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section side v-show="extension.isActive">
|
<q-item-section side v-show="extension.isActive">
|
||||||
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||||
|
|
|
@ -137,6 +137,10 @@ video {
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.q-rating__icon {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
// text-wrap
|
// text-wrap
|
||||||
.text-wrap {
|
.text-wrap {
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
|
|