npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@policiarcc/rccsystem-login-button

v1.2.0

Published

Botão oficial e acessível para Login com o RCCSystem.

Readme

RCCSystem Login Button

Componente visual oficial para iniciar o Login com RCCSystem. Ele preserva a identidade do RCCSystem em React, Next.js, Vue, Nuxt, Angular, Svelte, Astro, HTML estático e qualquer stack que renderize HTML e CSS.

Documentação completa · Componente no Figma · Repositório

O que este pacote faz

  • Entrega as variantes oficiais default, light e dark.
  • Embute a Rajdhani Bold oficial no CSS, sem pedir Google Fonts ou configuração de fonte ao parceiro.
  • Usa 18px, ícone de 30px e área de clique confortável por padrão; cada medida pode ser ajustada sem alterar a identidade visual.
  • Mantém área de clique, foco de teclado, contraste e movimento reduzido.
  • Funciona como link de navegação, que é a semântica correta para iniciar login.
  • Não conhece, recebe ou armazena API Key, client_secret, callback, authorization code ou tokens.

O seu aplicativo continua responsável pelo OIDC. Use como href a rota de início de login do seu próprio site, que gera state, nonce e PKCE antes de redirecionar ao RCCSystem.

Instalação

npm install @policiarcc/rccsystem-login-button

Com pnpm:

pnpm add @policiarcc/rccsystem-login-button

Com Yarn:

yarn add @policiarcc/rccsystem-login-button

React, Next.js e Remix

Importe o CSS uma vez no layout global ou na entrada do app.

import '@policiarcc/rccsystem-login-button/styles.css';
import { RCCSystemLoginButton } from '@policiarcc/rccsystem-login-button/react';

export function LoginPage() {
  return <RCCSystemLoginButton href="/api/auth/login" variant="default" />;
}

O componente aceita os atributos normais de um link React, como id, aria-describedby e onClick, além de:

| Prop | Tipo | Padrão | Uso | | --- | --- | --- | --- | | href | string | obrigatório | Rota local que inicia o OIDC. | | variant | default \| light \| dark | default | Variante visual oficial. | | size | default \| compact | default | Versão para cabeçalhos. | | fullWidth | boolean | false | Ocupa toda a largura do contêiner. | | fontSize | number \| string | 18 | Tamanho da fonte; números são convertidos para px. | | logoSize | number \| string | 30 | Tamanho do ícone; números são convertidos para px. | | padding | number \| string | 12px 18px | Espaçamento interno; use string para valores vertical e horizontal. |

<RCCSystemLoginButton
  href="/api/auth/login"
  variant="light"
  size="compact"
  fontSize={16}
  logoSize={26}
  padding="10px 16px"
  aria-describedby="login-explanation"
/>

Vue 3 e Nuxt

<script setup lang="ts">
import '@policiarcc/rccsystem-login-button/styles.css';
import { RCCSystemLoginButton } from '@policiarcc/rccsystem-login-button/vue';
</script>

<template>
  <RCCSystemLoginButton href="/api/auth/login" variant="dark" />
</template>

As props são as mesmas da versão React: href, variant, size, fullWidth, fontSize, logoSize e padding. Em Nuxt, faça a importação do CSS em nuxt.config.ts ou no layout global.

JavaScript puro

import '@policiarcc/rccsystem-login-button/styles.css';
import { createRCCSystemLoginButton } from '@policiarcc/rccsystem-login-button/vanilla';

document.querySelector('#login-area')?.append(
  createRCCSystemLoginButton({
    href: '/api/auth/login',
    fullWidth: true,
    fontSize: 20,
    logoSize: 34,
    padding: '14px 22px',
    variant: 'default',
  }),
);

HTML, Svelte, Astro, Angular, Laravel e outros

Carregue o CSS e use o markup. O componente não exige JavaScript em runtime.

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@policiarcc/[email protected]/dist/styles.css"
/>

<a class="rccsystem-login-button rccsystem-login-button--light" href="/api/auth/login">
  <span aria-hidden="true" class="rccsystem-login-button__mark"></span>
  <span class="rccsystem-login-button__label">Entre com o RCCSystem</span>
</a>

Em HTML puro, ajuste somente as variáveis de escala permitidas:

<a
  class="rccsystem-login-button rccsystem-login-button--default"
  href="/api/auth/login"
  style="--rccsystem-login-button-font-size: 20px; --rccsystem-login-button-mark-size: 34px; --rccsystem-login-button-padding: 14px 22px;"
>
  <span aria-hidden="true" class="rccsystem-login-button__mark"></span>
  <span class="rccsystem-login-button__label">Entre com o RCCSystem</span>
</a>

Exemplo Svelte:

<script>
  import '@policiarcc/rccsystem-login-button/styles.css';
</script>

<a class="rccsystem-login-button rccsystem-login-button--dark" href="/api/auth/login">
  <span aria-hidden="true" class="rccsystem-login-button__mark"></span>
  <span class="rccsystem-login-button__label">Entre com o RCCSystem</span>
</a>

Exemplo Angular:

<a class="rccsystem-login-button rccsystem-login-button--default" href="/api/auth/login">
  <span aria-hidden="true" class="rccsystem-login-button__mark"></span>
  <span class="rccsystem-login-button__label">Entre com o RCCSystem</span>
</a>

Importe o CSS globalmente em angular.json, styles.scss, no layout Astro ou no ponto de entrada do seu framework.

Variantes e personalização permitida

| Variante | Quando usar | | --- | --- | | default | Fundo amarelo. É a variante principal e recomendada na maioria das telas. | | light | Fundo branco, para superfícies escuras ou blocos institucionais claros. | | dark | Fundo escuro, para cabeçalhos ou superfícies claras que precisam de contraste. |

O pacote oferece size="compact" e fullWidth para adaptação de layout. Posicione o componente pelo contêiner da página, mas não troque logo, texto, cores ou estados com CSS próprio: as três variantes já são a personalização visual suportada.

Acessibilidade

  • Use o componente como link; não troque por div clicável.
  • O texto visível é mantido para leitores de tela e o ícone é decorativo.
  • O foco de teclado é sempre visível.
  • A animação é desativada quando a pessoa usa prefers-reduced-motion.
  • Não abra o fluxo em outra aba. O callback deve voltar para a mesma sessão e origem.

Segurança OIDC

Pessoa -> botão -> /api/auth/login do parceiro -> RCCSystem -> callback do parceiro

O botão deve apontar para /api/auth/login ou rota equivalente do parceiro. Não monte manualmente a URL de /oidc/authorize em um componente visual e nunca inclua client_secret, API Key, token ou redirect_uri no HTML, JavaScript público ou atributo do botão.

Leia a documentação OIDC antes de integrar a autenticação.

Versões

Use uma versão fixa no CDN. Mudanças compatíveis entram na mesma versão principal; qualquer quebra de HTML, classes ou API vira uma versão principal nova. Consulte as releases do repositório antes de atualizar.