hazo_ui 6.13.1 → 6.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGE_LOG.md CHANGED
@@ -5,6 +5,40 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## v6.14.0 (2026-10-04)
9
+
10
+ ### Added — German (`de`) catalog and LocalePicker demo
11
+
12
+ - New `src/locales/de.json`: German translation of all 219 keys in `en.json`
13
+ (flat dotted keys, identical key set, every `{{placeholder}}` preserved
14
+ verbatim). Consumers register it through hazo_i18n alongside `en`; the package
15
+ does not bundle non-English catalogs into `dist/`.
16
+ - The German catalog was produced with the hazo_i18n pipeline, not by hand:
17
+ `translateMessages()` (export, then Gemini via `hazo_llm_api` per chunk, then
18
+ `importMessages()` with ICU/HTML/expansion validation). 9 chunks, 0 failed,
19
+ 0 rejected. 14 non-blocking length-expansion warnings on very short strings
20
+ (e.g. `Save` to `Speichern`) were accepted; no translation was changed by hand.
21
+ - Rationale: German is the first non-English catalog for hazo_ui, and it exercises
22
+ the hazo_i18n export/LLM/import round trip on a real package catalog.
23
+ - Test-app: new `/locale-picker` page demoing `LocalePicker` (dropdown, compact and
24
+ inline variants; native, native+code and code display; flags) with real locale
25
+ alternates. Alternates point at a new `/set-locale` route that sets the
26
+ `NEXT_LOCALE` cookie and redirects back.
27
+ - Test-app `i18n_runtime.ts` now registers the hazo_ui `en` and `de` catalogs under
28
+ the `hazo_ui` namespace, so hazo_ui components switch language in the test-app
29
+ through `HazoUiI18nProvider`. Previously they stayed English.
30
+
31
+ ### Fixed — dialog re-render loop on open
32
+
33
+ - `HazoUiMultiFilterDialog` and `HazoUiMultiSortDialog` defaulted `initialFilters` /
34
+ `initialSortFields` to a fresh `[]` each render. Their open-time sync effect depends
35
+ on that prop, so every render reset state to a new array and looped until React
36
+ threw `RangeError: Invalid array length`. Defaults now reference a module-level
37
+ empty constant.
38
+ - `filter_dialog_i18n.test.tsx`: the "explicit title wins" assertion queried
39
+ `getByText("Filter")`, which matched the still-mounted trigger button; it now asserts
40
+ no heading named "Filter".
41
+
8
42
  ## v6.13.1 (2026-10-03)
9
43
 
10
44
  ### Fixed — remaining hardcoded English strings now go through i18n
package/dist/index.cjs CHANGED
@@ -1145,10 +1145,11 @@ function FilterFieldItem({
1145
1145
  ] })
1146
1146
  ] });
1147
1147
  }
1148
+ var NO_INITIAL_FILTERS = [];
1148
1149
  function HazoUiMultiFilterDialog({
1149
1150
  availableFields,
1150
1151
  onFilterChange,
1151
- initialFilters = [],
1152
+ initialFilters = NO_INITIAL_FILTERS,
1152
1153
  title: titleProp,
1153
1154
  description: descriptionProp,
1154
1155
  headerBackgroundColor,
@@ -1513,10 +1514,11 @@ function SortableSortFieldItem({
1513
1514
  }
1514
1515
  );
1515
1516
  }
1517
+ var NO_INITIAL_SORT_FIELDS = [];
1516
1518
  function HazoUiMultiSortDialog({
1517
1519
  availableFields,
1518
1520
  onSortChange,
1519
- initialSortFields = [],
1521
+ initialSortFields = NO_INITIAL_SORT_FIELDS,
1520
1522
  title: titleProp,
1521
1523
  description: descriptionProp,
1522
1524
  headerBackgroundColor,