# Currency

![Status](https://img.shields.io/badge/status-stable-brightgreen)

Serviço para obter o símbolo de uma moeda formatado de acordo com o locale ativo da aplicação, utilizando a API nativa `Intl.NumberFormat` do browser.

## Quando usar

- Exibir o símbolo da moeda dinamicamente ao lado de valores monetários
- Construir campos de entrada com prefixo de moeda que se adapta ao locale do usuário
- Obter o símbolo compacto (ex: `R$`, `$`, `€`) para exibição em interfaces

## Quando não usar

- Formatação completa de valores monetários — use o `CurrencyPipe` do Angular ou o pipe `Numeric` da biblioteca
- Validação de entradas monetárias — use validators de formulário

## Instalação

```typescript
import { CurrencyService } from '@seniorsistemas/angular-components/currency';

@Component({ standalone: true })
export class MeuComponent {
  private readonly currencyService = inject(CurrencyService);
}
```

O serviço é `providedIn: 'root'` e não requer módulo adicional. Requer que `LocaleModule.forRoot()` esteja configurado na aplicação.

## Uso básico

```typescript
const symbol = this.currencyService.getCurrencySymbol({ currency: 'BRL' }); // 'R$'
const symbol = this.currencyService.getCurrencySymbol({ currency: 'USD' }); // 'US$' ou '$'
const symbol = this.currencyService.getCurrencySymbol({ currency: 'EUR' }); // '€'
```

## API

### CurrencyService

| Método | Parâmetros | Retorno | Descrição |
|--------|-----------|---------|-----------|
| `getCurrencySymbol` | `{ currency: Currency }` | `string` | Retorna o símbolo da moeda formatado para o locale ativo |

### Tipos

```typescript
// Currency é um union type de todos os códigos ISO 4217 suportados
type Currency = 'BRL' | 'USD' | 'EUR' | 'GBP' | 'JPY' | 'ARS' | 'CLP' | 'MXN' | /* ... */;
```

## Exemplos

### Exibindo símbolo em um campo de entrada

```typescript
@Component({
  template: `
    <div class="input-group">
      <span class="prefix">{{ currencySymbol }}</span>
      <input type="number" formControlName="valor" />
    </div>
  `
})
export class ValorComponent {
  private readonly currencyService = inject(CurrencyService);
  readonly currencySymbol = this.currencyService.getCurrencySymbol({ currency: 'BRL' });
}
```

### Múltiplas moedas

```typescript
const moedas: Currency[] = ['BRL', 'USD', 'EUR', 'GBP', 'JPY'];
const simbolos = moedas.map(code => ({
  code,
  symbol: this.currencyService.getCurrencySymbol({ currency: code }),
}));
// [{ code: 'BRL', symbol: 'R$' }, { code: 'USD', symbol: 'US$' }, ...]
```

## Acessibilidade

- O símbolo retornado é uma string de texto simples, compatível com leitores de tela quando usado em elementos HTML com contexto adequado

## Componentes relacionados

- [`Locale`](../locale/README.md) — serviço de localização que define o locale usado na formatação
