# @get-set/all

The umbrella package for the **Get-Set plugin suite** — install every plugin
with a single command instead of adding them one by one.

```bash
npm install @get-set/all
```

That pulls in all **21** plugins as dependencies. You then import each one from
its own package exactly as before:

```js
// React
import GSTable from '@get-set/gs-table';
import GSModal from '@get-set/gs-modal';

// Vanilla (window global) — after loading the bundle
new GSCarousel('#hero', { /* ... */ });
```

> **Note:** `npm install @get-set` does **not** work — `@get-set` is an npm
> *scope*, not a package. `@get-set/all` is the installable umbrella that stands
> in for "the whole scope".

---

## What's included (21 plugins)

Every plugin is dual-target: a vanilla `window` global **+** jQuery `$.fn.*`
**+** `HTMLElement.prototype.*` **+** a React component, from one codebase.

| Package | What it is |
|---|---|
| `@get-set/gs-carousel` | Multi-mode carousel / slider |
| `@get-set/gs-zoom` | Image lightbox + magnifier |
| `@get-set/gs-select` | Styled custom `<select>` (single/multi, searchable) |
| `@get-set/gs-sortable` | Drag-and-drop sortable lists / grids |
| `@get-set/gs-flexogrid` | Responsive masonry grid |
| `@get-set/gs-modal` | Accessible modal / dialog |
| `@get-set/gs-toast` | Toast notifications |
| `@get-set/gs-tooltip` | Tooltips with auto-flip positioning |
| `@get-set/gs-popover` | Rich interactive popovers |
| `@get-set/gs-autocomplete` | Combobox / autocomplete |
| `@get-set/gs-datepicker` | Date / range / time picker |
| `@get-set/gs-tabs` | Tabs (line / pill / enclosed / segment) |
| `@get-set/gs-accordion` | Accordion with smooth height animation |
| `@get-set/gs-drawer` | Off-canvas drawer |
| `@get-set/gs-range` | Range slider (single / range / multiple) |
| `@get-set/gs-tags` | Tag / token input |
| `@get-set/gs-upload` | File upload / dropzone |
| `@get-set/gs-reveal` | Scroll-reveal animations |
| `@get-set/gs-table` | Data table (sort, filter, select, pin, row menu) |
| `@get-set/gs-cropper` | Image cropper |
| `@get-set/gs-contextmenu` | Right-click / dropdown menu |

---

## When to use this vs. individual packages

| | Individual (`@get-set/gs-select`) | Umbrella (`@get-set/all`) |
|---|---|---|
| Install | one package per plugin | one command, everything |
| Footprint | only what you import | all 21 installed |
| Best for | apps that use a few widgets | dashboards / kits using many |

Because each plugin is a separate build that injects its own CSS, **importing
from the individual packages gives the best bundle size** (your bundler only
includes what you actually import). `@get-set/all` is a convenience for getting
the whole kit onto disk in one step — it does not change how you import.

---

## Peer dependencies

`react` and `react-dom` are **optional** peers — you only need them if you use
the React components. Vanilla / jQuery / prototype usage needs neither.

---

## Publishing / maintenance notes (for the Get-Set team)

- Publish (or bump) the individual plugin packages **first**, then publish
  `@get-set/all` — its dependency versions must already exist on the registry
  for `npm install @get-set/all` to resolve.
- The dependency ranges here use `^` against the current published versions.
  When you release a new version of a plugin, bump its range here too (and
  publish a new `@get-set/all`) so consumers pick it up.
- This package ships **no code** — it is a pure dependency aggregator, so there
  is nothing to build and nothing to break at publish time.

### Optional: a unified import (`import { GSTable } from '@get-set/all'`)

If you later want a single import entry, add an `index.ts` that re-exports each
component by name and compile it to `dist/` (then point `main`/`module`/`types`
+ `exports` at it and add `dist` to `files`). Use **named** re-exports of each
default component to avoid the type-name collisions that `export *` would cause
across 21 packages:

```ts
// index.ts
export { default as GSCarousel } from '@get-set/gs-carousel';
export { default as GSTable } from '@get-set/gs-table';
export { default as GSModal } from '@get-set/gs-modal';
// …one line per plugin. Import handles/types from the individual package.
```

Building it requires the plugin packages to be installed (i.e. published) first.
Ask and we can wire this variant up once the suite is on the registry.
