<!-- markdownlint-disable MD033 -->

<h1 align="center">NG Essentials</h1>

<div align="center">
  <img src="./projects/demo/src/assets/images/nge.svg" alt="NGE logo" width="120px" />
</div>

<div align="center">

A collection of libraries for [Angular](https://angular.dev) developers.

[![Tests](https://github.com/cisstech/nge/actions/workflows/ci.yml/badge.svg)](https://github.com/cisstech/nge/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/cisstech/nge/branch/main/graph/badge.svg)](https://codecov.io/gh/cisstech/nge)
[![codefactor](https://www.codefactor.io/repository/github/cisstech/nge/badge/main)](https://www.codefactor.io/repository/github/cisstech/nge/overview/main)
[![GitHub Tags](https://img.shields.io/github/tag/cisstech/nge.svg)](https://github.com/cisstech/nge/tags)
[![npm package](https://img.shields.io/npm/v/@cisstech/nge.svg)](https://www.npmjs.org/package/@cisstech/nge)
[![NPM downloads](http://img.shields.io/npm/dm/@cisstech/nge.svg)](https://npmjs.org/package/@cisstech/nge)
[![licence](https://img.shields.io/github/license/cisstech/nge)](https://github.com/cisstech/nge/blob/main/LICENSE)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)

</div>

## Overview

`@cisstech/nge` is a set of focused building blocks for Angular apps: a documentation
site engine, a Markdown renderer, a Monaco editor integration, and a few UI and utility
packages. Everything ships from a single package split into secondary entry points, so
you only bundle what you import.

## Libraries

| Entry point | What it does |
| --- | --- |
| [`@cisstech/nge/doc`](https://cisstech.github.io/nge/docs/nge-doc/) | Build a documentation site from a route config, Markdown files or live Angular components. |
| [`@cisstech/nge/markdown`](https://cisstech.github.io/nge/docs/nge-markdown/) | Markdown rendering built on [Marked](https://github.com/markedjs/marked) v11, with admonitions, tabs, KaTeX and syntax highlighting. |
| [`@cisstech/nge/monaco`](https://cisstech.github.io/nge/docs/nge-monaco/) | [Monaco editor](https://microsoft.github.io/monaco-editor/) integration: editor, diff editor and read-only viewer. |
| [`@cisstech/nge/ui`](https://cisstech.github.io/nge/docs/nge-ui/getting-started) | Standalone UI building blocks: a data tree, a filterable list and a multi-source icon. |
| [Utilities](https://cisstech.github.io/nge/docs/utilities/getting-started) | Root-provided services, standalone pipes and framework-free helper functions (`nge/services`, `nge/pipes`, `nge/utils`). |

## Compatibility

The major version of `@cisstech/nge` tracks the Angular major it targets. Pick the line
that matches your Angular version.

| @cisstech/nge | Angular | Node |
| --- | --- | --- |
| 22.x | 22 | ^22.22.3, ^24.15.0 or >=26 |
| 18.x | 18 | ^18.19, ^20.11 or >=22 |
| 17.x | 17 | ^18.13 or >=20 |
| 16.x | 16 | ^16.14 or >=18 |
| 15.x | 15 | ^14.20, ^16.13 or >=18 |

## Installation

```bash
npm install @cisstech/nge
```

`@angular/common`, `@angular/core` and `@angular/cdk` are required
peer dependencies. `marked` (for `nge/markdown`), `monaco-editor` (for `nge/monaco`) and
`ngx-pipes` are optional peers: install them only when you use the matching entry point.

## Documentation

Guides and API for every library are hosted at
[cisstech.github.io/nge](https://cisstech.github.io/nge/).

## Development

```bash
git clone https://github.com/cisstech/nge
cd nge
npm install
npm run start
```

The demo opens at <http://localhost:4200>. The repository pins its Node version in
`.nvmrc` (run `nvm use`). Useful scripts:

- `npm run build` builds the library, then the demo.
- `npm test` runs the unit tests.
- `npm run lint` runs ESLint.

## Contributing

Contributions are welcome. Read [CONTRIBUTING.md](https://github.com/cisstech/nge/blob/main/CONTRIBUTING.md)
first, then open a [pull request](https://github.com/cisstech/nge/pulls) or an
[issue](https://github.com/cisstech/nge/issues). Before submitting, make sure your code
matches the existing style and that the tests and linter pass.

## Support

This library is free to use. As its owner and main maintainer, I put a lot of time into
it, aside from my job and my family, to answer questions, fix issues and add features. If
it saved you or your team some time, a star helps support its maintenance and future work.

## License

MIT © [Mamadou Cisse](https://github.com/cisstech)
