# XWUICouponManager

A promo code / coupon application panel: a code input + "Apply" button, a list of currently applied coupons (label, discount amount, remove button), and a live subtotal / discount / total summary. Applying looks the entered code up (case-insensitively) in `data.validCodes`; an unmatched or already-applied code shows an inline error instead of being added.

## Events

| Event | Callback | Subscriber | `detail` |
|---|---|---|---|
| `xwui-coupon-manager:apply` | `onApply` | `onApply(handler)` | `{ code, label, amount }` |
| `xwui-coupon-manager:remove` | `onRemove` | `onRemove(handler)` | `{ code }` |

## Usage

```ts
import { XWUICouponManager } from '@exonware/xwui/industry';

const manager = new XWUICouponManager(host, {
  subtotal: 120,
  validCodes: { WELCOME10: { label: '10% off', amount: 12 } },
});

manager.onApply((coupon) => api.applyCoupon(coupon.code));
```

```api
```
