q-nuxt-layer
Debug integration issues with q-nuxt-layer in app.qpoint.io
Why
The q-nuxt-layer package has been integrated into app.qpoint.io, but there are unresolved issues preventing full functionality. Systematically debugging and fixing these issues will stabilize the integration and unlock shared component usage.
Objective
Identify and resolve all critical issues blocking q-nuxt-layer integration. Ensure layer components and utilities work seamlessly within the app.qpoint.io codebase.
Scope
nuxt.config.ts— layer configurationapp/— main application code using layer componentspackage.json— dependencies and build configuration- Layer-related imports and component auto-loading
Key Changes
Build error: chart.js not found (RESOLVED)
SparkChart.vuein q-nuxt-layer imports fromchart.jswhich isn't installed as a dependency- Build now passes
Nav icons missing (RESOLVED)
- Layer's
Icon.vueonly searchedassets/icons/within the layer - App-specific nav icons (dashboard, security, traffic, inventory, alerting, plugins, settings) live in
app/assets/svg-icons/ - Fix: Updated
q-nuxt-layer/components/ux/Icon.vueto try layer icons first, then fall back to app's~/assets/svg-icons/viaimport.meta.glob
useSlotsChecker not defined (RESOLVED)
index.vue:43referenceduseSlotsCheckerwhich was not available- Fixed the missing composable reference
UI.vue total undefined (RESOLVED)
UI.vue:130—Cannot read properties of undefined (reading 'total')- Usage list component accessed
.totalon an undefined object - Fixed with proper null guards
Firebase permission-denied errors (NOT A BUG)
- Firestore
onSnapshotlisteners throwpermission-deniedatcrud.js:76 .envalready points at live Firebase (qpoint-edge) with emulators commented out- Not a code bug — this is a Firestore security rules issue for the authenticated user's access level
Duplicate components after merge (RESOLVED)
- After merging from main, 7 components that had been moved to q-nuxt-layer reappeared in
app/components/ - Duplicates:
data/metric/Trend.vue,ux/Close.vue,ux/Tag.vue,ux/Modal.vue,ux/table-list/index.vue,ux/table-list/Search.vue,form/SaveBar.vue - The app versions had improvements over the layer (e.g.,
<UxIcon>usage,type="button"/type="submit",viewClassprop, accessibility attrs) - Fix: Updated layer components with app improvements, then deleted app duplicates
Health Dial SVG path error (RESOLVED)
<path> attribute d: Expected number, "… 43 1 1 175,4 0 z"— comma decimal separator in SVG arc path- Locale-aware number formatting produced
175,4instead of175.4in SVG pathdattribute - Also removed trailing
zwhich closed the arc path and drew a visible grey line connecting endpoints - Fix: Fixed number formatting and removed path close command
Outcome
Successfully integrated q-nuxt-layer into app.qpoint.io. Resolved build errors (chart.js dependency), nav icon loading (layer/app fallback), missing composable reference (useSlotsChecker), null-safety in usage list UI, duplicate component cleanup (synced improvements back to layer), and SVG path rendering in health dial. Firebase permission errors are a security rules concern, not an integration bug.
Status
Complete — All code-level integration issues resolved. App loads and runs without JS errors.