X Enterprises

nuxt-x-app

Core Nuxt layer providing production-ready admin dashboard components, CRUD composables, and utilities built on Nuxt UI v4.

nuxt-x-app

Core admin dashboard layer for Nuxt 4. Provides 149 components across 28 UI categories (activity logs, avatar, billing, bulk actions, buttons, cards, charts, command palette, data display, CRUD tables, kanban, modals, slideovers, notifications, and more) plus 15 auto-imported composables for CRUD, fetching, file uploads, toasts, notifications, and navigation. Built on Nuxt UI v4.

All components are auto-imported from app/components/X/A/ with the XA prefix.

What the consumer writes

The layer ships with batteries included: components, composables, the app shell, and styling are all wired up by the layer itself. The minimal consumer is an extends entry plus optional config.

Requirements: nuxt ^4.0.3 and @nuxt/ui ^4.9.0 (@nuxt/ui is installed automatically as a dependency of the layer). When developing the layer locally, use pnpm — the repo carries a pnpm-lock.yaml.

npm install @xenterprises/nuxt-x-app
// nuxt.config.ts
export default defineNuxtConfig({
  extends: ["@xenterprises/nuxt-x-app"],
})

Optional dashboard navigation and header configuration goes in the consumer's app/app.config.ts under the xDashboard namespace — the file must live in app/, not the project root, or the overrides are silently ignored:

// app/app.config.ts
export default defineAppConfig({
  xDashboard: {
    navigation: {
      mode: "sidebar",
      sidebar: {
        collapsible: true,
        brand: { title: "My App", logo: "/logo.svg" },
        items: [
          { label: "Dashboard", icon: "i-lucide-layout-dashboard", to: "/" },
          { label: "Users", icon: "i-lucide-users", to: "/users" },
        ],
      },
    },
    header: {
      search: { enabled: true, shortcut: "meta+k" },
    },
  },
})

Optional runtime values (base API URL, PDF license) are set via environment variables — see Environment Variables below and the Configuration page. No config is required to get started: every default is opt-out.

What the layer provides

Components by category (auto-imported, XA prefix)

CategoryCountDescription
Activity1Chronological activity log feeds
Avatar3Avatar, group, and upload variants for user profiles
Billing6Stripe-powered pricing pages and payment management
Bulk Action4Batch operation toolbar for selected table rows
Buttons11Action buttons for common dashboard operations
Card24Stats, KPIs, progress, quota, revenue, and chart containers
Chart9Line, area, bar, donut, bubble, Gantt, and progress charts
Command1Keyboard-driven command palette with fuzzy search
Data7Numbers, key-value pairs, status badges, timelines, skeletons
Detail1Read-only detail panels with automatic type formatting
Document7File upload, list, preview, and management components
Email1Rich email composer with autocomplete and attachments
Fmt9Display formatters for dates, currency, phone, addresses
Forms6File uploads, rich editors, and search inputs
Inline4In-place field editing with optimistic updates
Kanban3Drag-and-drop kanban board with configurable columns
Layout13App shell with sidebar, header, breadcrumbs, and navigation
Modal3General-purpose modals, confirmation dialogs, data viewers
Note4User notes with composition, filtering, and attachments
Notification2Bell icon with unread badge and slide-over notification panel
Permission1Renderless gate for role-based conditional rendering
Settings2Toggle preference rows and security feature items
Slide2Off-canvas slideover panels from any screen edge
State3Standardized empty, error, and loading state components
Table10Data tables with built-in CRUD, filtering, sorting, pagination
User5User cards, list items, dropdown menus, and role badges
Wall6Social feed with posts, reactions, threaded replies, and tags
Workflow1Multi-step approval workflows with sequential and parallel modes

All components

Every component, grouped by category with links to its doc page.

ComponentCategoryDescription
XAActivityLogActivityChronological feed of activity events with user avatars and timestamps
XAAvatarAvatarUser avatar with image, initials fallback, and optional status indicator
XAAvatarGroupAvatarStacked overlapping avatar group
XAAvatarUploadAvatarAvatar component with file upload capability
XABillingHistoryBillingPaginated payment and invoice history table
XABillingPaymentMethodCardBillingSaved payment method display (card brand, last 4, expiry)
XABillingPricingCardBillingSingle pricing tier card with features list and CTA
XABillingPricingGridBillingMulti-tier pricing comparison grid
XABillingQuoteBuilderBillingInteractive quote builder for custom pricing
XABillingSubscriptionCardBillingCurrent subscription status with upgrade/cancel controls
XABtnBackButtonsNavigate-back icon button
XABtnConfirmDeleteButtonsDelete button with built-in confirmation dialog
XABtnCopyButtonsCopy-to-clipboard button
XABtnDropdownButtonsDropdown actions menu button
XABtnEditButtonsEdit action button
XABtnExportButtonsGeneric export action button
XABtnExportIcalButtonsExport to iCal button
XABtnQuickActionsButtonsQuick-actions panel button
XABtnRefreshButtonsReload-data button with loading state
XABtnSubmitButtonsForm-submit button with loading state
XABtnViewButtonsView/detail action button
XABulkActionAssignBulk ActionAssign selected rows to an option from a dropdown
XABulkActionDeleteBulk ActionDelete selected rows with confirmation modal
XABulkActionExportBulk ActionExport selected rows to CSV or JSON
XABulkActionStatusBulk ActionChange the status of selected rows via a dropdown
XACardCardBase card container with header, footer, collapsible body
XACardActiveUsersCardActive user count with avatar stack and trend indicator
XACardChartCardGeneric area-chart card with subtitle, comparison, and legend
XACardChartBlockCardCard overlaying a title and description on top of a chart slot
XACardChartExpensesCardExpenses card with a stacked or grouped bar chart
XACardChartFinanceCardFinance breakdown card with a donut chart and percentage legend
XACardChartRevenueCardRevenue card with grouped bar chart for period comparisons
XACardChartRevenueLineCardRevenue card with line chart for current vs last-year comparisons
XACardChartWinLossCardWin/loss card with a line chart per day
XACardDonutCardDonut chart card with a legend table below
XACardIndicatorCardMinimal indicator card with label, value, and MoM trend
XACardKpiCardSlot-based KPI card with label, value, trend, and chart slots
XACardKpiSimpleCardCompact KPI with currency formatting, trend, and budget progress
XACardProgressCardProgress card with bar and/or donut visualization
XACardProgressCircleCardCompact card with circular progress + label/value
XACardQuotaCardMulti-quota card with usage bars and threshold states
XACardQuotaBarCardSingle-resource quota card with progress bar
XACardRevenueCardRevenue metric card with embedded area sparkline
XACardRevenueBarCardRevenue card with embedded grouped bar chart
XACardSparklineCardStat card with an inline sparkline (line or area chart)
XACardStatCardSingle-metric stat card with value, trend, icon, and color
XACardStatsCardCardStats card with value formatting, trend, icon, and color theming
XACardStatsGridCardResponsive grid that renders an array of stat items
XACardStatsSummaryCardSummary card with an area chart and comparison value
XAChartAreaChartArea chart with configurable curve, axes, legend, and grid lines
XAChartBarChartBar chart with stacking, orientation, radius, and padding control
XAChartBubbleChartBubble chart with x/y/size accessors and domain-line control
XAChartCategoryDistributionChartHorizontal bar breakdown of categories with percentages
XAChartDonutChartDonut/pie chart with arc-width, pad-angle, center slot, legend
XAChartGanttChartGantt chart with row labels and x-start/length accessors
XAChartLineChartLine chart with configurable curve, axes, legend, and grid lines
XAChartProgressCircleChartSVG circular progress indicator with optional center label
XAChartStatusTrackerChartUptime-style status tracker bar for service health dashboards
XACommandPaletteCommandKeyboard-driven command palette with grouped results and fuzzy search
XADataKeyValueDataSingle key-value row with automatic type rendering
XADataKeyValueListDataList container rendering key-value items via XADataKeyValue
XADataNumberDataInline number formatted via Intl.NumberFormat with sign, prefix, suffix
XADataSkeletonDataAnimated loading placeholder in text, circular, rectangular variants
XADataStatusBadgeDataBadge that auto-maps common status strings to semantic colors
XADataTimelineDataVertical timeline with icon/dot markers and per-item slots
XADataTimelineFeedDataActivity feed timeline with date grouping, load-more, and empty state
XADetailPanelDetailRead-only detail panel with field-driven rendering
XADocumentDocumentCore document manager combining uploader, grid/list, preview
XADocumentGridDocumentCard grid display of documents with thumbnail previews
XADocumentItemDocumentSingle document card with thumbnail, metadata, hover actions
XADocumentListDocumentTable-based document listing with selectable rows
XADocumentManagerDocumentFull-featured document manager card
XADocumentPreviewDocumentModal for previewing images, PDFs, videos, and audio
XADocumentUploaderDocumentDrag-and-drop file upload zone with validation
XAEmailComposerEmailRich email composer with grouped recipient autocomplete and attachments
XAFmtAddressFmtPostal address in block or inline format with optional map link
XAFmtCurrencyFmtLocalized currency string with optional color coding
XAFmtDataFmtPlain object or field array as a labeled key-value list
XAFmtDateTimeFmtDate/time formatted with short, long, full, or relative modes
XAFmtFileSizeFmtByte counts to human-readable file size strings
XAFmtMapFmtGoogle Maps iframe by address, coordinates, or search query
XAFmtPercentFmtPercentage with color coding, sign, trend arrow, and thresholds
XAFmtPhoneFmtPhone numbers in multiple styles with optional tel: link
XAFmtRelativeTimeFmtDate as relative time ("2 hours ago") via NuxtTime
XAFormEditorFormsRich text editor (Tiptap-based)
XAFormSearchInputFormsDebounced search input with loading indicator
XAFormSectionFormsGroups related form fields with title and description
XAFormUploadAvatarFormsCircular avatar upload with crop preview
XAFormUploadFileFormsMulti-file upload with progress tracking
XAFormUploadImageFormsDrag-and-drop image upload with preview
XAInlineDateInlineClick-to-edit date picker saving via useXCrud
XAInlineEditInlineClick-to-edit text/number field saving via useXCrud
XAInlineSelectInlineClick-to-select dropdown saving via useXCrud
XAInlineToggleInlineToggle switch persisting via useXCrud
XAKanbanKanbanFull kanban board with drag-and-drop and responsive mobile view
XAKanbanCardKanbanDraggable kanban card showing title, assignee, due date, tags
XAKanbanColumnKanbanIndividual kanban column with count badge and drag-over highlight
XALayoutLayoutTop-level app shell with sidebar, header, and main content
XALayoutBreadcrumbsLayoutAuto-generates breadcrumbs from route or manual items
XALayoutContentNavLayoutIn-page secondary sidebar for sub-navigation
XALayoutHeaderLayoutSticky top header with mobile menu, breadcrumbs, search, actions
XALayoutMobileSidebarLayoutSlide-over sidebar for mobile viewports
XALayoutPageHeaderLayoutPage title block with back button, breadcrumbs, description, tabs
XALayoutResponsiveNavLayoutHorizontal nav on desktop, dropdown on mobile
XALayoutSecondaryNavLayoutHorizontal sub-nav bar with optional back button and actions slot
XALayoutSidebarLayoutCollapsible desktop sidebar with brand, nav, footer, user menu
XALayoutSidebarNavLayoutSidebar navigation list with section headers and dividers
XALayoutSidebarNavItemLayoutSidebar nav item with links, actions, badges, children, tooltips
XALayoutSidebarUserMenuLayoutSidebar-embedded user avatar dropdown with theme switcher
XALayoutUserMenuLayoutHeader user dropdown with avatar, name, email, theme switcher
XAModalModalGeneral-purpose modal with header, body, footer, optional trigger
XAModalConfirmModalConfirmation dialog with danger/warning/info variants
XAModalKeyValueModalModal displaying an object or array of key-value pairs
XANoteNoteSingle note card showing avatar, timestamp, body, attachments
XANoteFeedNoteAnimated list of notes with search, filter, load-more, empty states
XANoteInputNoteNote composition form with auto-growing textarea and attachments
XANoteToolbarNoteSearch and filter bar for note feeds
XANotificationBellNotificationButton with unread count badge that toggles the slide-over
XANotificationSlideoverNotificationSlide-over panel listing notifications with read/dismiss controls
XAPermissionGatePermissionRenderless gate component for role-based conditional rendering
XASettingsPreferenceSettingsLabeled toggle row for boolean user preferences
XASettingsSecurityItemSettingsSecurity feature row with icon, label, status badge, action button
XASlideSlideFull-featured slideover with header, body, footer, and trigger
XASlidePanelSlideLow-level slide panel with Teleport, four sides, backdrop
XAStateEmptyStateEmpty state display with icon, title, description, optional action
XAStateErrorStateError state with alert icon, message, and optional retry button
XAStateLoadingStateMulti-variant loading skeleton and spinner
XATableTableFull-featured data table with server-side pagination, filtering, sorting
XATableActionColumnTablePer-row action cell with overflow dropdown for additional actions
XATableActionsTablePer-row view/edit/delete action buttons with extra-actions slot
XATableCellRendererTableRenders cell content from a column preset (text/email/badge/date/...)
XATableColumnToggleTablePopover-based column visibility switcher with show-all and reset
XATableEditableCellTableDouble-click-to-edit cell with text/number/textarea/select/boolean
XATableExportTableDropdown button exporting table data to CSV or JSON
XATableFilterBarTableSearch + typed filter dropdowns emitting filter changes
XATableFilterChipsTableAnimated chips for active filters with remove-X and Clear-all
XATableToolbarTablePre-composed toolbar with search, filter chips, column toggle, export
XAUserUserConvenience alias for XAUserCard — same props and slots
XAUserCardUserCompact bordered card with avatar, role badge, status, actions
XAUserItemUserFlat list row for users, companies, or businesses
XAUserMenuUserAvatar trigger with dropdown for profile, settings, logout
XAUserRoleBadgeUserSmart role badge that auto-maps role strings to colors
XAWallFeedWallOrchestrating feed rendering pinned and regular posts
XAWallInputWallPost composer with v-model textarea, attachments, tag selector
XAWallPostWallIndividual post card with author, body, attachments, reactions, replies
XAWallReactionsWallEmoji reaction bar with toggle interactions and picker popover
XAWallRepliesWallExpandable threaded reply section with pagination
XAWallTagsWallTag chip list with add/remove controls and dropdown suggestions
XAWorkflowApprovalWorkflowMulti-approver approval widget (sequential and parallel modes)

Composables (auto-imported)

ComposableDescription
useXCrud(endpoint, options?)Chainable CRUD: .all() / .read(id) / .create() with stale-while-revalidate cache, optimistic updates, retry, and optional server-side pagination.
useXFetch(url, options?)Typed fetch wrapper with auth token injection, loading and error state.
useXFileUpload(options?)File upload with progress tracking and preview.
useXToast()Toast notifications: success, error, warning, info.
useXNotifications()Notification feed: notifications, unreadCount, markRead, markAllRead.
useXKanban(options?)Kanban state: columns, moveCard, addCard, removeCard.
useDataTable(data, options?)Table state: filtering, sorting, pagination, selection.
useBreadcrumb()Breadcrumb trail: items, push, pop, replace.
useColumns(schema)Column definitions from a schema descriptor.
useConfirm()Programmatic confirmation dialog: confirm(message)Promise<boolean>.
useCurrentUser()Current user state with provide/inject, role checks, and optional auth fetch.
useDateTime()Date/time formatting utilities.
useXInlineEdit(options?)In-place cell editing state with save/cancel handlers.
useXNavigation()Dashboard navigation tree and sidebar state from xDashboard app config.
useXTableColumns()Column presets for XATable (avatar, badge, date, currency, actions, ...).

Environment Variables

VariableRequiredDescription
NUXT_PUBLIC_X_APP_API_URLNoBase API URL exposed to the client. Accessed via useRuntimeConfig().public.x.app.apiUrl.
NUXT_PUBLIC_X_APP_PDF_LICENSENoLicense key for PDF features. Accessed via useRuntimeConfig().public.x.app.pdfLicense.

Minimal Usage Example

<script setup lang="ts">
const { data, loading, remove } = useXCrud<User>("users").all()
const { success } = useXToast()

async function deleteUser(id: string | number) {
  await remove(id)
  success("User deleted")
}
</script>

<template>
  <XATable :data="data" :loading="loading" @delete="deleteUser" />
</template>

AI Context

package: "@xenterprises/nuxt-x-app"
type: nuxt-layer
version: "0.6.0"
use-when: >
  Starting a new Nuxt admin dashboard or SaaS app. Extend this layer to gain
  149 auto-imported XA-prefixed components, 15 auto-imported composables, and
  a pre-configured app shell — replacing weeks of boilerplate with a single
  layer extension.
key-composables: [useXCrud, useXFetch, useXToast, useXNotifications, useXKanban, useDataTable, useBreadcrumb, useColumns, useConfirm]
key-components: [XATable, XAKanban, XALayout, XADetailPanel, XAEmailComposer, XAWorkflowApproval]
component-count: 149
category-count: 28
auto-import-prefix: XA
Copyright © 2026