> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nextedy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# License Panel

> The **License Panel** is a non-intrusive notification component that appears at the bottom-right corner of the Nextedy PLANNINGBOARD viewport when a license issue is detected.

***

## Overview

<Frame>
  <img src="https://mintcdn.com/none-17b4493f/vfRg9jxXRntLqZFW/planningboard/diagrams/reference/ui-elements/license-panel/diagram-1.svg?fit=max&auto=format&n=vfRg9jxXRntLqZFW&q=85&s=45a91ad8f8d3542a9824892bb4ff00fe" alt="Planningboard viewport with the board area (swimlanes, cards, Plans) and the License Panel anchored to the bottom-right corner showing a warning icon, message text, and a Contact us link" width="700" height="330" data-path="planningboard/diagrams/reference/ui-elements/license-panel/diagram-1.svg" />
</Frame>

The panel renders as a custom web component with shadow DOM encapsulation, which means its internal styles are isolated from the host Polarion page and cannot be overridden via external CSS.

***

## Variants

The panel behavior and visual style are controlled by the `variant` attribute. There are four possible values:

| Variant   | Visible     | Background                     | Text color           | When used                                           |
| --------- | ----------- | ------------------------------ | -------------------- | --------------------------------------------------- |
| `ok`      | No (hidden) | —                              | —                    | License is valid; panel does not appear             |
| `warning` | Yes         | `#fffaf3` (light orange/beige) | `#573a08` (brown)    | License is approaching expiry or requires attention |
| `error`   | Yes         | `#fff6f6` (light red)          | `#9f3a38` (dark red) | License has expired or is missing                   |
| `invalid` | Yes         | `#fff6f6` (light red)          | `#9f3a38` (dark red) | License data is structurally invalid or tampered    |

<Note title="Auto-hide on valid license">
  When the variant is `ok`, the panel is automatically hidden. Users with a valid Planningboard license will never see the panel. If the panel is not visible, that is expected behavior — it is not a bug.
</Note>

<Warning title="Error and invalid share the same styling">
  The `error` and `invalid` variants use identical visual styling (red palette). The distinction is in the license condition they represent: `error` indicates an expired or absent license, while `invalid` indicates a license that fails validation checks.
</Warning>

***

## Attributes

| Attribute  | Type     | Default | Description                                                                                                                                             |
| ---------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `variant`  | `string` | —       | Controls visual style and visibility. Accepted values: `ok`, `warning`, `error`, `invalid`.                                                             |
| `linkHref` | `string` | `#`     | URL for the **Contact us** link. When not set, defaults to `#` (no navigation). Configure this to point to the Nextedy evaluation license request page. |

***

## Contact Link

The panel contains a **Contact us** link that opens in a new tab. This link is intended to help users or administrators reach Nextedy to request an evaluation license or resolve a licensing issue.

The link target URL is set via the `linkHref` attribute. If `linkHref` is not configured, the link defaults to `#` and does not navigate anywhere.

<Tip title="Evaluation period">
  Planningboard can be used for 30 days without a production license. The license panel communicates this state and provides the path to obtain a full license. See [License Installation](/planningboard/getting-started/licensing) for the full installation procedure.
</Tip>

***

## License Status in the Administration View

The administration view (`viewLicense`) displays full license details for administrators. It is separate from the user-facing License Panel but reflects the same license states.

### License states

| Status value | Meaning                                                   |
| ------------ | --------------------------------------------------------- |
| `INVALID`    | The license file is missing, corrupt, or fails validation |
| `INFO`       | Evaluation mode — no production license is installed      |
| Valid        | License is present and passes all checks                  |

### Administration view features

| Feature                   | Description                                                                                                                                                    |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| License status message    | Color-coded panel matching the current license state                                                                                                           |
| License information block | Full license content in preformatted text; signature field is automatically redacted                                                                           |
| Signature redaction       | The `signature` field is stripped from the displayed text using regex replacement. The license is still validated server-side — redaction is for display only. |
| No-license fallback       | When no production license is detected, the administration view shows an evaluation mode notice and a link to the license installation KB article.             |
| Contact support link      | Email link to the Nextedy support team                                                                                                                         |
| Documentation link        | Opens the Planningboard support documentation in a new tab                                                                                                     |
| Pricing FAQ link          | Opens the Planningboard pricing information page in a new tab                                                                                                  |

***

## License-Based Access Control

Planningboard enforces license-based access control at the board level. Unlicensed users retain read-only visibility of the board but cannot perform editing actions.

### Capability comparison by license state

| Capability                                           | Licensed user                     | Unlicensed user                                 |
| ---------------------------------------------------- | --------------------------------- | ----------------------------------------------- |
| View board content (cards, swimlanes, calendar data) | Yes                               | Yes                                             |
| Drag and drop cards between swimlanes                | Yes                               | No (drag is blocked; position is not persisted) |
| Create a new Plan                                    | Yes (`#btnCreateNewPlan` visible) | No (button hidden)                              |
| Toggle the Unplanned section                         | Yes (`#btnShowUnplanned` visible) | No (button hidden)                              |
| Open the Work Item Properties sidebar                | Yes                               | No (sidebar hidden)                             |
| Refresh the board                                    | Yes                               | Yes (`#btnRefresh` available)                   |

<Warning title="Drag-and-drop silently blocked for unlicensed users">
  Unlicensed users can physically drag a card, but the operation is not persisted — the card returns to its original swimlane. There is no error message. If users report that cards are not saving after drag-and-drop, verify that their Planningboard license is active.
</Warning>

***

## Positioning and Layout

The License Panel is anchored to the **bottom-right** of the Planningboard viewport. It is rendered as a fixed-position overlay and does not interfere with board layout, card interaction, or swimlane scrolling.

The panel uses shadow DOM encapsulation:

* Its internal structure (markup, styles) is isolated from the Polarion host page.
* External CSS selectors cannot target elements inside the panel.
* Custom styling of the panel via page-level CSS is not supported.

***

## Developer Notes

The following information is relevant when integrating or extending the License Panel component.

### Component registration

The `initLicensePanel` function registers the component with the browser's custom element registry. It accepts an optional custom tag name parameter. This function must be called before the component is used in the DOM.

### Slotted content

The panel supports slotted HTML content via the default slot mechanism. Custom message text can be inserted into the panel by placing content inside the component's slot.

<Info title="Verify in application">
  The exact tag name used by the component in the shipped Planningboard build and the specific slot usage pattern are internal implementation details. Consult the Planningboard administration page or contact Nextedy support for integration guidance.
</Info>

***

## Related Pages

* [License Installation](/planningboard/getting-started/licensing) — step-by-step instructions for installing a production license
* [Toolbar Controls](/planningboard/reference/ui-elements/toolbar) — reference for the board toolbar, including controls affected by license state
* [UI Elements](/planningboard/reference/ui-elements/index) — index of all UI element reference pages
* [Reference](/planningboard/reference/index) — top-level reference index

<Accordion title="Sources">
  **KB Articles**

  * Planningboard interface & basic interactions

  **Source Code**

  * `license-panel.js`
  * `widget.vm`
  * `licenseReadonly.cy.ts`
  * `viewLicense.vm`
  * `viewSetup.vm`
</Accordion>
