open-index/open-npm huggingface dataset:
npm package: @genexus/unanimo
Description: A design system for GeneXus generated applications.
Latest version: 0.25.2

# Unanimo Design System

Unanimo Design System is a solution oriented to mission-critical business applications and the back-office generated by GeneXus.

## Install

```bash
npm i @genexus/unanimo
```

## Using this design system

- Import the Unanimo reference into a SCSS file and use the provided mixins:

  ```scss
  @import "<path to node_modules>/@genexus/unanimo/dist/unanimo.scss";

  @include unanimo(optional parameters...);
  ```

- Copy the assets with a copy task for your development and production build.

  - In a StencilJS project, it will be something like this:

    ```ts
    // stencil.config.ts
    import { Config } from "@stencil/core";

    export const config: Config = {
      namespace: "your-name-space",
      outputTargets: [
        {
          type: "dist",
          copy: [
            {
              src: "../node_modules/@genexus/unanimo/dist/assets",
              dest: "assets"
            }
          ]
        },
        {
          type: "www",
          serviceWorker: null,
          copy: [
            {
              src: "../node_modules/@genexus/unanimo/dist/assets",
              dest: "assets"
            }
          ]
        }
      ]
    };
    ```

  - In a Vite project, it will be something like this:

    ```ts
    // vite.config.ts
    import { defineConfig } from "vite";
    import { viteStaticCopy } from "vite-plugin-static-copy";

    export default defineConfig({
      plugins: [
        viteStaticCopy({
          targets: [
            {
              src: "node_modules/@genexus/unanimo/dist/assets",
              dest: "./"
            }
          ]
        })
      ]
    });
    ```
npm package: @genexus/vite-plugin-nova
Description: Vite plugin for Nova Design System
Latest version: 0.2.0

# @genexus/vite-plugin-nova

Vite plugin for the [Nova Design System](https://www.npmjs.com/package/@genexus/nova). Handles CSS bundle hashing, asset serving in dev mode, and distribution builds automatically.

## Installation

```bash
npm install @genexus/vite-plugin-nova @genexus/nova-build --save-dev
```

## Usage

```typescript
// vite.config.ts
import { defineConfig } from "vite";
import { nova } from "@genexus/vite-plugin-nova";

export default defineConfig({
  plugins: [nova()]
});
```

## What it does

| Hook                 | Action                                                                                     |
| -------------------- | ------------------------------------------------------------------------------------------ |
| `configureServer`    | Creates a middleware to serve Nova CSS, fonts, and icons from a temporal build folder       |
| `transformIndexHtml` | Inlines critical CSS, preloads bundles, and injects `setBundleMapping()` for hash resolution |
| `writeBundle`        | Copies processed CSS + assets to the Vite output directory                                  |

## Options

```typescript
nova({
  // Customize where assets are served/placed in the distribution build
  assetsPaths: {
    cssPath: "/assets/css/",     // default
    fontsPath: "/assets/fonts/", // default
    iconsPath: "/assets/icons/"  // default
  },

  // Disable hashing for specific bundles (not recommended)
  avoidHash: {
    "base/base": false // default: all bundles are hashed
  },

  // CSS bundles to inline as <style> tags in <head>
  // Default: { "base/base": true, "resets/box-sizing": true }
  cssInline: {
    "base/base": true,
    "resets/box-sizing": true
  },

  // CSS bundles to preload as <link> tags
  // Default: { "base/icons": { position: "body-end", fetchPriority: "low" } }
  cssPreload: {
    "base/icons": {
      position: "body-end",     // "head" | "body-start" | "body-end"
      fetchPriority: "low"      // "auto" | "high" | "low"
    }
  }
});
```

## How CSS hashing works

1. The plugin reads all CSS bundles from `@genexus/nova/dist/bundles/css/`
2. Replaces relative asset paths (`./assets/fonts/`, `./assets/icons/`) with configured absolute paths
3. Generates an MD5 content hash (16 characters) for each CSS file
4. Writes hashed files to `node_modules/.genexus/nova/assets/css/`
5. Generates a `bundle-to-hash-mappings.ts` file for runtime bundle resolution
6. Injects the mapping into the HTML via `setBundleMapping()` so `getBundles()` resolves hashed filenames

## Requirements

- `@genexus/nova` must be installed as a dependency
- `@genexus/nova-build` must be installed (peer dependency)

## License

Apache-2.0