Skip to main content

CnAdminSettingsShell

The canonical chrome for a Conduction app's Nextcloud admin settings page. It renders the fleet-standard layout so the page header, version card, re-import action and support footer can never drift between apps again.

In top-to-bottom order it renders:

  1. a page title header<App> Settings / Configure your <App> installation (+ optional docUrl),
  2. a CnVersionInfoCard — version (read from loadState when appVersion is omitted), an up-to-date badge, a Re-import configuration button wired to the AppHost endpoint POST /apps/<appId>/api/settings/load, and a support / SLA footer,
  3. the app's own settings sections (the default <slot>).

Every app's AdminRoot.vue collapses to a thin wrapper around this component.

Usage

Minimal:

<template>
<CnAdminSettingsShell
app-id="shillinq"
app-name="Shillinq"
doc-url="https://shillinq.conduction.nl/docs/intro"
@reimported="reloadConfig">
<MyRegisterMapping />
<MyFeatureSettings />
</CnAdminSettingsShell>
</template>

<script>
import { CnAdminSettingsShell } from '@conduction/nextcloud-vue'
export default { components: { CnAdminSettingsShell } }
</script>

With a real up-to-date check (when the backend reports a configured version):

<CnAdminSettingsShell
app-id="opencatalogi" app-name="OpenCatalogi"
:app-version="running" :configured-version="configured"
:is-up-to-date="running === configured" />

Props

PropTypeDefaultDescription
appIdString(required)Nextcloud app id; used for the default re-import endpoint and the version loadState key
appNameString(required)Human-readable name shown in the header and version card
appVersionString''Running version. When empty, read from loadState(appId, 'version', 'Unknown')
titleString''Page title. Defaults to "<appName> Settings"
descriptionString''Page description. Defaults to "Configure your <appName> installation"
docUrlString''Documentation URL (renders the info icon next to the title)
showVersionCardBooleantrueWhether to render the version card
versionTitleString'Version information'Version card heading
versionDescriptionString''Version card description. Defaults to "Information about the current <appName> installation"
configuredVersionString''Configured version. When omitted, read from loadState(appId, 'configuredVersion', '') (AppHost stamps it on each config import)
isUpToDateBooleannullWhether the install is up to date. When null, the shell reads the real value from loadState(appId, 'isUpToDate', true) (AppHost's GenericAdminSettings compares running vs imported config version). Pass an explicit boolean to override
showUpdateButtonBooleantrueShow the version card's up-to-date / update button
updatingBooleanfalseWhether an update is in progress
showReimportBooleantrueShow the "Re-import configuration" action
reimportUrlString''Override the re-import endpoint. Defaults to /apps/<appId>/api/settings/load
showSupportBooleantrueRender the default support footer
supportEmailString'[email protected]'Support contact email
slaEmailString'[email protected]'SLA contact email (set '' to hide the SLA line)

Events

EventPayloadDescription
updateThe version card's update button was clicked
reimportedobjectConfiguration was re-imported successfully (AppHost response payload)
reimport-errorErrorConfiguration re-import failed

First-time setup actions (ADR-042)

Two optional actions surface the CnSetupWizard and the "help us" modal from the admin page (not personal settings):

PropTypeDefaultDescription
showSetupbooleanfalseShow a "Run setup wizard" button that opens CnSetupWizard.
setupStepsArray[]The manifest.setup.steps array passed to the wizard.
showHelpbooleanfalseShow a "Help us" button that opens CnSuggestFeatureModal.
helpRepostring''<owner>/<repo> slug for the feature-request modal.

Slots

SlotDescription
defaultThe app's own settings sections, rendered below the version card
actionsExtra action buttons next to the update / re-import buttons
footerReplaces the default support / SLA footer
version-itemsExtra key/value rows inside the version card details