Saltar para o conteúdo
Blume
Português
Esc
navegarabrir⌘Jpré-visualizar
Nesta página

Scalar

Incorpore a interface autocontida de referência de API do Scalar em uma única rota, repassando diretamente qualquer opção do Scalar.

O renderizador próprio do Blume é o que openapi(), asyncapi() e graphql() oferecem: uma página de verdade para cada operação, que aparece na sua barra lateral, na busca e no llms.txt, com um playground Try it. Se você preferir incorporar a interface autocontida de referência de API do Scalar, liste um adaptador scalar() de blume/reference. Essa interface traz barra lateral, busca, tema e cliente de requisições próprios em uma única rota. O adaptador recebe um documento OpenAPI ou AsyncAPI, e o Scalar detecta qual dos dois é:

import { defineConfig } from "blume";
import { scalar } from "blume/reference";

export default defineConfig({
  reference: [
    scalar({
      spec: "./openapi.yaml",
      theme: "purple", // a Scalar theme name
    }),
  ],
});

Isso monta o embed em /reference. spec pode ser uma URL http(s) ou o caminho de um arquivo local. Uma URL é carregada pelo navegador. Um arquivo local é lido no build e embutido na página, para que ela continue autocontida. route muda a rota do embed. sources publica vários documentos, cada um na sua própria rota, seguindo as mesmas regras de label/route dos adaptadores nativos:

reference: [
  scalar({
    route: "/api",
    sources: [
      { label: "Public API", spec: "./public.json" },   // → /api/public-api
      { label: "Legacy API", route: "/legacy", spec: "./legacy.json", noindex: true },
    ],
  }),
],

Um embed do Scalar e páginas nativas podem ficar lado a lado na lista, desde que tenham rotas diferentes. Você pode, por exemplo, usar um adaptador openapi() para a API atual e um adaptador scalar() para uma API legada. Assim como qualquer referência, o embed não cria sozinho uma aba no cabeçalho. Para exibi-lo, aponte uma aba de navegação para a rota dele.

O que o embed não faz

Uma referência renderizada pelo Scalar é uma página autocontida, na sua própria rota. Ela não entra na barra lateral, na busca nem no llms.txt do Blume. Por isso, dos controles por fonte dos adaptadores nativos, só o noindex vale aqui: ele adiciona metadados de noindex para crawlers e deixa a página fora do sitemap. Não existe codeSamples, expandSchemas nem playground para configurar. O Scalar tem o próprio cliente de requisições, que chama a sua API de destino diretamente do navegador. A rota playground.proxy do Blume não está disponível aqui, então a API precisa aceitar requisições cross-origin vindas do site da documentação (Access-Control-Allow-Origin).

O embed acompanha o seletor de modo claro/escuro do Blume. Ao ser montado, ele assume o tema da página e passa a mudar junto com ela, por isso o seletor de tema do próprio Scalar fica oculto. Para devolver o controle do modo de cor ao Scalar, passe forceDarkModeState ou darkMode. Sem um theme, o Blume aplica a cor de destaque e o raio de borda dele por cima do tema padrão do Scalar. Um theme nomeado substitui isso. O adaptador declara @scalar/astro como dependência de runtime, então o projeto gerado só inclui esse pacote quando há um adaptador scalar() configurado.

Passando opções do Scalar

theme é a opção que a maioria das pessoas procura, mas o Scalar aceita muitas outras. Além de spec, sources, route e theme, qualquer chave que você passar para scalar() é repassada sem alterações como configuração do Scalar para a referência incorporada. O Blume não filtra as chaves, então tudo o que o Scalar aceita é repassado. Só valem valores JSON, porque a configuração é embutida na página gerada:

reference: [
  scalar({
    spec: "./openapi.yaml",
    localization: { locale: "es" },   // translate Scalar's own UI
    agent: { disabled: true },         // disable the Scalar Agent
    hideTestRequestButton: true,
    orderSchemaPropertiesBy: "preserve",
  }),
],

O i18n do Blume traduz a interface da documentação, mas o Scalar tem um sistema de localização separado. Para traduzir também a referência incorporada, defina localization.locale. As opções repassadas têm prioridade sobre a configuração que o Blume gera, então o que você definir aqui substitui os padrões do Blume. Isso inclui customCss e o content/url da spec. A única chave que não pode ser repassada é o sources multidocumento do próprio Scalar. Esse nome é usado pelo Blume, e cada fonte do Blume vira uma página separada.

Documentos AsyncAPI

Se você apontar spec para um documento AsyncAPI, o embed renderiza canais, operações, mensagens e uma seção Models. O Scalar não tem um playground próprio para AsyncAPI. Por isso, ao escolher o embed em vez de asyncapi(), você abre mão do compositor de eventos do Blume. Schemas GraphQL não têm embed do Scalar: a referência graphql() é sempre renderizada nativamente.

Última atualização a 24 de setembro de 2026

Esta página foi útil?