# Service setup notice

One gate that opens when a route has answered that the server could not load what a service needs. It has no looks and no words: a pattern draws it as a notice. Every service family spreads it into its own namespace with its scope already set, so a screen writes Files.MissingConfiguration or Avatar.MissingConfiguration.

Import: @slices.sh/core/headless/configuration

Public parts: 2

## Installation

### 1. Install the headless library

```bash
npm install @slices.sh/core@^0.1.7
```

No service configuration is required.

## Anatomy

### Composition

```text
Configuration.Missing scope="auth"
MissingConfiguration scope="auth"
```

## A server notice

```tsx
"use client"

import { Configuration } from "@slices.sh/core/headless/configuration"

export function Example() {
  return (
    <Configuration.Missing>
      <p role="alert">This feature needs server configuration.</p>
    </Configuration.Missing>
  )
}

```

This gate opens after a service reports a configuration error. It does not replace required-root setup errors.

## One service

```tsx
"use client"

import { Configuration } from "@slices.sh/core/headless/configuration"

export function Example() {
  return (
    <Configuration.Missing scope="file-storage">
      <p role="alert">File storage is not ready yet.</p>
    </Configuration.Missing>
  )
}

```

Only the named service's reported configuration errors open this gate.

## Complete API reference

### Configuration.Missing

gate · Generic

The server answered that it lacks configuration this screen needs.

Not an error to retry and not a state of the user's: nothing they do changes it, and
somebody who can is a developer reading a log. So it says only that something is not set
up, and who to tell, and leaves the settings themselves to the server's log — the answer
never carried them. A gate that draws nothing until a request has actually learned this,
because a screen that guessed would warn about a deployment that is fine.
→ docs/rules/states-gate-themselves.md

Import: @slices.sh/core/headless/configuration

```tsx
MissingConfigurationProps

type MissingConfigurationProps = GateProps<{ scopes: readonly string[] }> & {
  /** The service (or services) this screen stands on, so another service's trouble is not its notice. */
  scope?: string | readonly string[]
}
```

Source: @slices.sh/core/src/headless/configuration/missing-configuration.tsx

### MissingConfiguration

gate · Generic

The server answered that it lacks configuration this screen needs.

Not an error to retry and not a state of the user's: nothing they do changes it, and
somebody who can is a developer reading a log. So it says only that something is not set
up, and who to tell, and leaves the settings themselves to the server's log — the answer
never carried them. A gate that draws nothing until a request has actually learned this,
because a screen that guessed would warn about a deployment that is fine.
→ docs/rules/states-gate-themselves.md

Import: @slices.sh/core/headless/configuration

```tsx
MissingConfigurationProps

type MissingConfigurationProps = GateProps<{ scopes: readonly string[] }> & {
  /** The service (or services) this screen stands on, so another service's trouble is not its notice. */
  scope?: string | readonly string[]
}
```

Source: @slices.sh/core/src/headless/configuration/missing-configuration.tsx
