---
title: "pdx-material-slider JSON API (Canonical)"
slug: "pdx-material-slider-json-api"
doc_type: "api-reference"
component: "pdx-material-slider"
document_kind: "json-api-canonical"
reference_mode: "canonical"
contract_format: "json"
contract_source: "runtime-and-code"
description: "Referencia canonica do contrato JSON do componente pdx-material-slider."
category: "components"
sub_category: "dynamic-fields"
audience:
  - "frontend"
  - "architect"
  - "platform-team"
level: "advanced"
status: "active"
owner: "praxis-ui"
source_of_truth:
  - "projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts"
  - "projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts"
  - "projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts"
  - "projects/praxis-core/src/lib/models/material-field-metadata.interface.ts"
source_of_truth_last_verified: "2026-04-27"
last_updated: "2026-04-27"
toc: true
sidebar: true
tags:
  - "json-api"
  - "canonical-contract"
  - "pdx-material-slider"
api_stability: "canonical"
schema_verified: true
runtime_verified: true
editor_coverage_verified: false
runtime_scope: "public"
legacy_paths_present: false
has_known_mismatches: false
related_components:
  - "praxis-table"
  - "pdx-base-input-runtime-contract"
  - "pdx-material-range-slider"
---

# pdx-material-slider

Este documento e a referencia canonica da API JSON de pdx-material-slider.

## Summary

- Tipo documental: API reference canonica de contrato JSON.
- Source of truth: runtime e codigo declarados no frontmatter.
- Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
- Resumo funcional: Contrato JSON metadata-driven com comportamento definido por runtime e schema associado.

## Purpose and scope

- O componente consome payload JSON metadata-driven e expoe comportamento runtime configuravel por contrato.
- Esta referencia cobre contrato publico, classificacao de paths e semantica de cobertura (runtime/schema/editor).
- Fora de escopo: quickstart, tutorial narrativo e notas arquiteturais que nao alteram contrato publico.

## Consulta rapida (obrigatorio)

| Regra/tema              | Observado             | Canonico desejado                                                      | Status  | Evidencia                                                                                                                                                                                         |
| ----------------------- | --------------------- | ---------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Component id            | `pdx-material-slider` | Manter ID canonico estavel e versionado por contrato                   | Active  | frontmatter.component                                                                                                                                                                             |
| Primary contract source | `runtime-and-code`    | Runtime, schema e docs devem permanecer rastreaveis                    | Partial | frontmatter.contract_source + source_of_truth                                                                                                                                                     |
| Runtime coverage        | `true`                | Comportamentos runtime criticos devem ficar explicitamente verificados | Active  | `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts`; focused component specs for native thumb accessibility and readonly/disabled interaction guards, 2026-04-27 |
| Schema/type coverage    | `true`                | Tipos e schema devem refletir paths publicos do contrato               | Active  | source_of_truth + Detailed API reference                                                                                                                                                          |
| Editor/tooling coverage | `false`               | Editor/tooling deve espelhar somente contrato publico suportado        | Partial | `projects/praxis-core/src/lib/metadata/field-selector-control-type.constants.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts`              |
| Legacy paths            | `false`               | Segregar legado de caminhos canonicos com janela de migracao           | Active  | frontmatter.legacy_paths_present                                                                                                                                                                  |
| Known mismatches        | `false`               | Registrar observed vs desired de forma auditavel                       | Active  | frontmatter.has_known_mismatches                                                                                                                                                                  |

## Source of truth

| Source                                                                                         | Kind            | Notes                                                               |
| ---------------------------------------------------------------------------------------------- | --------------- | ------------------------------------------------------------------- |
| projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts  | schema-metadata | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts | runtime-code    | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts                     | runtime-code    | Arquivo presente no repositorio e usado como evidencia de contrato. |
| projects/praxis-core/src/lib/models/material-field-metadata.interface.ts                       | schema-types    | Arquivo presente no repositorio e usado como evidencia de contrato. |

## Support legend

- **Active**: suportado em runtime e liberado para uso externo.
- **Partial**: suporte parcial, com restricoes, lacunas ou validacao incompleta.
- **Declared-only**: declarado em tipos/schema sem evidencia operacional completa.
- **Schema-only**: presente em schema/tipos sem cobertura runtime confirmada.
- **Deprecated**: legado suportado por janela de migracao definida.

## Contract status snapshot

| Item                     | Value              | Notes                                          |
| ------------------------ | ------------------ | ---------------------------------------------- |
| Reference mode           | `canonical`        | Deve permanecer canonico                       |
| Contract format          | `json`             | Contrato metadata-driven                       |
| Contract source          | `runtime-and-code` | Alinhar com source_of_truth                    |
| Runtime scope            | `public`           | Escopo publicado para consumidores             |
| Runtime verified         | `true`             | Revisar sempre com evidencia de runtime        |
| Schema verified          | `true`             | Revisar sempre com evidencia de tipos/schema   |
| Editor coverage verified | `false`            | Revisar sempre com evidencia de editor/tooling |
| Legacy paths present     | `false`            | Segregar legado de contrato canonico           |
| Has known mismatches     | `false`            | Divergencias devem aparecer em secao dedicada  |

## Contract classification (obrigatorio)

### Canonical paths (public contract)

| Path                   | Type    | Required | Default | Status  | Notes                                             |
| ---------------------- | ------- | -------- | ------- | ------- | ------------------------------------------------- |
| `metadata`             | object  | true     | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `readonlyMode`         | boolean | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `disabledMode`         | boolean | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `visible`              | boolean | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `presentationMode`     | boolean | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `metadata.controlType` | string  | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `metadata.min`         | number  | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |
| `Validators.min`       | number  | false    | n/a     | Partial | See Detailed API reference for runtime semantics. |

### Supported legacy paths

Nenhum path legado suportado foi identificado nesta revisao.

### Internal-only paths

Nao ha paths internal-only confirmados no contrato publico desta revisao.

### Experimental paths

Nao ha paths experimentais confirmados no contrato publico desta revisao.

## Public contract surface (obrigatorio)

### Top-level configuration blocks

| Block              | Purpose                                     | Required | Merge strategy | Notes                                                                  |
| ------------------ | ------------------------------------------- | -------- | -------------- | ---------------------------------------------------------------------- |
| `metadata`         | Payload declarativo principal do componente | true     | deep-merge     | runtime linkage verified for core flows (component specs, 2026-04-27). |
| `readonlyMode`     | Override de readonly no host/runtime        | false    | override       | readonly blocks slider interaction and exposes `aria-readonly` (component specs, 2026-04-27). |
| `disabledMode`     | Override de disabled no host/runtime        | false    | override       | disabled blocks slider interaction and exposes `aria-disabled` (component specs, 2026-04-27). |
| `visible`          | Override de visibilidade no host/runtime    | false    | override       | runtime linkage verified for core flows (component specs, 2026-03-06). |
| `presentationMode` | Renderizacao de apresentacao sem interacao  | false    | override       | presentation is treated as readonly/non-interactive. |
| `Validators`       | Configuracao especifica de runtime          | false    | override       | runtime linkage verified for core flows (component specs, 2026-03-06). |

### Nested configuration blocks

| Path                         | Type                       | Required | Default | Constraints       | Notes                                |
| ---------------------------- | -------------------------- | -------- | ------- | ----------------- | ------------------------------------ |
| `metadata.controlType`       | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.min`               | number                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `Validators.min`             | number                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.max`               | number                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `Validators.max`             | number                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.step`              | number                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.showTicks`         | boolean                    | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.color`             | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.discrete`          | boolean                    | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.displayWith`       | unknown                    | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.valueLabelDisplay` | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.valueLabelFormat`  | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.marks`             | boolean \| array \| string | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.semanticBands`     | array \| string            | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.distribution`      | array \| object \| string  | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.track`             | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |
| `metadata.size`              | string                     | false    | n/a     | component-defined | Partial; verify per source_of_truth. |

### Input bindings (inbound data)

| Binding/Path       | Type    | Required | Source       | Runtime normalization | Notes                             |
| ------------------ | ------- | -------- | ------------ | --------------------- | --------------------------------- |
| `metadata`         | object  | true     | host-json    | component-defined     | Primary inbound contract payload. |
| `readonlyMode`     | boolean | false    | host-runtime | not-yet-verified      | Host-level behavioral override.   |
| `disabledMode`     | boolean | false    | host-runtime | not-yet-verified      | Host-level behavioral override.   |
| `visible`          | boolean | false    | host-runtime | not-yet-verified      | Host-level behavioral override.   |
| `presentationMode` | boolean | false    | host-runtime | not-yet-verified      | Host-level behavioral override.   |

### Output events

| Event          | Payload | Trigger       | Stability    | Notes                                           |
| -------------- | ------- | ------------- | ------------ | ----------------------------------------------- |
| `valueChange`  | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `focusChange`  | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `nativeBlur`   | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |
| `nativeChange` | unknown | runtime-event | Experimental | Validate payload shape against source_of_truth. |

### External side channels

| Channel                 | Direction     | Contract          | Failure mode      | Notes                                                                     |
| ----------------------- | ------------- | ----------------- | ----------------- | ------------------------------------------------------------------------- |
| `host/services/storage` | bidirectional | component-defined | component-defined | Side channels variam por componente e host; verificar em source_of_truth. |

### Host/runtime dependencies

| Dependency                             | Required | Environment          | Purpose             | Notes                                                                                                      |
| -------------------------------------- | -------- | -------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------- |
| `material-slider.metadata.ts`          | true     | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts`.  |
| `material-slider.component.ts`         | true     | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts`. |
| `simple-base-input.component.ts`       | true     | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts`.                     |
| `material-field-metadata.interface.ts` | true     | browser/dev/prod/ssr | contract resolution | Refer to `projects/praxis-core/src/lib/models/material-field-metadata.interface.ts`.                       |

## Coverage by surface (obrigatorio)

### Coverage matrix (runtime, schema/type, editor/tooling)

| Surface        | Verified | Coverage status | Evidence                                                                                                                                                                                          | Notes                                                                                                                                                     |
| -------------- | -------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Runtime        | `true`   | Active          | `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts`, `projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts` | Value changes, min/max, marks, semantic bands, distribution, external FormControl, native thumb accessibility and readonly/disabled interaction guards verified via focused component specs on 2026-04-27; editor/tooling coverage remains independent. |
| Schema/Types   | `true`   | Active          | source_of_truth + Detailed API reference                                                                                                                                                          | Reconcile schema/types with canonical paths during follow-up when needed.                                                                                 |
| Editor/Tooling | `false`  | Partial         | `projects/praxis-core/src/lib/metadata/field-selector-control-type.constants.ts`, `projects/praxis-dynamic-fields/src/lib/services/component-registry/component-registry.service.ts`              | Selector/control-type tooling linkage verified via default selector map and registry seeding; visual editor end-to-end coverage remains not-yet-verified. |

### Runtime coverage boundaries

- Ambientes suportados: browser/dev/prod; SSR/hydration appears to be component-dependent unless explicitly verified.
- Pre-condicoes: payload JSON valido, bindings de host consistentes e dependencias descritas no source_of_truth.
- Fora de cobertura confirmada: caminhos internos, experimentais ou aliases nao enumerados formalmente.

### Editor and tooling notes

- Evidencia de tooling: selector `pdx-*` mapeado em `DEFAULT_FIELD_SELECTOR_CONTROL_TYPE_MAP` e semeado no `ComponentRegistryService`; editor visual E2E permanece not-yet-verified.
- O que esta exposto no editor visual depende da cobertura real do workspace e nao deve ser inferido como suporte runtime total.
- Campos disponiveis apenas via JSON/manual devem continuar no contrato, com rotulo explicito de cobertura parcial.
- Quando houver divergencia entre editor e runtime, manter mismatch rastreavel em secao dedicada.

## Resolution and precedence model (obrigatorio)

### Merge order

1. defaults do componente
2. contrato JSON recebido
3. overrides de host/runtime
4. normalizacoes internas

### Fallback order

contrato explicito -> aliases legados (quando suportados) -> defaults internos -> comportamento seguro

### Override points

- inputs publicos do componente
- configuracao JSON de runtime
- integracoes de host (servicos/tokens/adapters)

### Runtime normalization

Alias e defaults devem convergir para paths canonicos; onde nao houver evidencia, manter not-yet-verified de forma explicita.

### Precedence rules

Em conflito entre alias legado e path canonico, priorizar path canonico e registrar janela de migracao do legado.

## Validation and error semantics (obrigatorio)

### Validation model

| Path/Rule       | Validation phase | Behavior on fail                        | Error code / warning | Notes                                                                |
| --------------- | ---------------- | --------------------------------------- | -------------------- | -------------------------------------------------------------------- |
| canonical-paths | parse/runtime    | component-defined (warn/reject/default) | not-yet-standardized | Semantica detalhada preservada na referencia tecnica por componente. |

### Invalid and unknown field handling

- Campos desconhecidos: comportamento component-defined (ignore, warn ou reject).
- Tipos invalidos: pode haver fallback, warning ou falha, conforme runtime especifico.
- Valores fora de dominio: registrar observed vs desired em Known limitations and mismatches.

### Fail-open / fail-closed behavior

| Condition                | Mode              | Runtime behavior | Consumer impact                                                              |
| ------------------------ | ----------------- | ---------------- | ---------------------------------------------------------------------------- |
| invalid-or-unknown-field | component-defined | not-yet-verified | Pode gerar warning, fallback silencioso ou rejeicao; validar por componente. |

### Runtime warnings vs hard failures

| Condition                         | Severity         | Observability                 | Consumer action                                 |
| --------------------------------- | ---------------- | ----------------------------- | ----------------------------------------------- |
| partial-or-declared-only-coverage | warning          | logs/eventos do componente    | Confirmar ligacao runtime antes de uso critico. |
| mismatch-confirmed                | error-or-warning | componente/host observability | Planejar migracao e corrigir contrato/runtime.  |

## Detailed API reference

### Preserved technical reference (normalized from previous revision)

### 1. Visao Geral e Quando Usar

`pdx-material-slider` e o slider numerico simples (valor unico) orientado por JSON.

Use quando precisar:

- entrada numerica por faixa continua/discreta;
- restricao por `min`/`max` no proprio campo;
- UX compacta para filtros e ajustes finos.

### 2. API do Componente (Inputs/Outputs)

| Propriedade        | Tipo                     | Padrao  | Obrigatorio       | Comportamento                         |
| ------------------ | ------------------------ | ------- | ----------------- | ------------------------------------- |
| `metadata`         | `MaterialSliderMetadata` | -       | Sim               | Contrato principal do slider simples. |
| `readonlyMode`     | `boolean`                | `false` | Nao               | Sobrescreve leitura no host.          |
| `disabledMode`     | `boolean`                | `false` | Nao               | Sobrescreve disabled no host.         |
| `visible`          | `boolean`                | `true`  | Nao               | Controla exibicao no host.            |
| `presentationMode` | `boolean`                | `false` | Nao               | Modo apresentacao sem edicao.         |
| `valueChange`      | `number`                 | -       | Output base input | Mudanca do valor do slider.           |

### 3. Matriz de Cobertura JSON (Completa)

#### 3.1 Campos especificos do componente

| Caminho JSON                 | Tipo                               | Status              | Comportamento em runtime                                                                                          |
| ---------------------------- | ---------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `metadata.controlType`       | `'slider'`                         | Ativo               | Define renderer de slider unico.                                                                                  |
| `metadata.min`               | `number`                           | Ativo               | Valor minimo do slider e validador `Validators.min`.                                                              |
| `metadata.max`               | `number`                           | Ativo               | Valor maximo do slider e validador `Validators.max`.                                                              |
| `metadata.step`              | `number \| null`                   | Ativo               | Incremento do thumb no slider; `null` cai no step seguro atual e fica reservado para valores restritos por marks. |
| `metadata.showTicks`         | `boolean \| 'auto'`                | Ativo               | Exibe marcas no trilho (`showTickMarks`).                                                                         |
| `metadata.color`             | `ThemePalette`                     | Ativo               | Cor Material do slider.                                                                                           |
| `metadata.discrete`          | `boolean`                          | Ativo               | Habilita o modo discreto/value label do Material Slider.                                                          |
| `metadata.displayWith`       | `(value:number)=>string`           | Extensao de runtime | Formata label visual do valor exibido.                                                                            |
| `metadata.thumbLabel`        | `boolean`                          | Ativo               | Habilita o value label quando `valueLabelDisplay` nao foi informado.                                              |
| `metadata.valueLabelDisplay` | `'off' \| 'auto' \| 'on'`          | Ativo               | Controla a exibicao declarativa do value label; `off` tem precedencia.                                            |
| `metadata.valueLabelFormat`  | `string`                           | Ativo               | Formata labels com presets declarativos como `percent`, `compact` e `storage`.                                    |
| `metadata.marks`             | `boolean \| array \| string`       | Ativo               | Habilita tick marks e, quando array/JSON, renderiza labels posicionados no trilho.                                |
| `metadata.semanticBands`     | `array \| string`                  | Ativo               | Renderiza faixas semanticas no trilho para risco, prioridade ou dominios numericos.                               |
| `metadata.distribution`      | `array \| object \| string`        | Ativo               | Renderiza histograma compacto acima do slider; quando configurado como objeto, `colorMode` (`selection`/`gradient`/`theme`) colore os bins cobertos pelo valor atual com tokens do tema ou cores declaradas. |
| `metadata.track`             | `'normal' \| 'inverted' \| 'none'` | Parcial             | Aplica classes/estilo para variacao visual do track; nao altera a semantica do valor.                             |
| `metadata.size`              | `'small' \| 'medium' \| 'large'`   | Ativo               | Ajusta densidade visual do slider.                                                                                |
| `metadata.scale`             | `string`                           | Ativo               | Aplica escala declarativa ao texto exibido (`percent`, `log`, `pow2`).                                            |
| `metadata.vertical`          | `boolean`                          | Declared-only       | Declarado na interface, sem binding dedicado no template atual.                                                   |
| `metadata.invert`            | `boolean`                          | Declared-only       | Declarado na interface, sem binding dedicado no template atual.                                                   |

#### 3.2 Campos herdados compartilhados (exaustivo)

Contrato compartilhado de input base:

- [pdx-base-input-runtime-contract.json-api.md](projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md)

Resumo de composicao deste componente:

- `Ativo`: min/max/step/showTicks/color/discrete/thumbLabel/valueLabelDisplay/valueLabelFormat/marks/semanticBands/distribution/size/scale + validacao numerica.
- `Parcial`: `track` como variacao visual.
- `Declared-only`: vertical/invert no estado atual.

### 4. Mapeamento de Comportamento

- Valor: numero simples ligado ao `FormControl`.
- Validacao: `min` e `max` adicionados no `setInputMetadata`.
- Acessibilidade: aplica nome acessivel, `aria-required`, `aria-invalid`, `aria-valuetext`, `aria-disabled` e `aria-readonly` no slider/thumb nativo.
- Erros: usa pipeline de erro/hint herdado de `SimpleBaseInputComponent`.

### 5. Exemplo Minimo (JSON + Uso)

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "score",
    "label": "Score",
    "controlType": "slider",
    "min": 0,
    "max": 10,
    "step": 1
  }
}
```

Uso: controle simples de nota de 0 a 10.

### 6. Exemplo Corporativo (JSON + Uso)

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "riskWeight",
    "label": "Peso de Risco",
    "controlType": "slider",
    "min": 0,
    "max": 100,
    "step": 5,
    "showTicks": true,
    "valueLabelDisplay": "on",
    "valueLabelFormat": "percent",
    "marks": [
      { "value": 0, "label": "Baixo", "tone": "success" },
      { "value": 50, "label": "Medio", "tone": "warning" },
      { "value": 100, "label": "Alto", "tone": "danger" }
    ],
    "semanticBands": [
      { "start": 0, "end": 40, "label": "Baixo risco", "tone": "success" },
      { "start": 40, "end": 75, "label": "Atencao", "tone": "warning" },
      { "start": 75, "end": 100, "label": "Critico", "tone": "danger" }
    ],
    "distribution": {
      "colorMode": "gradient",
      "gradientStartColor": "var(--md-sys-color-primary)",
      "gradientEndColor": "var(--md-sys-color-tertiary)",
      "bins": [4, 12, 18, 10, 6]
    },
    "color": "primary",
    "hint": "Defina o peso percentual de risco para este contrato."
  }
}
```

Uso: ajuste percentual com feedback visual por faixas discretas.

### 7. Troubleshooting e Armadilhas Comuns

1. `step: null` ainda nao restringe selecao apenas aos marks.
   Correcao: use `step` numerico enquanto o modo mark-restricted nao for implementado.

2. Valor sai da faixa esperada.
   Correcao: validar `min/max` no metadata e no backend.

3. Layout vertical nao aplica.
   Correcao: `vertical` esta declarado, mas nao implementado no renderer atual.

4. Marcacoes nao aparecem.
   Correcao: habilitar `showTicks=true` ou informar `marks`.

5. Valor textual nao formata em JSON puro.
   Correcao: preferir `valueLabelFormat`; `displayWith` exige funcao em runtime.

### 8. Cross-links

- `projects/praxis-dynamic-fields/src/lib/components/material-range-slider/pdx-material-range-slider.json-api.md`
- `projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md`

### 9. Relatorio de Validacao Estrutural

- Visao geral: PASS
- API (inputs/outputs): PASS
- Cobertura JSON completa (especifico + herdado): PASS
- Mapeamento de comportamento: PASS
- Exemplo minimo: PASS
- Exemplo corporativo: PASS
- Troubleshooting: PASS

## JSON path index (obrigatorio)

| Path                         | Type                       | Required | Default | Status  | Notes                       |
| ---------------------------- | -------------------------- | -------- | ------- | ------- | --------------------------- |
| `metadata`                   | object                     | true     | n/a     | Partial | See Detailed API reference. |
| `readonlyMode`               | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `disabledMode`               | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `visible`                    | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `presentationMode`           | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.controlType`       | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.min`               | number                     | false    | n/a     | Partial | See Detailed API reference. |
| `Validators.min`             | number                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.max`               | number                     | false    | n/a     | Partial | See Detailed API reference. |
| `Validators.max`             | number                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.step`              | number                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.showTicks`         | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.color`             | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.discrete`          | boolean                    | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.displayWith`       | unknown                    | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.valueLabelDisplay` | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.valueLabelFormat`  | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.marks`             | boolean \| array \| string | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.semanticBands`     | array \| string            | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.distribution`      | array \| object \| string  | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.track`             | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.size`              | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.scale`             | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.thumbLabel`        | string                     | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.vertical`          | unknown                    | false    | n/a     | Partial | See Detailed API reference. |
| `metadata.invert`            | unknown                    | false    | n/a     | Partial | See Detailed API reference. |

## Events reference (obrigatorio)

| Event          | Payload | Trigger       | Stability    | Notes                                   |
| -------------- | ------- | ------------- | ------------ | --------------------------------------- |
| `valueChange`  | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `focusChange`  | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `nativeBlur`   | unknown | runtime-event | Experimental | Check component/runtime implementation. |
| `nativeChange` | unknown | runtime-event | Experimental | Check component/runtime implementation. |

## Styling API (obrigatorio quando aplicavel)

| Token/Class      | Scope     | Purpose                   | Notes                                    |
| ---------------- | --------- | ------------------------- | ---------------------------------------- |
| `metadata.color` | component | Styling-related JSON path | Validate against runtime implementation. |

## Examples (obrigatorio)

| Example               | Scenario                            | Validates                                 | Notes                                                        |
| --------------------- | ----------------------------------- | ----------------------------------------- | ------------------------------------------------------------ |
| `Minimal valid`       | baseline payload                    | required contract blocks                  | Extracted from preserved technical reference when available. |
| `Common setup`        | common component usage              | standard runtime behavior                 | Validate against host integration path.                      |
| `Advanced setup`      | richer config with overrides        | precedence and normalization              | Requires runtime confirmation for edge cases.                |
| `Enterprise scenario` | governance/legacy/migration context | auditability and compatibility boundaries | Include tenant-specific constraints when applicable.         |

### Minimal valid

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "score",
    "label": "Score",
    "controlType": "slider",
    "min": 0,
    "max": 10,
    "step": 1
  },
  "readonlyMode": false
}
```

### Common setup

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "riskWeight",
    "label": "Peso de Risco",
    "controlType": "slider",
    "min": 0,
    "max": 100,
    "step": 5,
    "showTicks": true,
    "valueLabelDisplay": "on",
    "valueLabelFormat": "percent",
    "marks": [
      { "value": 0, "label": "Baixo", "tone": "success" },
      { "value": 50, "label": "Medio", "tone": "warning" },
      { "value": 100, "label": "Alto", "tone": "danger" }
    ],
    "color": "primary",
    "hint": "Defina o peso percentual de risco para este contrato.",
    "thumbLabel": true
  }
}
```

### Advanced setup

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "riskWeight",
    "label": "Peso de Risco",
    "controlType": "slider",
    "min": 5,
    "max": 100,
    "step": 5,
    "showTicks": true,
    "discrete": true,
    "displayWith": "(v) => `${v}%`",
    "color": "primary",
    "hint": "Defina o peso percentual de risco para este contrato."
  },
  "readonlyMode": false,
  "disabledMode": false
}
```

### Enterprise scenario

```json
{
  "componentId": "pdx-material-slider",
  "metadata": {
    "name": "riskWeight",
    "label": "Peso de Risco",
    "controlType": "slider",
    "min": 0,
    "max": 100,
    "step": 5,
    "showTicks": true,
    "discrete": true,
    "displayWith": "(v) => `${v}%`",
    "color": "primary",
    "hint": "Defina o peso percentual de risco para este contrato."
  },
  "presentationMode": true,
  "visible": true
}
```

## Compatibility and migration notes (recomendado)

| Concern                                     | Affected versions | Migration action                                 | Deadline | Notes                                                 |
| ------------------------------------------- | ----------------- | ------------------------------------------------ | -------- | ----------------------------------------------------- |
| No legacy path detected in current revision | n/a               | No migration action required for canonical paths | n/a      | Re-evaluate if backward-compat aliases are introduced |

## Known limitations and mismatches (recomendado)

| Path/Behavior             | Observed behavior (runtime)                                                                                                        | Desired behavior                                      | Impact | Tracking issue | Target fix                |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | ------ | -------------- | ------------------------- |
| Canonical contract parity | No confirmed mismatch in this revision; runtime linkage verified for core flows (2026-03-06), with editor/tooling coverage pending | Keep runtime/schema/editor alignment evidence updated | Low    | n/a            | Monitor in periodic audit |

## Source references (obrigatorio)

| Source type     | Path/URL                                                                                       | Why it is source of truth                          | Last verified (YYYY-MM-DD) | Notes         |
| --------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------- | -------------------------- | ------------- |
| schema-metadata | projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.metadata.ts  | Primary source of truth for contract and behavior. | 2026-03-06                 | verified-path |
| runtime-code    | projects/praxis-dynamic-fields/src/lib/components/material-slider/material-slider.component.ts | Primary source of truth for contract and behavior. | 2026-03-06                 | verified-path |
| runtime-code    | projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts                     | Primary source of truth for contract and behavior. | 2026-03-06                 | verified-path |
| schema-types    | projects/praxis-core/src/lib/models/material-field-metadata.interface.ts                       | Primary source of truth for contract and behavior. | 2026-03-06                 | verified-path |
