npm package: @medway-ui/core
Description: Biblioteca de componentes e assets para o sistema Medway
Author: Alekcarvalho
Latest version: 1.16.13

<div align="center">
  <h1>Medway UI</h1>
</div>

<br>
<br>

## Funcionalidades

- ⚡️ [NextJS](https://nextjs.org/) - Desenvolvido com NextJS

- 🔮 [Nextra](https://nextra.site/) - Framework para documentação do design system

- 🦾 [Typescript](https://docs.expo.dev/) - Desenvolvido com o poder do Typescript

- 💻 [ShadCN](https://ui.shadcn.com/) - Framework UI para desenvolvimento dos componentes. Baseado no RadixUI

- 🎨 [Tailwind](https://tailwindui.com/) - Framework CSS que utiliza classes utilitárias através do Atomic CSS - Tailwind para React Native

- 🐶 [Husky](https://github.com/typicode/husky) - Padronização e controle de commits

- 🚀 [Eslint + Prettier](https://eslint.org/) - Padronização do código e lint de errors
<br>

> O projeto requer Node >= 16.8.0

> Recomenda-se o uso do Yarn para o gerenciamento dos pacotes

<br>

## Requisitos

### Components

Todos os componentes que serão utilizados pela lib, deverão ser criados obrigatoriamente no seguinte diretório e na seguinte nomenclatura `(.src/components/Nome.tsx)`

### Tailwind

Utilizamos o Tailwind para criação da nossa UI. Ele se utiliza do classes utilitárias através do Atomic CSS. Os arquivos de configuração dos tokens estão dentro da pasta `(.src/assets/css/tokens.css)`

### Assets

Aqui deverá conter todos os assets que deverão ser usados na utilização da lib. Você encontrará na seguinte pasta `(.src/assets/)`

### Gitflow

Utilizamos o padrão de gitflow do mercado. Temos três branchs principais: `production` (produção), `homolog` (homologação) e `development` (desenvolvimento). Quando estiverem desenvolvendo uma nova feature, se utilizar da seguinte nomenclatura: `feat/nome-da-feature`. Após a finalização deve-se criar a PR e fazer o merge com `development`. Por regra, as PRs somente podem ser mergeados após o review e aceite de pelo menos um integrante da equipe.

### Commits

Nos commits deverá ser utilizado a convenção dos [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).

### Husky

Ferramente utilizada para padronizar e controlar os commits que são feitos dentro do projeto. Quando for realizar o commit lembre-se de utilizar os `commits semânticos` e de não ter nenhum erro de lint em seu código, caso contrário o husky bloqueará seu commit até que você corrija esses erros e caso a mensagem no commit não seja semântica o husky também bloqueará seu commit.

### ESLint/Prettier

Para padronizar nosso código utilizamos o Eslint e o Prettier dentro de nossos projetos. É importante caso use o Vscode de utilizar as extensões: `esbenp.prettier-vscode`, `dbaeumer.vscode-eslint`

<br>

## Utilização

### Configuração

Rode o comando para instalar todas as dependências do projeto

```bash
yarn install
```

Rode o comando para instalar o husky

```bash
yarn prepare
```

Rode o comando para dar permissão aos scripts do husky

```bash
chmod ug+x .husky/*
```

### Desenvolvimento

Rode o comando para iniciar o ambiente de desenvolvimento

```bash
yarn dev
```

> OBS: Basta acessar o http://localhost:3000/ para visualizar a aplicação em seu browser favorito

### Build

Para fazer o processo de build

```bash
yarn build
```

Para rodar a aplicação em modo de produção

```bash
yarn start
```

Para lintar possíveis erros da aplicação

```bash
yarn lint
```