kaafil-react-uikit 0.12.0 → 0.13.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/admin/index.cjs +363 -381
  3. package/dist/admin/index.cjs.map +1 -1
  4. package/dist/admin/index.js +6 -24
  5. package/dist/admin/index.js.map +1 -1
  6. package/dist/chunk-5QFW5GL4.cjs +24 -0
  7. package/dist/chunk-5QFW5GL4.cjs.map +1 -0
  8. package/dist/{chunk-5ORJRFXZ.cjs → chunk-64AFXHOF.cjs} +6 -4
  9. package/dist/chunk-64AFXHOF.cjs.map +1 -0
  10. package/dist/{chunk-YJJ4DI42.js → chunk-AKJLIH5A.js} +6 -4
  11. package/dist/chunk-AKJLIH5A.js.map +1 -0
  12. package/dist/{chunk-ZKLX6YRT.js → chunk-BT2ZX3JY.js} +5 -5
  13. package/dist/{chunk-ZKLX6YRT.js.map → chunk-BT2ZX3JY.js.map} +1 -1
  14. package/dist/{chunk-U6IE2UYL.js → chunk-CJLQ2Z4Q.js} +3 -3
  15. package/dist/{chunk-U6IE2UYL.js.map → chunk-CJLQ2Z4Q.js.map} +1 -1
  16. package/dist/{chunk-F2ENMVT7.js → chunk-DXDSCQLC.js} +3 -3
  17. package/dist/{chunk-F2ENMVT7.js.map → chunk-DXDSCQLC.js.map} +1 -1
  18. package/dist/{chunk-ARXY3ZA7.cjs → chunk-GD5UU4G6.cjs} +85 -85
  19. package/dist/{chunk-ARXY3ZA7.cjs.map → chunk-GD5UU4G6.cjs.map} +1 -1
  20. package/dist/{chunk-RCWSMWQD.js → chunk-IAKK2CKB.js} +3 -3
  21. package/dist/{chunk-RCWSMWQD.js.map → chunk-IAKK2CKB.js.map} +1 -1
  22. package/dist/chunk-JOUTGBUJ.js +22 -0
  23. package/dist/chunk-JOUTGBUJ.js.map +1 -0
  24. package/dist/{chunk-KJSQLVBR.cjs → chunk-JY2C4S3J.cjs} +55 -55
  25. package/dist/{chunk-KJSQLVBR.cjs.map → chunk-JY2C4S3J.cjs.map} +1 -1
  26. package/dist/chunk-KFOCETDW.cjs +12 -0
  27. package/dist/{chunk-YKBA4WQJ.cjs.map → chunk-KFOCETDW.cjs.map} +1 -1
  28. package/dist/{chunk-T5JYKERY.cjs → chunk-LSOV3FJL.cjs} +12 -12
  29. package/dist/{chunk-T5JYKERY.cjs.map → chunk-LSOV3FJL.cjs.map} +1 -1
  30. package/dist/{chunk-XGPX7TYV.js → chunk-LW2YB7VC.js} +3 -3
  31. package/dist/{chunk-XGPX7TYV.js.map → chunk-LW2YB7VC.js.map} +1 -1
  32. package/dist/{chunk-6QSHORU3.cjs → chunk-MLVS5KS6.cjs} +17 -17
  33. package/dist/{chunk-6QSHORU3.cjs.map → chunk-MLVS5KS6.cjs.map} +1 -1
  34. package/dist/{chunk-XWU5MCY3.cjs → chunk-TCVXLZ4H.cjs} +9 -9
  35. package/dist/{chunk-XWU5MCY3.cjs.map → chunk-TCVXLZ4H.cjs.map} +1 -1
  36. package/dist/{chunk-LJO2FGFD.js → chunk-TFFHYZMZ.js} +5 -5
  37. package/dist/{chunk-LJO2FGFD.js.map → chunk-TFFHYZMZ.js.map} +1 -1
  38. package/dist/{chunk-VHBGE4BY.cjs → chunk-XNZU6ZLX.cjs} +4 -4
  39. package/dist/{chunk-VHBGE4BY.cjs.map → chunk-XNZU6ZLX.cjs.map} +1 -1
  40. package/dist/{chunk-LOLQNRIK.js → chunk-YSJXNKCU.js} +3 -3
  41. package/dist/{chunk-LOLQNRIK.js.map → chunk-YSJXNKCU.js.map} +1 -1
  42. package/dist/core/index.cjs +107 -107
  43. package/dist/core/index.js +10 -10
  44. package/dist/manager/index.cjs +273 -298
  45. package/dist/manager/index.cjs.map +1 -1
  46. package/dist/manager/index.d.cts +46 -2
  47. package/dist/manager/index.d.ts +46 -2
  48. package/dist/manager/index.js +21 -46
  49. package/dist/manager/index.js.map +1 -1
  50. package/dist/traveller/index.cjs +35 -35
  51. package/dist/traveller/index.js +5 -5
  52. package/package.json +14 -14
  53. package/dist/chunk-5ORJRFXZ.cjs.map +0 -1
  54. package/dist/chunk-YJJ4DI42.js.map +0 -1
  55. package/dist/chunk-YKBA4WQJ.cjs +0 -12
package/CHANGELOG.md CHANGED
@@ -6,6 +6,68 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this package uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
  While on `0.x` a minor bump may carry a breaking change; the entry will say so.
8
8
 
9
+ ## [0.13.0] — 2026-09-21
10
+
11
+ ### Fixed
12
+
13
+ - **The manifest's diet figures were wrong, and quietly so.** `normalizeDiet`
14
+ existed as three verbatim copies in three families, and all three tested raw
15
+ EXACT EQUALITY against `V|VEG|VEGETARIAN` / `NV|NON-VEG|NONVEG|NON_VEG` /
16
+ `J|JAIN` over `Traveller.dietary` — a free-text column the CRM supplies, whose
17
+ own published example is `"Vegetarian, no nuts"`.
18
+
19
+ Case was handled; nothing else was. `"Pure veg"`, `"Vegetarian, no nuts"`,
20
+ `"Vegan"`, `"Halal"` and `"Non veg"` (space, no hyphen) all normalised to
21
+ `null`, which the UI rendered identically to "nothing recorded". A 20-pax trip
22
+ with twelve vegetarians spelled five ways showed a **`Veg 4 / 20`** stat card,
23
+ and the kitchen ordered four meals. The filter chips did not sum to the roster
24
+ and offered no bucket the other eight could appear in, so tapping "Veg" to
25
+ build a meal list silently excluded them.
26
+
27
+ There is now one implementation in `core/`, with 34 tests.
28
+
29
+ - **A traveller's dietary text could vanish from their profile.**
30
+ `deriveDietaryRows` pushed the Meal row with `value: mealPreference ?? ''`, so
31
+ when the CRM sent only `dietary`, the raw string was never rendered: a
32
+ `"Vegetarian, no nuts"` traveller showed a `V` badge and the nut allergy
33
+ appeared nowhere on the screen. The raw value is now shown when no separate
34
+ meal preference exists.
35
+
36
+ ### Changed
37
+
38
+ - **BREAKING — `ManifestDiet` is now `'V' | 'NV' | 'J' | 'OTHER'`.** An
39
+ exhaustive `switch` or a `Record<ManifestDiet, …>` in consumer code will no
40
+ longer compile until it handles `OTHER`. This is the fix, not a side effect:
41
+ the previous three-state set had nowhere to put a recorded-but-unrecognised
42
+ value, so it used `null` and the value disappeared. `null` now means only that
43
+ the column is empty, which is what makes the counts account for every
44
+ traveller.
45
+
46
+ `VEGAN` and `HALAL` bucket as `OTHER` rather than `V`. Folding them into the
47
+ vegetarian count would report them as served by the vegetarian meal and remove
48
+ the only signal that something further is needed.
49
+
50
+ - **A new "Other" diet filter chip**, with its `en`/`hi` labels, so the chip
51
+ counts plus the unrecorded remainder account for the whole roster.
52
+
53
+ - **`diet` is gone from the agency settings screen's rooming strategy picker.**
54
+ It was the last place a human could still select a heuristic key the engine had
55
+ stopped accepting.
56
+
57
+ - **Peer floor moves to `kaafil-js@^0.9.0`**, which is why this is a minor rather
58
+ than a patch on that count too. The engine no longer accepts `diet` in a
59
+ rooming `strategyOrder`, and `kaafil-js@0.8.0`'s `RoomingHeuristicKey` still
60
+ lists it — so on the old floor a consumer could write code that typechecks and
61
+ is then refused at runtime. Following the precedent 0.12.0 set: when the fix
62
+ lives elsewhere, the floor is how a consumer actually gets it.
63
+
64
+ ### Notes
65
+
66
+ - The bucket rules mirror the engine's own `dietBucketOf`, and were verified to
67
+ agree with it on 32 inputs including every edge case in the corpus. The engine
68
+ additionally publishes `facets.dietBuckets` and a `?dietBucket=` filter; this
69
+ package still buckets client-side and does not require either.
70
+
9
71
  ## [0.12.0] — 2026-09-18
10
72
 
11
73
  ### Changed