Use when building or cleaning LNbits Vue/Quasar pages. Prefer Quasar layout, spacing, typography, and theme behavior over hand-applied colors. Follow LNbits extension patterns such as tpos, inventory, bitcoinswitch, satspay or auction_house, and avoid custom dark/light styling when Quasar theming already handles it.
Use this skill for LNbits extension UI work that uses Quasar and Vue.
Primary goal:
Use this skill when:
Do not use this skill as the main guide for:
Before applying this skill, gather:
div structure.color, text-*, or bg-* classes.Quasar is not only a markup vocabulary. It is a Vue component library, so the component API matters just as much as the HTML shape.
Prefer:
v-model and Quasar events for stateful controlsExamples:
q-table with a columns array and rows data instead of manually building every table cellq-dialog v-model="showDialog" instead of toggling visibility with ad hoc DOM logicq-input props such as type, dense, filled, hint, and validation hooks before custom input shellsDefault assumption:
So:
bg-dark, text-white, bg-grey-1, bg-grey-2 just to force a lookAllowed uses of color:
q-btn color="primary"If a component should simply look like the rest of LNbits:
q-card, q-banner, q-list, q-item, q-table, q-btnPrefer Quasar layout primitives:
row, col-*q-col-gutter-* for grid columnsq-gutter-* for non-column childrenitems-center, justify-between, no-wrap, flex-centerq-pa-*, q-px-*, q-py-*, q-ma-*, q-mt-*, etc.text-h*, text-subtitle*, text-body*, text-caption, text-overlineDo not:
divs when q-card-section, q-item-section, q-card-actions, or q-banner already solve itrow q-col-gutter-* parents with background or border-related stylingIf you need a bordered or styled block inside a gutter layout:
Use Quasar components intentionally:
q-pageq-cardq-card-sectionq-card-actionsq-list + q-itemq-bannerq-tableq-chip, q-badgeq-dialogq-form, q-input, q-select, q-toggleDo not use q-card flat by default.
Use bordered only when the surrounding LNbits markup uses that look or when a card needs a stronger boundary.
When choosing a component, check its API as well as its rendered structure:
For LNbits extensions:
v-text over template interpolation for simple text output.vue filesindex.js column definitions when practicalWhen a page already follows LNbits patterns:
When doing UI cleanup:
divs can become Quasar structureThese are useful LNbits patterns to inspect in the main LNbits codebase when relevant:
lnbits/extensions/tpos/templates/tpos/index.htmllnbits/extensions/inventory/lnbits/extensions/bitcoinswitch/static/index.vuelnbits/extensions/bitmarket/templates/bitmarket/index.htmlThese paths are not stored in this repository. They are examples of the kinds of LNbits extension pages to compare against when working in an LNbits codebase.
Open only the relevant reference files:
references/theme-and-colors.mdreferences/layout-and-spacing.mdreferences/components.mdCore Quasar component docs covered by this skill:
bg-dark / text-white unless there is a real semantic reason.After applying this skill, the page should: