← Cycles
app.qpoint.io · c3

q-nuxt-layer

archivedcreated 2026-03-12· last activity 2026-03-12

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 configuration
  • app/ — main application code using layer components
  • package.json — dependencies and build configuration
  • Layer-related imports and component auto-loading

Key Changes

Build error: chart.js not found (RESOLVED)

  • SparkChart.vue in q-nuxt-layer imports from chart.js which isn't installed as a dependency
  • Build now passes
  • Layer's Icon.vue only searched assets/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.vue to try layer icons first, then fall back to app's ~/assets/svg-icons/ via import.meta.glob

useSlotsChecker not defined (RESOLVED)

  • index.vue:43 referenced useSlotsChecker which 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 .total on an undefined object
  • Fixed with proper null guards

Firebase permission-denied errors (NOT A BUG)

  • Firestore onSnapshot listeners throw permission-denied at crud.js:76
  • .env already 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", viewClass prop, 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,4 instead of 175.4 in SVG path d attribute
  • Also removed trailing z which 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.

Qpoint Brand Style Guide