# VariantSet

This page documents one V-SwiFT variant-set definition.

## Purpose

A `VariantSet` groups one family of mutually exclusive choices on a part.

## Source-backed type

* C# type: `VSwift.Modules.Variants.VariantSet`

## Key fields

* `VariantSetId: string`
* `VariantSetLocalizationKey: string`
* `IsPopout: bool`
* `Variants: list[Variant]`

## Runtime role

* `VariantSetId` is the internal identifier used in authored data and Patch Manager selection.
* `VariantSetLocalizationKey` supplies the display name. If it is empty, V-SwiFT falls back to `VariantSetId`.
* `IsPopout` controls whether the set is shown as a dropdown or as a dedicated popout-window action in OAB.
* `Variants` holds the selectable options in that set.

## OAB behavior

* `IsPopout = false`: V-SwiFT builds a dropdown property in PAM.
* `IsPopout = true`: V-SwiFT creates a clickable module action that opens the part-switch popout UI.

## Example

```patch
+EnginePackage {
    VariantSetLocalizationKey: "MyMod/EnginePackage";
    IsPopout: true;

    +Vacuum {}
    +SeaLevel {}
}
```

## Notes

At runtime, V-SwiFT keeps the active variant list aligned to variant-set order. That means set order is significant when stored variant state is replayed later.