# Changelog

What changed in the packages you install. The same notes are on the live docs: [nemreen.info/dga/docs/changelog](https://nemreen.info/dga/docs/changelog).

Versions below are the ones published to npm. Work that is only in this repository is listed under **Unreleased** until the next version bump.

## Unreleased

## 2026-10-27

`@a.nemreen/dga-ui` **0.3.24**

### Fixed

- `@a.nemreen/dga-ui` — `dga-chip-input` adds a chip on `;` or the Arabic semicolon `؛`, including a pasted list. Enter still commits the current word.

## 2026-10-25

`@a.nemreen/dga-dynamic-form` **0.2.12**

### Changed

- `@a.nemreen/dga-dynamic-form` — `emptyOption` examples use generic field names (`categoryId`, `otherCategory`). Behavior is unchanged from 0.2.11.

`@a.nemreen/dga-dynamic-form` **0.2.11**

### Added

- `@a.nemreen/dga-dynamic-form` — `emptyOption` on a lookup select. When the lookup returns no rows, the menu shows that option (`requiresTextInput` defaults to true). Pair it with `extraField` to reveal a text field. A dependent lookup adds the option only after the parent has a real value, and the next `dependsOn` level stays hidden. An API row with the same label keeps its id, is treated as `requiresTextInput`, and still loads the next level. Submit writes `null` (`submitAs`) instead of the internal sentinel.

## 2026-10-22

`@a.nemreen/dga-dynamic-form` **0.2.10**

### Fixed

- `@a.nemreen/dga-dynamic-form` — `multifilestaged` upload and delete send optional `Idempotency-Key` when `config.idempotencyKey` is set (same header as submit). Opt-in; apps that omit the key are unchanged.
- `@a.nemreen/dga-dynamic-form` — staged upload response accepts PascalCase `FileId` / `FileName` as well as camelCase.

## 2026-10-20

`@a.nemreen/dga-ui` **0.3.23** · `@a.nemreen/dga-dynamic-form` **0.2.9**

### Added

- `@a.nemreen/dga-ui` — `dga-date-picker` `valueFormat` (optional). Display stays on `format` (default `DD/MM/YYYY`); the CVA / `value` uses `valueFormat` when set (e.g. `YYYY-MM-DD` for APIs).
- `@a.nemreen/dga-ui` — `dgaCoerceDate` accepts alternate formats and always falls back to ISO `YYYY-MM-DD`.
- `@a.nemreen/dga-dynamic-form` — date fields expose `format` / `valueFormat` (defaults: display `DD/MM/YYYY`, value `YYYY-MM-DD`; month picker `MM/YYYY` / `YYYY-MM`).

### Fixed

- `@a.nemreen/dga-dynamic-form` — date fields no longer apply string `pattern` validators (avoids ISO-regex fighting locale display). `minDate` / `maxDate` / range validators parse ISO and `DD/MM/YYYY`.

## 2026-10-20

`@a.nemreen/dga-ui` **0.3.22**

### Added

- `@a.nemreen/dga-ui` — desktop header navigation keeps the items that fit and moves the rest into **المزيد** / **More**. That button opens a full-width mega panel, one column per overflow item, including grouped links, row tiles, and featured cards. The current page stays in the bar when it fits.

## 2026-10-19

`@a.nemreen/dga-ui` **0.3.21**

### Added

- `@a.nemreen/dga-ui` — `dga-dialog` `animation`: `scale` (default), `fade`, `slide`, or `none`. The panel stays mounted until the exit motion finishes. Reduced motion uses `none`. `dga-confirm` accepts the same `animation`.

### Fixed

- `@a.nemreen/dga-ui` — header normal-menu dropdown has no extra space under the last item.
- `@a.nemreen/dga-ui` — enabled tab triggers use a pointer cursor.

## 2026-10-18

`@a.nemreen/dga-ui` **0.3.20**

### Fixed

- `@a.nemreen/dga-ui` — `dga-top-bar` skips all geolocation (auto-prompt and silent) when `showWeather` is `false`. City still falls back to Riyadh when `showLocation` is on.

`@a.nemreen/dga-dynamic-form` **0.2.8**

### Fixed

- `@a.nemreen/dga-dynamic-form` — staged upload browse button uses `variant="primary"` (brand green) instead of `secondary` (gold).

`@a.nemreen/dga-tokens` **0.3.9**

### Fixed

- `@a.nemreen/dga-tokens` — `max-w-sm`…`max-w-7xl` (and `3xs`/`2xs`/`xs`) use `--container-*` widths again via unlayered `max-width-compat.css`. Tailwind v4 was binding those classes to the DGA `--spacing-*` scale (e.g. `max-w-7xl` → 64px), which collapsed page layouts that still use classic Tailwind max-width utilities.

`@a.nemreen/dga-ui` **0.3.18**

### Fixed

- `@a.nemreen/dga-ui` — `dga-switch` renders a visible `label` beside the control (previously aria-only). Use `ariaLabel` when the surrounding layout already shows the title.

`@a.nemreen/dga-ui` **0.3.17** · `@a.nemreen/dga-dynamic-form` **0.2.6**

### Added

- `@a.nemreen/dga-ui` — `dga-upload` shows accept / max size / max files constraints under the drop zone (e.g. `.pdf,.doc | حجم الملف الأقصى هو : 1MB | الحد الأقصى للملفات هو : 2`).
- `@a.nemreen/dga-dynamic-form` — staged upload shows the same constraints line; `dgaResolveMaxFileSizeBytes` maps legacy `maxFileSize: 1` (MB) to bytes.

### Changed

- `@a.nemreen/dga-dynamic-form` — `maxFileSize` values `1..1023` are treated as megabytes for validation and display; values `>= 1024` stay bytes.

## 2026-09-30

`@a.nemreen/dga-ui` **0.3.16**

### Fixed

- `@a.nemreen/dga-ui` — rich text toolbar commands stay applied. Headings, lists, quotes, alignment, links, and clear formatting render in the editor, including tags inserted while typing.

## 2026-09-29

`@a.nemreen/dga-ui` **0.3.15** · `@a.nemreen/dga-tokens` **0.3.8** · `@a.nemreen/dga-dynamic-form` **0.2.5**

### Added

- `@a.nemreen/dga-ui` — choice group, tree, tree select, IBAN, national ID, password strength, confirm dialog, file preview, print, offline, search bar, QR, barcode, map embed, stat strip, FAQ, event calendar, virtual list, bottom sheet, popover, rich text, signature pad, notification inbox, locale toggle, and theme toggle.
- `@a.nemreen/dga-ui` — table data grid: pagination footer, column picker, row actions, debounced filters, typed sort, error and empty states, and auto, table, or cards on small screens.
- `@a.nemreen/dga-ui` — icon overrides through `provideDgaIcons`, using Hugeicons instead of `@platformscode/icons`.
- `@a.nemreen/dga-ui` — select and autocomplete can show a loading row, emit search for remote options, and offer a create row. Buttons can stretch with `fullWidth`. Menus have an icon appearance.

### Changed

- `@a.nemreen/dga-ui` — event calendar days follow the date picker: circular days, a ring for today, a solid fill for the selected day, and no glow. The number stays readable on hover.
- `@a.nemreen/dga-tokens` — `host-compat.css` lists the new component selectors so a host reset does not flatten them.
- `@a.nemreen/dga-dynamic-form` — the published package now includes `CHANGELOG.md`.
- Demo — lighter first load with `NgOptimizedImage`, WebP heroes, and a tighter font-loading path. Docs changelog is paginated.

### Fixed

- `@a.nemreen/dga-ui` — image popup is moved to the document body so it is not painted under a sticky header or sidebar.

## 2026-09-20

`@a.nemreen/dga-ui` **0.3.14** · `@a.nemreen/dga-tokens` **0.3.7**

### Added

- `@a.nemreen/dga-tokens` — `DGA_FONT_STYLESHEETS` and `dgaEnsureFontStylesheet` so a font stylesheet can be injected when the user switches families.
- `@a.nemreen/dga-tokens` **0.3.5** — National Day 96 brand pack.

### Changed

- `@a.nemreen/dga-ui` **0.3.14** — chart, chatbot, page transition, and Saudi cities moved to secondary entries (`@a.nemreen/dga-ui/chart`, `/chatbot`, `/page-transition`, `/saudi-cities`) so the main bundle stays smaller. Icons load on demand.
- `@a.nemreen/dga-ui` **0.3.13** / tokens **0.3.6** — portal footers follow the active brand in light and dark. Toast outlet updated alongside the National Day 96 demo.

## 2026-09-17

`@a.nemreen/dga-ui` **0.3.12** · `@a.nemreen/dga-dynamic-form` **0.2.4**

### Added

- `@a.nemreen/dga-ui` — age range on page feedback.

### Changed

- `@a.nemreen/dga-dynamic-form` **0.2.4** — follows `DgaLocaleService` and updates labels when the locale changes.
- `@a.nemreen/dga-dynamic-form` **0.2.3** / `@a.nemreen/dga-ui` **0.3.11** — field visibility can depend on the selected option. Select menu styling updated.

## 2026-09-16

`@a.nemreen/dga-ui` **0.3.10** · `@a.nemreen/dga-tokens` **0.3.4**

### Added

- `@a.nemreen/dga-ui` — weather on `dga-top-bar`.
- `@a.nemreen/dga-ui` — shared floating-action dock for the chatbot and scroll-to-top.

## 2026-09-14

`@a.nemreen/dga-ui` **0.3.10** · `@a.nemreen/dga-tokens` **0.3.3**

`0.3.8` and `0.3.9` were not published on their own. Those fixes shipped inside **0.3.10**.

### Added

- `@a.nemreen/dga-ui` **0.3.7** — footer link groups and accessibility links.

### Fixed

- `@a.nemreen/dga-ui` — top-bar stamp notices stack full width on small screens.
- `@a.nemreen/dga-ui` — `NG0950` when `dga-tab` (and the content switcher) read `value` before it was bound.
- `@a.nemreen/dga-tokens` **0.3.2** / `@a.nemreen/dga-ui` **0.3.6** — `host-compat.css` so a host reset (`*` or `a`) no longer flattens DGA components. Top-bar clock lifecycle cleaned up. Broader locale coverage.

## 2026-09-03

`@a.nemreen/dga-ui` **0.3.5** · `@a.nemreen/dga-dynamic-form` **0.2.0**

### Added

- `@a.nemreen/dga-ui` — phone input with more countries and locale-aware formatting.

### Changed

- Dynamic form labels and validators follow the active locale. Locale helpers expanded in tokens and UI.

## 2026-09-01

`@a.nemreen/dga-ui` **0.3.4** · `@a.nemreen/dga-dynamic-form` **0.1.8** · `@a.nemreen/dga-tokens` **0.3.1**

### Added

- `@a.nemreen/dga-dynamic-form` **0.1.8** — cross-field validators (password, Saudi phone, date range), staged uploads, and visibility fixes across the 18 field types.

### Changed

- `@a.nemreen/dga-ui` **0.3.4** — chart tooltips.

## 2026-07-28

`@a.nemreen/dga-ui` **0.3.1**

### Fixed

- Overlay stacking, and the drawer releasing body scroll when it closes.

## 2026-07-25

`@a.nemreen/dga-ui` **0.3.0** · `@a.nemreen/dga-tokens` **0.3.0**

### Changed

- Accessibility panel redesign, stacked toasts, and portal chrome polish.
