open-index/open-npm huggingface dataset:
npm package: @grzybowskipiotr/design-tokens
Description: exercise for Opanuj frontend course - design tokens
Latest version: 0.2.0

# @grzybowskipiotr/design-tokens

Design Tokens are the smallest pieces of the design system — such as colors, typography, spacing, and more. They are used in place of hard-coded values to maintain a scalable and consistent visual system for UI development.

## Installation

```bash
npm install @grzybowskipiotr/design-tokens
```

## Usage

We provide tokens in three formats: CSS, JS and TS. You can import them in your project as needed.

### CSS

To use the CSS Custom Properties from our package, add the following import to the main CSS file or to the `<head>` of your HTML page:

```css
@import "path_to_node_modules/@grzybowskipiotr/design-tokens/dist/css/tokens.css";
```

Or in JavaScript, if you use a bundler that supports CSS imports:

```js
import "@grzybowskipiotr/design-tokens/dist/css/tokens.css";
```

### JS/TS

```js
import {ButtonTextColor} from "@grzybowskipiotr/design-tokens";
```
npm package: @gs-grid/gs-grid
Description: Framework-agnostic Web Component data grid with sorting, search, export, virtualization, and row selection
Author: velankiganesh@gmail.com
Latest version: 0.1.3

# gs-grid [![gs-grid-ci](https://github.com/ganesh-vellanki/gs-grid/actions/workflows/gs-grid-ci.yml/badge.svg)](https://github.com/ganesh-vellanki/gs-grid/actions/workflows/gs-grid-ci.yml) [![gs-grid-cid](https://github.com/ganesh-vellanki/gs-grid/actions/workflows/gs-grid-cid.yml/badge.svg)](https://github.com/ganesh-vellanki/gs-grid/actions/workflows/gs-grid-cid.yml) 

### __A new grid for evolving web.__
#### _Built with web components & it's framework agnostic._

### [Demo & Docs](https://ganesh-vellanki.github.io/gs-grid/)

### [Package](https://www.npmjs.com/package/@gs-grid/gs-grid)

## Current Features

1. Framework-agnostic Web Component usage
2. Configurable columns with nested field access
3. Built-in column sorting
4. Global search across configured fields
5. CSV and Excel export helpers
6. Virtualized row rendering
7. Smart custom scrollbar behavior
8. Optional row selection with runtime APIs

## Install

```bash
yarn add @gs-grid/gs-grid
```

## Basic Usage

```ts
import '@gs-grid/gs-grid';
import { GridConfig, GridEvents } from '@gs-grid/gs-grid';

const gridConfig = new GridConfig();
gridConfig.rowHeight = 32;
gridConfig.enableRowSelection = true;
gridConfig.columnDefs = [
	{ field: 'name', headerName: 'Name', enableSort: true, width: 180 },
	{ field: 'email', headerName: 'Email', enableSort: true, width: '30%' },
	{ field: 'company.name', headerName: 'Company', enableSort: true, width: 180 }
];
gridConfig.data = data;

const gridEl = document.querySelector('gs-grid');
const instanceId = gridEl?.getAttribute('instance-id');

if (gridEl && instanceId) {
	GridEvents.setupGridConfig(instanceId, gridConfig);
}
```

```html
<gs-grid></gs-grid>
```

## Browser Compatibility

| Browser | Minimum Version |
|---------|----------------|
| ![Chrome](https://img.shields.io/badge/Chrome-67+-4285F4?logo=google-chrome&logoColor=white) | 67+ |
| ![Edge](https://img.shields.io/badge/Edge-79+-0078D4?logo=microsoft-edge&logoColor=white) | 79+ |
| ![Firefox](https://img.shields.io/badge/Firefox-63+-FF7139?logo=firefox-browser&logoColor=white) | 63+ |
| ![Safari](https://img.shields.io/badge/Safari-10.1+-006CFF?logo=safari&logoColor=white) | 10.1+ |
| ![Opera](https://img.shields.io/badge/Opera-54+-FF1B2D?logo=opera&logoColor=white) | 54+ |

> Requires native [Web Components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) support (Custom Elements v1 + Shadow DOM v1).

## Upcoming Features

1. Pinning
2. Grouping
3. Column resizing
4. Column dynamic re-order

#### Steps to run locally: 

* Install packages locally with: `yarn install`

* Run demo & docs locally with: `yarn start`

* If necessary, clean locally generated dist & docs with: `yarn clean`
npm package: @gs-nodemod/banana-installer
Description: easy install gamebanana mods
Author: TheEVolk
Latest version: 0.1.0

# @gs-nodemod/banana-installer
> You may encounter errors, because many mods are packed into archives without any directory structure.  If you meet one, create an issue, but I can fix it in my free time. You can throw your fix in PR, I will accept it. So far, the cards are mostly working.

## Sample use
init your own constructor, with implemented unpackers
```typescript
import fs from 'fs';
import Unrar from 'unrar';
import { finished } from 'stream/promises';
import GsNodemodBananaInstaller from '@gs-nodemod/banana-installer';
import path from 'path';
import unzipper from 'unzipper';

export default class BananaInstaller extends GsNodemodBananaInstaller {
  public constructor() {
    super({
      targetFolder: path.resolve(nodemod.cwd, 'valve_addon'),
      unpack: (ext, stream, cb, fileName) => {
        if (ext === '.rar') {
          return this.unpackRar(stream, cb, fileName);
        }
    
        if (ext === '.zip') {
          return this.unpackZip(stream, cb);
        }
        
        throw Error('unknown' + ext);
      }
    });
  }

  private async unpackRar(stream, cb, fileName) {
    const writeStream = fs.createWriteStream(`./temp/${fileName}`);
    await finished(stream.pipe(writeStream));
  
    const archive = new Unrar(`./temp/${fileName}`);
    const entries: any[] = await new Promise((res, rej) => archive.list((err, result) => err ? rej(err) : res(result)));
  
    for (const entry of entries) {
      if (entry.type !== 'File') {
        return;
      }
  
      await cb(archive.stream(entry.name), entry.name);
    }
  }
  
  private async unpackZip(stream, cb) {
    const zip = stream.pipe(unzipper.Parse({ forceStream: true }));
    for await (const entry of zip) {
      if (entry.type !== 'File') {
        entry.autodrain();
        continue;
      }
  
      await cb(entry, entry.path);
    }
  }
}
```

and use it:
```typescript
const bananaInstaller = new BananaInstaller();
await bananaInstaller.installCollection(67190);
// or
await bananaInstaller.install(59758);
```
npm package: @gs-nodemod/precache
Description: precache resources
Author: TheEVolk
Latest version: 0.1.0

# @gs-nodemod/banana-installer

## Sample use
init your own constructor, with implemented unpackers
```typescript
import fs from 'fs';
import Unrar from 'unrar';
import { finished } from 'stream/promises';
import GsNodemodBananaInstaller from '@gs-nodemod/banana-installer';
import path from 'path';
import unzipper from 'unzipper';

export default class BananaInstaller extends GsNodemodBananaInstaller {
  public constructor() {
    super({
      targetFolder: path.resolve(nodemod.cwd, 'valve_addon'),
      unpack: (ext, stream, cb, fileName) => {
        if (ext === '.rar') {
          return this.unpackRar(stream, cb, fileName);
        }
    
        if (ext === '.zip') {
          return this.unpackZip(stream, cb);
        }
        
        throw Error('unknown' + ext);
      }
    });
  }

  private async unpackRar(stream, cb, fileName) {
    const writeStream = fs.createWriteStream(`./temp/${fileName}`);
    await finished(stream.pipe(writeStream));
  
    const archive = new Unrar(`./temp/${fileName}`);
    const entries: any[] = await new Promise((res, rej) => archive.list((err, result) => err ? rej(err) : res(result)));
  
    for (const entry of entries) {
      console.log(entry);
      if (entry.type !== 'File') {
        return;
      }
  
      await cb(archive.stream(entry.name), entry.name);
    }
  }
  
  private async unpackZip(stream, cb) {
    const zip = stream.pipe(unzipper.Parse({ forceStream: true }));
    for await (const entry of zip) {
      console.log(entry.type, entry.path);
      if (entry.type !== 'File') {
        entry.autodrain();
        continue;
      }
  
      await cb(entry, entry.path);
    }
  }
}
```

and use it:
```typescript
const bananaInstaller = new BananaInstaller();
await bananaInstaller.installCollection(67190);
// or
await bananaInstaller.install(59758);
```