# Western ✨ Signs

Simple interface for [western astrological](https://en.wikipedia.org/wiki/Western_astrology) signs.

[![NPM Version](https://img.shields.io/npm/v/western-signs)](https://www.npmjs.com/package/western-signs)
[![GitHub License](https://img.shields.io/github/license/marcmarine/western-signs)](LICENSE)
[![View Changelog](https://img.shields.io/badge/view-CHANGELOG.md-red.svg)](https://github.com/marcmarine/western-signs/releases)
[![TypeDoc](https://img.shields.io/badge/view-docs-yellow.svg)](https://marcmarine.github.io/western-signs)
![NPM Unpacked Size](https://img.shields.io/npm/unpacked-size/western-signs)

The **Western Signs** library provides detailed information about each astrological sign, including its `name`, `element`, `modality`, `rulingPlanet` and `glyph`, among other things. Additionally, you can specify the language for translations.

<details close>
<summary>WordArt</summary>

![West Art](https://github.com/marcmarine/western-signs/raw/main/WestArt.gif)

</details>

## Installation

To install dependencies:

```bash
npm install western-signs
```

## Usage

To use the `getSignByName` function, import it along with the `SIGNS` constant from the `western-signs` package:

```js
import { getSignByName, SIGNS } from 'western-signs'
```

Call the function with the desired astrological sign and optionally specify a language code. If no language code is provided, it defaults to English.

```js
const data = getSignByName(SIGNS.TAURUS)
```

It should returns an object with the following properties:

```js
{
  bodyPart: 'Throat',
  character: 'Bull',
  element: 'Earth',
  endDate: 2020-05-20T22:00:00.000Z,
  glyph: '♉',
  modality: 'Fixed',
  name: 'Taurus',
  number: 2,
  pole: 'Negative',
  rulingPlanet: 'Venus',
  season: 'Spring',
  startDate: 2020-04-20T22:00:00.000Z
}
```

### Symbols

The `getSymbol` function allows you to retrieve SVG representations of astrological symbols, with options to customize their appearance.

```js
import { getSymbol, SIGNS } from 'western-signs'

const symbol = getSymbol(SIGNS.TAURUS, {
  width: 16,
  height: 16,
  stroke: 'currentColor',
  strokeWidth: 1,
})

console.log(symbol.toString())
// Outputs: An SVG string with customized attributes

console.log(symbol.toDataURL())
// Outputs: A Data URL representation of the SVG
```

Use method chaining to modify the attributes of the symbol for a more fluent coding style.

```js
const chainedSymbol = getSymbol('taurus')
  .setWidth(16)
  .setHeight(16)
  .setStroke('currentColor')
  .setStrokeWidth(1)

console.log(chainedSymbol.toString())
// Outputs: The SVG string with updated stroke attributes
```


### Translations

You can easily translate aspects and other astrology-related terms using the `t` function provided by the library. The `t` function takes template strings and values to be translated based on the current language setting.

To translate an aspect into the current language:

```js
import { ASPECTS, i18n } from 'western-signs'

const aspect = i18n.t`${ASPECTS.CONJUNCTION}`
console.log(aspect)
// Output: Conjunction
```

To change the language, use the `setLanguage` function:

```js
i18n.setLanguage('es')
const aspectInSpanish = i18n.t`${ASPECTS.CONJUNCTION}`
console.log(aspectInSpanish)
// Output: Conjunción
```


## API Reference

### Functions

- [getHouses](https://marcmarine.github.io/western-signs/functions/getHouses)
- [getPlanet](https://marcmarine.github.io/western-signs/functions/getPlanet)
- [getPlanets](https://marcmarine.github.io/western-signs/functions/getPlanets)
- [getSignByDate](https://marcmarine.github.io/western-signs/functions/getSignByDate)
- [getSignByName](https://marcmarine.github.io/western-signs/functions/getSignByName)
- [getSigns](https://marcmarine.github.io/western-signs/functions/getSigns)
- [getSymbol](https://marcmarine.github.io/western-signs/functions/getSymbol)

### Interfaces

- [House](https://marcmarine.github.io/western-signs/interfaces/House)
- [Planet](https://marcmarine.github.io/western-signs/interfaces/Planet)
- [Sign](https://marcmarine.github.io/western-signs/interfaces/Sign)

For more detailed API information, please check out the [documentation](https://marcmarine.github.io/western-signs).

## License

MIT License © 2024 [Marc Mariné](https://github.com/marcmarine)
